{"version":3,"file":"app-10ca514817f5ffed68ad.js","mappings":";sHAqBA,SAASA,IACPC,KAAKC,QAAUD,KAAKC,SAAW,CAAC,EAChCD,KAAKE,cAAgBF,KAAKE,oBAAiBC,CAC7C,CAuQA,SAASC,EAAWC,GAClB,MAAsB,mBAARA,CAChB,CAMA,SAASC,EAASD,GAChB,MAAsB,iBAARA,GAA4B,OAARA,CACpC,CAEA,SAASE,EAAYF,GACnB,YAAe,IAARA,CACT,CApRAG,EAAOC,QAAUV,EAKjBA,EAAaW,UAAUT,aAAUE,EACjCJ,EAAaW,UAAUR,mBAAgBC,EAIvCJ,EAAaY,oBAAsB,GAInCZ,EAAaW,UAAUE,gBAAkB,SAASC,GAChD,GA4PsB,iBA5PRA,GAAMA,EAAI,GAAKC,MAAMD,GACjC,MAAME,UAAU,+BAElB,OADAf,KAAKE,cAAgBW,EACdb,IACT,EAEAD,EAAaW,UAAUM,KAAO,SAASC,GACrC,IAAIC,EAAIC,EAASC,EAAKC,EAAMC,EAAGC,EAM/B,GAJKvB,KAAKC,UACRD,KAAKC,QAAU,CAAC,GAGL,UAATgB,KACGjB,KAAKC,QAAQuB,OACblB,EAASN,KAAKC,QAAQuB,SAAWxB,KAAKC,QAAQuB,MAAMC,QAAS,CAEhE,IADAP,EAAKQ,UAAU,cACGC,MAChB,MAAMT,EAGN,IAAIU,EAAM,IAAID,MAAM,yCAA2CT,EAAK,KAEpE,MADAU,EAAIC,QAAUX,EACRU,CAEV,CAKF,GAAIrB,EAFJY,EAAUnB,KAAKC,QAAQgB,IAGrB,OAAO,EAET,GAAIb,EAAWe,GACb,OAAQO,UAAUD,QAEhB,KAAK,EACHN,EAAQW,KAAK9B,MACb,MACF,KAAK,EACHmB,EAAQW,KAAK9B,KAAM0B,UAAU,IAC7B,MACF,KAAK,EACHP,EAAQW,KAAK9B,KAAM0B,UAAU,GAAIA,UAAU,IAC3C,MAEF,QACEL,EAAOU,MAAMrB,UAAUsB,MAAMF,KAAKJ,UAAW,GAC7CP,EAAQc,MAAMjC,KAAMqB,QAEnB,GAAIf,EAASa,GAIlB,IAHAE,EAAOU,MAAMrB,UAAUsB,MAAMF,KAAKJ,UAAW,GAE7CN,GADAG,EAAYJ,EAAQa,SACJP,OACXH,EAAI,EAAGA,EAAIF,EAAKE,IACnBC,EAAUD,GAAGW,MAAMjC,KAAMqB,GAG7B,OAAO,CACT,EAEAtB,EAAaW,UAAUwB,YAAc,SAASjB,EAAMkB,GAClD,IAAIC,EAEJ,IAAKhC,EAAW+B,GACd,MAAMpB,UAAU,+BA2ClB,OAzCKf,KAAKC,UACRD,KAAKC,QAAU,CAAC,GAIdD,KAAKC,QAAQoC,aACfrC,KAAKgB,KAAK,cAAeC,EACfb,EAAW+B,EAASA,UACpBA,EAASA,SAAWA,GAE3BnC,KAAKC,QAAQgB,GAGTX,EAASN,KAAKC,QAAQgB,IAE7BjB,KAAKC,QAAQgB,GAAMqB,KAAKH,GAGxBnC,KAAKC,QAAQgB,GAAQ,CAACjB,KAAKC,QAAQgB,GAAOkB,GAN1CnC,KAAKC,QAAQgB,GAAQkB,EASnB7B,EAASN,KAAKC,QAAQgB,MAAWjB,KAAKC,QAAQgB,GAAMsB,SAIpDH,EAHG7B,EAAYP,KAAKE,eAGhBH,EAAaY,oBAFbX,KAAKE,gBAKFkC,EAAI,GAAKpC,KAAKC,QAAQgB,GAAMQ,OAASW,IAC5CpC,KAAKC,QAAQgB,GAAMsB,QAAS,EAC5BC,QAAQhB,MAAM,mIAGAxB,KAAKC,QAAQgB,GAAMQ,QACJ,mBAAlBe,QAAQC,OAEjBD,QAAQC,SAKPzC,IACT,EAEAD,EAAaW,UAAUgC,GAAK3C,EAAaW,UAAUwB,YAEnDnC,EAAaW,UAAUiC,KAAO,SAAS1B,EAAMkB,GAC3C,IAAK/B,EAAW+B,GACd,MAAMpB,UAAU,+BAElB,IAAI6B,GAAQ,EAEZ,SAASC,IACP7C,KAAK8C,eAAe7B,EAAM4B,GAErBD,IACHA,GAAQ,EACRT,EAASF,MAAMjC,KAAM0B,WAEzB,CAKA,OAHAmB,EAAEV,SAAWA,EACbnC,KAAK0C,GAAGzB,EAAM4B,GAEP7C,IACT,EAGAD,EAAaW,UAAUoC,eAAiB,SAAS7B,EAAMkB,GACrD,IAAIY,EAAMC,EAAUvB,EAAQH,EAE5B,IAAKlB,EAAW+B,GACd,MAAMpB,UAAU,+BAElB,IAAKf,KAAKC,UAAYD,KAAKC,QAAQgB,GACjC,OAAOjB,KAMT,GAHAyB,GADAsB,EAAO/C,KAAKC,QAAQgB,IACNQ,OACduB,GAAY,EAERD,IAASZ,GACR/B,EAAW2C,EAAKZ,WAAaY,EAAKZ,WAAaA,SAC3CnC,KAAKC,QAAQgB,GAChBjB,KAAKC,QAAQ6C,gBACf9C,KAAKgB,KAAK,iBAAkBC,EAAMkB,QAE/B,GAAI7B,EAASyC,GAAO,CACzB,IAAKzB,EAAIG,EAAQH,KAAM,GACrB,GAAIyB,EAAKzB,KAAOa,GACXY,EAAKzB,GAAGa,UAAYY,EAAKzB,GAAGa,WAAaA,EAAW,CACvDa,EAAW1B,EACX,KACF,CAGF,GAAI0B,EAAW,EACb,OAAOhD,KAEW,IAAhB+C,EAAKtB,QACPsB,EAAKtB,OAAS,SACPzB,KAAKC,QAAQgB,IAEpB8B,EAAKE,OAAOD,EAAU,GAGpBhD,KAAKC,QAAQ6C,gBACf9C,KAAKgB,KAAK,iBAAkBC,EAAMkB,EACtC,CAEA,OAAOnC,IACT,EAEAD,EAAaW,UAAUwC,mBAAqB,SAASjC,GACnD,IAAIkC,EAAK5B,EAET,IAAKvB,KAAKC,QACR,OAAOD,KAGT,IAAKA,KAAKC,QAAQ6C,eAKhB,OAJyB,IAArBpB,UAAUD,OACZzB,KAAKC,QAAU,CAAC,EACTD,KAAKC,QAAQgB,WACbjB,KAAKC,QAAQgB,GACfjB,KAIT,GAAyB,IAArB0B,UAAUD,OAAc,CAC1B,IAAK0B,KAAOnD,KAAKC,QACH,mBAARkD,GACJnD,KAAKkD,mBAAmBC,GAI1B,OAFAnD,KAAKkD,mBAAmB,kBACxBlD,KAAKC,QAAU,CAAC,EACTD,IACT,CAIA,GAAII,EAFJmB,EAAYvB,KAAKC,QAAQgB,IAGvBjB,KAAK8C,eAAe7B,EAAMM,QACrB,GAAIA,EAET,KAAOA,EAAUE,QACfzB,KAAK8C,eAAe7B,EAAMM,EAAUA,EAAUE,OAAS,IAI3D,cAFOzB,KAAKC,QAAQgB,GAEbjB,IACT,EAEAD,EAAaW,UAAUa,UAAY,SAASN,GAQ1C,OANKjB,KAAKC,SAAYD,KAAKC,QAAQgB,GAE1Bb,EAAWJ,KAAKC,QAAQgB,IACzB,CAACjB,KAAKC,QAAQgB,IAEdjB,KAAKC,QAAQgB,GAAMe,QAJnB,EAMV,EAEAjC,EAAaW,UAAU0C,cAAgB,SAASnC,GAC9C,GAAIjB,KAAKC,QAAS,CAChB,IAAIoD,EAAarD,KAAKC,QAAQgB,GAE9B,GAAIb,EAAWiD,GACb,OAAO,EACJ,GAAIA,EACP,OAAOA,EAAW5B,MACtB,CACA,OAAO,CACT,EAEA1B,EAAaqD,cAAgB,SAASE,EAASrC,GAC7C,OAAOqC,EAAQF,cAAcnC,EAC/B,0XC3RA,MAAMsC,EAAe,CACnBC,QAAS,QAEX,SAASC,EAAWC,GAClB,IAAI,GACFC,EAAE,MACFC,GACEF,EACJ,OAAO,gBAAoB,MAAO,CAChCC,GAAIA,EACJE,MAAON,GACNK,EACL,CAEA,SAASE,EAAWJ,GAClB,IAAI,GACFC,EAAE,aACFI,EAAY,aACZC,EAAe,aACbN,EAcJ,OAAO,gBAAoB,MAAO,CAChCC,GAAIA,EACJE,MAdqB,CACrBb,SAAU,QACViB,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,OAAQ,EACRC,QAAS,EACTC,SAAU,SACVC,KAAM,gBACNC,SAAU,cACVC,WAAY,UAKZC,KAAM,SACN,YAAaV,EACb,eAAe,GACdD,EACL,CCrCA,MAAMY,GAAiC,IAAAC,eAAc,MAkCrD,MAAMC,EAAkC,CACtCC,UAAW,iNAEPC,EAAuB,CAC3B,WAAAC,CAAYtB,GACV,IAAI,OACFuB,GACEvB,EACJ,MAAO,4BAA8BuB,EAAOtB,GAAK,GACnD,EAEA,UAAAuB,CAAWC,GACT,IAAI,OACFF,EAAM,KACNG,GACED,EAEJ,OAAIC,EACK,kBAAoBH,EAAOtB,GAAK,kCAAoCyB,EAAKzB,GAAK,IAGhF,kBAAoBsB,EAAOtB,GAAK,sCACzC,EAEA,SAAA0B,CAAUC,GACR,IAAI,OACFL,EAAM,KACNG,GACEE,EAEJ,OAAIF,EACK,kBAAoBH,EAAOtB,GAAK,oCAAsCyB,EAAKzB,GAG7E,kBAAoBsB,EAAOtB,GAAK,eACzC,EAEA,YAAA4B,CAAaC,GACX,IAAI,OACFP,GACEO,EACJ,MAAO,0CAA4CP,EAAOtB,GAAK,eACjE,GAIF,SAAS8B,EAAc/B,GACrB,IAAI,cACFgC,EAAgBX,EAAoB,UACpCY,EAAS,wBACTC,EAAuB,yBACvBC,EAA2BhB,GACzBnB,EACJ,MAAM,SACJoC,EAAQ,aACR/B,GDlDJ,WACE,MAAOA,EAAcgC,IAAmB,IAAAC,UAAS,IAMjD,MAAO,CACLF,UANe,IAAAG,cAAYrC,IACd,MAATA,GACFmC,EAAgBnC,EAClB,GACC,IAGDG,eAEJ,CCwCMmC,GACEC,GAAe,QAAY,kBAC1BC,EAASC,IAAc,IAAAL,WAAS,GA+DvC,IA9DA,IAAAM,YAAU,KACRD,GAAW,EAAK,GACf,IA7FL,SAAuBlE,GACrB,MAAMoE,GAAmB,IAAAC,YAAW7B,IACpC,IAAA2B,YAAU,KACR,IAAKC,EACH,MAAM,IAAI5E,MAAM,gEAIlB,OADoB4E,EAAiBpE,EACnB,GACjB,CAACA,EAAUoE,GAChB,CAoFEE,EAAc,IAAAC,UAAQ,KAAM,CAC1B,WAAA1B,CAAYG,GACV,IAAI,OACFF,GACEE,EACJW,EAASJ,EAAcV,YAAY,CACjCC,WAEJ,EAEA,UAAA0B,CAAWrB,GACT,IAAI,OACFL,EAAM,KACNG,GACEE,EAEAI,EAAciB,YAChBb,EAASJ,EAAciB,WAAW,CAChC1B,SACAG,SAGN,EAEA,UAAAF,CAAWM,GACT,IAAI,OACFP,EAAM,KACNG,GACEI,EACJM,EAASJ,EAAcR,WAAW,CAChCD,SACAG,SAEJ,EAEA,SAAAC,CAAUuB,GACR,IAAI,OACF3B,EAAM,KACNG,GACEwB,EACJd,EAASJ,EAAcL,UAAU,CAC/BJ,SACAG,SAEJ,EAEA,YAAAG,CAAasB,GACX,IAAI,OACF5B,EAAM,KACNG,GACEyB,EACJf,EAASJ,EAAcH,aAAa,CAClCN,SACAG,SAEJ,KAEE,CAACU,EAAUJ,MAEVU,EACH,OAAO,KAGT,MAAMU,EAAS,gBAAoB,WAAgB,KAAM,gBAAoBrD,EAAY,CACvFE,GAAIiC,EACJhC,MAAOiC,EAAyBf,YAC9B,gBAAoBhB,EAAY,CAClCH,GAAIwC,EACJpC,aAAcA,KAEhB,OAAO4B,GAAY,IAAAoB,cAAaD,EAAQnB,GAAamB,CACvD,CAEA,IAAIE,EAaJ,SAASC,IAAQ,CAEjB,SAASC,EAAUC,EAAQC,GACzB,OAAO,IAAAV,UAAQ,KAAM,CACnBS,SACAC,QAAoB,MAAXA,EAAkBA,EAAU,CAAC,KAExC,CAACD,EAAQC,GACX,CAEA,SAASC,IACP,IAAK,IAAIC,EAAO5F,UAAUD,OAAQ8F,EAAU,IAAIxF,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFD,EAAQC,GAAQ9F,UAAU8F,GAG5B,OAAO,IAAAd,UAAQ,IAAM,IAAIa,GAASE,QAAON,GAAoB,MAAVA,KACnD,IAAII,GACN,EA5BA,SAAWP,GACTA,EAAkB,UAAI,YACtBA,EAAiB,SAAI,WACrBA,EAAgB,QAAI,UACpBA,EAAmB,WAAI,aACvBA,EAAiB,SAAI,WACrBA,EAA0B,kBAAI,oBAC9BA,EAA6B,qBAAI,uBACjCA,EAA4B,oBAAI,qBACjC,CATD,CASGA,IAAWA,EAAS,CAAC,IAqBxB,MAAMU,EAAkCC,OAAOC,OAAO,CACpDC,EAAG,EACHC,EAAG,IAML,SAASC,EAAgBC,EAAIC,GAC3B,OAAOC,KAAKC,KAAKD,KAAKE,IAAIJ,EAAGH,EAAII,EAAGJ,EAAG,GAAKK,KAAKE,IAAIJ,EAAGF,EAAIG,EAAGH,EAAG,GACpE,CAmBA,SAASO,EAAkB3E,EAAMyB,GAC/B,IACEmD,MACE1E,MAAO2E,IAEP7E,GAEF4E,MACE1E,MAAO4E,IAEPrD,EACJ,OAAOoD,EAAIC,CACb,CAKA,SAASC,EAAmBnD,EAAOE,GACjC,IACE8C,MACE1E,MAAO2E,IAEPjD,GAEFgD,MACE1E,MAAO4E,IAEPhD,EACJ,OAAOgD,EAAID,CACb,CAMA,SAASG,EAAmB9B,GAC1B,IAAI,KACF+B,EAAI,IACJC,EAAG,OACH1E,EAAM,MACND,GACE2C,EACJ,MAAO,CAAC,CACNiB,EAAGc,EACHb,EAAGc,GACF,CACDf,EAAGc,EAAO1E,EACV6D,EAAGc,GACF,CACDf,EAAGc,EACHb,EAAGc,EAAM1E,GACR,CACD2D,EAAGc,EAAO1E,EACV6D,EAAGc,EAAM1E,GAEb,CAcA,SAAS2E,EAAkBC,EAAMH,EAAMC,GASrC,YARa,IAATD,IACFA,EAAOG,EAAKH,WAGF,IAARC,IACFA,EAAME,EAAKF,KAGN,CACLf,EAAGc,EAAoB,GAAbG,EAAK7E,MACf6D,EAAGc,EAAoB,GAAdE,EAAK5E,OAElB,CAOA,MAAM6E,EAAgBrF,IACpB,IAAI,cACFsF,EAAa,eACbC,EAAc,oBACdC,GACExF,EACJ,MAAMyF,EAAaN,EAAkBG,EAAeA,EAAcL,KAAMK,EAAcJ,KAChFQ,EAAa,GAEnB,IAAK,MAAMC,KAAsBH,EAAqB,CACpD,MAAM,GACJvF,GACE0F,EACEP,EAAOG,EAAeK,IAAI3F,GAEhC,GAAImF,EAAM,CACR,MAAMS,EAAcxB,EAAgBc,EAAkBC,GAAOK,GAC7DC,EAAW9G,KAAK,CACdqB,KACA2E,KAAM,CACJe,qBACAzF,MAAO2F,IAGb,CACF,CAEA,OAAOH,EAAWI,KAAKnB,EAAkB,EA8C3C,SAASoB,EAAqBC,EAAOC,GACnC,MAAMf,EAAMV,KAAK0B,IAAID,EAAOf,IAAKc,EAAMd,KACjCD,EAAOT,KAAK0B,IAAID,EAAOhB,KAAMe,EAAMf,MACnCkB,EAAQ3B,KAAK4B,IAAIH,EAAOhB,KAAOgB,EAAO1F,MAAOyF,EAAMf,KAAOe,EAAMzF,OAChE8F,EAAS7B,KAAK4B,IAAIH,EAAOf,IAAMe,EAAOzF,OAAQwF,EAAMd,IAAMc,EAAMxF,QAChED,EAAQ4F,EAAQlB,EAChBzE,EAAS6F,EAASnB,EAExB,GAAID,EAAOkB,GAASjB,EAAMmB,EAAQ,CAChC,MAAMC,EAAaL,EAAO1F,MAAQ0F,EAAOzF,OACnC+F,EAAYP,EAAMzF,MAAQyF,EAAMxF,OAChCgG,EAAmBjG,EAAQC,EAEjC,OAAOiG,QADmBD,GAAoBF,EAAaC,EAAYC,IACvCE,QAAQ,GAC1C,CAGA,OAAO,CACT,CAMA,MAAMC,EAAmB3G,IACvB,IAAI,cACFsF,EAAa,eACbC,EAAc,oBACdC,GACExF,EACJ,MAAM0F,EAAa,GAEnB,IAAK,MAAMC,KAAsBH,EAAqB,CACpD,MAAM,GACJvF,GACE0F,EACEP,EAAOG,EAAeK,IAAI3F,GAEhC,GAAImF,EAAM,CACR,MAAMwB,EAAoBb,EAAqBX,EAAME,GAEjDsB,EAAoB,GACtBlB,EAAW9G,KAAK,CACdqB,KACA2E,KAAM,CACJe,qBACAzF,MAAO0G,IAIf,CACF,CAEA,OAAOlB,EAAWI,KAAKf,EAAmB,EAO5C,SAAS8B,EAAkBC,EAAO1B,GAChC,MAAM,IACJF,EAAG,KACHD,EAAI,OACJoB,EAAM,MACNF,GACEf,EACJ,OAAOF,GAAO4B,EAAM1C,GAAK0C,EAAM1C,GAAKiC,GAAUpB,GAAQ6B,EAAM3C,GAAK2C,EAAM3C,GAAKgC,CAC9E,CAMA,MAAMY,EAAgB/G,IACpB,IAAI,oBACFwF,EAAmB,eACnBD,EAAc,mBACdyB,GACEhH,EAEJ,IAAKgH,EACH,MAAO,GAGT,MAAMtB,EAAa,GAEnB,IAAK,MAAMC,KAAsBH,EAAqB,CACpD,MAAM,GACJvF,GACE0F,EACEP,EAAOG,EAAeK,IAAI3F,GAEhC,GAAImF,GAAQyB,EAAkBG,EAAoB5B,GAAO,CAMvD,MACM6B,EADUjC,EAAmBI,GACT8B,QAAO,CAACC,EAAaC,IACtCD,EAAc9C,EAAgB2C,EAAoBI,IACxD,GACGC,EAAoBZ,QAAQQ,EAAY,GAAGP,QAAQ,IACzDhB,EAAW9G,KAAK,CACdqB,KACA2E,KAAM,CACJe,qBACAzF,MAAOmH,IAGb,CACF,CAEA,OAAO3B,EAAWI,KAAKnB,EAAkB,EAU3C,SAAS2C,EAAaC,EAAOC,GAC3B,OAAOD,GAASC,EAAQ,CACtBrD,EAAGoD,EAAMtC,KAAOuC,EAAMvC,KACtBb,EAAGmD,EAAMrC,IAAMsC,EAAMtC,KACnBlB,CACN,CAEA,SAASyD,EAAuBC,GAC9B,OAAO,SAA0BtC,GAC/B,IAAK,IAAIxB,EAAO5F,UAAUD,OAAQ4J,EAAc,IAAItJ,MAAMuF,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IACzG6D,EAAY7D,EAAO,GAAK9F,UAAU8F,GAGpC,OAAO6D,EAAYT,QAAO,CAACU,EAAKC,KAAe,IAAMD,EACnD1C,IAAK0C,EAAI1C,IAAMwC,EAAWG,EAAWzD,EACrCiC,OAAQuB,EAAIvB,OAASqB,EAAWG,EAAWzD,EAC3Ca,KAAM2C,EAAI3C,KAAOyC,EAAWG,EAAW1D,EACvCgC,MAAOyB,EAAIzB,MAAQuB,EAAWG,EAAW1D,KACvC,IAAKiB,GAEX,CACF,CACA,MAAM0C,EAA+BL,EAAuB,GAE5D,SAASM,EAAeC,GACtB,GAAIA,EAAUC,WAAW,aAAc,CACrC,MAAMC,EAAiBF,EAAU1J,MAAM,GAAI,GAAG6J,MAAM,MACpD,MAAO,CACLhE,GAAI+D,EAAe,IACnB9D,GAAI8D,EAAe,IACnBE,QAASF,EAAe,GACxBG,QAASH,EAAe,GAE5B,CAAO,GAAIF,EAAUC,WAAW,WAAY,CAC1C,MAAMC,EAAiBF,EAAU1J,MAAM,GAAI,GAAG6J,MAAM,MACpD,MAAO,CACLhE,GAAI+D,EAAe,GACnB9D,GAAI8D,EAAe,GACnBE,QAASF,EAAe,GACxBG,QAASH,EAAe,GAE5B,CAEA,OAAO,IACT,CA6BA,MAAMI,EAAiB,CACrBC,iBAAiB,GAMnB,SAASC,EAAcC,EAAS/E,QACd,IAAZA,IACFA,EAAU4E,GAGZ,IAAIlD,EAAOqD,EAAQC,wBAEnB,GAAIhF,EAAQ6E,gBAAiB,CAC3B,MAAM,UACJP,EAAS,gBACTW,IACE,QAAUF,GAASG,iBAAiBH,GAEpCT,IACF5C,EAhDN,SAA0BA,EAAM4C,EAAWW,GACzC,MAAME,EAAkBd,EAAeC,GAEvC,IAAKa,EACH,OAAOzD,EAGT,MAAM,OACJgD,EAAM,OACNC,EACAlE,EAAG2E,EACH1E,EAAG2E,GACDF,EACE1E,EAAIiB,EAAKH,KAAO6D,GAAc,EAAIV,GAAUY,WAAWL,GACvDvE,EAAIgB,EAAKF,IAAM6D,GAAc,EAAIV,GAAUW,WAAWL,EAAgBrK,MAAMqK,EAAgBM,QAAQ,KAAO,IAC3GC,EAAId,EAAShD,EAAK7E,MAAQ6H,EAAShD,EAAK7E,MACxC4I,EAAId,EAASjD,EAAK5E,OAAS6H,EAASjD,EAAK5E,OAC/C,MAAO,CACLD,MAAO2I,EACP1I,OAAQ2I,EACRjE,IAAKd,EACL+B,MAAOhC,EAAI+E,EACX7C,OAAQjC,EAAI+E,EACZlE,KAAMd,EAEV,CAuBaiF,CAAiBhE,EAAM4C,EAAWW,GAE7C,CAEA,MAAM,IACJzD,EAAG,KACHD,EAAI,MACJ1E,EAAK,OACLC,EAAM,OACN6F,EAAM,MACNF,GACEf,EACJ,MAAO,CACLF,MACAD,OACA1E,QACAC,SACA6F,SACAF,QAEJ,CAUA,SAASkD,EAA+BZ,GACtC,OAAOD,EAAcC,EAAS,CAC5BF,iBAAiB,GAErB,CAoCA,SAASe,EAAuBb,EAASc,GACvC,MAAMC,EAAgB,GAuCtB,OAAKf,EArCL,SAASgB,EAAwBC,GAC/B,GAAa,MAATH,GAAiBC,EAAczL,QAAUwL,EAC3C,OAAOC,EAGT,IAAKE,EACH,OAAOF,EAGT,IAAI,QAAWE,IAAkC,MAAzBA,EAAKC,mBAA6BH,EAAcI,SAASF,EAAKC,kBAEpF,OADAH,EAAc5K,KAAK8K,EAAKC,kBACjBH,EAGT,KAAK,QAAcE,KAAS,QAAaA,GACvC,OAAOF,EAGT,GAAIA,EAAcI,SAASF,GACzB,OAAOF,EAGT,MAAMK,GAAgB,QAAUpB,GAASG,iBAAiBc,GAQ1D,OANIA,IAASjB,GAxCjB,SAAsBA,EAASoB,QACP,IAAlBA,IACFA,GAAgB,QAAUpB,GAASG,iBAAiBH,IAGtD,MAAMqB,EAAgB,wBAEtB,MADmB,CAAC,WAAY,YAAa,aAC3BC,MAAKC,IACrB,MAAM9J,EAAQ2J,EAAcG,GAC5B,MAAwB,iBAAV9J,GAAqB4J,EAAcG,KAAK/J,EAAc,GAExE,CA8BUgK,CAAaR,EAAMG,IACrBL,EAAc5K,KAAK8K,GAlD3B,SAAiBA,EAAMG,GAKrB,YAJsB,IAAlBA,IACFA,GAAgB,QAAUH,GAAMd,iBAAiBc,IAGjB,UAA3BG,EAAcvK,QACvB,CAgDQ6K,CAAQT,EAAMG,GACTL,EAGFC,EAAwBC,EAAKU,WACtC,CAMOX,CAAwBhB,GAHtBe,CAIX,CACA,SAASa,EAA2BX,GAClC,MAAOY,GAA2BhB,EAAuBI,EAAM,GAC/D,OAAkC,MAA3BY,EAAkCA,EAA0B,IACrE,CAEA,SAASC,EAAqB9B,GAC5B,OAAK,MAAcA,GAIf,QAASA,GACJA,GAGJ,QAAOA,IAIR,QAAWA,IAAYA,KAAY,QAAiBA,GAASkB,iBACxDa,QAGL,QAAc/B,GACTA,EAGF,KAXE,KARA,IAoBX,CAEA,SAASgC,EAAqBhC,GAC5B,OAAI,QAASA,GACJA,EAAQiC,QAGVjC,EAAQkC,UACjB,CACA,SAASC,EAAqBnC,GAC5B,OAAI,QAASA,GACJA,EAAQoC,QAGVpC,EAAQqC,SACjB,CACA,SAASC,EAAqBtC,GAC5B,MAAO,CACLtE,EAAGsG,EAAqBhC,GACxBrE,EAAGwG,EAAqBnC,GAE5B,CAEA,IAAIuC,EAOJ,SAASC,EAA2BxC,GAClC,SAAK,OAAcA,IAIZA,IAAYyC,SAASvB,gBAC9B,CAEA,SAASwB,EAAkBC,GACzB,MAAMC,EAAY,CAChBlH,EAAG,EACHC,EAAG,GAECkH,EAAaL,EAA2BG,GAAsB,CAClE5K,OAAQgK,OAAOe,YACfhL,MAAOiK,OAAOgB,YACZ,CACFhL,OAAQ4K,EAAmBK,aAC3BlL,MAAO6K,EAAmBM,aAEtBC,EAAY,CAChBxH,EAAGiH,EAAmBQ,YAAcN,EAAW/K,MAC/C6D,EAAGgH,EAAmBS,aAAeP,EAAW9K,QAMlD,MAAO,CACLsL,MALYV,EAAmBN,WAAaO,EAAUjH,EAMtD2H,OALaX,EAAmBT,YAAcU,EAAUlH,EAMxD6H,SALeZ,EAAmBN,WAAaa,EAAUvH,EAMzD6H,QALcb,EAAmBT,YAAcgB,EAAUxH,EAMzDwH,YACAN,YAEJ,EAzCA,SAAWL,GACTA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAoB,UAAK,GAAK,UACzC,CAHD,CAGGA,IAAcA,EAAY,CAAC,IAwC9B,MAAMkB,EAAmB,CACvB/H,EAAG,GACHC,EAAG,IAEL,SAAS+H,EAA2BC,EAAiBC,EAAqBrM,EAAMsM,EAAcC,GAC5F,IAAI,IACFrH,EAAG,KACHD,EAAI,MACJkB,EAAK,OACLE,GACErG,OAEiB,IAAjBsM,IACFA,EAAe,SAGW,IAAxBC,IACFA,EAAsBL,GAGxB,MAAM,MACJJ,EAAK,SACLE,EAAQ,OACRD,EAAM,QACNE,GACEd,EAAkBiB,GAChBI,EAAY,CAChBrI,EAAG,EACHC,EAAG,GAECqI,EAAQ,CACZtI,EAAG,EACHC,EAAG,GAECsI,EACIL,EAAoB7L,OAAS+L,EAAoBnI,EADrDsI,EAEGL,EAAoB9L,MAAQgM,EAAoBpI,EAuBzD,OApBK2H,GAAS5G,GAAOmH,EAAoBnH,IAAMwH,GAE7CF,EAAUpI,EAAI4G,EAAU2B,SACxBF,EAAMrI,EAAIkI,EAAe9H,KAAKoI,KAAKP,EAAoBnH,IAAMwH,EAAmBxH,GAAOwH,KAC7EV,GAAY3F,GAAUgG,EAAoBhG,OAASqG,IAE7DF,EAAUpI,EAAI4G,EAAU6B,QACxBJ,EAAMrI,EAAIkI,EAAe9H,KAAKoI,KAAKP,EAAoBhG,OAASqG,EAAmBrG,GAAUqG,KAG1FT,GAAW9F,GAASkG,EAAoBlG,MAAQuG,GAEnDF,EAAUrI,EAAI6G,EAAU6B,QACxBJ,EAAMtI,EAAImI,EAAe9H,KAAKoI,KAAKP,EAAoBlG,MAAQuG,EAAkBvG,GAASuG,KAChFX,GAAU9G,GAAQoH,EAAoBpH,KAAOyH,IAEvDF,EAAUrI,EAAI6G,EAAU2B,SACxBF,EAAMtI,EAAImI,EAAe9H,KAAKoI,KAAKP,EAAoBpH,KAAOyH,EAAkBzH,GAAQyH,IAGnF,CACLF,YACAC,QAEJ,CAEA,SAASK,EAAqBrE,GAC5B,GAAIA,IAAYyC,SAASvB,iBAAkB,CACzC,MAAM,WACJ6B,EAAU,YACVD,GACEf,OACJ,MAAO,CACLtF,IAAK,EACLD,KAAM,EACNkB,MAAOqF,EACPnF,OAAQkF,EACRhL,MAAOiL,EACPhL,OAAQ+K,EAEZ,CAEA,MAAM,IACJrG,EAAG,KACHD,EAAI,MACJkB,EAAK,OACLE,GACEoC,EAAQC,wBACZ,MAAO,CACLxD,MACAD,OACAkB,QACAE,SACA9F,MAAOkI,EAAQiD,YACflL,OAAQiI,EAAQgD,aAEpB,CAEA,SAASsB,EAAiBC,GACxB,OAAOA,EAAoB9F,QAAO,CAACU,EAAK8B,KAC/B,QAAI9B,EAAKmD,EAAqBrB,KACpC1F,EACL,CAYA,SAASiJ,EAAuBxE,EAASyE,GAKvC,QAJgB,IAAZA,IACFA,EAAU1E,IAGPC,EACH,OAGF,MAAM,IACJvD,EAAG,KACHD,EAAI,OACJoB,EAAM,MACNF,GACE+G,EAAQzE,GACoB4B,EAA2B5B,KAMvDpC,GAAU,GAAKF,GAAS,GAAKjB,GAAOsF,OAAOe,aAAetG,GAAQuF,OAAOgB,aAC3E/C,EAAQ0E,eAAe,CACrBC,MAAO,SACPC,OAAQ,UAGd,CAEA,MAAMC,EAAa,CAAC,CAAC,IAAK,CAAC,OAAQ,SAxCnC,SAA0BN,GACxB,OAAOA,EAAoB9F,QAAO,CAACU,EAAK8B,IAC/B9B,EAAM6C,EAAqBf,IACjC,EACL,GAoCgE,CAAC,IAAK,CAAC,MAAO,UAnC9E,SAA0BsD,GACxB,OAAOA,EAAoB9F,QAAO,CAACU,EAAK8B,IAC/B9B,EAAMgD,EAAqBlB,IACjC,EACL,IAgCA,MAAM6D,EACJ,WAAAC,CAAYpI,EAAMqD,GAChBnM,KAAK8I,UAAO,EACZ9I,KAAKiE,WAAQ,EACbjE,KAAKkE,YAAS,EACdlE,KAAK4I,SAAM,EACX5I,KAAK+J,YAAS,EACd/J,KAAK6J,WAAQ,EACb7J,KAAK2I,UAAO,EACZ,MAAM+H,EAAsB1D,EAAuBb,GAC7CgF,EAAgBV,EAAiBC,GACvC1Q,KAAK8I,KAAO,IAAKA,GAEjB9I,KAAKiE,MAAQ6E,EAAK7E,MAClBjE,KAAKkE,OAAS4E,EAAK5E,OAEnB,IAAK,MAAOkN,EAAMC,EAAMC,KAAoBN,EAC1C,IAAK,MAAM7N,KAAOkO,EAChB1J,OAAO4J,eAAevR,KAAMmD,EAAK,CAC/BmG,IAAK,KACH,MAAMkI,EAAiBF,EAAgBZ,GACjCe,EAAsBN,EAAcC,GAAQI,EAClD,OAAOxR,KAAK8I,KAAK3F,GAAOsO,CAAmB,EAE7CC,YAAY,IAKlB/J,OAAO4J,eAAevR,KAAM,OAAQ,CAClC0R,YAAY,GAEhB,EAIF,MAAMC,EACJ,WAAAT,CAAYvH,GACV3J,KAAK2J,YAAS,EACd3J,KAAKuB,UAAY,GAEjBvB,KAAK4R,UAAY,KACf5R,KAAKuB,UAAUsQ,SAAQ1P,IACrB,IAAI2P,EAEJ,OAAuC,OAA/BA,EAAe9R,KAAK2J,aAAkB,EAASmI,EAAaC,uBAAuB5P,EAAS,GACpG,EAGJnC,KAAK2J,OAASA,CAChB,CAEA,GAAAqI,CAAIC,EAAW9Q,EAASiG,GACtB,IAAI8K,EAE6B,OAAhCA,EAAgBlS,KAAK2J,SAA2BuI,EAAcC,iBAAiBF,EAAW9Q,EAASiG,GACpGpH,KAAKuB,UAAUe,KAAK,CAAC2P,EAAW9Q,EAASiG,GAC3C,EAgBF,SAASgL,EAAoBC,EAAOC,GAClC,MAAMC,EAAKrK,KAAKoI,IAAI+B,EAAMxK,GACpB2K,EAAKtK,KAAKoI,IAAI+B,EAAMvK,GAE1B,MAA2B,iBAAhBwK,EACFpK,KAAKC,KAAKoK,GAAM,EAAIC,GAAM,GAAKF,EAGpC,MAAOA,GAAe,MAAOA,EACxBC,EAAKD,EAAYzK,GAAK2K,EAAKF,EAAYxK,EAG5C,MAAOwK,EACFC,EAAKD,EAAYzK,EAGtB,MAAOyK,GACFE,EAAKF,EAAYxK,CAI5B,CAEA,IAAI2K,EAmBAC,GAPJ,SAASC,GAAeC,GACtBA,EAAMD,gBACR,CACA,SAASE,GAAgBD,GACvBA,EAAMC,iBACR,EAfA,SAAWJ,GACTA,EAAiB,MAAI,QACrBA,EAAqB,UAAI,YACzBA,EAAmB,QAAI,UACvBA,EAAuB,YAAI,cAC3BA,EAAkB,OAAI,SACtBA,EAA2B,gBAAI,kBAC/BA,EAA4B,iBAAI,kBACjC,CARD,CAQGA,IAAcA,EAAY,CAAC,IAW9B,SAAWC,GACTA,EAAoB,MAAI,QACxBA,EAAmB,KAAI,YACvBA,EAAoB,MAAI,aACxBA,EAAmB,KAAI,YACvBA,EAAiB,GAAI,UACrBA,EAAkB,IAAI,SACtBA,EAAoB,MAAI,OACzB,CARD,CAQGA,KAAiBA,GAAe,CAAC,IAEpC,MAAMI,GAAuB,CAC3BC,MAAO,CAACL,GAAaM,MAAON,GAAaO,OACzCC,OAAQ,CAACR,GAAaS,KACtBC,IAAK,CAACV,GAAaM,MAAON,GAAaO,QAEnCI,GAAkC,CAACT,EAAOlP,KAC9C,IAAI,mBACF4P,GACE5P,EAEJ,OAAQkP,EAAMW,MACZ,KAAKb,GAAac,MAChB,MAAO,IAAKF,EACVzL,EAAGyL,EAAmBzL,EAAI,IAG9B,KAAK6K,GAAae,KAChB,MAAO,IAAKH,EACVzL,EAAGyL,EAAmBzL,EAAI,IAG9B,KAAK6K,GAAagB,KAChB,MAAO,IAAKJ,EACVxL,EAAGwL,EAAmBxL,EAAI,IAG9B,KAAK4K,GAAaiB,GAChB,MAAO,IAAKL,EACVxL,EAAGwL,EAAmBxL,EAAI,IAIhB,EAGlB,MAAM8L,GACJ,WAAA1C,CAAY2C,GACV7T,KAAK6T,WAAQ,EACb7T,KAAK8T,mBAAoB,EACzB9T,KAAK+T,0BAAuB,EAC5B/T,KAAKuB,eAAY,EACjBvB,KAAKgU,qBAAkB,EACvBhU,KAAK6T,MAAQA,EACb,MACEjB,OAAO,OACLjJ,IAEAkK,EACJ7T,KAAK6T,MAAQA,EACb7T,KAAKuB,UAAY,IAAIoQ,GAAU,QAAiBhI,IAChD3J,KAAKgU,gBAAkB,IAAIrC,GAAU,QAAUhI,IAC/C3J,KAAKiU,cAAgBjU,KAAKiU,cAAcC,KAAKlU,MAC7CA,KAAKmU,aAAenU,KAAKmU,aAAaD,KAAKlU,MAC3CA,KAAKoU,QACP,CAEA,MAAAA,GACEpU,KAAKqU,cACLrU,KAAKgU,gBAAgBhC,IAAIS,EAAU6B,OAAQtU,KAAKmU,cAChDnU,KAAKgU,gBAAgBhC,IAAIS,EAAU8B,iBAAkBvU,KAAKmU,cAC1DK,YAAW,IAAMxU,KAAKuB,UAAUyQ,IAAIS,EAAUgC,QAASzU,KAAKiU,gBAC9D,CAEA,WAAAI,GACE,MAAM,WACJK,EAAU,QACVC,GACE3U,KAAK6T,MACHzG,EAAOsH,EAAWtH,KAAKwH,QAEzBxH,GACFuD,EAAuBvD,GAGzBuH,EAAQjN,EACV,CAEA,aAAAuM,CAAcrB,GACZ,IAAI,QAAgBA,GAAQ,CAC1B,MAAM,OACJ3N,EAAM,QACNpD,EAAO,QACPuF,GACEpH,KAAK6T,OACH,cACJgB,EAAgB/B,GAAoB,iBACpCgC,EAAmBzB,GAA+B,eAClD0B,EAAiB,UACf3N,GACE,KACJmM,GACEX,EAEJ,GAAIiC,EAAczB,IAAI9F,SAASiG,GAE7B,YADAvT,KAAKgV,UAAUpC,GAIjB,GAAIiC,EAAc3B,OAAO5F,SAASiG,GAEhC,YADAvT,KAAKmU,aAAavB,GAIpB,MAAM,cACJ5J,GACEnH,EAAQ+S,QACNtB,EAAqBtK,EAAgB,CACzCnB,EAAGmB,EAAcL,KACjBb,EAAGkB,EAAcJ,KACflB,EAEC1H,KAAK+T,uBACR/T,KAAK+T,qBAAuBT,GAG9B,MAAM2B,EAAiBH,EAAiBlC,EAAO,CAC7C3N,SACApD,QAASA,EAAQ+S,QACjBtB,uBAGF,GAAI2B,EAAgB,CAClB,MAAMC,GAAmB,QAASD,EAAgB3B,GAC5C6B,EAAc,CAClBtN,EAAG,EACHC,EAAG,IAEC,oBACJ4I,GACE7O,EAAQ+S,QAEZ,IAAK,MAAM9E,KAAmBY,EAAqB,CACjD,MAAMR,EAAY0C,EAAMW,MAClB,MACJ/D,EAAK,QACLG,EAAO,OACPF,EAAM,SACNC,EAAQ,UACRL,EAAS,UACTN,GACEF,EAAkBiB,GAChBsF,EAAoB5E,EAAqBV,GACzCuF,EAAqB,CACzBxN,EAAGK,KAAK4B,IAAIoG,IAAcwC,GAAac,MAAQ4B,EAAkBvL,MAAQuL,EAAkBnR,MAAQ,EAAImR,EAAkBvL,MAAO3B,KAAK0B,IAAIsG,IAAcwC,GAAac,MAAQ4B,EAAkBzM,KAAOyM,EAAkBzM,KAAOyM,EAAkBnR,MAAQ,EAAGgR,EAAepN,IAC1QC,EAAGI,KAAK4B,IAAIoG,IAAcwC,GAAagB,KAAO0B,EAAkBrL,OAASqL,EAAkBlR,OAAS,EAAIkR,EAAkBrL,OAAQ7B,KAAK0B,IAAIsG,IAAcwC,GAAagB,KAAO0B,EAAkBxM,IAAMwM,EAAkBxM,IAAMwM,EAAkBlR,OAAS,EAAG+Q,EAAenN,KAEtQwN,EAAapF,IAAcwC,GAAac,QAAU7D,GAAWO,IAAcwC,GAAae,OAAShE,EACjG8F,EAAarF,IAAcwC,GAAagB,OAAShE,GAAYQ,IAAcwC,GAAaiB,KAAOnE,EAErG,GAAI8F,GAAcD,EAAmBxN,IAAMoN,EAAepN,EAAG,CAC3D,MAAM2N,EAAuB1F,EAAgBzB,WAAa6G,EAAiBrN,EACrE4N,EAA4BvF,IAAcwC,GAAac,OAASgC,GAAwBnG,EAAUxH,GAAKqI,IAAcwC,GAAae,MAAQ+B,GAAwBzG,EAAUlH,EAElL,GAAI4N,IAA8BP,EAAiBpN,EAOjD,YAJAgI,EAAgB4F,SAAS,CACvB/M,KAAM6M,EACNG,SAAUZ,IAMZI,EAAYtN,EADV4N,EACc3F,EAAgBzB,WAAamH,EAE7BtF,IAAcwC,GAAac,MAAQ1D,EAAgBzB,WAAagB,EAAUxH,EAAIiI,EAAgBzB,WAAaU,EAAUlH,EAGnIsN,EAAYtN,GACdiI,EAAgB8F,SAAS,CACvBjN,MAAOwM,EAAYtN,EACnB8N,SAAUZ,IAId,KACF,CAAO,GAAIQ,GAAcF,EAAmBvN,IAAMmN,EAAenN,EAAG,CAClE,MAAM0N,EAAuB1F,EAAgBtB,UAAY0G,EAAiBpN,EACpE2N,EAA4BvF,IAAcwC,GAAagB,MAAQ8B,GAAwBnG,EAAUvH,GAAKoI,IAAcwC,GAAaiB,IAAM6B,GAAwBzG,EAAUjH,EAE/K,GAAI2N,IAA8BP,EAAiBrN,EAOjD,YAJAiI,EAAgB4F,SAAS,CACvB9M,IAAK4M,EACLG,SAAUZ,IAMZI,EAAYrN,EADV2N,EACc3F,EAAgBtB,UAAYgH,EAE5BtF,IAAcwC,GAAagB,KAAO5D,EAAgBtB,UAAYa,EAAUvH,EAAIgI,EAAgBtB,UAAYO,EAAUjH,EAGhIqN,EAAYrN,GACdgI,EAAgB8F,SAAS,CACvBhN,KAAMuM,EAAYrN,EAClB6N,SAAUZ,IAId,KACF,CACF,CAEA/U,KAAK6V,WAAWjD,GAAO,SAAI,QAASqC,EAAgBjV,KAAK+T,sBAAuBoB,GAClF,CACF,CACF,CAEA,UAAAU,CAAWjD,EAAOkD,GAChB,MAAM,OACJC,GACE/V,KAAK6T,MACTjB,EAAMD,iBACNoD,EAAOD,EACT,CAEA,SAAAd,CAAUpC,GACR,MAAM,MACJoD,GACEhW,KAAK6T,MACTjB,EAAMD,iBACN3S,KAAKiW,SACLD,GACF,CAEA,YAAA7B,CAAavB,GACX,MAAM,SACJsD,GACElW,KAAK6T,MACTjB,EAAMD,iBACN3S,KAAKiW,SACLC,GACF,CAEA,MAAAD,GACEjW,KAAKuB,UAAUqQ,YACf5R,KAAKgU,gBAAgBpC,WACvB,EAmCF,SAASuE,GAAqBC,GAC5B,OAAOC,QAAQD,GAAc,aAAcA,EAC7C,CAEA,SAASE,GAAkBF,GACzB,OAAOC,QAAQD,GAAc,UAAWA,EAC1C,CAtCAxC,GAAe2C,WAAa,CAAC,CAC3BtE,UAAW,YACX9Q,QAAS,CAACyR,EAAOlP,EAAMyB,KACrB,IAAI,cACF0P,EAAgB/B,GAAoB,aACpC0D,GACE9S,GACA,OACFuB,GACEE,EACJ,MAAM,KACJoO,GACEX,EAAM6D,YAEV,GAAI5B,EAAc9B,MAAMzF,SAASiG,GAAO,CACtC,MAAMmD,EAAYzR,EAAO0R,cAAc/B,QAEvC,QAAI8B,GAAa9D,EAAMjJ,SAAW+M,KAIlC9D,EAAMD,iBACU,MAAhB6D,GAAgCA,EAAa,CAC3C5D,MAAOA,EAAM6D,eAER,EACT,CAEA,OAAO,CAAK,IAYhB,MAAMG,GACJ,WAAA1F,CAAY2C,EAAOgD,EAAQC,GACzB,IAAIC,OAEmB,IAAnBD,IACFA,EApWN,SAAgCnN,GAM9B,MAAM,YACJqN,IACE,QAAUrN,GACd,OAAOA,aAAkBqN,EAAcrN,GAAS,QAAiBA,EACnE,CA0VuBsN,CAAuBpD,EAAMjB,MAAMjJ,SAGtD3J,KAAK6T,WAAQ,EACb7T,KAAK6W,YAAS,EACd7W,KAAK8T,mBAAoB,EACzB9T,KAAK4O,cAAW,EAChB5O,KAAKkX,WAAY,EACjBlX,KAAKmX,wBAAqB,EAC1BnX,KAAKoX,UAAY,KACjBpX,KAAKuB,eAAY,EACjBvB,KAAKqX,uBAAoB,EACzBrX,KAAKgU,qBAAkB,EACvBhU,KAAK6T,MAAQA,EACb7T,KAAK6W,OAASA,EACd,MAAM,MACJjE,GACEiB,GACE,OACJlK,GACEiJ,EACJ5S,KAAK6T,MAAQA,EACb7T,KAAK6W,OAASA,EACd7W,KAAK4O,UAAW,QAAiBjF,GACjC3J,KAAKqX,kBAAoB,IAAI1F,EAAU3R,KAAK4O,UAC5C5O,KAAKuB,UAAY,IAAIoQ,EAAUmF,GAC/B9W,KAAKgU,gBAAkB,IAAIrC,GAAU,QAAUhI,IAC/C3J,KAAKmX,mBAA4E,OAAtDJ,GAAuB,QAAoBnE,IAAkBmE,EAAuBrP,EAC/G1H,KAAKqU,YAAcrU,KAAKqU,YAAYH,KAAKlU,MACzCA,KAAK6V,WAAa7V,KAAK6V,WAAW3B,KAAKlU,MACvCA,KAAKgV,UAAYhV,KAAKgV,UAAUd,KAAKlU,MACrCA,KAAKmU,aAAenU,KAAKmU,aAAaD,KAAKlU,MAC3CA,KAAKsX,cAAgBtX,KAAKsX,cAAcpD,KAAKlU,MAC7CA,KAAKuX,oBAAsBvX,KAAKuX,oBAAoBrD,KAAKlU,MACzDA,KAAKoU,QACP,CAEA,MAAAA,GACE,MAAM,OACJyC,EACAhD,OACEzM,SAAS,qBACPoQ,EAAoB,2BACpBC,KAGFzX,KAWJ,GAVAA,KAAKuB,UAAUyQ,IAAI6E,EAAOa,KAAKC,KAAM3X,KAAK6V,WAAY,CACpD+B,SAAS,IAEX5X,KAAKuB,UAAUyQ,IAAI6E,EAAOzD,IAAIuE,KAAM3X,KAAKgV,WACzChV,KAAKgU,gBAAgBhC,IAAIS,EAAU6B,OAAQtU,KAAKmU,cAChDnU,KAAKgU,gBAAgBhC,IAAIS,EAAUoF,UAAWlF,IAC9C3S,KAAKgU,gBAAgBhC,IAAIS,EAAU8B,iBAAkBvU,KAAKmU,cAC1DnU,KAAKgU,gBAAgBhC,IAAIS,EAAUqF,YAAanF,IAChD3S,KAAKqX,kBAAkBrF,IAAIS,EAAUgC,QAASzU,KAAKsX,eAE/CE,EAAsB,CACxB,GAAkC,MAA9BC,GAAsCA,EAA2B,CACnE7E,MAAO5S,KAAK6T,MAAMjB,MAClB8B,WAAY1U,KAAK6T,MAAMa,WACvBtN,QAASpH,KAAK6T,MAAMzM,UAEpB,OAAOpH,KAAKqU,cAGd,GAAIiC,GAAkBkB,GAEpB,YADAxX,KAAKoX,UAAY5C,WAAWxU,KAAKqU,YAAamD,EAAqBO,QAIrE,GAAI5B,GAAqBqB,GACvB,MAEJ,CAEAxX,KAAKqU,aACP,CAEA,MAAA4B,GACEjW,KAAKuB,UAAUqQ,YACf5R,KAAKgU,gBAAgBpC,YAGrB4C,WAAWxU,KAAKqX,kBAAkBzF,UAAW,IAEtB,OAAnB5R,KAAKoX,YACPY,aAAahY,KAAKoX,WAClBpX,KAAKoX,UAAY,KAErB,CAEA,WAAA/C,GACE,MAAM,mBACJ8C,GACEnX,MACE,QACJ2U,GACE3U,KAAK6T,MAELsD,IACFnX,KAAKkX,WAAY,EAEjBlX,KAAKqX,kBAAkBrF,IAAIS,EAAUwF,MAAOpF,GAAiB,CAC3DqF,SAAS,IAGXlY,KAAKuX,sBAELvX,KAAKqX,kBAAkBrF,IAAIS,EAAU0F,gBAAiBnY,KAAKuX,qBAC3D5C,EAAQwC,GAEZ,CAEA,UAAAtB,CAAWjD,GACT,IAAIwF,EAEJ,MAAM,UACJlB,EAAS,mBACTC,EAAkB,MAClBtD,GACE7T,MACE,OACJ+V,EACA3O,SAAS,qBACPoQ,IAEA3D,EAEJ,IAAKsD,EACH,OAGF,MAAMrB,EAAsE,OAAvDsC,GAAwB,QAAoBxF,IAAkBwF,EAAwB1Q,EACrG2K,GAAQ,QAAS8E,EAAoBrB,GAE3C,IAAKoB,GAAaM,EAAsB,CACtC,GAAIrB,GAAqBqB,GAAuB,CAC9C,GAAsC,MAAlCA,EAAqBa,WAAqBjG,EAAoBC,EAAOmF,EAAqBa,WAC5F,OAAOrY,KAAKmU,eAGd,GAAI/B,EAAoBC,EAAOmF,EAAqBc,UAClD,OAAOtY,KAAKqU,aAEhB,CAEA,OAAIiC,GAAkBkB,IAChBpF,EAAoBC,EAAOmF,EAAqBa,WAC3CrY,KAAKmU,oBAIhB,CACF,CAEIvB,EAAM2F,YACR3F,EAAMD,iBAGRoD,EAAOD,EACT,CAEA,SAAAd,GACE,MAAM,MACJgB,GACEhW,KAAK6T,MACT7T,KAAKiW,SACLD,GACF,CAEA,YAAA7B,GACE,MAAM,SACJ+B,GACElW,KAAK6T,MACT7T,KAAKiW,SACLC,GACF,CAEA,aAAAoB,CAAc1E,GACRA,EAAMW,OAASb,GAAaS,KAC9BnT,KAAKmU,cAET,CAEA,mBAAAoD,GACE,IAAIiB,EAEsD,OAAzDA,EAAwBxY,KAAK4O,SAAS6J,iBAAmCD,EAAsBE,iBAClG,EAIF,MAAM7B,GAAS,CACba,KAAM,CACJC,KAAM,eAERvE,IAAK,CACHuE,KAAM,cAGV,MAAMgB,WAAsB/B,GAC1B,WAAA1F,CAAY2C,GACV,MAAM,MACJjB,GACEiB,EAGEiD,GAAiB,QAAiBlE,EAAMjJ,QAC9CiP,MAAM/E,EAAOgD,GAAQC,EACvB,EAGF6B,GAAcpC,WAAa,CAAC,CAC1BtE,UAAW,gBACX9Q,QAAS,CAACuC,EAAMyB,KACd,IACEsR,YAAa7D,GACXlP,GACA,aACF8S,GACErR,EAEJ,SAAKyN,EAAMiG,WAA8B,IAAjBjG,EAAMkG,UAId,MAAhBtC,GAAgCA,EAAa,CAC3C5D,WAEK,EAAI,IAIf,MAAMmG,GAAW,CACfrB,KAAM,CACJC,KAAM,aAERvE,IAAK,CACHuE,KAAM,YAGV,IAAIqB,IAEJ,SAAWA,GACTA,EAAYA,EAAwB,WAAI,GAAK,YAC9C,CAFD,CAEGA,KAAgBA,GAAc,CAAC,KAElC,cAA0BpC,GACxB,WAAA1F,CAAY2C,GACV+E,MAAM/E,EAAOkF,IAAU,QAAiBlF,EAAMjB,MAAMjJ,QACtD,IAGU4M,WAAa,CAAC,CACxBtE,UAAW,cACX9Q,QAAS,CAACuC,EAAMyB,KACd,IACEsR,YAAa7D,GACXlP,GACA,aACF8S,GACErR,EAEJ,OAAIyN,EAAMkG,SAAWE,GAAYC,aAIjB,MAAhBzC,GAAgCA,EAAa,CAC3C5D,WAEK,EAAI,IAIf,MAAMsG,GAAW,CACfxB,KAAM,CACJC,KAAM,aAERvE,IAAK,CACHuE,KAAM,aAiDV,IAAIwB,GAOAC,GAOJ,SAASC,GAAgB3V,GACvB,IAAI,aACFsM,EAAY,UACZ0G,EAAYyC,GAAoBG,QAAO,UACvCC,EAAS,aACTC,EAAY,QACZC,EAAO,SACPC,EAAW,EAAC,MACZC,EAAQP,GAAeQ,UAAS,mBAChClP,EAAkB,oBAClBgG,EAAmB,wBACnBmJ,EAAuB,MACvBxH,EAAK,UACLjC,GACE1M,EACJ,MAAMoW,EA0GR,SAAyB3U,GACvB,IAAI,MACFkN,EAAK,SACL0H,GACE5U,EACJ,MAAM6U,GAAgB,QAAY3H,GAClC,OAAO,SAAY4H,IACjB,GAAIF,IAAaC,IAAkBC,EAEjC,OAAOC,GAGT,MAAMhK,EAAY,CAChBrI,EAAGK,KAAKiS,KAAK9H,EAAMxK,EAAImS,EAAcnS,GACrCC,EAAGI,KAAKiS,KAAK9H,EAAMvK,EAAIkS,EAAclS,IAGvC,MAAO,CACLD,EAAG,CACD,CAAC6G,EAAU2B,UAAW4J,EAAepS,EAAE6G,EAAU2B,YAA8B,IAAjBH,EAAUrI,EACxE,CAAC6G,EAAU6B,SAAU0J,EAAepS,EAAE6G,EAAU6B,UAA4B,IAAhBL,EAAUrI,GAExEC,EAAG,CACD,CAAC4G,EAAU2B,UAAW4J,EAAenS,EAAE4G,EAAU2B,YAA8B,IAAjBH,EAAUpI,EACxE,CAAC4G,EAAU6B,SAAU0J,EAAenS,EAAE4G,EAAU6B,UAA4B,IAAhBL,EAAUpI,GAEzE,GACA,CAACiS,EAAU1H,EAAO2H,GACvB,CAtIuBI,CAAgB,CACnC/H,QACA0H,UAAWN,KAENY,EAAuBC,IAA2B,UACnDC,GAAc,IAAAC,QAAO,CACzB3S,EAAG,EACHC,EAAG,IAEC2S,GAAkB,IAAAD,QAAO,CAC7B3S,EAAG,EACHC,EAAG,IAECgB,GAAO,IAAApC,UAAQ,KACnB,OAAQgQ,GACN,KAAKyC,GAAoBG,QACvB,OAAO5O,EAAqB,CAC1B9B,IAAK8B,EAAmB5C,EACxBiC,OAAQW,EAAmB5C,EAC3Ba,KAAM+B,EAAmB7C,EACzBgC,MAAOa,EAAmB7C,GACxB,KAEN,KAAKsR,GAAoBuB,cACvB,OAAOlB,EACX,GACC,CAAC9C,EAAW8C,EAAc9O,IACvBiQ,GAAqB,IAAAH,QAAO,MAC5BI,GAAa,IAAA3U,cAAY,KAC7B,MAAM6J,EAAkB6K,EAAmB/F,QAE3C,IAAK9E,EACH,OAGF,MAAMzB,EAAakM,EAAY3F,QAAQ/M,EAAI4S,EAAgB7F,QAAQ/M,EAC7D2G,EAAY+L,EAAY3F,QAAQ9M,EAAI2S,EAAgB7F,QAAQ9M,EAClEgI,EAAgB8F,SAASvH,EAAYG,EAAU,GAC9C,IACGqM,GAA4B,IAAAnU,UAAQ,IAAMiT,IAAUP,GAAeQ,UAAY,IAAIlJ,GAAqBoK,UAAYpK,GAAqB,CAACiJ,EAAOjJ,KACvJ,IAAApK,YAAU,KACR,GAAKmT,GAAY/I,EAAoBjP,QAAWqH,EAAhD,CAKA,IAAK,MAAMgH,KAAmB+K,EAA2B,CACvD,IAAkE,KAAhD,MAAbtB,OAAoB,EAASA,EAAUzJ,IAC1C,SAGF,MAAMiL,EAAQrK,EAAoB/D,QAAQmD,GACpCC,EAAsB8J,EAAwBkB,GAEpD,IAAKhL,EACH,SAGF,MAAM,UACJG,EAAS,MACTC,GACEN,EAA2BC,EAAiBC,EAAqBjH,EAAMkH,EAAcI,GAEzF,IAAK,MAAMgB,IAAQ,CAAC,IAAK,KAClB0I,EAAa1I,GAAMlB,EAAUkB,MAChCjB,EAAMiB,GAAQ,EACdlB,EAAUkB,GAAQ,GAItB,GAAIjB,EAAMtI,EAAI,GAAKsI,EAAMrI,EAAI,EAM3B,OALAwS,IACAK,EAAmB/F,QAAU9E,EAC7BuK,EAAsBO,EAAYlB,GAClCa,EAAY3F,QAAUzE,OACtBsK,EAAgB7F,QAAU1E,EAG9B,CAEAqK,EAAY3F,QAAU,CACpB/M,EAAG,EACHC,EAAG,GAEL2S,EAAgB7F,QAAU,CACxB/M,EAAG,EACHC,EAAG,GAELwS,GA5CA,MAFEA,GA8CuB,GAE3B,CAACtK,EAAc4K,EAAYrB,EAAWe,EAAyBb,EAASC,EACxEsB,KAAKC,UAAUnS,GACfkS,KAAKC,UAAUnB,GAAeO,EAAuB3J,EAAqBmK,EAA2BhB,EACrGmB,KAAKC,UAAU7K,IACjB,EAzKA,cAA0BwG,GACxB,WAAA1F,CAAY2C,GACV+E,MAAM/E,EAAOqF,GACf,CAEA,YAAOgC,GAQL,OAJAhN,OAAOiE,iBAAiB+G,GAASxB,KAAKC,KAAM1Q,EAAM,CAChDiR,SAAS,EACTN,SAAS,IAEJ,WACL1J,OAAO6D,oBAAoBmH,GAASxB,KAAKC,KAAM1Q,EACjD,EAGA,SAASA,IAAQ,CACnB,IAGUsP,WAAa,CAAC,CACxBtE,UAAW,eACX9Q,QAAS,CAACuC,EAAMyB,KACd,IACEsR,YAAa7D,GACXlP,GACA,aACF8S,GACErR,EACJ,MAAM,QACJgW,GACEvI,EAEJ,QAAIuI,EAAQ1Z,OAAS,KAIL,MAAhB+U,GAAgCA,EAAa,CAC3C5D,WAEK,EAAI,IAMf,SAAWuG,GACTA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAAmC,cAAI,GAAK,eACjE,CAHD,CAGGA,KAAwBA,GAAsB,CAAC,IAIlD,SAAWC,GACTA,EAAeA,EAA0B,UAAI,GAAK,YAClDA,EAAeA,EAAkC,kBAAI,GAAK,mBAC3D,CAHD,CAGGA,KAAmBA,GAAiB,CAAC,IAgHxC,MAAMc,GAAsB,CAC1BrS,EAAG,CACD,CAAC6G,EAAU2B,WAAW,EACtB,CAAC3B,EAAU6B,UAAU,GAEvBzI,EAAG,CACD,CAAC4G,EAAU2B,WAAW,EACtB,CAAC3B,EAAU6B,UAAU,IAgEzB,IAAI6K,GAQAC,IANJ,SAAWD,GACTA,EAAkBA,EAA0B,OAAI,GAAK,SACrDA,EAAkBA,EAAkC,eAAI,GAAK,iBAC7DA,EAAkBA,EAAiC,cAAI,GAAK,eAC7D,CAJD,CAIGA,KAAsBA,GAAoB,CAAC,IAI9C,SAAWC,GACTA,EAA8B,UAAI,WACnC,CAFD,CAEGA,KAAuBA,GAAqB,CAAC,IAEhD,MAAMC,GAA4B,IAAIC,IAmHtC,SAASC,GAAgB5X,EAAO6X,GAC9B,OAAO,SAAYC,GACZ9X,EAID8X,IAIwB,mBAAdD,EAA2BA,EAAU7X,GAASA,GAPnD,MAQR,CAAC6X,EAAW7X,GACjB,CAsCA,SAAS+X,GAAkBjY,GACzB,IAAI,SACFkY,EAAQ,SACR7B,GACErW,EACJ,MAAMmY,GAAe,QAASD,GACxBE,GAAiB,IAAApV,UAAQ,KAC7B,GAAIqT,GAA8B,oBAAX7L,aAA2D,IAA1BA,OAAO6N,eAC7D,OAGF,MAAM,eACJA,GACE7N,OACJ,OAAO,IAAI6N,EAAeF,EAAa,GAEzC,CAAC9B,IAID,OAHA,IAAAzT,YAAU,IACD,IAAwB,MAAlBwV,OAAyB,EAASA,EAAeE,cAC7D,CAACF,IACGA,CACT,CAEA,SAASG,GAAe9P,GACtB,OAAO,IAAI8E,EAAK/E,EAAcC,GAAUA,EAC1C,CAEA,SAAS+P,GAAQ/P,EAASyE,EAASuL,QACjB,IAAZvL,IACFA,EAAUqL,IAGZ,MAAOnT,EAAMsT,IAAe,IAAAC,aAwC5B,SAAiBC,GACf,IAAKnQ,EACH,OAAO,KAIP,IAAIzI,EADN,IAA4B,IAAxByI,EAAQoQ,YAKV,OAAoE,OAA5D7Y,EAAsB,MAAf4Y,EAAsBA,EAAcH,GAAwBzY,EAAO,KAGpF,MAAM8Y,EAAU5L,EAAQzE,GAExB,GAAI6O,KAAKC,UAAUqB,KAAiBtB,KAAKC,UAAUuB,GACjD,OAAOF,EAGT,OAAOE,CACT,GA5DgD,MAC1CC,EA5DR,SAA6B/Y,GAC3B,IAAI,SACFkY,EAAQ,SACR7B,GACErW,EACJ,MAAMgZ,GAAkB,QAASd,GAC3Ba,GAAmB,IAAA/V,UAAQ,KAC/B,GAAIqT,GAA8B,oBAAX7L,aAA6D,IAA5BA,OAAOyO,iBAC7D,OAGF,MAAM,iBACJA,GACEzO,OACJ,OAAO,IAAIyO,EAAiBD,EAAgB,GAC3C,CAACA,EAAiB3C,IAIrB,OAHA,IAAAzT,YAAU,IACD,IAA0B,MAApBmW,OAA2B,EAASA,EAAiBT,cACjE,CAACS,IACGA,CACT,CAwC2BG,CAAoB,CAC3C,QAAAhB,CAASiB,GACP,GAAK1Q,EAIL,IAAK,MAAM2Q,KAAUD,EAAS,CAC5B,MAAM,KACJ5b,EAAI,OACJ0I,GACEmT,EAEJ,GAAa,cAAT7b,GAAwB0I,aAAkBoT,aAAepT,EAAOqT,SAAS7Q,GAAU,CACrFiQ,IACA,KACF,CACF,CACF,IAGIN,EAAiBH,GAAkB,CACvCC,SAAUQ,IAgBZ,OAdA,SAA0B,KACxBA,IAEIjQ,GACgB,MAAlB2P,GAAkCA,EAAemB,QAAQ9Q,GACrC,MAApBsQ,GAAoCA,EAAiBQ,QAAQrO,SAASsO,KAAM,CAC1EC,WAAW,EACXC,SAAS,MAGO,MAAlBtB,GAAkCA,EAAeE,aAC7B,MAApBS,GAAoCA,EAAiBT,aACvD,GACC,CAAC7P,IACGrD,CAuBT,CAOA,MAAMuU,GAAiB,GAkFvB,SAASC,GAAsBnM,EAAeoM,QACvB,IAAjBA,IACFA,EAAe,IAGjB,MAAMC,GAAuB,IAAAhD,QAAO,MAgBpC,OAfA,IAAAlU,YAAU,KACRkX,EAAqB5I,QAAU,IAAI,GAErC2I,IACA,IAAAjX,YAAU,KACR,MAAMmX,EAAmBtM,IAAkBzJ,EAEvC+V,IAAqBD,EAAqB5I,UAC5C4I,EAAqB5I,QAAUzD,IAG5BsM,GAAoBD,EAAqB5I,UAC5C4I,EAAqB5I,QAAU,KACjC,GACC,CAACzD,IACGqM,EAAqB5I,SAAU,QAASzD,EAAeqM,EAAqB5I,SAAWlN,CAChG,CA8CA,SAASgW,GAAcvR,GACrB,OAAO,IAAAzF,UAAQ,IAAMyF,EAzpDvB,SAA6BA,GAC3B,MAAMlI,EAAQkI,EAAQ+C,WAChBhL,EAASiI,EAAQ8C,YACvB,MAAO,CACLrG,IAAK,EACLD,KAAM,EACNkB,MAAO5F,EACP8F,OAAQ7F,EACRD,QACAC,SAEJ,CA8oDiCyZ,CAAoBxR,GAAW,MAAM,CAACA,GACvE,CAEA,MAAMyR,GAAiB,GAoCvB,SAASC,GAAkBzQ,GACzB,IAAKA,EACH,OAAO,KAGT,GAAIA,EAAK0Q,SAASrc,OAAS,EACzB,OAAO2L,EAGT,MAAM2Q,EAAa3Q,EAAK0Q,SAAS,GACjC,OAAO,QAAcC,GAAcA,EAAa3Q,CAClD,CA4CA,MAAM4Q,GAAiB,CAAC,CACtB7W,OAAQwR,GACRvR,QAAS,CAAC,GACT,CACDD,OAAQyM,GACRxM,QAAS,CAAC,IAEN6W,GAAc,CAClBrJ,QAAS,CAAC,GAENsJ,GAAgC,CACpCpZ,UAAW,CACT8L,QAAS7D,GAEXoR,UAAW,CACTvN,QAAS7D,EACTqR,SAAUhD,GAAkBiD,cAC5BC,UAAWjD,GAAmBkD,WAEhCC,YAAa,CACX5N,QAAS1E,IAIb,MAAMuS,WAA+BlD,IACnC,GAAAjS,CAAI3F,GACF,IAAI+a,EAEJ,OAAa,MAAN/a,GAA6C,OAA/B+a,EAAa9F,MAAMtP,IAAI3F,IAAe+a,OAAyBve,CACtF,CAEA,OAAAwe,GACE,OAAO5c,MAAM6c,KAAK5e,KAAK6e,SACzB,CAEA,UAAAC,GACE,OAAO9e,KAAK2e,UAAUlX,QAAO/D,IAC3B,IAAI,SACFqW,GACErW,EACJ,OAAQqW,CAAQ,GAEpB,CAEA,UAAAgF,CAAWpb,GACT,IAAIqb,EAAuBC,EAE3B,OAAyG,OAAjGD,EAAsD,OAA7BC,EAAYjf,KAAKsJ,IAAI3F,SAAe,EAASsb,EAAU7R,KAAKwH,SAAmBoK,OAAwB7e,CAC1I,EAIF,MAAM+e,GAAuB,CAC3BC,eAAgB,KAChBla,OAAQ,KACRyP,WAAY,KACZ0K,eAAgB,KAChBhW,WAAY,KACZiW,kBAAmB,KACnBC,eAA6B,IAAI/D,IACjCtS,eAA6B,IAAIsS,IACjCrS,oBAAkC,IAAIuV,GACtCrZ,KAAM,KACNoZ,YAAa,CACXe,QAAS,CACP3K,QAAS,MAEX9L,KAAM,KACN0W,OAAQvY,GAEVyJ,oBAAqB,GACrBmJ,wBAAyB,GACzB4F,uBAAwBvB,GACxBwB,2BAA4BzY,EAC5B0Y,WAAY,KACZC,oBAAoB,GAEhBC,GAAyB,CAC7BV,eAAgB,KAChB5I,WAAY,GACZtR,OAAQ,KACRma,eAAgB,KAChBU,kBAAmB,CACjBhb,UAAW,IAEbib,SAAU9Y,EACVqY,eAA6B,IAAI/D,IACjCnW,KAAM,KACNsa,2BAA4BzY,GAExB+Y,IAA+B,IAAApb,eAAcib,IAC7CI,IAA6B,IAAArb,eAAcsa,IAEjD,SAASgB,KACP,MAAO,CACLpb,UAAW,CACTG,OAAQ,KACRkS,mBAAoB,CAClBtP,EAAG,EACHC,EAAG,GAELqY,MAAO,IAAI5E,IACX6E,UAAW,CACTvY,EAAG,EACHC,EAAG,IAGPqW,UAAW,CACTkC,WAAY,IAAI5B,IAGtB,CACA,SAAS6B,GAAQC,EAAOC,GACtB,OAAQA,EAAOvf,MACb,KAAK+F,EAAO6Q,UACV,MAAO,IAAK0I,EACVzb,UAAW,IAAKyb,EAAMzb,UACpBqS,mBAAoBqJ,EAAOrJ,mBAC3BlS,OAAQub,EAAOvb,SAIrB,KAAK+B,EAAOyZ,SACV,OAAKF,EAAMzb,UAAUG,OAId,IAAKsb,EACVzb,UAAW,IAAKyb,EAAMzb,UACpBsb,UAAW,CACTvY,EAAG2Y,EAAO1K,YAAYjO,EAAI0Y,EAAMzb,UAAUqS,mBAAmBtP,EAC7DC,EAAG0Y,EAAO1K,YAAYhO,EAAIyY,EAAMzb,UAAUqS,mBAAmBrP,KAP1DyY,EAYX,KAAKvZ,EAAO0Z,QACZ,KAAK1Z,EAAO2Z,WACV,MAAO,IAAKJ,EACVzb,UAAW,IAAKyb,EAAMzb,UACpBG,OAAQ,KACRkS,mBAAoB,CAClBtP,EAAG,EACHC,EAAG,GAELsY,UAAW,CACTvY,EAAG,EACHC,EAAG,KAKX,KAAKd,EAAO4Z,kBACV,CACE,MAAM,QACJzU,GACEqU,GACE,GACJ7c,GACEwI,EACEkU,EAAa,IAAI5B,GAAuB8B,EAAMpC,UAAUkC,YAE9D,OADAA,EAAWQ,IAAIld,EAAIwI,GACZ,IAAKoU,EACVpC,UAAW,IAAKoC,EAAMpC,UACpBkC,cAGN,CAEF,KAAKrZ,EAAO8Z,qBACV,CACE,MAAM,GACJnd,EAAE,IACFR,EAAG,SACH4W,GACEyG,EACErU,EAAUoU,EAAMpC,UAAUkC,WAAW/W,IAAI3F,GAE/C,IAAKwI,GAAWhJ,IAAQgJ,EAAQhJ,IAC9B,OAAOod,EAGT,MAAMF,EAAa,IAAI5B,GAAuB8B,EAAMpC,UAAUkC,YAI9D,OAHAA,EAAWQ,IAAIld,EAAI,IAAKwI,EACtB4N,aAEK,IAAKwG,EACVpC,UAAW,IAAKoC,EAAMpC,UACpBkC,cAGN,CAEF,KAAKrZ,EAAO+Z,oBACV,CACE,MAAM,GACJpd,EAAE,IACFR,GACEqd,EACErU,EAAUoU,EAAMpC,UAAUkC,WAAW/W,IAAI3F,GAE/C,IAAKwI,GAAWhJ,IAAQgJ,EAAQhJ,IAC9B,OAAOod,EAGT,MAAMF,EAAa,IAAI5B,GAAuB8B,EAAMpC,UAAUkC,YAE9D,OADAA,EAAWW,OAAOrd,GACX,IAAK4c,EACVpC,UAAW,IAAKoC,EAAMpC,UACpBkC,cAGN,CAEF,QAEI,OAAOE,EAGf,CAEA,SAASU,GAAavd,GACpB,IAAI,SACFqW,GACErW,EACJ,MAAM,OACJuB,EAAM,eACNka,EAAc,eACdG,IACE,IAAA9Y,YAAWwZ,IACTkB,GAAyB,QAAY/B,GACrCgC,GAAmB,QAAsB,MAAVlc,OAAiB,EAASA,EAAOtB,IAgDtE,OA9CA,IAAA2C,YAAU,KACR,IAAIyT,IAICoF,GAAkB+B,GAA8C,MAApBC,EAA0B,CACzE,KAAK,QAAgBD,GACnB,OAGF,GAAItS,SAASwS,gBAAkBF,EAAuBvX,OAEpD,OAGF,MAAM0X,EAAgB/B,EAAehW,IAAI6X,GAEzC,IAAKE,EACH,OAGF,MAAM,cACJ1K,EAAa,KACbvJ,GACEiU,EAEJ,IAAK1K,EAAc/B,UAAYxH,EAAKwH,QAClC,OAGF0M,uBAAsB,KACpB,IAAK,MAAMnV,IAAW,CAACwK,EAAc/B,QAASxH,EAAKwH,SAAU,CAC3D,IAAKzI,EACH,SAGF,MAAMoV,GAAgB,QAAuBpV,GAE7C,GAAIoV,EAAe,CACjBA,EAAcC,QACd,KACF,CACF,IAEJ,IACC,CAACrC,EAAgBpF,EAAUuF,EAAgB6B,EAAkBD,IACzD,IACT,CAEA,SAASO,GAAeC,EAAWhe,GACjC,IAAI,UACFgI,KACGrK,GACDqC,EACJ,OAAoB,MAAbge,GAAqBA,EAAUjgB,OAASigB,EAAU9W,QAAO,CAACC,EAAaO,IACrEA,EAAS,CACdM,UAAWb,KACRxJ,KAEJqK,GAAaA,CAClB,CAkFA,MAAMiW,IAAsC,IAAA/c,eAAc,IAAK8C,EAC7DoE,OAAQ,EACRC,OAAQ,IAEV,IAAI6V,IAEJ,SAAWA,GACTA,EAAOA,EAAsB,cAAI,GAAK,gBACtCA,EAAOA,EAAqB,aAAI,GAAK,eACrCA,EAAOA,EAAoB,YAAI,GAAK,aACrC,CAJD,CAIGA,KAAWA,GAAS,CAAC,IAExB,MAAMC,IAA0B,IAAAC,OAAK,SAAoBpe,GACvD,IAAIqe,EAAuBC,EAAuBC,EAAmBC,EAErE,IAAI,GACFve,EAAE,cACFwe,EAAa,WACbvH,GAAa,EAAI,SACjBkD,EAAQ,QACRvW,EAAUyW,GAAc,mBACxBoE,EAAqB/X,EAAgB,UACrCgY,EAAS,UACTX,KACG7N,GACDnQ,EACJ,MAAM4e,GAAQ,IAAAjG,YAAWiE,QAASngB,EAAW+f,KACtCK,EAAOR,GAAYuC,GACnBC,EAAsBC,GAlwF/B,WACE,MAAOjhB,IAAa,IAAAyE,WAAS,IAAM,IAAIyc,MACjClc,GAAmB,IAAAN,cAAY9D,IACnCZ,EAAUyQ,IAAI7P,GACP,IAAMZ,EAAUyf,OAAO7e,KAC7B,CAACZ,IAYJ,MAAO,EAXU,IAAA0E,cAAYvC,IAC3B,IAAI,KACFzC,EAAI,MACJ2R,GACElP,EACJnC,EAAUsQ,SAAQ1P,IAChB,IAAIugB,EAEJ,OAA4C,OAApCA,EAAiBvgB,EAASlB,SAAiB,EAASyhB,EAAe5gB,KAAKK,EAAUyQ,EAAM,GAChG,GACD,CAACrR,IACcgF,EACpB,CAgvF0Doc,IACjDC,EAAQC,IAAa,IAAA7c,UAAS4b,GAAOkB,eACtCC,EAAgBH,IAAWhB,GAAOoB,aAEtCle,WACEG,OAAQge,EACR9C,MAAOb,EAAc,UACrBc,GAEFjC,WACEkC,WAAYnX,IAEZqX,EACEnT,EAAO6V,EAAW3D,EAAehW,IAAI2Z,GAAY,KACjDC,GAAc,IAAA1I,QAAO,CACzB2I,QAAS,KACTC,WAAY,OAERne,GAAS,IAAAyB,UAAQ,KACrB,IAAI2c,EAEJ,OAAmB,MAAZJ,EAAmB,CACxBtf,GAAIsf,EAEJ3a,KAA0D,OAAnD+a,EAAqB,MAARjW,OAAe,EAASA,EAAK9E,MAAgB+a,EAAapF,GAC9EnV,KAAMoa,GACJ,IAAI,GACP,CAACD,EAAU7V,IACRkW,GAAY,IAAA9I,QAAO,OAClB+I,EAAcC,IAAmB,IAAAxd,UAAS,OAC1CmZ,EAAgBsE,IAAqB,IAAAzd,UAAS,MAC/C0d,GAAc,QAAe7P,EAAOlM,OAAOkX,OAAOhL,IAClD8P,GAAyB,QAAY,iBAAkBhgB,GACvDigB,IAA6B,IAAAld,UAAQ,IAAMwC,EAAoB4V,cAAc,CAAC5V,IAC9EuW,IA9I2BoE,GA8IwBxB,GA7IlD,IAAA3b,UAAQ,KAAM,CACnB5B,UAAW,IAAKoZ,GAA8BpZ,aAC9B,MAAV+e,QAAiB,EAASA,GAAO/e,WAEvCqZ,UAAW,IAAKD,GAA8BC,aAC9B,MAAV0F,QAAiB,EAASA,GAAO1F,WAEvCK,YAAa,IAAKN,GAA8BM,eAChC,MAAVqF,QAAiB,EAASA,GAAOrF,gBAGzC,CAAW,MAAVqF,QAAiB,EAASA,GAAO/e,UAAqB,MAAV+e,QAAiB,EAASA,GAAO1F,UAAqB,MAAV0F,QAAiB,EAASA,GAAOrF,eAZ5H,IAAmCqF,GA+IjC,MAAM,eACJ5a,GAAc,2BACdyW,GAA0B,mBAC1BE,IAt7BJ,SAA+BS,EAAY3c,GACzC,IAAI,SACFogB,EAAQ,aACRvG,EAAY,OACZsG,GACEngB,EACJ,MAAOqgB,EAAOC,IAAY,IAAAhe,UAAS,OAC7B,UACJsY,EAAS,QACT1N,EAAO,SACPwN,GACEyF,EACEI,GAAgB,IAAAzJ,QAAO6F,GACvBtG,EAuFN,WACE,OAAQqE,GACN,KAAKhD,GAAkB8I,OACrB,OAAO,EAET,KAAK9I,GAAkB+I,eACrB,OAAOL,EAET,QACE,OAAQA,EAEd,CAlGiBM,GACXC,GAAc,QAAetK,GAC7B2F,GAA6B,IAAAzZ,cAAY,SAAUqe,QAC3C,IAARA,IACFA,EAAM,IAGJD,EAAYzP,SAIhBoP,GAASpgB,GACO,OAAVA,EACK0gB,EAGF1gB,EAAM2gB,OAAOD,EAAI7c,QAAO9D,IAAOC,EAAM0J,SAAS3J,OAEzD,GAAG,CAAC0gB,IACEjN,GAAY,IAAAoD,QAAO,MACnBvR,GAAiB,SAAYyS,IACjC,GAAI3B,IAAa+J,EACf,OAAOxI,GAGT,IAAKI,GAAiBA,IAAkBJ,IAAgB2I,EAAcrP,UAAYyL,GAAuB,MAAT0D,EAAe,CAC7G,MAAMS,EAAM,IAAIjJ,IAEhB,IAAK,IAAI5V,KAAa0a,EAAY,CAChC,IAAK1a,EACH,SAGF,GAAIoe,GAASA,EAAMtiB,OAAS,IAAMsiB,EAAMzW,SAAS3H,EAAUhC,KAAOgC,EAAUmD,KAAK8L,QAAS,CAExF4P,EAAI3D,IAAIlb,EAAUhC,GAAIgC,EAAUmD,KAAK8L,SACrC,QACF,CAEA,MAAMxH,EAAOzH,EAAUyH,KAAKwH,QACtB9L,EAAOsE,EAAO,IAAI6D,EAAKL,EAAQxD,GAAOA,GAAQ,KACpDzH,EAAUmD,KAAK8L,QAAU9L,EAErBA,GACF0b,EAAI3D,IAAIlb,EAAUhC,GAAImF,EAE1B,CAEA,OAAO0b,CACT,CAEA,OAAO9I,CAAa,GACnB,CAAC2E,EAAY0D,EAAOD,EAAU/J,EAAUnJ,IA6B3C,OA5BA,IAAAtK,YAAU,KACR2d,EAAcrP,QAAUyL,CAAU,GACjC,CAACA,KACJ,IAAA/Z,YAAU,KACJyT,GAIJ2F,GAA4B,GAE9B,CAACoE,EAAU/J,KACX,IAAAzT,YAAU,KACJyd,GAASA,EAAMtiB,OAAS,GAC1BuiB,EAAS,KACX,GAEF,CAAChJ,KAAKC,UAAU8I,MAChB,IAAAzd,YAAU,KACJyT,GAAiC,iBAAduE,GAAgD,OAAtBlH,EAAUxC,UAI3DwC,EAAUxC,QAAUJ,YAAW,KAC7BkL,IACAtI,EAAUxC,QAAU,IAAI,GACvB0J,GAAU,GAEf,CAACA,EAAWvE,EAAU2F,KAA+BnC,IAC9C,CACLtU,iBACAyW,6BACAE,mBAA6B,MAATmE,EAexB,CAu0BMU,CAAsBb,GAA4B,CACpDE,SAAUf,EACVxF,aAAc,CAAC6C,EAAUvY,EAAGuY,EAAUtY,GACtC+b,OAAQpE,GAAuBtB,YAE3BzJ,GAz+BR,SAAuB4K,EAAgB3b,GACrC,MAAM0d,EAAuB,OAAP1d,EAAc2b,EAAehW,IAAI3F,QAAMxD,EACvDiN,EAAOiU,EAAgBA,EAAcjU,KAAKwH,QAAU,KAC1D,OAAO,SAAY8P,IACjB,IAAIhhB,EAEJ,OAAW,OAAPC,EACK,KAM2C,OAA5CD,EAAe,MAAR0J,EAAeA,EAAOsX,GAAsBhhB,EAAO,IAAI,GACrE,CAAC0J,EAAMzJ,GACZ,CA09BqBghB,CAAcrF,EAAgB2D,GAC3C2B,IAAwB,IAAAle,UAAQ,IAAMyY,GAAiB,QAAoBA,GAAkB,MAAM,CAACA,IACpG0F,GAqZN,WACE,MAAMC,GAAsG,KAApD,MAAhBvB,OAAuB,EAASA,EAAazP,mBAC/EiR,EAAmD,iBAAfnK,GAAiD,IAAvBA,EAAWnB,SAAmC,IAAfmB,EAC7FnB,EAAUsJ,IAAkB+B,IAAmCC,EAErE,GAA0B,iBAAfnK,EACT,MAAO,IAAKA,EACVnB,WAIJ,MAAO,CACLA,UAEJ,CAna0BuL,GACpBC,GA/zBR,SAAwB7X,EAAMwD,GAC5B,OAAO4K,GAAgBpO,EAAMwD,EAC/B,CA6zBgCsU,CAAexQ,GAAY+K,GAAuB3a,UAAU8L,UA5I5F,SAA0ClN,GACxC,IAAI,WACFgR,EAAU,QACV9D,EAAO,YACPuU,EAAW,OACXtB,GAAS,GACPngB,EACJ,MAAM0hB,GAAc,IAAA5K,SAAO,IACrB,EACJ3S,EAAC,EACDC,GACoB,kBAAX+b,EAAuB,CAChChc,EAAGgc,EACH/b,EAAG+b,GACDA,GACJ,SAA0B,KAGxB,IAFkBhc,IAAMC,IAEP4M,EAEf,YADA0Q,EAAYxQ,SAAU,GAIxB,GAAIwQ,EAAYxQ,UAAYuQ,EAG1B,OAIF,MAAM/X,EAAqB,MAAdsH,OAAqB,EAASA,EAAWtH,KAAKwH,QAE3D,IAAKxH,IAA6B,IAArBA,EAAKmP,YAGhB,OAGF,MACM8I,EAAYra,EADL4F,EAAQxD,GACgB+X,GAarC,GAXKtd,IACHwd,EAAUxd,EAAI,GAGXC,IACHud,EAAUvd,EAAI,GAIhBsd,EAAYxQ,SAAU,EAElB1M,KAAKoI,IAAI+U,EAAUxd,GAAK,GAAKK,KAAKoI,IAAI+U,EAAUvd,GAAK,EAAG,CAC1D,MAAMkG,EAA0BD,EAA2BX,GAEvDY,GACFA,EAAwB4H,SAAS,CAC/BhN,IAAKyc,EAAUvd,EACfa,KAAM0c,EAAUxd,GAGtB,IACC,CAAC6M,EAAY7M,EAAGC,EAAGqd,EAAavU,GACrC,CA8EE0U,CAAiC,CAC/B5Q,WAAYuO,EAAW3D,EAAehW,IAAI2Z,GAAY,KACtDY,OAAQgB,GAAkBU,wBAC1BJ,YAAaF,GACbrU,QAAS6O,GAAuB3a,UAAU8L,UAE5C,MAAMwO,GAAiBlD,GAAQxH,GAAY+K,GAAuB3a,UAAU8L,QAASqU,IAC/E5F,GAAoBnD,GAAQxH,GAAaA,GAAW8Q,cAAgB,MACpEC,IAAgB,IAAAjL,QAAO,CAC3B2E,eAAgB,KAChBla,OAAQ,KACRyP,cACA1L,cAAe,KACfI,WAAY,KACZH,kBACAqW,iBACAoG,aAAc,KACdC,iBAAkB,KAClBzc,sBACA9D,KAAM,KACNsL,oBAAqB,GACrBkV,wBAAyB,OAErBC,GAAW3c,EAAoB6V,WAAmE,OAAvDgD,EAAwB0D,GAAc7Q,QAAQxP,WAAgB,EAAS2c,EAAsBpe,IACxI6a,GArgBR,SAAiC9a,GAC/B,IAAI,QACFkN,GACElN,EACJ,MAAOoF,EAAMgd,IAAW,IAAA9f,UAAS,MAiB3B8V,EAAiBH,GAAkB,CACvCC,UAjBmB,IAAA3V,cAAY8f,IAC/B,IAAK,MAAM,OACTpc,KACGoc,EACH,IAAI,QAAcpc,GAAS,CACzBmc,GAAQhd,IACN,MAAM0T,EAAU5L,EAAQjH,GACxB,OAAOb,EAAO,IAAKA,EACjB7E,MAAOuY,EAAQvY,MACfC,OAAQsY,EAAQtY,QACdsY,CAAO,IAEb,KACF,CACF,GACC,CAAC5L,MAIEoV,GAAmB,IAAA/f,cAAYkG,IACnC,MAAMiB,EAAOyQ,GAAkB1R,GACb,MAAlB2P,GAAkCA,EAAeE,aAE7C5O,IACgB,MAAlB0O,GAAkCA,EAAemB,QAAQ7P,IAG3D0Y,EAAQ1Y,EAAOwD,EAAQxD,GAAQ,KAAK,GACnC,CAACwD,EAASkL,KACNyD,EAASC,IAAU,QAAWwG,GACrC,OAAO,IAAAtf,UAAQ,KAAM,CACnB6Y,UACAzW,OACA0W,YACE,CAAC1W,EAAMyW,EAASC,GACtB,CA6dsByG,CAAwB,CAC1CrV,QAAS6O,GAAuBjB,YAAY5N,UAGxC8U,GAAwE,OAAxD1D,EAAwBxD,GAAYe,QAAQ3K,SAAmBoN,EAAwBtN,GACvGiR,GAAmB5C,EAA0D,OAAzCd,EAAoBzD,GAAY1V,MAAgBmZ,EAAoB7C,GAAiB,KACzH8G,GAAkB7P,QAAQmI,GAAYe,QAAQ3K,SAAW4J,GAAY1V,MAGrEqd,GA5tBCnb,EAFalC,GA8tBeod,GAAkB,KAAO9G,GA7tBxC5D,GAAgB1S,KADtC,IAAsBA,GAguBpB,MAAM6W,GAAajC,GAAcgI,IAAe,QAAUA,IAAgB,MAEpEhV,GA5tBR,SAAgCtD,GAC9B,MAAMgZ,GAAe,IAAA5L,QAAOpN,GACtBiZ,GAAY,SAAY3K,GACvBtO,EAIDsO,GAAiBA,IAAkB2B,IAAkBjQ,GAAQgZ,EAAaxR,SAAWxH,EAAKU,aAAesY,EAAaxR,QAAQ9G,WACzH4N,EAGF1O,EAAuBI,GAPrBiQ,IAQR,CAACjQ,IAIJ,OAHA,IAAA9G,YAAU,KACR8f,EAAaxR,QAAUxH,CAAI,GAC1B,CAACA,IACGiZ,CACT,CA2sB8BC,CAAuBvD,EAA4B,MAAZ8C,GAAmBA,GAAWnR,GAAa,MACxGmF,GAnkBR,SAAkB0M,EAAU3V,QACV,IAAZA,IACFA,EAAU1E,GAGZ,MAAOsa,GAAgBD,EACjB5G,EAAajC,GAAc8I,GAAe,QAAUA,GAAgB,OACnEC,EAAOC,IAAgB,IAAArK,aAmB9B,WACE,OAAKkK,EAAS9kB,OAIP8kB,EAAS/B,KAAIrY,GAAWwC,EAA2BxC,GAAWwT,EAAa,IAAI1O,EAAKL,EAAQzE,GAAUA,KAHpGyR,EAIX,GAzBkDA,IAC5C9B,EAAiBH,GAAkB,CACvCC,SAAU8K,IAeZ,OAZIH,EAAS9kB,OAAS,GAAKglB,IAAU7I,IACnC8I,KAGF,SAA0B,KACpBH,EAAS9kB,OACX8kB,EAAS1U,SAAQ1F,GAA6B,MAAlB2P,OAAyB,EAASA,EAAemB,QAAQ9Q,MAEnE,MAAlB2P,GAAkCA,EAAeE,aACjD0K,IACF,GACC,CAACH,IACGE,CAST,CAkiBkCE,CAASjW,IAEnCkW,GAAoBnF,GAAeC,EAAW,CAClDhW,UAAW,CACT7D,EAAGuY,EAAUvY,EAAIse,GAActe,EAC/BC,EAAGsY,EAAUtY,EAAIqe,GAAcre,EAC/BgE,OAAQ,EACRC,OAAQ,GAEVoT,iBACAla,SACAma,kBACAC,qBACAsG,oBACAvgB,KAAMqgB,GAAc7Q,QAAQxP,KAC5ByhB,gBAAiBrI,GAAY1V,KAC7B4H,uBACAmJ,2BACA8F,gBAEIjV,GAAqBka,IAAwB,QAAIA,GAAuBxE,GAAa,KACrFjP,GA/tBR,SAA0BoV,GACxB,MAAOO,EAAmBC,IAAwB,IAAA/gB,UAAS,MACrDghB,GAAe,IAAAxM,QAAO+L,GAEtBU,GAAe,IAAAhhB,cAAY2M,IAC/B,MAAMvF,EAAmBY,EAAqB2E,EAAMjJ,QAE/C0D,GAIL0Z,GAAqBD,GACdA,GAILA,EAAkBjG,IAAIxT,EAAkBoB,EAAqBpB,IACtD,IAAIkO,IAAIuL,IAJN,MAKT,GACD,IAkCH,OAjCA,IAAAxgB,YAAU,KACR,MAAM4gB,EAAmBF,EAAapS,QAEtC,GAAI2R,IAAaW,EAAkB,CACjCC,EAAQD,GACR,MAAMnB,EAAUQ,EAAS/B,KAAIrY,IAC3B,MAAMib,EAAoBnZ,EAAqB9B,GAE/C,OAAIib,GACFA,EAAkBjV,iBAAiB,SAAU8U,EAAc,CACzDrP,SAAS,IAEJ,CAACwP,EAAmB3Y,EAAqB2Y,KAG3C,IAAI,IACV3f,QAAOiC,GAAkB,MAATA,IACnBqd,EAAqBhB,EAAQtkB,OAAS,IAAI8Z,IAAIwK,GAAW,MACzDiB,EAAapS,QAAU2R,CACzB,CAEA,MAAO,KACLY,EAAQZ,GACRY,EAAQD,EAAiB,EAG3B,SAASC,EAAQZ,GACfA,EAAS1U,SAAQ1F,IACf,MAAMib,EAAoBnZ,EAAqB9B,GAC1B,MAArBib,GAAqCA,EAAkBrV,oBAAoB,SAAUkV,EAAa,GAEtG,IACC,CAACA,EAAcV,KACX,IAAA7f,UAAQ,IACT6f,EAAS9kB,OACJqlB,EAAoB/kB,MAAM6c,KAAKkI,EAAkBjI,UAAUjU,QAAO,CAACU,EAAKwK,KAAgB,QAAIxK,EAAKwK,IAAcpO,GAAsB+I,EAAiB8V,GAGxJ7e,GACN,CAAC6e,EAAUO,GAChB,CAmqBwBO,CAAiB3W,IAEjC4W,GAAmBhK,GAAsBnM,IAEzCoW,GAAwBjK,GAAsBnM,GAAe,CAACiO,KAC9DwG,IAA0B,QAAIgB,GAAmBU,IACjDte,GAAgB2c,GAAmBna,EAAgBma,GAAkBiB,IAAqB,KAC1Fxd,GAAanE,GAAU+D,GAAgBoZ,EAAmB,CAC9Dnd,SACA+D,iBACAC,kBACAC,oBAAqB0a,GACrBlZ,wBACG,KACC8c,GA3mFR,SAA2Bpe,EAAYsE,GACrC,IAAKtE,GAAoC,IAAtBA,EAAW3H,OAC5B,OAAO,KAGT,MAAOgmB,GAAkBre,EACzB,OAAOsE,EAAW+Z,EAAe/Z,GAAY+Z,CAC/C,CAomFiBC,CAAkBte,GAAY,OACtChE,GAAMuiB,KAAW,IAAA3hB,UAAS,MAI3B0F,GAj5ER,SAAqBA,EAAWT,EAAOC,GACrC,MAAO,IAAKQ,EACVI,OAAQb,GAASC,EAAQD,EAAMhH,MAAQiH,EAAMjH,MAAQ,EACrD8H,OAAQd,GAASC,EAAQD,EAAM/G,OAASgH,EAAMhH,OAAS,EAE3D,CA44EoB0jB,CADO1B,GAAkBU,IAAoB,QAAIA,GAAmBW,IACc,OAAnDrF,EAAqB,MAAR9c,QAAe,EAASA,GAAK0D,MAAgBoZ,EAAa,KAAM9C,IACxHyI,IAAoB,IAAA5hB,cAAY,CAAC2M,EAAOzN,KAC5C,IACEgC,OAAQ2gB,EAAM,QACd1gB,GACEjC,EAEJ,GAAyB,MAArBme,EAAU1O,QACZ,OAGF,MAAMF,EAAa4K,EAAehW,IAAIga,EAAU1O,SAEhD,IAAKF,EACH,OAGF,MAAMyK,EAAiBvM,EAAM6D,YACvBsR,EAAiB,IAAID,EAAO,CAChC7iB,OAAQqe,EAAU1O,QAClBF,aACA9B,MAAOuM,EACP/X,UAGAvF,QAAS4jB,GAET,OAAA9Q,CAAQwC,GACN,MAAMxT,EAAK2f,EAAU1O,QAErB,GAAU,MAANjR,EACF,OAGF,MAAM0d,EAAgB/B,EAAehW,IAAI3F,GAEzC,IAAK0d,EACH,OAGF,MAAM,YACJrc,GACE0e,EAAY9O,QACVhC,EAAQ,CACZ3N,OAAQ,CACNtB,KACA2E,KAAM+Y,EAAc/Y,KACpBQ,KAAMoa,KAGV,IAAA8E,0BAAwB,KACP,MAAfhjB,GAA+BA,EAAY4N,GAC3CiQ,EAAUjB,GAAOqG,cACjBlI,EAAS,CACP9e,KAAM+F,EAAO6Q,UACbV,qBACAlS,OAAQtB,IAEV4e,EAAqB,CACnBthB,KAAM,cACN2R,SACA,GAEN,EAEA,MAAAmD,CAAOD,GACLiK,EAAS,CACP9e,KAAM+F,EAAOyZ,SACb3K,eAEJ,EAEAE,MAAOkS,EAAclhB,EAAO0Z,SAC5BxK,SAAUgS,EAAclhB,EAAO2Z,cAOjC,SAASuH,EAAcjnB,GACrB,OAAOknB,iBACL,MAAM,OACJljB,EAAM,WACNmE,EAAU,KACVhE,EAAI,wBACJwgB,GACEH,GAAc7Q,QAClB,IAAIhC,EAAQ,KAEZ,GAAI3N,GAAU2gB,EAAyB,CACrC,MAAM,WACJwC,GACE1E,EAAY9O,QAShB,GARAhC,EAAQ,CACNuM,iBACAla,OAAQA,EACRmE,aACAiJ,MAAOuT,EACPxgB,QAGEnE,IAAS+F,EAAO0Z,SAAiC,mBAAf0H,EAA2B,OACpCC,QAAQC,QAAQF,EAAWxV,MAGpD3R,EAAO+F,EAAO2Z,WAElB,CACF,CAEA2C,EAAU1O,QAAU,MACpB,IAAAoT,0BAAwB,KACtBjI,EAAS,CACP9e,SAEF4hB,EAAUjB,GAAOkB,eACjB6E,GAAQ,MACRnE,EAAgB,MAChBC,EAAkB,MAClB,MAAMxR,EAAYhR,IAAS+F,EAAO0Z,QAAU,YAAc,eAE1D,GAAI9N,EAAO,CACT,MAAMzR,EAAUuiB,EAAY9O,QAAQ3C,GACzB,MAAX9Q,GAA2BA,EAAQyR,GACnC2P,EAAqB,CACnBthB,KAAMgR,EACNW,SAEJ,IAEJ,CACF,EAzDA,IAAAoV,0BAAwB,KACtBxE,EAAgBuE,GAChBtE,EAAkB7Q,EAAM6D,YAAY,GAuDtC,GAEF,CAAC6I,IACKiJ,IAAoC,IAAAtiB,cAAY,CAAC9E,EAASgG,IACvD,CAACyL,EAAO3N,KACb,MAAMwR,EAAc7D,EAAM6D,YACpB+R,EAAsBlJ,EAAehW,IAAIrE,GAE/C,GACsB,OAAtBqe,EAAU1O,UACT4T,GACD/R,EAAYgS,QAAUhS,EAAYiS,iBAChC,OAGF,MAAMC,EAAoB,CACxB1jB,OAAQujB,IAIa,IAFArnB,EAAQyR,EAAOzL,EAAOC,QAASuhB,KAGpDlS,EAAYgS,OAAS,CACnBG,WAAYzhB,EAAOA,QAErBmc,EAAU1O,QAAU3P,EACpB4iB,GAAkBjV,EAAOzL,GAC3B,GAED,CAACmY,EAAgBuI,KACdtR,GA3sCR,SAA8BhP,EAASshB,GACrC,OAAO,IAAAniB,UAAQ,IAAMa,EAAQqD,QAAO,CAACC,EAAa1D,KAChD,MACEA,OAAQ2gB,GACN3gB,EAKJ,MAAO,IAAI0D,KAJcid,EAAOvR,WAAWiO,KAAI9N,IAAa,CAC1DzE,UAAWyE,EAAUzE,UACrB9Q,QAAS0nB,EAAoBnS,EAAUvV,QAASgG,OAEN,GAC3C,KAAK,CAACI,EAASshB,GACpB,CAgsCqBC,CAAqBvhB,EAASghB,KA7zBnD,SAAwBhhB,IACtB,IAAAjB,YAAU,KACR,IAAK,KACH,OAGF,MAAMyiB,EAAcxhB,EAAQid,KAAI9gB,IAC9B,IAAI,OACFyD,GACEzD,EACJ,OAAuB,MAAhByD,EAAO+T,WAAgB,EAAS/T,EAAO+T,OAAO,IAEvD,MAAO,KACL,IAAK,MAAM8N,KAAYD,EACT,MAAZC,GAA4BA,GAC9B,CACD,GAGHzhB,EAAQid,KAAIrf,IACV,IAAI,OACFgC,GACEhC,EACJ,OAAOgC,CAAM,IAEjB,CAqyBE8hB,CAAe1hB,IACf,SAA0B,KACpB6X,IAAkBwD,IAAWhB,GAAOqG,cACtCpF,EAAUjB,GAAOoB,YACnB,GACC,CAAC5D,GAAgBwD,KACpB,IAAAtc,YAAU,KACR,MAAM,WACJK,GACE+c,EAAY9O,SACV,OACJ3P,EAAM,eACNka,EAAc,WACd/V,EAAU,KACVhE,GACEqgB,GAAc7Q,QAElB,IAAK3P,IAAWka,EACd,OAGF,MAAMvM,EAAQ,CACZ3N,SACAka,iBACA/V,aACAiJ,MAAO,CACLxK,EAAG+d,GAAwB/d,EAC3BC,EAAG8d,GAAwB9d,GAE7B1C,SAEF,IAAA4iB,0BAAwB,KACR,MAAdrhB,GAA8BA,EAAWiM,GACzC2P,EAAqB,CACnBthB,KAAM,aACN2R,SACA,GACF,GAEJ,CAACgT,GAAwB/d,EAAG+d,GAAwB9d,KACpD,IAAAxB,YAAU,KACR,MAAM,OACJrB,EAAM,eACNka,EAAc,WACd/V,EAAU,oBACVF,EAAmB,wBACnB0c,GACEH,GAAc7Q,QAElB,IAAK3P,GAA+B,MAArBqe,EAAU1O,UAAoBuK,IAAmByG,EAC9D,OAGF,MAAM,WACJ1gB,GACEwe,EAAY9O,QACVsU,EAAgBhgB,EAAoBI,IAAIke,IACxCpiB,EAAO8jB,GAAiBA,EAAcpgB,KAAK8L,QAAU,CACzDjR,GAAIulB,EAAcvlB,GAClBmF,KAAMogB,EAAcpgB,KAAK8L,QACzBtM,KAAM4gB,EAAc5gB,KACpByR,SAAUmP,EAAcnP,UACtB,KACEnH,EAAQ,CACZ3N,SACAka,iBACA/V,aACAiJ,MAAO,CACLxK,EAAG+d,EAAwB/d,EAC3BC,EAAG8d,EAAwB9d,GAE7B1C,SAEF,IAAA4iB,0BAAwB,KACtBL,GAAQviB,GACM,MAAdF,GAA8BA,EAAW0N,GACzC2P,EAAqB,CACnBthB,KAAM,aACN2R,SACA,GACF,GAEJ,CAAC4U,MACD,SAA0B,KACxB/B,GAAc7Q,QAAU,CACtBuK,iBACAla,SACAyP,cACA1L,iBACAI,cACAH,kBACAqW,iBACAoG,gBACAC,oBACAzc,sBACA9D,QACAsL,uBACAkV,4BAEF1C,EAAYtO,QAAU,CACpBuO,QAASwC,GACTvC,WAAYpa,GACb,GACA,CAAC/D,EAAQyP,GAAYtL,GAAYJ,GAAesW,EAAgBoG,GAAcC,GAAkB1c,GAAgBC,EAAqB9D,GAAMsL,GAAqBkV,KACnKvM,GAAgB,IAAKwL,GACnBxS,MAAO+N,EACP5G,aAAcxQ,GACd0B,sBACAgG,uBACAmJ,6BAEF,MAAMsP,IAAgB,IAAAziB,UAAQ,KACZ,CACdzB,SACAyP,cACA0K,kBACAD,iBACA/V,cACAiW,qBACAb,eACAc,iBACApW,sBACAD,kBACA7D,QACAsa,8BACAhP,uBACAmJ,2BACA4F,0BACAG,sBACAD,iBAGD,CAAC1a,EAAQyP,GAAY0K,GAAgBD,EAAgB/V,GAAYiW,GAAmBb,GAAac,EAAgBpW,EAAqBD,GAAgB7D,GAAMsa,GAA4BhP,GAAqBmJ,GAAyB4F,GAAwBG,GAAoBD,KAC/QyJ,IAAkB,IAAA1iB,UAAQ,KACd,CACdyY,iBACA5I,cACAtR,SACAma,kBACAU,kBAAmB,CACjBhb,UAAW6e,GAEb5D,WACAT,iBACAla,QACAsa,iCAGD,CAACP,EAAgB5I,GAAYtR,EAAQma,GAAgBW,EAAU4D,EAAwBrE,EAAgBla,GAAMsa,KAChH,OAAO,gBAAoB/a,EAAkB0kB,SAAU,CACrDzlB,MAAO4e,GACN,gBAAoBxC,GAAgBqJ,SAAU,CAC/CzlB,MAAOwlB,IACN,gBAAoBnJ,GAAcoJ,SAAU,CAC7CzlB,MAAOulB,IACN,gBAAoBxH,GAAuB0H,SAAU,CACtDzlB,MAAO8H,IACNoS,IAAY,gBAAoBmD,GAAc,CAC/ClH,UAA4E,KAAhD,MAAjBoI,OAAwB,EAASA,EAAcmH,iBACvD,gBAAoB7jB,EAAe,IAAK0c,EAC3Cvc,wBAAyB+d,IAkB7B,IAEM4F,IAA2B,IAAA3kB,eAAc,MACzC4kB,GAAc,SACdC,GAAY,YAClB,SAASC,GAAahmB,GACpB,IAAI,GACFC,EAAE,KACF2E,EAAI,SACJyR,GAAW,EAAK,WAChB4P,GACEjmB,EACJ,MAAMP,GAAM,QAAYsmB,KAClB,WACJlT,EAAU,eACV4I,EAAc,OACdla,EAAM,eACNma,EAAc,kBACdU,EAAiB,eACjBR,EAAc,KACdla,IACE,IAAAoB,YAAWwZ,KACT,KACJtb,EAAO8kB,GAAW,gBAClBI,EAAkB,YAAW,SAC7BC,EAAW,GACK,MAAdF,EAAqBA,EAAa,CAAC,EACjCG,GAAwB,MAAV7kB,OAAiB,EAASA,EAAOtB,MAAQA,EACvD+H,GAAY,IAAAlF,YAAWsjB,EAAanI,GAAyB4H,KAC5Dnc,EAAM2c,IAAc,WACpBpT,EAAeqT,IAAuB,UACvCzoB,EAp/BR,SAA+BA,EAAWoC,GACxC,OAAO,IAAA+C,UAAQ,IACNnF,EAAUqJ,QAAO,CAACU,EAAK5H,KAC5B,IAAI,UACFuO,EAAS,QACT9Q,GACEuC,EAMJ,OAJA4H,EAAI2G,GAAaW,IACfzR,EAAQyR,EAAOjP,EAAG,EAGb2H,CAAG,GACT,CAAC,IACH,CAAC/J,EAAWoC,GACjB,CAq+BoBsmB,CAAsB1T,EAAY5S,GAC9CumB,GAAU,QAAe5hB,IAC/B,SAA0B,KACxBgX,EAAeuB,IAAIld,EAAI,CACrBA,KACAR,MACAiK,OACAuJ,gBACArO,KAAM4hB,IAED,KACL,MAAM9c,EAAOkS,EAAehW,IAAI3F,GAE5ByJ,GAAQA,EAAKjK,MAAQA,GACvBmc,EAAe0B,OAAOrd,EACxB,IAGJ,CAAC2b,EAAgB3b,IASjB,MAAO,CACLsB,SACAka,iBACAC,iBACAuK,YAZyB,IAAAjjB,UAAQ,KAAM,CACvChC,OACAmlB,WACA,gBAAiB9P,EACjB,kBAAgB+P,GAAcplB,IAAS8kB,UAAqBrpB,EAC5D,uBAAwBypB,EACxB,mBAAoB9J,EAAkBhb,aACpC,CAACiV,EAAUrV,EAAMmlB,EAAUC,EAAYF,EAAiB9J,EAAkBhb,YAM5EglB,aACAvoB,UAAWwY,OAAW5Z,EAAYoB,EAClC6L,OACAhI,OACA2kB,aACAC,sBACAte,YAEJ,CAEA,SAASye,KACP,OAAO,IAAA3jB,YAAWyZ,GACpB,CAEA,MAAMmK,GAAc,YACdC,GAA8B,CAClCC,QAAS,IAEX,SAASC,GAAa7mB,GACpB,IAAI,KACF4E,EAAI,SACJyR,GAAW,EAAK,GAChBpW,EAAE,qBACF6mB,GACE9mB,EACJ,MAAMP,GAAM,QAAYinB,KAClB,OACJnlB,EAAM,SACN8a,EAAQ,KACR3a,EAAI,2BACJsa,IACE,IAAAlZ,YAAWwZ,IACTyK,GAAW,IAAAjQ,QAAO,CACtBT,aAEI2Q,GAA0B,IAAAlQ,SAAO,GACjC1R,GAAO,IAAA0R,QAAO,MACdmQ,GAAa,IAAAnQ,QAAO,OAExBT,SAAU6Q,EAAsB,sBAChCC,EACAP,QAASQ,GACP,IAAKT,MACJG,GAEClG,GAAM,QAAwC,MAAzBuG,EAAgCA,EAAwBlnB,GAmB7EmY,EAAiBH,GAAkB,CACvCC,UAnBmB,IAAA3V,cAAY,KAC1BykB,EAAwB9V,SAOH,MAAtB+V,EAAW/V,SACboD,aAAa2S,EAAW/V,SAG1B+V,EAAW/V,QAAUJ,YAAW,KAC9BkL,EAA2B3d,MAAMgpB,QAAQzG,EAAI1P,SAAW0P,EAAI1P,QAAU,CAAC0P,EAAI1P,UAC3E+V,EAAW/V,QAAU,IAAI,GACxBkW,IAXDJ,EAAwB9V,SAAU,CAWX,GAE3B,CAACkW,IAGC/Q,SAAU6Q,IAA2B3lB,IAEjC+gB,GAAmB,IAAA/f,cAAY,CAAC+kB,EAAYC,KAC3CnP,IAIDmP,IACFnP,EAAeoP,UAAUD,GACzBP,EAAwB9V,SAAU,GAGhCoW,GACFlP,EAAemB,QAAQ+N,GACzB,GACC,CAAClP,KACGyD,EAASwK,IAAc,QAAW/D,GACnCkE,GAAU,QAAe5hB,GAwC/B,OAvCA,IAAAhC,YAAU,KACHwV,GAAmByD,EAAQ3K,UAIhCkH,EAAeE,aACf0O,EAAwB9V,SAAU,EAClCkH,EAAemB,QAAQsC,EAAQ3K,SAAQ,GACtC,CAAC2K,EAASzD,KACb,SAA0B,KACxBiE,EAAS,CACP9e,KAAM+F,EAAO4Z,kBACbzU,QAAS,CACPxI,KACAR,MACA4W,WACA3M,KAAMmS,EACNzW,OACAR,KAAM4hB,KAGH,IAAMnK,EAAS,CACpB9e,KAAM+F,EAAO+Z,oBACb5d,MACAQ,SAGJ,CAACA,KACD,IAAA2C,YAAU,KACJyT,IAAa0Q,EAAS7V,QAAQmF,WAChCgG,EAAS,CACP9e,KAAM+F,EAAO8Z,qBACbnd,KACAR,MACA4W,aAEF0Q,EAAS7V,QAAQmF,SAAWA,EAC9B,GACC,CAACpW,EAAIR,EAAK4W,EAAUgG,IAChB,CACL9a,SACA6D,OACAqiB,QAAiB,MAAR/lB,OAAe,EAASA,EAAKzB,MAAQA,EAC9CyJ,KAAMmS,EACNna,OACA2kB,aAEJ,4MCl6GA,SAASqB,EAAUC,EAAOzM,EAAM0M,GAC9B,MAAMC,EAAWF,EAAMrpB,QAEvB,OADAupB,EAAStoB,OAAOqoB,EAAK,EAAIC,EAAS9pB,OAAS6pB,EAAKA,EAAI,EAAGC,EAAStoB,OAAO2b,EAAM,GAAG,IACzE2M,CACT,CAYA,SAASC,EAAeC,EAAOhF,GAC7B,OAAOgF,EAAM7gB,QAAO,CAACC,EAAalH,EAAIoX,KACpC,MAAMjS,EAAO2d,EAAMnd,IAAI3F,GAMvB,OAJImF,IACF+B,EAAYkQ,GAASjS,GAGhB+B,CAAW,GACjB9I,MAAM0pB,EAAMhqB,QACjB,CAEA,SAASiqB,EAAa3Q,GACpB,OAAiB,OAAVA,GAAkBA,GAAS,CACpC,CA2GA,MAAM4Q,EAAsBjoB,IAC1B,IAAI,MACF+iB,EAAK,YACLmF,EAAW,UACXC,EAAS,MACT9Q,GACErX,EACJ,MAAMooB,EAAWV,EAAU3E,EAAOoF,EAAWD,GACvCG,EAAUtF,EAAM1L,GAChByB,EAAUsP,EAAS/Q,GAEzB,OAAKyB,GAAYuP,EAIV,CACLlkB,EAAG2U,EAAQ7T,KAAOojB,EAAQpjB,KAC1Bb,EAAG0U,EAAQ5T,IAAMmjB,EAAQnjB,IACzBkD,OAAQ0Q,EAAQvY,MAAQ8nB,EAAQ9nB,MAChC8H,OAAQyQ,EAAQtY,OAAS6nB,EAAQ7nB,QAP1B,IAQR,EAoCG8nB,EAAiB,CACrBlgB,OAAQ,EACRC,OAAQ,GAEJkgB,EAA8BvoB,IAClC,IAAIwoB,EAEJ,IAAI,YACFN,EACAxM,eAAgB+M,EAAkB,MAClCpR,EAAK,MACL0L,EAAK,UACLoF,GACEnoB,EACJ,MAAM0b,EAA8D,OAA5C8M,EAAqBzF,EAAMmF,IAAwBM,EAAqBC,EAEhG,IAAK/M,EACH,OAAO,KAGT,GAAIrE,IAAU6Q,EAAa,CACzB,MAAMQ,EAAgB3F,EAAMoF,GAE5B,OAAKO,EAIE,CACLvkB,EAAG,EACHC,EAAG8jB,EAAcC,EAAYO,EAAcxjB,IAAMwjB,EAAcloB,QAAUkb,EAAexW,IAAMwW,EAAelb,QAAUkoB,EAAcxjB,IAAMwW,EAAexW,OACvJojB,GANI,IAQX,CAEA,MAAMK,EAyBR,SAAsBC,EAAavR,EAAO6Q,GACxC,MAAMtP,EAAcgQ,EAAYvR,GAC1BwR,EAAeD,EAAYvR,EAAQ,GACnCyR,EAAWF,EAAYvR,EAAQ,GAErC,IAAKuB,EACH,OAAO,EAGT,GAAIsP,EAAc7Q,EAChB,OAAOwR,EAAejQ,EAAY1T,KAAO2jB,EAAa3jB,IAAM2jB,EAAaroB,QAAUsoB,EAAWA,EAAS5jB,KAAO0T,EAAY1T,IAAM0T,EAAYpY,QAAU,EAGxJ,OAAOsoB,EAAWA,EAAS5jB,KAAO0T,EAAY1T,IAAM0T,EAAYpY,QAAUqoB,EAAejQ,EAAY1T,KAAO2jB,EAAa3jB,IAAM2jB,EAAaroB,QAAU,CACxJ,CAvCkBuoB,CAAahG,EAAO1L,EAAO6Q,GAE3C,OAAI7Q,EAAQ6Q,GAAe7Q,GAAS8Q,EAC3B,CACLhkB,EAAG,EACHC,GAAIsX,EAAelb,OAASmoB,KACzBL,GAIHjR,EAAQ6Q,GAAe7Q,GAAS8Q,EAC3B,CACLhkB,EAAG,EACHC,EAAGsX,EAAelb,OAASmoB,KACxBL,GAIA,CACLnkB,EAAG,EACHC,EAAG,KACAkkB,EACJ,EAmBH,MAAMvC,EAAY,WACZiD,EAAuB,gBAAoB,CAC/Cd,aAAc,EACde,YAAalD,EACbmD,mBAAmB,EACnBnB,MAAO,GACPI,WAAY,EACZgB,gBAAgB,EAChBC,YAAa,GACb1O,SAAUuN,EACV5R,SAAU,CACRjV,WAAW,EACXqZ,WAAW,KAGf,SAAS4O,EAAgBrpB,GACvB,IAAI,SACFoa,EAAQ,GACRna,EACA8nB,MAAOuB,EAAgB,SACvB5O,EAAWuN,EACX5R,SAAUkT,GAAe,GACvBvpB,EACJ,MAAM,OACJuB,EAAM,YACNuZ,EAAW,eACXvV,EAAc,KACd7D,EAAI,2BACJsa,IACE,UACEiN,GAAc,QAAYlD,EAAW9lB,GACrCkpB,EAAiBxW,QAA6B,OAArBmI,EAAY1V,MACrC2iB,GAAQ,IAAA/kB,UAAQ,IAAMsmB,EAAiBxI,KAAI0I,GAAwB,iBAATA,GAAqB,OAAQA,EAAOA,EAAKvpB,GAAKupB,KAAO,CAACF,IAChHlD,EAAuB,MAAV7kB,EACb2mB,EAAc3mB,EAASwmB,EAAM9e,QAAQ1H,EAAOtB,KAAO,EACnDkoB,EAAYzmB,EAAOqmB,EAAM9e,QAAQvH,EAAKzB,KAAO,EAC7CwpB,GAAmB,IAAA3S,QAAOiR,GAC1B2B,GAjRR,SAAoB7kB,EAAGC,GACrB,GAAID,IAAMC,EACR,OAAO,EAGT,GAAID,EAAE9G,SAAW+G,EAAE/G,OACjB,OAAO,EAGT,IAAK,IAAIH,EAAI,EAAGA,EAAIiH,EAAE9G,OAAQH,IAC5B,GAAIiH,EAAEjH,KAAOkH,EAAElH,GACb,OAAO,EAIX,OAAO,CACT,CAiQ4B+rB,CAAW5B,EAAO0B,EAAiBvY,SACvDgY,GAAmC,IAAff,IAAqC,IAAjBD,GAAsBwB,EAC9DrT,EAjQR,SAA2BA,GACzB,MAAwB,kBAAbA,EACF,CACLjV,UAAWiV,EACXoE,UAAWpE,GAIRA,CACT,CAwPmBuT,CAAkBL,IACnC,SAA0B,KACpBG,GAAoBtD,GACtBpK,EAA2B+L,EAC7B,GACC,CAAC2B,EAAkB3B,EAAO3B,EAAYpK,KACzC,IAAApZ,YAAU,KACR6mB,EAAiBvY,QAAU6W,CAAK,GAC/B,CAACA,IACJ,MAAM8B,GAAe,IAAA7mB,UAAQ,KAAM,CACjCklB,cACAe,cACA5S,WACA6S,oBACAnB,QACAI,YACAgB,iBACAC,YAAatB,EAAeC,EAAOxiB,GACnCmV,cAEF,CAACwN,EAAae,EAAa5S,EAASjV,UAAWiV,EAASoE,UAAWyO,EAAmBnB,EAAOI,EAAW5iB,EAAgB4jB,EAAgBzO,IACxI,OAAO,gBAAoBsO,EAAQrD,SAAU,CAC3CzlB,MAAO2pB,GACNzP,EACL,CAEA,MAAM0P,EAAwB9pB,IAC5B,IAAI,GACFC,EAAE,MACF8nB,EAAK,YACLG,EAAW,UACXC,GACEnoB,EACJ,OAAO0nB,EAAUK,EAAOG,EAAaC,GAAWlf,QAAQhJ,EAAG,EAEvD8pB,EAA8BtoB,IAClC,IAAI,YACFwnB,EAAW,UACXe,EAAS,YACTC,EAAW,MACX5S,EAAK,MACL0Q,EAAK,SACLmC,EAAQ,cACRC,EAAa,oBACbC,EAAmB,WACnBC,GACE5oB,EAEJ,SAAK4oB,IAAeJ,MAIhBE,IAAkBpC,GAAS1Q,IAAU6S,OAIrCF,GAIGE,IAAa7S,GAAS4R,IAAgBmB,GAAmB,EAE5DE,EAAoB,CACxBC,SAAU,IACVC,OAAQ,QAEJC,EAAqB,YACrBC,EAAkC,KAAIC,WAAWC,SAAS,CAC9D5gB,SAAUygB,EACVF,SAAU,EACVC,OAAQ,WAEJK,EAAoB,CACxB3E,gBAAiB,YAkDnB,SAAS4E,EAAY9qB,GACnB,IAAI,qBACF+qB,EAAuBhB,EACvB9D,WAAY+E,EACZ3U,SAAU4U,EACVrmB,KAAMsmB,EAAU,YAChBC,EAAcrB,EAAqB,GACnC7pB,EACAya,SAAU0Q,EAAa,qBACvBtE,EAAoB,WACpBuD,EAAaC,GACXtqB,EACJ,MAAM,MACJ+nB,EAAK,YACLkB,EAAW,YACXf,EACA7R,SAAUgV,EAAc,kBACxBnC,EAAiB,YACjBE,EAAW,UACXjB,EAAS,eACTgB,EACAzO,SAAU4Q,IACR,IAAAxoB,YAAWkmB,GACT3S,EAoKR,SAAgC4U,EAAeI,GAC7C,IAAIE,EAAuBC,EAE3B,GAA6B,kBAAlBP,EACT,MAAO,CACL7pB,UAAW6pB,EAEXxQ,WAAW,GAIf,MAAO,CACLrZ,UAAiG,OAArFmqB,EAAyC,MAAjBN,OAAwB,EAASA,EAAc7pB,WAAqBmqB,EAAwBF,EAAejqB,UAC/IqZ,UAAiG,OAArF+Q,EAAyC,MAAjBP,OAAwB,EAASA,EAAcxQ,WAAqB+Q,EAAwBH,EAAe5Q,UAEnJ,CAnLmBgR,CAAuBR,EAAeI,GACjDhU,EAAQ0Q,EAAM9e,QAAQhJ,GACtB2E,GAAO,IAAA5B,UAAQ,KAAM,CACzB0oB,SAAU,CACRzC,cACA5R,QACA0Q,YAECmD,KACD,CAACjC,EAAaiC,EAAY7T,EAAO0Q,IAC/B4D,GAA4B,IAAA3oB,UAAQ,IAAM+kB,EAAMzpB,MAAMypB,EAAM9e,QAAQhJ,KAAM,CAAC8nB,EAAO9nB,KAClF,KACJmF,EAAI,KACJsE,EAAI,OACJ+d,EACApB,WAAYuF,IACV,QAAa,CACf3rB,KACA2E,OACAyR,SAAUA,EAASoE,UACnBqM,qBAAsB,CACpBK,sBAAuBwE,KACpB7E,MAGD,OACJvlB,EAAM,eACNka,EAAc,eACdC,EAAc,WACduK,EACAI,WAAYwF,EAAmB,UAC/BhuB,EAAS,WACTuoB,EAAU,KACV1kB,EAAI,oBACJ4kB,EAAmB,UACnBte,IACE,QAAa,CACf/H,KACA2E,OACAqhB,WAAY,IAAK4E,KACZG,GAEL3U,SAAUA,EAASjV,YAEfilB,GAAa,QAAgBuF,EAAqBC,GAClD7B,EAAYrX,QAAQpR,GACpBuqB,EAAe9B,IAAcd,GAAqBlB,EAAaE,IAAgBF,EAAaG,GAC5F4D,GAA4B5C,GAAkB/C,EAC9C4F,EAAyBD,GAA4BD,EAAe9jB,EAAY,KAEhFikB,EAAiBH,EAAyC,MAA1BE,EAAiCA,GADrC,MAAjBZ,EAAwBA,EAAgBE,GACgD,CACvGvI,MAAOqG,EACP1N,iBACAwM,cACAC,YACA9Q,UACG,KACC6S,GAAWlC,EAAaE,IAAgBF,EAAaG,GAAagD,EAAY,CAClFlrB,KACA8nB,QACAG,cACAC,cACG9Q,EACCkI,GAAqB,MAAVhe,OAAiB,EAASA,EAAOtB,GAC5C8mB,IAAW,IAAAjQ,QAAO,CACtByI,YACAwI,QACAmC,YACAjB,gBAEIS,GAAmB3B,IAAUhB,GAAS7V,QAAQ6W,MAC9CmE,GAA6BnB,EAAqB,CACtDxpB,SACA0nB,cACA7C,aACA4D,YACA/pB,KACAoX,QACA0Q,QACAmC,SAAUnD,GAAS7V,QAAQgZ,SAC3BC,cAAepD,GAAS7V,QAAQ6W,MAChCqC,oBAAqBrD,GAAS7V,QAAQ+X,YACtCoB,aACAJ,YAA0C,MAA7BlD,GAAS7V,QAAQqO,WAE1B4M,GAtJR,SAA6BnsB,GAC3B,IAAI,SACFqW,EAAQ,MACRgB,EAAK,KACL3N,EAAI,KACJtE,GACEpF,EACJ,MAAOmsB,EAAkBC,IAAuB,IAAA9pB,UAAS,MACnD+pB,GAAgB,IAAAvV,QAAOO,GA+B7B,OA9BA,SAA0B,KACxB,IAAKhB,GAAYgB,IAAUgV,EAAcnb,SAAWxH,EAAKwH,QAAS,CAChE,MAAMuO,EAAUra,EAAK8L,QAErB,GAAIuO,EAAS,CACX,MAAMvO,GAAU,QAAcxH,EAAKwH,QAAS,CAC1C3I,iBAAiB,IAEboG,EAAQ,CACZxK,EAAGsb,EAAQxa,KAAOiM,EAAQjM,KAC1Bb,EAAGqb,EAAQva,IAAMgM,EAAQhM,IACzBkD,OAAQqX,EAAQlf,MAAQ2Q,EAAQ3Q,MAChC8H,OAAQoX,EAAQjf,OAAS0Q,EAAQ1Q,SAG/BmO,EAAMxK,GAAKwK,EAAMvK,IACnBgoB,EAAoBzd,EAExB,CACF,CAEI0I,IAAUgV,EAAcnb,UAC1Bmb,EAAcnb,QAAUmG,EAC1B,GACC,CAAChB,EAAUgB,EAAO3N,EAAMtE,KAC3B,IAAAxC,YAAU,KACJupB,GACFC,EAAoB,KACtB,GACC,CAACD,IACGA,CACT,CA8G2BG,CAAoB,CAC3CjW,UAAW6V,GACX7U,QACA3N,OACAtE,SA8BF,OA5BA,IAAAxC,YAAU,KACJonB,GAAajD,GAAS7V,QAAQgZ,WAAaA,KAC7CnD,GAAS7V,QAAQgZ,SAAWA,IAG1BjB,IAAgBlC,GAAS7V,QAAQ+X,cACnClC,GAAS7V,QAAQ+X,YAAcA,GAG7BlB,IAAUhB,GAAS7V,QAAQ6W,QAC7BhB,GAAS7V,QAAQ6W,MAAQA,EAC3B,GACC,CAACiC,EAAWE,GAAUjB,EAAalB,KACtC,IAAAnlB,YAAU,KACR,GAAI2c,KAAawH,GAAS7V,QAAQqO,SAChC,OAGF,GAAIA,KAAawH,GAAS7V,QAAQqO,SAEhC,YADAwH,GAAS7V,QAAQqO,SAAWA,IAI9B,MAAM7L,EAAY5C,YAAW,KAC3BiW,GAAS7V,QAAQqO,SAAWA,EAAQ,GACnC,IACH,MAAO,IAAMjL,aAAaZ,EAAU,GACnC,CAAC6L,KACG,CACLhe,SACA2mB,cACAjC,aACArhB,OACAQ,OACAiS,QACA6S,YACAnC,QACAN,SACAuC,YACA5D,aACAvoB,YACA6L,OACAye,YACAzmB,OACA2kB,aACAC,sBACAsF,sBACAC,sBACA7jB,UAA+B,MAApBmkB,GAA2BA,GAAmBF,EACzD5B,WAGF,WACE,GACA8B,IACAzC,IAAoB3C,GAAS7V,QAAQgZ,WAAa7S,EAChD,OAAOqT,EAGT,GAAIqB,KAA6B,QAAgBtQ,KAAoB4O,EACnE,OAGF,GAAIL,GAAakC,GACf,OAAO,KAAIvB,WAAWC,SAAS,IAAKP,EAClCrgB,SAAUygB,IAId,MACF,CArBc8B,GAsBhB,CAiCoB,KAAavc,KAAM,KAAaF,MAAO,KAAaG,GAAI,KAAaF,ymBC7oBzF,SAASyc,IACP,IAAK,IAAI5oB,EAAO5F,UAAUD,OAAQ0uB,EAAO,IAAIpuB,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/E2oB,EAAK3oB,GAAQ9F,UAAU8F,GAGzB,OAAO,IAAAd,UAAQ,IAAM0G,IACnB+iB,EAAKte,SAAQue,GAAOA,EAAIhjB,IAAM,GAEhC+iB,EACF,CAGA,MAAME,EAA8B,oBAAXniB,aAAqD,IAApBA,OAAOU,eAAqE,IAAlCV,OAAOU,SAAS0hB,cAEpH,SAASC,EAASpkB,GAChB,MAAMqkB,EAAgB7oB,OAAOjH,UAAU4tB,SAASxsB,KAAKqK,GACrD,MAAyB,oBAAlBqkB,GACW,oBAAlBA,CACF,CAEA,SAASC,EAAOrjB,GACd,MAAO,aAAcA,CACvB,CAEA,SAASsjB,EAAU/mB,GACjB,IAAIgnB,EAAuBC,EAE3B,OAAKjnB,EAID4mB,EAAS5mB,GACJA,EAGJ8mB,EAAO9mB,IAI8H,OAAlIgnB,EAA2E,OAAlDC,EAAyBjnB,EAAOknB,oBAAyB,EAASD,EAAuBE,aAAuBH,EAHxIziB,OARAA,MAYX,CAEA,SAAS6iB,EAAW3jB,GAClB,MAAM,SACJ4jB,GACEN,EAAUtjB,GACd,OAAOA,aAAgB4jB,CACzB,CAEA,SAASC,EAAc7jB,GACrB,OAAImjB,EAASnjB,IAINA,aAAgBsjB,EAAUtjB,GAAM2P,WACzC,CAEA,SAASmU,EAAa9jB,GACpB,OAAOA,aAAgBsjB,EAAUtjB,GAAM+jB,UACzC,CAEA,SAASC,EAAiBznB,GACxB,OAAKA,EAID4mB,EAAS5mB,GACJA,EAAOiF,SAGX6hB,EAAO9mB,GAIRonB,EAAWpnB,GACNA,EAGLsnB,EAActnB,IAAWunB,EAAavnB,GACjCA,EAAOknB,cAGTjiB,SAXEA,SARAA,QAoBX,CAOA,MAAMyiB,EAA4BhB,EAAY,EAAAiB,gBAAkB,EAAAhrB,UAEhE,SAASirB,EAASpwB,GAChB,MAAMqwB,GAAa,IAAAhX,QAAOrZ,GAI1B,OAHAkwB,GAA0B,KACxBG,EAAW5c,QAAUzT,CAAO,KAEvB,IAAA8E,cAAY,WACjB,IAAK,IAAIqB,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EnG,EAAKmG,GAAQ9F,UAAU8F,GAGzB,OAA6B,MAAtBgqB,EAAW5c,aAAkB,EAAS4c,EAAW5c,WAAWvT,EACrE,GAAG,GACL,CAEA,SAASowB,IACP,MAAMC,GAAc,IAAAlX,QAAO,MAU3B,MAAO,EATK,IAAAvU,cAAY,CAAC9D,EAAU8rB,KACjCyD,EAAY9c,QAAU+c,YAAYxvB,EAAU8rB,EAAS,GACpD,KACW,IAAAhoB,cAAY,KACI,OAAxByrB,EAAY9c,UACdgd,cAAcF,EAAY9c,SAC1B8c,EAAY9c,QAAU,KACxB,GACC,IAEL,CAEA,SAASid,EAAejuB,EAAO2Z,QACR,IAAjBA,IACFA,EAAe,CAAC3Z,IAGlB,MAAMkuB,GAAW,IAAAtX,QAAO5W,GAMxB,OALAytB,GAA0B,KACpBS,EAASld,UAAYhR,IACvBkuB,EAASld,QAAUhR,EACrB,GACC2Z,GACIuU,CACT,CAEA,SAASC,EAAYnW,EAAU2B,GAC7B,MAAMuU,GAAW,IAAAtX,UACjB,OAAO,IAAA9T,UAAQ,KACb,MAAMsrB,EAAWpW,EAASkW,EAASld,SAEnC,OADAkd,EAASld,QAAUod,EACZA,CAAQ,GAEjB,IAAIzU,GACN,CAEA,SAAS0U,EAAWC,GAClB,MAAMC,EAAkBZ,EAASW,GAC3B9kB,GAAO,IAAAoN,QAAO,MACduP,GAAa,IAAA9jB,cAAYkG,IACzBA,IAAYiB,EAAKwH,UACA,MAAnBud,GAAmCA,EAAgBhmB,EAASiB,EAAKwH,UAGnExH,EAAKwH,QAAUzI,CAAO,GAExB,IACA,MAAO,CAACiB,EAAM2c,EAChB,CAEA,SAASqI,EAAYxuB,GACnB,MAAMwsB,GAAM,IAAA5V,UAIZ,OAHA,IAAAlU,YAAU,KACR8pB,EAAIxb,QAAUhR,CAAK,GAClB,CAACA,IACGwsB,EAAIxb,OACb,CAEA,IAAI0P,EAAM,CAAC,EACX,SAAS+N,EAAYC,EAAQ1uB,GAC3B,OAAO,IAAA8C,UAAQ,KACb,GAAI9C,EACF,OAAOA,EAGT,MAAMD,EAAoB,MAAf2gB,EAAIgO,GAAkB,EAAIhO,EAAIgO,GAAU,EAEnD,OADAhO,EAAIgO,GAAU3uB,EACP2uB,EAAS,IAAM3uB,CAAE,GACvB,CAAC2uB,EAAQ1uB,GACd,CAEA,SAAS2uB,EAAmBnnB,GAC1B,OAAO,SAAUonB,GACf,IAAK,IAAIlrB,EAAO5F,UAAUD,OAAQ4J,EAAc,IAAItJ,MAAMuF,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IACzG6D,EAAY7D,EAAO,GAAK9F,UAAU8F,GAGpC,OAAO6D,EAAYT,QAAO,CAACC,EAAaU,KACtC,MAAMwa,EAAUpe,OAAOoe,QAAQxa,GAE/B,IAAK,MAAOpI,EAAKsvB,KAAoB1M,EAAS,CAC5C,MAAMniB,EAAQiH,EAAY1H,GAEb,MAATS,IACFiH,EAAY1H,GAAOS,EAAQwH,EAAWqnB,EAE1C,CAEA,OAAO5nB,CAAW,GACjB,IAAK2nB,GAEV,CACF,CAEA,MAAMxgB,EAAmBugB,EAAmB,GACtCG,EAAwBH,GAAoB,GAMlD,SAASI,EAAgB/f,GACvB,IAAKA,EACH,OAAO,EAGT,MAAM,cACJggB,GACElC,EAAU9d,EAAMjJ,QACpB,OAAOipB,GAAiBhgB,aAAiBggB,CAC3C,CAiBA,SAASC,EAAoBjgB,GAC3B,GAhBF,SAAsBA,GACpB,IAAKA,EACH,OAAO,EAGT,MAAM,WACJkgB,GACEpC,EAAU9d,EAAMjJ,QACpB,OAAOmpB,GAAclgB,aAAiBkgB,CACxC,CAOMC,CAAangB,GAAQ,CACvB,GAAIA,EAAMuI,SAAWvI,EAAMuI,QAAQ1Z,OAAQ,CACzC,MACEuxB,QAASnrB,EACTorB,QAASnrB,GACP8K,EAAMuI,QAAQ,GAClB,MAAO,CACLtT,IACAC,IAEJ,CAAO,GAAI8K,EAAMsgB,gBAAkBtgB,EAAMsgB,eAAezxB,OAAQ,CAC9D,MACEuxB,QAASnrB,EACTorB,QAASnrB,GACP8K,EAAMsgB,eAAe,GACzB,MAAO,CACLrrB,IACAC,IAEJ,CACF,CAEA,OArDF,SAAwC8K,GACtC,MAAO,YAAaA,GAAS,YAAaA,CAC5C,CAmDMugB,CAA+BvgB,GAC1B,CACL/K,EAAG+K,EAAMogB,QACTlrB,EAAG8K,EAAMqgB,SAIN,IACT,CAEA,MAAMG,EAAmBzrB,OAAOC,OAAO,CACrCyrB,UAAW,CACT,QAAA/E,CAAS5iB,GACP,IAAKA,EACH,OAGF,MAAM,EACJ7D,EAAC,EACDC,GACE4D,EACJ,MAAO,gBAAkB7D,EAAIK,KAAKorB,MAAMzrB,GAAK,GAAK,QAAUC,EAAII,KAAKorB,MAAMxrB,GAAK,GAAK,QACvF,GAGFyrB,MAAO,CACL,QAAAjF,CAAS5iB,GACP,IAAKA,EACH,OAGF,MAAM,OACJI,EAAM,OACNC,GACEL,EACJ,MAAO,UAAYI,EAAS,YAAcC,EAAS,GACrD,GAGFynB,UAAW,CACT,QAAAlF,CAAS5iB,GACP,GAAKA,EAIL,MAAO,CAAC0nB,EAAIC,UAAU/E,SAAS5iB,GAAY0nB,EAAIG,MAAMjF,SAAS5iB,IAAY+nB,KAAK,IACjF,GAGFpF,WAAY,CACV,QAAAC,CAAS5qB,GACP,IAAI,SACFgK,EAAQ,SACRugB,EAAQ,OACRC,GACExqB,EACJ,OAAOgK,EAAW,IAAMugB,EAAW,MAAQC,CAC7C,KAKEwF,EAAW,yIACjB,SAASC,EAAuBxnB,GAC9B,OAAIA,EAAQynB,QAAQF,GACXvnB,EAGFA,EAAQ0nB,cAAcH,EAC/B,srBCtTA,MAiEMI,EAAsB,SAAUC,GAElC,MAAMC,EAAM,GACZ,IAAIC,EAAI,EACR,IAAK,IAAI3yB,EAAI,EAAGA,EAAIyyB,EAAItyB,OAAQH,IAAK,CACjC,IAAI4yB,EAAIH,EAAII,WAAW7yB,GACnB4yB,EAAI,IACJF,EAAIC,KAAOC,EAENA,EAAI,MACTF,EAAIC,KAAQC,GAAK,EAAK,IACtBF,EAAIC,KAAY,GAAJC,EAAU,KAEA,QAAZ,MAAJA,IACN5yB,EAAI,EAAIyyB,EAAItyB,QACyB,QAAZ,MAAxBsyB,EAAII,WAAW7yB,EAAI,KAEpB4yB,EAAI,QAAgB,KAAJA,IAAe,KAA6B,KAAtBH,EAAII,aAAa7yB,IACvD0yB,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,GAAM,GAAM,IAC9BF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAY,GAAJC,EAAU,MAGtBF,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAY,GAAJC,EAAU,IAE9B,CACA,OAAOF,CACX,EAyCMI,EAAS,CAIXC,eAAgB,KAIhBC,eAAgB,KAKhBC,sBAAuB,KAKvBC,sBAAuB,KAKvBC,kBAAmB,iEAInB,gBAAIC,GACA,OAAO10B,KAAKy0B,kBAAoB,KACpC,EAIA,wBAAIE,GACA,OAAO30B,KAAKy0B,kBAAoB,KACpC,EAQAG,mBAAoC,mBAATC,KAU3B,eAAAC,CAAgBC,EAAOC,GACnB,IAAKjzB,MAAMgpB,QAAQgK,GACf,MAAMpzB,MAAM,iDAEhB3B,KAAKi1B,QACL,MAAMC,EAAgBF,EAChBh1B,KAAKu0B,sBACLv0B,KAAKq0B,eACLc,EAAS,GACf,IAAK,IAAI7zB,EAAI,EAAGA,EAAIyzB,EAAMtzB,OAAQH,GAAK,EAAG,CACtC,MAAM8zB,EAAQL,EAAMzzB,GACd+zB,EAAY/zB,EAAI,EAAIyzB,EAAMtzB,OAC1B6zB,EAAQD,EAAYN,EAAMzzB,EAAI,GAAK,EACnCi0B,EAAYj0B,EAAI,EAAIyzB,EAAMtzB,OAC1B+zB,EAAQD,EAAYR,EAAMzzB,EAAI,GAAK,EACnCm0B,EAAWL,GAAS,EACpBM,GAAqB,EAARN,IAAiB,EAAME,GAAS,EACnD,IAAIK,GAAqB,GAARL,IAAiB,EAAME,GAAS,EAC7CI,EAAmB,GAARJ,EACVD,IACDK,EAAW,GACNP,IACDM,EAAW,KAGnBR,EAAO7yB,KAAK4yB,EAAcO,GAAWP,EAAcQ,GAAWR,EAAcS,GAAWT,EAAcU,GACzG,CACA,OAAOT,EAAO1B,KAAK,GACvB,EASA,YAAAoC,CAAad,EAAOC,GAGhB,OAAIh1B,KAAK40B,qBAAuBI,EACrBc,KAAKf,GAET/0B,KAAK80B,gBAAgBhB,EAAoBiB,GAAQC,EAC5D,EASA,YAAAe,CAAahB,EAAOC,GAGhB,OAAIh1B,KAAK40B,qBAAuBI,EACrBH,KAAKE,GAhJE,SAAUiB,GAEhC,MAAMhC,EAAM,GACZ,IAAIiC,EAAM,EAAG/B,EAAI,EACjB,KAAO+B,EAAMD,EAAMv0B,QAAQ,CACvB,MAAMy0B,EAAKF,EAAMC,KACjB,GAAIC,EAAK,IACLlC,EAAIE,KAAOiC,OAAOC,aAAaF,QAE9B,GAAIA,EAAK,KAAOA,EAAK,IAAK,CAC3B,MAAMG,EAAKL,EAAMC,KACjBjC,EAAIE,KAAOiC,OAAOC,cAAoB,GAALF,IAAY,EAAW,GAALG,EACvD,MACK,GAAIH,EAAK,KAAOA,EAAK,IAAK,CAE3B,MAGMI,IAAY,EAALJ,IAAW,IAAa,GAH1BF,EAAMC,OAG2B,IAAa,GAF9CD,EAAMC,OAE+C,EAAW,GADhED,EAAMC,MAEb,MACJjC,EAAIE,KAAOiC,OAAOC,aAAa,OAAUE,GAAK,KAC9CtC,EAAIE,KAAOiC,OAAOC,aAAa,OAAc,KAAJE,GAC7C,KACK,CACD,MAAMD,EAAKL,EAAMC,KACXM,EAAKP,EAAMC,KACjBjC,EAAIE,KAAOiC,OAAOC,cAAoB,GAALF,IAAY,IAAa,GAALG,IAAY,EAAW,GAALE,EAC3E,CACJ,CACA,OAAOvC,EAAIP,KAAK,GACpB,CAoHe+C,CAAkBx2B,KAAKy2B,wBAAwB1B,EAAOC,GACjE,EAgBA,uBAAAyB,CAAwB1B,EAAOC,GAC3Bh1B,KAAKi1B,QACL,MAAMyB,EAAgB1B,EAChBh1B,KAAKw0B,sBACLx0B,KAAKs0B,eACLa,EAAS,GACf,IAAK,IAAI7zB,EAAI,EAAGA,EAAIyzB,EAAMtzB,QAAS,CAC/B,MAAM2zB,EAAQsB,EAAc3B,EAAM4B,OAAOr1B,MAEnCg0B,EADYh0B,EAAIyzB,EAAMtzB,OACFi1B,EAAc3B,EAAM4B,OAAOr1B,IAAM,IACzDA,EACF,MACMk0B,EADYl0B,EAAIyzB,EAAMtzB,OACFi1B,EAAc3B,EAAM4B,OAAOr1B,IAAM,KACzDA,EACF,MACMs1B,EADYt1B,EAAIyzB,EAAMtzB,OACFi1B,EAAc3B,EAAM4B,OAAOr1B,IAAM,GAE3D,KADEA,EACW,MAAT8zB,GAA0B,MAATE,GAA0B,MAATE,GAA0B,MAAToB,EACnD,MAAM,IAAIC,EAEd,MAAMpB,EAAYL,GAAS,EAAME,GAAS,EAE1C,GADAH,EAAO7yB,KAAKmzB,GACE,KAAVD,EAAc,CACd,MAAME,EAAaJ,GAAS,EAAK,IAASE,GAAS,EAEnD,GADAL,EAAO7yB,KAAKozB,GACE,KAAVkB,EAAc,CACd,MAAMjB,EAAaH,GAAS,EAAK,IAAQoB,EACzCzB,EAAO7yB,KAAKqzB,EAChB,CACJ,CACJ,CACA,OAAOR,CACX,EAMA,KAAAF,GACI,IAAKj1B,KAAKq0B,eAAgB,CACtBr0B,KAAKq0B,eAAiB,CAAC,EACvBr0B,KAAKs0B,eAAiB,CAAC,EACvBt0B,KAAKu0B,sBAAwB,CAAC,EAC9Bv0B,KAAKw0B,sBAAwB,CAAC,EAE9B,IAAK,IAAIlzB,EAAI,EAAGA,EAAItB,KAAK00B,aAAajzB,OAAQH,IAC1CtB,KAAKq0B,eAAe/yB,GAAKtB,KAAK00B,aAAaiC,OAAOr1B,GAClDtB,KAAKs0B,eAAet0B,KAAKq0B,eAAe/yB,IAAMA,EAC9CtB,KAAKu0B,sBAAsBjzB,GAAKtB,KAAK20B,qBAAqBgC,OAAOr1B,GACjEtB,KAAKw0B,sBAAsBx0B,KAAKu0B,sBAAsBjzB,IAAMA,EAExDA,GAAKtB,KAAKy0B,kBAAkBhzB,SAC5BzB,KAAKs0B,eAAet0B,KAAK20B,qBAAqBgC,OAAOr1B,IAAMA,EAC3DtB,KAAKw0B,sBAAsBx0B,KAAK00B,aAAaiC,OAAOr1B,IAAMA,EAGtE,CACJ,GAKJ,MAAMu1B,UAAgCl1B,MAClC,WAAAuP,GACI0H,SAASlX,WACT1B,KAAK2X,KAAO,yBAChB,EAKJ,MAQMmf,EAAgC,SAAU/C,GAE5C,OAViB,SAAUA,GAC3B,MAAMgD,EAAYjD,EAAoBC,GACtC,OAAOK,EAAOU,gBAAgBiC,GAAW,EAC7C,CAOWC,CAAajD,GAAKkD,QAAQ,MAAO,GAC5C,EAUMC,EAAe,SAAUnD,GAC3B,IACI,OAAOK,EAAO2B,aAAahC,GAAK,EACpC,CACA,MAAOoD,GACH30B,QAAQhB,MAAM,wBAAyB21B,EAC3C,CACA,OAAO,IACX,EAsCA,SAASC,EAAWztB,EAAQ0tB,GACxB,KAAMA,aAAkB1vB,QACpB,OAAO0vB,EAEX,OAAQA,EAAOnmB,aACX,KAAKomB,KAID,OAAO,IAAIA,KADOD,EACQE,WAC9B,KAAK5vB,YACcxH,IAAXwJ,IACAA,EAAS,CAAC,GAEd,MACJ,KAAK5H,MAED4H,EAAS,GACT,MACJ,QAEI,OAAO0tB,EAEf,IAAK,MAAMG,KAAQH,EAEVA,EAAOI,eAAeD,IAQhB,cARqCA,IAGhD7tB,EAAO6tB,GAAQJ,EAAWztB,EAAO6tB,GAAOH,EAAOG,KAEnD,OAAO7tB,CACX,CAuDA,MAAM+tB,EAAwB,IA7B9B,WACI,GAAoB,oBAATC,KACP,OAAOA,KAEX,GAAsB,oBAAXzpB,OACP,OAAOA,OAEX,QAAsB,IAAX,EAAArL,EACP,OAAO,EAAAA,EAEX,MAAM,IAAIlB,MAAM,kCACpB,CAkBoCi2B,GAAYC,sBAyC1CC,EAAc,KAChB,IACI,OAAQJ,KAlCmB,MAC/B,GAAuB,oBAAZK,cAAkD,IAAhB,GACzC,OAEJ,MAAMC,EAAqB,GAAYH,sBACvC,OAAIG,EACOhd,KAAKid,MAAMD,QADtB,CAEA,EA4BQE,IA1BkB,MAC1B,GAAwB,oBAAbtpB,SACP,OAEJ,IAAIupB,EACJ,IACIA,EAAQvpB,SAASwpB,OAAOD,MAAM,gCAClC,CACA,MAAOhB,GAGH,MACJ,CACA,MAAMkB,EAAUF,GAASjB,EAAaiB,EAAM,IAC5C,OAAOE,GAAWrd,KAAKid,MAAMI,EAAQ,EAa7BC,EACR,CACA,MAAOnB,GAQH,YADA30B,QAAQ+1B,KAAK,+CAA+CpB,IAEhE,GAsCEqB,EAAsB,KAAQ,IAAIC,EAAI,OAAgC,QAAxBA,EAAKX,WAAkC,IAAPW,OAAgB,EAASA,EAAG5U,MAAM,EAMhH6U,EAA0B/gB,IAAW,IAAI8gB,EAAI,OAAgC,QAAxBA,EAAKX,WAAkC,IAAPW,OAAgB,EAASA,EAAG,IAAI9gB,IAAO,EAkBlI,MAAMghB,EACF,WAAAznB,GACIlR,KAAK44B,OAAS,OACd54B,KAAKsoB,QAAU,OACftoB,KAAK64B,QAAU,IAAIxQ,SAAQ,CAACC,EAASsQ,KACjC54B,KAAKsoB,QAAUA,EACftoB,KAAK44B,OAASA,CAAM,GAE5B,CAMA,YAAAE,CAAald,GACT,MAAO,CAACpa,EAAOoC,KACPpC,EACAxB,KAAK44B,OAAOp3B,GAGZxB,KAAKsoB,QAAQ1kB,GAEO,mBAAbgY,IAGP5b,KAAK64B,QAAQE,OAAM,SAGK,IAApBnd,EAASna,OACTma,EAASpa,GAGToa,EAASpa,EAAOoC,GAExB,CAER,EAmBJ,SAASo1B,EAAoBC,EAAOC,GAChC,GAAID,EAAME,IACN,MAAM,IAAIx3B,MAAM,gHAGpB,MAIMy3B,EAAUF,GAAa,eACvBG,EAAMJ,EAAMI,KAAO,EACnBC,EAAML,EAAMK,KAAOL,EAAMM,QAC/B,IAAKD,EACD,MAAM,IAAI33B,MAAM,wDAEpB,MAAM63B,EAAU7xB,OAAO8xB,OAAO,CAE1BC,IAAK,kCAAkCN,IAAWO,IAAKP,EAASC,MAAKO,IAAKP,EAAM,KAAMQ,UAAWR,EAAKC,MAAKC,QAASD,EAAKQ,SAAU,CAC/HC,iBAAkB,SAClBC,WAAY,CAAC,IACZf,GAGT,MAAO,CACHnC,EAA8B9b,KAAKC,UAnBxB,CACXgf,IAAK,OACLh5B,KAAM,SAkBN61B,EAA8B9b,KAAKC,UAAUue,IAH/B,IAKhB/F,KAAK,IACX,CAsBA,SAASyG,IACL,MAAyB,oBAAdC,WAC2B,iBAA3BA,UAAqB,UACrBA,UAAqB,UAGrB,EAEf,CAQA,SAASC,IACL,MAA0B,oBAAXlsB,WAGRA,OAAgB,SAAKA,OAAiB,UAAKA,OAAiB,WAC/D,oDAAoDP,KAAKusB,IACjE,CAOA,SAASzJ,IACL,IAAIgI,EACJ,MAAM4B,EAA4C,QAAxB5B,EAAKX,WAAkC,IAAPW,OAAgB,EAASA,EAAG4B,iBACtF,GAAyB,SAArBA,EACA,OAAO,EAEN,GAAyB,YAArBA,EACL,OAAO,EAEX,IACI,MAA2D,qBAAnD1yB,OAAOjH,UAAU4tB,SAASxsB,KAAK,EAAAe,EAAOk1B,QAClD,CACA,MAAOZ,GACH,OAAO,CACX,CACJ,CAIA,SAASmD,IACL,MAAuB,iBAAT3C,MAAqBA,KAAKA,OAASA,IACrD,CACA,SAAS4C,IACL,MAAMC,EAA4B,iBAAXC,OACjBA,OAAOD,QACY,iBAAZE,QACHA,QAAQF,aACRr6B,EACV,MAA0B,iBAAZq6B,QAAuCr6B,IAAfq6B,EAAQ72B,EAClD,CAMA,SAASg3B,IACL,MAA6B,iBAAdR,WAAmD,gBAAzBA,UAAmB,OAChE,CAMA,SAASS,IACL,MAAMC,EAAKX,IACX,OAAOW,EAAGluB,QAAQ,UAAY,GAAKkuB,EAAGluB,QAAQ,aAAe,CACjE,CAcA,SAASmuB,IACL,OAASrK,KACL0J,UAAUY,UAAUztB,SAAS,YAC5B6sB,UAAUY,UAAUztB,SAAS,SACtC,CAKA,SAAS0tB,IACL,IACI,MAA4B,iBAAdC,SAClB,CACA,MAAO9D,GACH,OAAO,CACX,CACJ,CAQA,SAAS+D,IACL,OAAO,IAAI7S,SAAQ,CAACC,EAASsQ,KACzB,IACI,IAAIuC,GAAW,EACf,MAAMC,EAAgB,0DAChBC,EAAU1D,KAAKsD,UAAUK,KAAKF,GACpCC,EAAQE,UAAY,KAChBF,EAAQG,OAAOC,QAEVN,GACDxD,KAAKsD,UAAUS,eAAeN,GAElC9S,GAAQ,EAAK,EAEjB+S,EAAQM,gBAAkB,KACtBR,GAAW,CAAK,EAEpBE,EAAQO,QAAU,KACd,IAAInD,EACJG,GAAiC,QAAxBH,EAAK4C,EAAQ75B,aAA0B,IAAPi3B,OAAgB,EAASA,EAAGoD,UAAY,GAAG,CAE5F,CACA,MAAOr6B,GACHo3B,EAAOp3B,EACX,IAER,CAwEA,MAAMs6B,UAAsBn6B,MACxB,WAAAuP,CAEAqC,EAAMsoB,EAENjN,GACIhW,MAAMijB,GACN77B,KAAKuT,KAAOA,EACZvT,KAAK4uB,WAAaA,EAElB5uB,KAAK2X,KAbM,gBAgBXhQ,OAAOo0B,eAAe/7B,KAAM87B,EAAcp7B,WAGtCiB,MAAMq6B,mBACNr6B,MAAMq6B,kBAAkBh8B,KAAMi8B,EAAav7B,UAAUw7B,OAE7D,EAEJ,MAAMD,EACF,WAAA/qB,CAAYirB,EAASC,EAAaC,GAC9Br8B,KAAKm8B,QAAUA,EACfn8B,KAAKo8B,YAAcA,EACnBp8B,KAAKq8B,OAASA,CAClB,CACA,MAAAH,CAAO3oB,KAASjL,GACZ,MAAMsmB,EAAatmB,EAAK,IAAM,CAAC,EACzBg0B,EAAW,GAAGt8B,KAAKm8B,WAAW5oB,IAC9BgpB,EAAWv8B,KAAKq8B,OAAO9oB,GACvBsoB,EAAUU,EAOxB,SAAyBA,EAAUj0B,GAC/B,OAAOi0B,EAAStF,QAAQuF,GAAS,CAACC,EAAGt5B,KACjC,MAAMS,EAAQ0E,EAAKnF,GACnB,OAAgB,MAATS,EAAgBuyB,OAAOvyB,GAAS,IAAIT,KAAO,GAE1D,CAZmCu5B,CAAgBH,EAAU3N,GAAc,QAE7D+N,EAAc,GAAG38B,KAAKo8B,gBAAgBP,MAAYS,MAExD,OADc,IAAIR,EAAcQ,EAAUK,EAAa/N,EAE3D,EAQJ,MAAM4N,EAAU,gBAmKhB,SAASxf,EAAS4f,EAAKz5B,GACnB,OAAOwE,OAAOjH,UAAU+2B,eAAe31B,KAAK86B,EAAKz5B,EACrD,CASA,SAAS05B,EAAQD,GACb,IAAK,MAAMz5B,KAAOy5B,EACd,GAAIj1B,OAAOjH,UAAU+2B,eAAe31B,KAAK86B,EAAKz5B,GAC1C,OAAO,EAGf,OAAO,CACX,CAaA,SAAS25B,EAAUv0B,EAAGC,GAClB,GAAID,IAAMC,EACN,OAAO,EAEX,MAAMu0B,EAAQp1B,OAAO0J,KAAK9I,GACpBy0B,EAAQr1B,OAAO0J,KAAK7I,GAC1B,IAAK,MAAMy0B,KAAKF,EAAO,CACnB,IAAKC,EAAM1vB,SAAS2vB,GAChB,OAAO,EAEX,MAAMC,EAAQ30B,EAAE00B,GACVE,EAAQ30B,EAAEy0B,GAChB,GAAI38B,EAAS48B,IAAU58B,EAAS68B,IAC5B,IAAKL,EAAUI,EAAOC,GAClB,OAAO,OAGV,GAAID,IAAUC,EACf,OAAO,CAEf,CACA,IAAK,MAAMF,KAAKD,EACZ,IAAKD,EAAMzvB,SAAS2vB,GAChB,OAAO,EAGf,OAAO,CACX,CACA,SAAS38B,EAAS88B,GACd,OAAiB,OAAVA,GAAmC,iBAAVA,CACpC,CAkDA,SAASC,EAAYC,GACjB,MAAMC,EAAS,GACf,IAAK,MAAOp6B,EAAKS,KAAU+D,OAAOoe,QAAQuX,GAClCv7B,MAAMgpB,QAAQnnB,GACdA,EAAMiO,SAAQ2rB,IACVD,EAAOj7B,KAAKm7B,mBAAmBt6B,GAAO,IAAMs6B,mBAAmBD,GAAU,IAI7ED,EAAOj7B,KAAKm7B,mBAAmBt6B,GAAO,IAAMs6B,mBAAmB75B,IAGvE,OAAO25B,EAAO97B,OAAS,IAAM87B,EAAO9J,KAAK,KAAO,EACpD,CAKA,SAASiK,EAAkBL,GACvB,MAAMT,EAAM,CAAC,EAQb,OAPeS,EAAYpG,QAAQ,MAAO,IAAIprB,MAAM,KAC7CgG,SAAQonB,IACX,GAAIA,EAAO,CACP,MAAO91B,EAAKS,GAASq1B,EAAMptB,MAAM,KACjC+wB,EAAIe,mBAAmBx6B,IAAQw6B,mBAAmB/5B,EACtD,KAEGg5B,CACX,CAIA,SAASgB,EAAmBC,GACxB,MAAMC,EAAaD,EAAIlxB,QAAQ,KAC/B,IAAKmxB,EACD,MAAO,GAEX,MAAMC,EAAgBF,EAAIlxB,QAAQ,IAAKmxB,GACvC,OAAOD,EAAIG,UAAUF,EAAYC,EAAgB,EAAIA,OAAgB59B,EACzE,CA0QA,SAAS89B,EAAgBC,EAAUC,GAC/B,MAAMC,EAAQ,IAAIC,EAAcH,EAAUC,GAC1C,OAAOC,EAAME,UAAUpqB,KAAKkqB,EAChC,CAKA,MAAMC,EAMF,WAAAntB,CAAYgtB,EAAUC,GAClBn+B,KAAKu+B,UAAY,GACjBv+B,KAAKw+B,aAAe,GACpBx+B,KAAKy+B,cAAgB,EAErBz+B,KAAK0+B,KAAOrW,QAAQC,UACpBtoB,KAAK2+B,WAAY,EACjB3+B,KAAKm+B,cAAgBA,EAIrBn+B,KAAK0+B,KACAE,MAAK,KACNV,EAASl+B,KAAK,IAEb+4B,OAAM5B,IACPn3B,KAAKwB,MAAM21B,EAAE,GAErB,CACA,IAAA0H,CAAKj7B,GACD5D,KAAK8+B,iBAAiBC,IAClBA,EAASF,KAAKj7B,EAAM,GAE5B,CACA,KAAApC,CAAMA,GACFxB,KAAK8+B,iBAAiBC,IAClBA,EAASv9B,MAAMA,EAAM,IAEzBxB,KAAKy7B,MAAMj6B,EACf,CACA,QAAAw9B,GACIh/B,KAAK8+B,iBAAiBC,IAClBA,EAASC,UAAU,IAEvBh/B,KAAKy7B,OACT,CAOA,SAAA6C,CAAUW,EAAgBz9B,EAAOw9B,GAC7B,IAAID,EACJ,QAAuB5+B,IAAnB8+B,QACU9+B,IAAVqB,QACarB,IAAb6+B,EACA,MAAM,IAAIr9B,MAAM,qBAWhBo9B,EAsHZ,SAA8BnC,EAAKsC,GAC/B,GAAmB,iBAARtC,GAA4B,OAARA,EAC3B,OAAO,EAEX,IAAK,MAAMuC,KAAUD,EACjB,GAAIC,KAAUvC,GAA8B,mBAAhBA,EAAIuC,GAC5B,OAAO,EAGf,OAAO,CACX,CAxIYC,CAAqBH,EAAgB,CACrC,OACA,QACA,aAEWA,EAGA,CACPJ,KAAMI,EACNz9B,QACAw9B,iBAGc7+B,IAAlB4+B,EAASF,OACTE,EAASF,KAAO53B,QAEG9G,IAAnB4+B,EAASv9B,QACTu9B,EAASv9B,MAAQyF,QAEK9G,IAAtB4+B,EAASC,WACTD,EAASC,SAAW/3B,GAExB,MAAMo4B,EAAQr/B,KAAKs/B,eAAeprB,KAAKlU,KAAMA,KAAKu+B,UAAU98B,QAsB5D,OAlBIzB,KAAK2+B,WAEL3+B,KAAK0+B,KAAKE,MAAK,KACX,IACQ5+B,KAAKu/B,WACLR,EAASv9B,MAAMxB,KAAKu/B,YAGpBR,EAASC,UAEjB,CACA,MAAO7H,GAEP,CACM,IAGdn3B,KAAKu+B,UAAUj8B,KAAKy8B,GACbM,CACX,CAGA,cAAAC,CAAeh+B,QACYnB,IAAnBH,KAAKu+B,gBAAiDp+B,IAAtBH,KAAKu+B,UAAUj9B,YAG5CtB,KAAKu+B,UAAUj9B,GACtBtB,KAAKy+B,eAAiB,EACK,IAAvBz+B,KAAKy+B,oBAA8Ct+B,IAAvBH,KAAKm+B,eACjCn+B,KAAKm+B,cAAcn+B,MAE3B,CACA,eAAA8+B,CAAgBU,GACZ,IAAIx/B,KAAK2+B,UAMT,IAAK,IAAIr9B,EAAI,EAAGA,EAAItB,KAAKu+B,UAAU98B,OAAQH,IACvCtB,KAAKy/B,QAAQn+B,EAAGk+B,EAExB,CAIA,OAAAC,CAAQn+B,EAAGk+B,GAGPx/B,KAAK0+B,KAAKE,MAAK,KACX,QAAuBz+B,IAAnBH,KAAKu+B,gBAAiDp+B,IAAtBH,KAAKu+B,UAAUj9B,GAC/C,IACIk+B,EAAGx/B,KAAKu+B,UAAUj9B,GACtB,CACA,MAAO61B,GAIoB,oBAAZ30B,SAA2BA,QAAQhB,OAC1CgB,QAAQhB,MAAM21B,EAEtB,CACJ,GAER,CACA,KAAAsE,CAAM75B,GACE5B,KAAK2+B,YAGT3+B,KAAK2+B,WAAY,OACLx+B,IAARyB,IACA5B,KAAKu/B,WAAa39B,GAItB5B,KAAK0+B,KAAKE,MAAK,KACX5+B,KAAKu+B,eAAYp+B,EACjBH,KAAKm+B,mBAAgBh+B,CAAS,IAEtC,EA+BJ,SAAS8G,IAET,CA6UA,SAASy4B,EAAmBvD,GACxB,OAAIA,GAAWA,EAAQwD,UACZxD,EAAQwD,UAGRxD,CAEf,4ICliEO,IAAIyD,EAA2B,SAAUC,GAG9C,SAASD,IAGP,IAFA,IAAIE,EAEKx4B,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EnG,EAAKmG,GAAQ9F,UAAU8F,GAKzB,OAFAs4B,EAAQD,EAAiB/9B,KAAKG,MAAM49B,EAAkB,CAAC7/B,MAAMukB,OAAOljB,KAAUrB,MACxE+/B,cAAW,EACVD,CACT,EAZA,OAAeF,EAAaC,GAc5B,IAAIG,EAASJ,EAAYl/B,UA4CzB,OA1CAs/B,EAAOC,kBAAoB,WACzB,IAAIC,EAAc,cAAqBlgC,MAQvCA,KAAK+/B,SAAWG,GAChB,OAAUlgC,KAAK6T,MAAMssB,SAAUD,EACjC,EAEAF,EAAOI,mBAAqB,SAA4BC,GACtD,IAAIH,EAAc,cAAqBlgC,MAQnCA,KAAK+/B,WAAaG,IACpBlgC,KAAK+/B,SAAWG,GAChB,OAAUlgC,KAAK6T,MAAMssB,SAAUD,IAG7BG,EAAUF,WAAangC,KAAK6T,MAAMssB,WACpC,OAAUngC,KAAK6T,MAAMssB,SAAUD,EAEnC,EAEAF,EAAOM,qBAAuB,YAC5B,OAAUtgC,KAAK6T,MAAMssB,SAAU,aACxBngC,KAAK+/B,QACd,EAEAC,EAAOO,OAAS,WAEd,OADevgC,KAAK6T,MAAMiK,QAE5B,EAEO8hB,CACT,CA5DsC,CA4DpC,aCnFSY,EAA0B,SAAUX,GAG7C,SAASW,IAGP,IAFA,IAAIV,EAEKx4B,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EnG,EAAKmG,GAAQ9F,UAAU8F,GAezB,OAZAs4B,EAAQD,EAAiB/9B,KAAKG,MAAM49B,EAAkB,CAAC7/B,MAAMukB,OAAOljB,KAAUrB,MACxEkgC,iBAAc,EAEpBJ,EAAMW,kBAAoB,SAAUrzB,GAClC,IAAIszB,EAAcZ,EAAMjsB,MACpBiK,EAAW4iB,EAAY5iB,SACvBqiB,EAAWO,EAAYP,UAC3B,OAAUriB,EAASsS,IAAKhjB,IACxB,OAAU+yB,EAAU/yB,GACpB0yB,EAAMI,YAAc9yB,CACtB,EAEO0yB,CACT,EAtBA,OAAeU,EAAYX,GAwB3B,IAAIG,EAASQ,EAAW9/B,UAmBxB,OAjBAs/B,EAAOI,mBAAqB,SAA4BC,GAClDA,EAAUF,WAAangC,KAAK6T,MAAMssB,WACpC,OAAUngC,KAAK6T,MAAMssB,SAAUngC,KAAKkgC,YAExC,EAEAF,EAAOM,qBAAuB,kBACrBtgC,KAAKkgC,WACd,EAEAF,EAAOO,OAAS,WACd,IAAIziB,EAAW9d,KAAK6T,MAAMiK,SAC1B,OAAoB,eAAmBA,EAAU,CAC/CsS,IAAKpwB,KAAKygC,mBAEd,EAEOD,CACT,CA7CqC,CA6CnC,aC/CEG,EAAY,CAAC,WAAY,YAKlBC,EAAM,SAAa/sB,GAC5B,IAAIiK,EAAWjK,EAAMiK,SACjBqiB,EAAWtsB,EAAMssB,SACjBU,GAAO,OAA8BhtB,EAAO8sB,GAE5CG,EAAQ,WAAeC,KAAKjjB,GAC5BkjB,EAAc,eAAqBF,GAASN,EAAaZ,EACzDqB,EAAiBH,GAASD,GAAQl5B,OAAO0J,KAAKwvB,GAAMp/B,OAAS,EAAiB,eAAmBq/B,EAAOD,GAAQC,EACpH,OAAoB,gBAAoBE,EAAa,CACnDb,SAAUA,GACTc,EACL,6FCXO,IAAIC,EAAY,SAAmB9Q,EAAKhjB,GAO1B,mBAARgjB,EAKC,OAARA,GAA+B,iBAARA,IAGzBA,EAAIxb,QAAUxH,GAPdgjB,EAAIhjB,EASR,EAGW+zB,EAAc,SAAqB/Q,GAC5C,OACU,OAARA,GAA+B,iBAARA,GAAoBA,EAAIqH,eAAe,UAElE,sCC3BO,SAAS2J,EAAQ5B,EAAIp4B,GACxB,IAAIi6B,EAAQj6B,GAAWA,EAAQi6B,MAAQj6B,EAAQi6B,MAAQC,EACnDC,EAAan6B,GAAWA,EAAQm6B,WAAan6B,EAAQm6B,WAAaC,EAEtE,OADep6B,GAAWA,EAAQgX,SAAWhX,EAAQgX,SAAWqjB,GAChDjC,EAAI,CAChB6B,MAAOA,EACPE,WAAYA,GAEpB,CAOA,SAASG,EAAQlC,EAAI6B,EAAOE,EAAYlhC,GACpC,IAJiBuD,EAIb+9B,EAHa,OADA/9B,EAIUvD,IAHe,iBAAVuD,GAAuC,kBAAVA,EAG3BvD,EAAMkhC,EAAWlhC,GAC/CuhC,EAAgBP,EAAM/3B,IAAIq4B,GAK9B,YAJ6B,IAAlBC,IACPA,EAAgBpC,EAAG19B,KAAK9B,KAAMK,GAC9BghC,EAAMxgB,IAAI8gB,EAAUC,IAEjBA,CACX,CACA,SAASC,EAASrC,EAAI6B,EAAOE,GACzB,IAAIlgC,EAAOU,MAAMrB,UAAUsB,MAAMF,KAAKJ,UAAW,GAC7CigC,EAAWJ,EAAWlgC,GACtBugC,EAAgBP,EAAM/3B,IAAIq4B,GAK9B,YAJ6B,IAAlBC,IACPA,EAAgBpC,EAAGv9B,MAAMjC,KAAMqB,GAC/BggC,EAAMxgB,IAAI8gB,EAAUC,IAEjBA,CACX,CACA,SAASE,EAAStC,EAAI39B,EAASuc,EAAUijB,EAAOU,GAC5C,OAAO3jB,EAASlK,KAAKrS,EAAS29B,EAAI6B,EAAOU,EAC7C,CACA,SAASN,EAAgBjC,EAAIp4B,GAEzB,OAAO06B,EAAStC,EAAIx/B,KADS,IAAdw/B,EAAG/9B,OAAeigC,EAAUG,EACPz6B,EAAQi6B,MAAMnF,SAAU90B,EAAQm6B,WACxE,wDAUA,IAAIC,EAAoB,WACpB,OAAOxmB,KAAKC,UAAUvZ,UAC1B,EAIA,SAASsgC,IACLhiC,KAAKqhC,MAAQ15B,OAAOu0B,OAAO,KAC/B,CACA8F,EAA4BthC,UAAU4I,IAAM,SAAUnG,GAClD,OAAOnD,KAAKqhC,MAAMl+B,EACtB,EACA6+B,EAA4BthC,UAAUmgB,IAAM,SAAU1d,EAAKS,GACvD5D,KAAKqhC,MAAMl+B,GAAOS,CACtB,EACA,IAAI09B,EAAe,CACfpF,OAAQ,WAEJ,OAAO,IAAI8F,CACf,GAEOC,EAAa,CACpBJ,SA/BJ,SAA0BrC,EAAIp4B,GAC1B,OAAO06B,EAAStC,EAAIx/B,KAAM6hC,EAAUz6B,EAAQi6B,MAAMnF,SAAU90B,EAAQm6B,WACxE,EA8BIG,QA7BJ,SAAyBlC,EAAIp4B,GACzB,OAAO06B,EAAStC,EAAIx/B,KAAM0hC,EAASt6B,EAAQi6B,MAAMnF,SAAU90B,EAAQm6B,WACvE,oMChDWW,cACX,SAAWA,GACPA,EAA4B,aAAI,eAChCA,EAAqC,sBAAI,wBACzCA,EAA8B,eAAI,iBAClCA,EAA4B,aAAI,eAChCA,EAAmC,oBAAI,qBAC1C,CAND,CAMGA,IAAkBA,EAAgB,CAAC,IACtC,IAAIC,EAA2B,SAAUC,GAErC,SAASD,EAAU5uB,EAAMsoB,EAASwG,GAC9B,IAAIvC,EAAQ9/B,KACR4B,EAAMygC,EACJA,aAAqB1gC,MACjB0gC,EACA,IAAI1gC,MAAMw0B,OAAOkM,SACrBliC,EAQN,OAPA2/B,EAAQsC,EAAOtgC,KAAK9B,KAAM,yBAAyBukB,OAAOhR,EAAM,MAAMgR,OAAOsX,EAAS,MAAMtX,OAAO3iB,EAAM,KAAK2iB,OAAO3iB,EAAIi6B,QAAS,MAAMtX,OAAO3iB,EAAI0gC,OAAS,MAAQtiC,MAC9JuT,KAAOA,EAE0B,mBAA5B5R,MAAMq6B,mBAEbr6B,MAAMq6B,kBAAkB8D,EAAOqC,GAE5BrC,CACX,CACA,OAjBA,QAAUqC,EAAWC,GAiBdD,CACX,CAnB8B,CAmB5BxgC,OAEE4gC,EAA2C,SAAUH,GAErD,SAASG,EAA0B1G,EAASwG,GACxC,OAAOD,EAAOtgC,KAAK9B,KAAMkiC,EAAcM,sBAAuB3G,EAASwG,IAAcriC,IACzF,CACA,OAJA,QAAUuiC,EAA2BH,GAI9BG,CACX,CAN8C,CAM5CJ,GAEEM,EAAoC,SAAUL,GAE9C,SAASK,EAAmB5G,EAASwG,GACjC,OAAOD,EAAOtgC,KAAK9B,KAAMkiC,EAAcQ,eAAgB7G,EAASwG,IAAcriC,IAClF,CACA,OAJA,QAAUyiC,EAAoBL,GAIvBK,CACX,CANuC,CAMrCN,GAEEQ,EAAkC,SAAUP,GAE5C,SAASO,EAAiB9G,EAASwG,GAC/B,OAAOD,EAAOtgC,KAAK9B,KAAMkiC,EAAcU,aAAc/G,EAASwG,IAAcriC,IAChF,CACA,OAJA,QAAU2iC,EAAkBP,GAIrBO,CACX,CANqC,CAMnCR,GAEEU,EAAiC,SAAUT,GAE3C,SAASS,EAAgBhH,EAASiH,EAAQT,GACtC,IAAIvC,EAAQsC,EAAOtgC,KAAK9B,KAAMkiC,EAAca,aAAc,GAAGxe,OAAOsX,EAAS,cAActX,OAAOue,EAAQ,MAAOT,IAAcriC,KAE/H,OADA8/B,EAAMgD,OAASA,EACRhD,CACX,CACA,OANA,QAAU+C,EAAiBT,GAMpBS,CACX,CARoC,CAQlCV,GAEEa,EAAoC,SAAUZ,GAE9C,SAASY,EAAmBnH,EAASiH,EAAQG,EAAYZ,GACrD,IAAIvC,EAAQsC,EAAOtgC,KAAK9B,KAAM,GAAGukB,OAAOsX,EAAS,iBAAiBtX,OAAO0e,aAA+C,EAASA,EAAWt/B,GAAI,uBAAuB4gB,OAAO0e,aAA+C,EAASA,EAAWC,eAAgB,mBAAmB3e,OAAO0e,aAA+C,EAASA,EAAWE,YAAa,MAAOL,EAAQT,IAAcriC,KAGxY,OAFA8/B,EAAMmD,WAAaA,EACnBnD,EAAMgD,OAASA,EACRhD,CACX,CACA,OAPA,QAAUkD,EAAoBZ,GAOvBY,CACX,CATuC,CASrCH,GAEEO,EAAyC,SAAUhB,GAEnD,SAASgB,EAAwBH,EAAYH,GACzC,IAAIhD,EAAQsC,EAAOtgC,KAAK9B,KAAMkiC,EAAcmB,oBAAqB,qBAAsB9e,OAAO0e,EAAWt/B,GAAI,kBAAoB4gB,OAAOue,EAAQ,aAAcve,OAAO0e,EAAWC,eAC1K,oBAAoB3e,OAA4C,iBAA9B0e,EAAWC,eACzCD,EAAWC,eACXD,EAAWC,eACR1e,KAAI,SAAU2S,GAAK,IAAIsB,EAAI,OAA0B,QAAlBA,EAAKtB,EAAEvzB,aAA0B,IAAP60B,EAAgBA,EAAKzd,KAAKC,UAAUkc,EAAI,IACrG1D,OAAQ,KACf,KAAM,mBAAqBzzB,KAEjC,OADA8/B,EAAMmD,WAAaA,EACZnD,CACX,CACA,OAZA,QAAUsD,EAAyBhB,GAY5BgB,CACX,CAd4C,CAc1CjB,wNCrFK,SAASmB,EAAYzvB,EAAO0vB,EAAWC,GAE1C,YADiB,IAAbA,IAAuBA,EAAW,CAAC,GAChCD,EAAU34B,QAAO,SAAU64B,EAAU9rB,GAOxC,OANIA,KAAQ9D,EACR4vB,EAAS9rB,GAAQ9D,EAAM8D,GAElBA,KAAQ6rB,IACbC,EAAS9rB,GAAQ6rB,EAAS7rB,IAEvB8rB,CACX,GAAG,CAAC,EACR,CACA,IAYWC,EAAsB,CAC7BC,QAAS,CAAC,EACVC,SAAU,CAAC,EACXC,cAAU1jC,EACV2jC,cAAe,KACfC,eAAgB,CAAC,EACjBC,uBAAuB,EACvBC,QAnBsB,SAAUziC,GAE5B,CAGR,EAeI0iC,OAdqB,SAAUC,GAE3B,CAGR,GAWO,SAASC,IACZ,MAAO,CACHC,SAAU,CAAC,EACXC,OAAQ,CAAC,EACTzI,QAAS,CAAC,EACV0I,aAAc,CAAC,EACfC,YAAa,CAAC,EACdzhC,KAAM,CAAC,EACP0hC,aAAc,CAAC,EAEvB,CACA,SAASC,EAAuBpiB,GAC5B,MAAO,CACH4Z,OAAQ,WACJ,MAAO,CACH5yB,IAAK,SAAUnG,GACX,OAAOmf,EAAMnf,EACjB,EACA0d,IAAK,SAAU1d,EAAKS,GAChB0e,EAAMnf,GAAOS,CACjB,EAER,EAER,CAKO,SAAS+gC,EAAiBtD,QACf,IAAVA,IAAoBA,EA7BjB,CACHgD,SAAU,CAAC,EACXC,OAAQ,CAAC,EACTzI,QAAS,CAAC,EACV0I,aAAc,CAAC,EACfC,YAAa,CAAC,EACdzhC,KAAM,CAAC,EACP0hC,aAAc,CAAC,IAuBnB,IAAIG,EAAqBC,KAAKD,mBAC1BE,EAAaD,KAAKC,WAClBC,EAAeF,KAAKE,aACpBC,GAAoB,QAAQ,WAG5B,IAFA,IAAIvM,EACAp3B,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,KAAMxM,EAAKoM,KAAKK,gBAAgBhxB,KAAKjS,MAAMw2B,GAAI,QAAc,MAAC,GAASp3B,GAAM,IACxF,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMgD,UACpCjmB,SAAU,IAAWyjB,WAErBsD,GAAkB,QAAQ,WAG1B,IAFA,IAAI1M,EACAp3B,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,KAAMxM,EAAKoM,KAAKO,cAAclxB,KAAKjS,MAAMw2B,GAAI,QAAc,MAAC,GAASp3B,GAAM,IACtF,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMiD,QACpClmB,SAAU,IAAWyjB,WAErBwD,GAAiB,QAAQ,WAGzB,IAFA,IAAI5M,EACAp3B,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,KAAMxM,EAAKoM,KAAKS,aAAapxB,KAAKjS,MAAMw2B,GAAI,QAAc,MAAC,GAASp3B,GAAM,IACrF,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMmD,aACpCpmB,SAAU,IAAWyjB,WAEzB,MAAO,CACHmD,kBAAmBA,EACnBG,gBAAiBA,EACjBI,kBAAkB,QAAQ,SAAU1J,EAAS2J,EAASC,EAAiBC,GACnE,OAAO,IAAI,IAAkB7J,EAAS2J,EAASC,GAAiB,QAAS,CAAEE,WAAY,CAC/ER,gBAAiBA,EACjBH,kBAAmBA,EACnBK,eAAgBA,IACdK,GAAQ,CAAC,GACvB,GAAG,CACCrE,MAAOqD,EAAuBrD,EAAMxF,SACpCzd,SAAU,IAAWyjB,WAEzB+D,uBAAuB,QAAQ,WAE3B,IADA,IAAIvkC,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,IAAKL,EAAmB1wB,KAAKjS,MAAM2iC,GAAoB,QAAc,MAAC,GAASvjC,GAAM,IAChG,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMkD,cACpCnmB,SAAU,IAAWyjB,WAEzBwD,eAAgBA,EAChBQ,eAAe,QAAQ,WAEnB,IADA,IAAIxkC,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,IAAKH,EAAW5wB,KAAKjS,MAAM6iC,GAAY,QAAc,MAAC,GAASzjC,GAAM,IAChF,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMt+B,MACpCqb,SAAU,IAAWyjB,WAEzBiE,iBAAiB,QAAQ,WAErB,IADA,IAAIzkC,EAAO,GACF4jC,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpC5jC,EAAK4jC,GAAMvjC,UAAUujC,GAEzB,OAAO,IAAKF,EAAa7wB,KAAKjS,MAAM8iC,GAAc,QAAc,MAAC,GAAS1jC,GAAM,IACpF,GAAG,CACCggC,MAAOqD,EAAuBrD,EAAMoD,cACpCrmB,SAAU,IAAWyjB,WAGjC,CACO,SAASkE,EAAepC,EAAS1iC,EAAM0W,EAAMssB,GAChD,IACI+B,EADAC,EAAatC,GAAWA,EAAQ1iC,GAKpC,GAHIglC,IACAD,EAASC,EAAWtuB,IAEpBquB,EACA,OAAOA,EAEX/B,EAAQ,IAAI,KAA0B,MAAM1f,OAAOtjB,EAAM,mBAAmBsjB,OAAO5M,IACvF,sHC7JA,IA8CIuuB,EAAa,CACf5T,OAAQ,MACR6T,SAAU,WACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,+JAqH3BC,EAAY,CACd/T,OAAQ,MACR6T,SAAU,UACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,sgBA2f3BE,EAAS,CACXhU,OAAQ,MACR6T,SAAU,OACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,yZCvqB/B,SAASG,EAAQ3J,GAWf,OATE2J,EADoB,mBAAXC,QAAoD,iBAApBA,OAAOC,SACtC,SAAU7J,GAClB,cAAcA,CAChB,EAEU,SAAUA,GAClB,OAAOA,GAAyB,mBAAX4J,QAAyB5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAC3H,EAGK2J,EAAQ3J,EACjB,CAQA,SAAS8J,EAAkB/8B,EAAQkK,GACjC,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CACrC,IAAI2hC,EAAapvB,EAAMvS,GACvB2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EACjDuxB,EAAW0D,cAAe,EACtB,UAAW1D,IAAYA,EAAW2D,UAAW,GACjDj/B,OAAO4J,eAAe5H,EAAQs5B,EAAW9/B,IAAK8/B,EAChD,CACF,CAQA,SAAS4D,EAAgBjK,EAAKz5B,EAAKS,GAYjC,OAXIT,KAAOy5B,EACTj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAC9BS,MAAOA,EACP8N,YAAY,EACZi1B,cAAc,EACdC,UAAU,IAGZhK,EAAIz5B,GAAOS,EAGNg5B,CACT,CAEA,SAASkK,EAAcn9B,GACrB,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CACzC,IAAI+1B,EAAyB,MAAhB31B,UAAUJ,GAAaI,UAAUJ,GAAK,CAAC,EAChDylC,EAAUp/B,OAAO0J,KAAKgmB,GAEkB,mBAAjC1vB,OAAOq/B,wBAChBD,EAAUA,EAAQxiB,OAAO5c,OAAOq/B,sBAAsB3P,GAAQ5vB,QAAO,SAAUw/B,GAC7E,OAAOt/B,OAAOu/B,yBAAyB7P,EAAQ4P,GAAKv1B,UACtD,MAGFq1B,EAAQl1B,SAAQ,SAAU1O,GACxB0jC,EAAgBl9B,EAAQxG,EAAKk0B,EAAOl0B,GACtC,GACF,CAEA,OAAOwG,CACT,CAEA,SAASw9B,EAAeC,EAAK9lC,GAC3B,OAeF,SAAyB8lC,GACvB,GAAIrlC,MAAMgpB,QAAQqc,GAAM,OAAOA,CACjC,CAjBSC,CAAgBD,IAuBzB,SAA+BA,EAAK9lC,GAClC,IAAIgmC,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKtnC,EAET,IACE,IAAK,IAAiCunC,EAA7BzC,EAAKmC,EAAIZ,OAAOC,cAAmBc,GAAMG,EAAKzC,EAAGpG,QAAQ8I,QAChEL,EAAKhlC,KAAKolC,EAAG9jC,QAETtC,GAAKgmC,EAAK7lC,SAAWH,GAH8CimC,GAAK,GAKhF,CAAE,MAAO3lC,GACP4lC,GAAK,EACLC,EAAK7lC,CACP,CAAE,QACA,IACO2lC,GAAsB,MAAhBtC,EAAW,QAAWA,EAAW,QAC9C,CAAE,QACA,GAAIuC,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOH,CACT,CA/CiCM,CAAsBR,EAAK9lC,IAqD5D,WACE,MAAM,IAAIP,UAAU,uDACtB,CAvDkE8mC,EAClE,kCAwDA,IAAI5gC,EAAO,WAAiB,EAExB6gC,EAAU,CAAC,EACXC,EAAY,CAAC,EAEbC,EAAe,CACjBC,KAAMhhC,EACN2J,QAAS3J,GAGX,IACwB,oBAAXiH,SAAwB45B,EAAU55B,QACrB,oBAAbU,WAA0Bm5B,EAAYn5B,UACjB,oBAArB+N,kBAAuDA,iBACvC,oBAAhBurB,cAA6BF,EAAeE,YACzD,CAAE,MAAO/Q,IAAI,CAEb,IACIgR,GADOL,EAAQ3N,WAAa,CAAC,GACPY,UACtBA,OAA+B,IAAnBoN,EAA4B,GAAKA,EAE7CC,EAASN,EACTO,EAAWN,EAEXO,EAAcN,EAEdO,GADeH,EAAOx5B,WACXy5B,EAASG,mBAAqBH,EAASI,MAA6C,mBAA9BJ,EAASl2B,kBAAqE,mBAA3Bk2B,EAAS/X,eAG7HoY,IAFS3N,EAAUpuB,QAAQ,SAAYouB,EAAUpuB,QAAQ,YAElC,sBAEvBg8B,EAAwB,KACxBC,EAA4B,iBAC5BC,EAAgB,gBAyChBC,GAjCa,WACf,IACE,OAAO,CACT,CAAE,MAAO3R,IACP,OAAO,CACT,CACF,CANiB,GAiCF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACvC4R,EAAcD,EAASvkB,OAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAEnEykB,EAAkB,CACpBC,MAAO,QACPC,aAAc,eACdC,QAAS,UACTC,UAAW,aAQTjmB,GANmB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,YAAa,aAAc,OAAQ,QAAS,YAAa,aAAc,aAAc,kBAAmB,gBAAiB,YAAa,QAAS,WAAY,WAAY,UAAW,SAAU,cAAe,iBAAkB6lB,EAAgBC,MAAOD,EAAgBE,aAAcF,EAAgBG,QAASH,EAAgBI,WAAW7kB,OAAOukB,EAAStkB,KAAI,SAAU3jB,GACxa,MAAO,GAAG0jB,OAAO1jB,EAAG,IACtB,KAAI0jB,OAAOwkB,EAAYvkB,KAAI,SAAU3jB,GACnC,MAAO,KAAK0jB,OAAO1jB,EACrB,KAEcunC,EAAOiB,mBAAqB,CAAC,GAoB3C,GAAIhB,GAA8C,mBAA3BA,EAASxU,cAA8B,CAChD,CAAC,CAAC,qBAAsB,gBAAiB,CAAC,yBAA0B,oBAAqB,CAAC,wBAAyB,kBAAmB,CAAC,oBAAqB,cAAe,CAAC,iBAAkB,YAAa,CAAC,8BAA+B,wBAAyB,CAAC,yBAA0B,oBAAqB,CAAC,uBAAwB,kBAAmB,CAAC,4BAA6B,sBAAuB,CAAC,2BAA4B,sBAAuB,CAAC,0BAA2B,qBAC3ehiB,SAAQ,SAAUnO,GACtB,IAAIyB,EAAQgiC,EAAezjC,EAAM,GAC7B4lC,EAAOnkC,EAAM,GACbhC,EAAMgC,EAAM,GAEZokC,EAjBR,SAAgBA,GAId,MAAY,KAARA,GACQ,UAARA,IACQ,SAARA,GACGA,EACT,CAScC,CAzBd,SAAuBF,GACrB,IAAIn9B,EAAUk8B,EAASxU,cAAc,UAAYyV,EAAO,KAExD,GAAIn9B,EACF,OAAOA,EAAQs9B,aAAaH,EAEhC,CAmBqBI,CAAcJ,IAE3BC,UACFpmB,EAAQhgB,GAAOomC,EAEnB,GACF,CAEA,IAcII,EAAU7C,EAAc,CAAC,EAdd,CACb8C,aAAcjB,EACdkB,iBAAkBjB,EAClBkB,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,sBAAsB,EACtBC,kBAAkB,EAClBC,eAAgB,QAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,GAGsBnnB,GAErCwmB,EAAQG,iBAAgBH,EAAQO,kBAAmB,GAExD,IAAIrmB,EAASijB,EAAc,CAAC,EAAG6C,GAE/BvB,EAAOiB,kBAAoBxlB,EAE3B,IAAIjX,EAAIw7B,GAAU,CAAC,EACdx7B,EAAE87B,KAAuB97B,EAAE87B,GAAwB,CAAC,GACpD97B,EAAE87B,GAAsB6B,SAAQ39B,EAAE87B,GAAsB6B,OAAS,CAAC,GAClE39B,EAAE87B,GAAsB8B,QAAO59B,EAAE87B,GAAsB8B,MAAQ,CAAC,GAChE59B,EAAE87B,GAAsB+B,QAAO79B,EAAE87B,GAAsB+B,MAAQ,IACpE,IAAIC,EAAY99B,EAAE87B,GAEdiC,EAAY,GAYZpC,KACQF,EAASG,gBAAgBoC,SAAW,aAAe,iBAAiBj9B,KAAK06B,EAASwC,aAC/ExC,EAASl2B,iBAAiB,oBAZ1B,SAAShQ,IACtBkmC,EAASt2B,oBAAoB,mBAAoB5P,GACxC,EACTwoC,EAAUnmB,KAAI,SAAUgb,GACtB,OAAOA,GACT,GACF,KAcA,IAUIsL,EAVAC,EAAU,UACVC,EAAU,UACVC,EAAY,YACZC,EAAW,WAEXC,EAAO,WAAiB,EAExB1a,OAA2B,IAAX,EAAA5tB,QAAoD,IAAnB,EAAAA,EAAOk1B,SAA0D,mBAAxB,EAAAl1B,EAAOk1B,QAAQ/2B,KACzGoqC,EAAwC,oBAAjBC,aAA+B72B,WAAa62B,aACnEC,EAAa,GAGjB,SAASC,IAEP,IAAK,IAAIjqC,EAAI,EAAGA,EAAIgqC,EAAW7pC,OAAQH,IACrCgqC,EAAWhqC,GAAG,GAAGgqC,EAAWhqC,GAAG,IAIjCgqC,EAAa,GACbR,GAAa,CACf,CAEA,SAASU,EAAU5vB,EAAUvb,GAC3BirC,EAAWhpC,KAAK,CAACsZ,EAAUvb,IAEtByqC,IACHA,GAAa,EACbM,EAAcG,EAAY,GAE9B,CAkBA,SAASE,EAAeC,GACtB,IAAIC,EAAQD,EAAWC,MACnBC,EAAUD,EAAME,OAChBjoC,EAAQ+nC,EAAMG,MACdlwB,EAAW8vB,EAAWE,GACtB/S,EAAU6S,EAAW9M,KAEzB,GAAwB,mBAAbhjB,EAAyB,CAClCgwB,EAAUX,EAEV,IACErnC,EAAQgY,EAAShY,EACnB,CAAE,MAAOuzB,IACPyB,EAAOC,EAAS1B,GAClB,CACF,CAEK4U,EAAelT,EAASj1B,KACvBgoC,IAAYX,GACd3iB,EAAQuQ,EAASj1B,GAGfgoC,IAAYV,GACdtS,EAAOC,EAASj1B,GAGtB,CAEA,SAASmoC,EAAelT,EAASj1B,GAC/B,IAAIooC,EAEJ,IACE,GAAInT,IAAYj1B,EACd,MAAM,IAAI7C,UAAU,wDAGtB,GAAI6C,IAA2B,mBAAVA,GAA2C,WAAnB2iC,EAAQ3iC,IAAsB,CAEzE,IAAIg7B,EAAOh7B,EAAMg7B,KAEjB,GAAoB,mBAATA,EAiBT,OAhBAA,EAAK98B,KAAK8B,GAAO,SAAU2lC,GACpByC,IACHA,GAAW,EAEPpoC,IAAU2lC,EACZ0C,EAAQpT,EAAS0Q,GAEjBjhB,EAAQuQ,EAAS0Q,GAGvB,IAAG,SAAU2C,GACNF,IACHA,GAAW,EACXpT,EAAOC,EAASqT,GAEpB,KACO,CAEX,CACF,CAAE,MAAO/U,IAKP,OAJK6U,GACHpT,EAAOC,EAAS1B,KAGX,CACT,CAEA,OAAO,CACT,CAEA,SAAS7O,EAAQuQ,EAASj1B,GACpBi1B,IAAYj1B,GAAUmoC,EAAelT,EAASj1B,IAChDqoC,EAAQpT,EAASj1B,EAErB,CAEA,SAASqoC,EAAQpT,EAASj1B,GACpBi1B,EAAQgT,SAAWd,IACrBlS,EAAQgT,OAASb,EACjBnS,EAAQiT,MAAQloC,EAChB4nC,EAAUW,EAAoBtT,GAElC,CAEA,SAASD,EAAOC,EAASqT,GACnBrT,EAAQgT,SAAWd,IACrBlS,EAAQgT,OAASb,EACjBnS,EAAQiT,MAAQI,EAChBV,EAAUY,EAAkBvT,GAEhC,CAEA,SAASwT,EAAQxT,GACfA,EAAQyT,MAAQzT,EAAQyT,MAAMz6B,QAAQ45B,EACxC,CAEA,SAASU,EAAmBtT,GAC1BA,EAAQgT,OAASZ,EACjBoB,EAAQxT,EACV,CAEA,SAASuT,EAAiBvT,GACxBA,EAAQgT,OAASX,EACjBmB,EAAQxT,IAEHA,EAAQ0T,UAAY9b,GACvB,EAAA5tB,EAAOk1B,QAAQ/2B,KAAK,qBAAsB63B,EAAQiT,MAAOjT,EAE7D,CAEA,SAAS2T,EAAuB3T,GAC9B,EAAAh2B,EAAOk1B,QAAQ/2B,KAAK,mBAAoB63B,EAC1C,CAMA,SAAS4T,EAAEC,GACT,GAAwB,mBAAbA,EACT,MAAM,IAAI3rC,UAAU,oBAAsB2rC,EAAW,sBAGvD,GAAI1sC,gBAAgBysC,IAAM,EACxB,MAAM,IAAI1rC,UAAU,yHAGtBf,KAAKssC,MAAQ,GAhJf,SAAwBI,EAAU7T,GAKhC,SAAS8T,EAAcT,GACrBtT,EAAOC,EAASqT,EAClB,CAEA,IACEQ,GATF,SAAwB9oC,GACtB0kB,EAAQuQ,EAASj1B,EACnB,GAO2B+oC,EAC3B,CAAE,MAAOxV,IACPwV,EAAcxV,GAChB,CACF,CAmIEyV,CAAeF,EAAU1sC,KAC3B,CAEAysC,EAAE/rC,UAAY,CACZwQ,YAAau7B,EACbZ,OAAQd,EACRuB,MAAO,KACPR,WAAO3rC,EACPosC,UAAU,EACV3N,KAAM,SAAciO,EAAeC,GACjC,IAAIpB,EAAa,CACfC,MAAO3rC,KACP4+B,KAAM,IAAI5+B,KAAKkR,YAAYi6B,GAC3B4B,UAAWF,EACXG,SAAUF,GAmBZ,OAhBKA,IAAeD,GAAmB7sC,KAAKusC,WAC1CvsC,KAAKusC,UAAW,EAEZvsC,KAAK6rC,SAAWX,GAAYza,GAC9B+a,EAAUgB,EAAwBxsC,OAIlCA,KAAK6rC,SAAWZ,GAAajrC,KAAK6rC,SAAWX,EAE/CM,EAAUC,EAAgBC,GAG1B1rC,KAAKssC,MAAMhqC,KAAKopC,GAGXA,EAAW9M,IACpB,EACA7F,MAAO,SAAgB+T,GACrB,OAAO9sC,KAAK4+B,KAAK,KAAMkO,EACzB,GAGFL,EAAEQ,IAAM,SAAUC,GAChB,IAAKnrC,MAAMgpB,QAAQmiB,GACjB,MAAM,IAAInsC,UAAU,4CAGtB,OAAO,IAAI0rC,GAAE,SAAUnkB,EAASsQ,GAC9B,IAAIuU,EAAU,GACVC,EAAY,EAEhB,SAASV,EAAS3xB,GAEhB,OADAqyB,IACO,SAAUxpC,GACfupC,EAAQpyB,GAASnX,IAETwpC,GACN9kB,EAAQ6kB,EAEZ,CACF,CAEA,IAAK,IAAWtU,EAAPv3B,EAAI,EAAYA,EAAI4rC,EAASzrC,OAAQH,KAC5Cu3B,EAAUqU,EAAS5rC,KAEoB,mBAAjBu3B,EAAQ+F,KAC5B/F,EAAQ+F,KAAK8N,EAASprC,GAAIs3B,GAE1BuU,EAAQ7rC,GAAKu3B,EAIZuU,GACH9kB,EAAQ6kB,EAEZ,GACF,EAEAV,EAAEY,KAAO,SAAUH,GACjB,IAAKnrC,MAAMgpB,QAAQmiB,GACjB,MAAM,IAAInsC,UAAU,6CAGtB,OAAO,IAAI0rC,GAAE,SAAUnkB,EAASsQ,GAC9B,IAAK,IAAWC,EAAPv3B,EAAI,EAAYA,EAAI4rC,EAASzrC,OAAQH,KAC5Cu3B,EAAUqU,EAAS5rC,KAEoB,mBAAjBu3B,EAAQ+F,KAC5B/F,EAAQ+F,KAAKtW,EAASsQ,GAEtBtQ,EAAQuQ,EAGd,GACF,EAEA4T,EAAEnkB,QAAU,SAAU1kB,GACpB,OAAIA,GAA4B,WAAnB2iC,EAAQ3iC,IAAuBA,EAAMsN,cAAgBu7B,EACzD7oC,EAGF,IAAI6oC,GAAE,SAAUnkB,GACrBA,EAAQ1kB,EACV,GACF,EAEA6oC,EAAE7T,OAAS,SAAUsT,GACnB,OAAO,IAAIO,GAAE,SAAUnkB,EAASsQ,GAC9BA,EAAOsT,EACT,GACF,EAEA,IAGIoB,EAAuB,CACzBC,KAAM,GACN1lC,EAAG,EACHC,EAAG,EACH0lC,OAAQ,EACRC,OAAO,EACPC,OAAO,GAMT,SAASC,EAAUC,GACjB,GAAKA,GAAQrF,EAAb,CAIA,IAAI1kC,EAAQwkC,EAAS/X,cAAc,SACnCzsB,EAAMgqC,aAAa,OAAQ,YAC3BhqC,EAAMiqC,UAAYF,EAIlB,IAHA,IAAIG,EAAe1F,EAASI,KAAKuF,WAC7BC,EAAc,KAET3sC,EAAIysC,EAAatsC,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACjD,IAAIw/B,EAAQiN,EAAazsC,GACrB4sC,GAAWpN,EAAMoN,SAAW,IAAIC,cAEhC,CAAC,QAAS,QAAQxhC,QAAQuhC,IAAY,IACxCD,EAAcnN,EAElB,CAGA,OADAuH,EAASI,KAAK2F,aAAavqC,EAAOoqC,GAC3BL,CAlBP,CAmBF,CACA,IAAIS,GAAS,iEACb,SAASC,KAIP,IAHA,IAAIf,EAAO,GACP5pC,EAAK,GAEF4pC,KAAS,GACd5pC,GAAM0qC,GAAuB,GAAhBnmC,KAAKqmC,SAAgB,GAGpC,OAAO5qC,CACT,CA8BA,SAAS6qC,GAAWza,GAClB,MAAO,GAAGxP,OAAOwP,GAAKkD,QAAQ,KAAM,SAASA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,OAClI,CAMA,SAASwX,GAAWlE,GAClB,OAAO5iC,OAAO0J,KAAKk5B,GAAU,CAAC,GAAG3/B,QAAO,SAAUU,EAAKojC,GACrD,OAAOpjC,EAAM,GAAGiZ,OAAOmqB,EAAW,MAAMnqB,OAAOgmB,EAAOmE,GAAY,IACpE,GAAG,GACL,CACA,SAASC,GAAsBjjC,GAC7B,OAAOA,EAAU6hC,OAASD,EAAqBC,MAAQ7hC,EAAU7D,IAAMylC,EAAqBzlC,GAAK6D,EAAU5D,IAAMwlC,EAAqBxlC,GAAK4D,EAAU8hC,SAAWF,EAAqBE,QAAU9hC,EAAU+hC,OAAS/hC,EAAUgiC,KAC9N,CACA,SAASkB,GAAgBlrC,GACvB,IAAIgI,EAAYhI,EAAKgI,UACjBmjC,EAAiBnrC,EAAKmrC,eACtBC,EAAYprC,EAAKorC,UACjBC,EAAQ,CACVrjC,UAAW,aAAa6Y,OAAOsqB,EAAiB,EAAG,UAEjDG,EAAiB,aAAazqB,OAAqB,GAAd7Y,EAAU7D,EAAQ,MAAM0c,OAAqB,GAAd7Y,EAAU5D,EAAQ,MACtFmnC,EAAa,SAAS1qB,OAAO7Y,EAAU6hC,KAAO,IAAM7hC,EAAU+hC,OAAS,EAAI,GAAI,MAAMlpB,OAAO7Y,EAAU6hC,KAAO,IAAM7hC,EAAUgiC,OAAS,EAAI,GAAI,MAC9IwB,EAAc,UAAU3qB,OAAO7Y,EAAU8hC,OAAQ,SAOrD,MAAO,CACLuB,MAAOA,EACPI,MARU,CACVzjC,UAAW,GAAG6Y,OAAOyqB,EAAgB,KAAKzqB,OAAO0qB,EAAY,KAAK1qB,OAAO2qB,IAQzEE,KANS,CACT1jC,UAAW,aAAa6Y,OAAOuqB,EAAY,GAAK,EAAG,WAOvD,CAwBA,IAAIO,GAAY,CACdxnC,EAAG,EACHC,EAAG,EACH7D,MAAO,OACPC,OAAQ,QAGV,SAASorC,GAAUC,GACjB,IAAIC,IAAQ9tC,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,KAAmBA,UAAU,GAM3E,OAJI6tC,EAAS5lB,aAAe4lB,EAAS5lB,WAAW8lB,MAAQD,KACtDD,EAAS5lB,WAAW8lB,KAAO,SAGtBF,CACT,CA6KA,SAASG,GAAsBnS,GAC7B,IAAIoS,EAAgBpS,EAAOqS,MACvBC,EAAOF,EAAcE,KACrBC,EAAOH,EAAcG,KACrBxd,EAASiL,EAAOjL,OAChB6T,EAAW5I,EAAO4I,SAClBz6B,EAAY6xB,EAAO7xB,UACnBqkC,EAASxS,EAAOwS,OAChBC,EAAQzS,EAAOyS,MACfC,EAAS1S,EAAO0S,OAChBC,EAAU3S,EAAO2S,QACjBC,EAAQ5S,EAAO4S,MACfC,EAAoB7S,EAAO8S,UAC3BA,OAAkC,IAAtBD,GAAuCA,EAEnD1sC,EAAOosC,EAAKQ,MAAQR,EAAOD,EAC3B5rC,EAAQP,EAAKO,MACbC,EAASR,EAAKQ,OAEdqsC,EAA4B,QAAXje,EACjBke,EAAaD,EAAiB,GAAK,QAAQhsB,OAAOrc,KAAKuoC,KAAKxsC,EAAQC,EAAS,KAC7EwsC,EAAY,CAAC7sB,EAAOgmB,iBAAkB1D,EAAW,GAAG5hB,OAAOV,EAAO+lB,aAAc,KAAKrlB,OAAO4hB,GAAY,GAAIqK,GAAY/oC,QAAO,SAAUysB,GAC3I,OAAqC,IAA9Bic,EAAMQ,QAAQhkC,QAAQunB,EAC/B,IAAGzsB,QAAO,SAAUysB,GAClB,MAAa,KAANA,KAAcA,CACvB,IAAG3P,OAAO4rB,EAAMQ,SAASld,KAAK,KAC1Bmd,EAAU,CACZ9yB,SAAU,GACV6L,WAAYmd,EAAc,CAAC,EAAGqJ,EAAMxmB,WAAY,CAC9C,cAAe2I,EACf,YAAa6T,EACb,MAASuK,EACT,KAAQP,EAAMxmB,WAAWjlB,MAAQ,MACjC,MAAS,6BACT,QAAW,OAAO6f,OAAOtgB,EAAO,KAAKsgB,OAAOrgB,MAG5C2sC,EAAyBN,KAAoBJ,EAAMQ,QAAQhkC,QAAQ,SAAW,CAChF1I,MAAO,GAAGsgB,OAAOtgB,EAAQC,EAAS,GAAK,MAAQ,OAC7C,CAAC,EAEDmsC,IACFO,EAAQjnB,WAAWkf,GAAiB,IAGlCmH,GAAOY,EAAQ9yB,SAASxb,KAAK,CAC/BwuC,IAAK,QACLnnB,WAAY,CACVhmB,GAAIitC,EAAQjnB,WAAW,oBAAsB,SAASpF,OAAO2rB,GAAW5B,OAE1ExwB,SAAU,CAACkyB,KAGb,IAAI3uC,EAAOylC,EAAc,CAAC,EAAG8J,EAAS,CACpCte,OAAQA,EACR6T,SAAUA,EACV0J,KAAMA,EACNC,KAAMA,EACNG,OAAQA,EACRvkC,UAAWA,EACXqkC,OAAQA,EACRxF,OAAQzD,EAAc,CAAC,EAAG+J,EAAwBV,EAAM5F,UAGtDplC,EAAQ2qC,EAAKQ,OAAST,EAAKS,MAnOjC,SAA0B5sC,GACxB,IATe6rC,EASXzxB,EAAWpa,EAAKoa,SAChB6L,EAAajmB,EAAKimB,WAClBkmB,EAAOnsC,EAAKmsC,KACZC,EAAOpsC,EAAKosC,KACZiB,EAAiBrtC,EAAKusC,OACtBvkC,EAAYhI,EAAKgI,UACjBslC,EAAYnB,EAAK5rC,MACjBgtC,EAAWpB,EAAKzJ,KAChB8K,EAAYpB,EAAK7rC,MACjBktC,EAAWrB,EAAK1J,KAChBgL,EAAQxC,GAAgB,CAC1BljC,UAAWA,EACXmjC,eAAgBqC,EAChBpC,UAAWkC,IAETK,EAAW,CACbP,IAAK,OACLnnB,WAAYmd,EAAc,CAAC,EAAGuI,GAAW,CACvCI,KAAM,WAGN6B,EAA8BL,EAASnzB,SAAW,CACpDA,SAAUmzB,EAASnzB,SAAS0G,IAAI8qB,KAC9B,CAAC,EACDiC,EAAiB,CACnBT,IAAK,IACLnnB,WAAYmd,EAAc,CAAC,EAAGsK,EAAMjC,OACpCrxB,SAAU,CAACwxB,GAAUxI,EAAc,CACjCgK,IAAKG,EAASH,IACdnnB,WAAYmd,EAAc,CAAC,EAAGmK,EAAStnB,WAAYynB,EAAMhC,OACxDkC,MAEDE,EAAiB,CACnBV,IAAK,IACLnnB,WAAYmd,EAAc,CAAC,EAAGsK,EAAMrC,OACpCjxB,SAAU,CAACyzB,IAETtB,EAAS,QAAQ1rB,OAAOwsB,GAAkBzC,MAC1CmD,EAAS,QAAQltB,OAAOwsB,GAAkBzC,MAC1CoD,EAAU,CACZZ,IAAK,OACLnnB,WAAYmd,EAAc,CAAC,EAAGuI,GAAW,CACvC1rC,GAAIssC,EACJ0B,UAAW,iBACXC,iBAAkB,mBAEpB9zB,SAAU,CAACuzB,EAAUG,IAEnBK,EAAO,CACTf,IAAK,OACLhzB,SAAU,CAAC,CACTgzB,IAAK,WACLnnB,WAAY,CACVhmB,GAAI8tC,GAEN3zB,UAhEWyxB,EAgEO4B,EA/DD,MAAjB5B,EAASuB,IACJvB,EAASzxB,SAET,CAACyxB,KA6DLmC,IAUL,OARA5zB,EAASxb,KAAKuvC,EAAM,CAClBf,IAAK,OACLnnB,WAAYmd,EAAc,CACxB2I,KAAM,eACN,YAAa,QAAQlrB,OAAOktB,EAAQ,KACpC3B,KAAM,QAAQvrB,OAAO0rB,EAAQ,MAC5BZ,MAEE,CACLvxB,SAAUA,EACV6L,WAAYA,EAEhB,CA4JyCmoB,CAAgBzwC,GA1JzD,SAA2BqC,GACzB,IAAIoa,EAAWpa,EAAKoa,SAChB6L,EAAajmB,EAAKimB,WAClBkmB,EAAOnsC,EAAKmsC,KACZnkC,EAAYhI,EAAKgI,UAEjBqmC,EAActD,GADL/qC,EAAK6mC,QAOlB,GAJIwH,EAAYtwC,OAAS,IACvBkoB,EAAkB,MAAIooB,GAGpBpD,GAAsBjjC,GAAY,CACpC,IAAI0lC,EAAQxC,GAAgB,CAC1BljC,UAAWA,EACXmjC,eAAgBgB,EAAK5rC,MACrB6qC,UAAWe,EAAK5rC,QAElB6Z,EAASxb,KAAK,CACZwuC,IAAK,IACLnnB,WAAYmd,EAAc,CAAC,EAAGsK,EAAMrC,OACpCjxB,SAAU,CAAC,CACTgzB,IAAK,IACLnnB,WAAYmd,EAAc,CAAC,EAAGsK,EAAMjC,OACpCrxB,SAAU,CAAC,CACTgzB,IAAKjB,EAAKzJ,KAAK0K,IACfhzB,SAAU+xB,EAAKzJ,KAAKtoB,SACpB6L,WAAYmd,EAAc,CAAC,EAAG+I,EAAKzJ,KAAKzc,WAAYynB,EAAMhC,WAIlE,MACEtxB,EAASxb,KAAKutC,EAAKzJ,MAGrB,MAAO,CACLtoB,SAAUA,EACV6L,WAAYA,EAEhB,CAmHiEqoB,CAAiB3wC,GAC5Eyc,EAAW3Y,EAAM2Y,SACjB6L,EAAaxkB,EAAMwkB,WAKvB,OAHAtoB,EAAKyc,SAAWA,EAChBzc,EAAKsoB,WAAaA,EAEdomB,EA7FN,SAAmBrsC,GACjB,IAAI4uB,EAAS5uB,EAAK4uB,OACd6T,EAAWziC,EAAKyiC,SAChBroB,EAAWpa,EAAKoa,SAChB6L,EAAajmB,EAAKimB,WAClBomB,EAASrsC,EAAKqsC,OAElB,MAAO,CAAC,CACNe,IAAK,MACLnnB,WAAY,CACV9lB,MAAO,kBAETia,SAAU,CAAC,CACTgzB,IAAK,SACLnnB,WAAYmd,EAAc,CAAC,EAAGnd,EAAY,CACxChmB,IATc,IAAXosC,EAAkB,GAAGxrB,OAAO+N,EAAQ,KAAK/N,OAAOV,EAAO+lB,aAAc,KAAKrlB,OAAO4hB,GAAY4J,IAWlGjyB,SAAUA,KAGhB,CA0EWm0B,CAAS5wC,GAzHpB,SAAiBqC,GACf,IAAIoa,EAAWpa,EAAKoa,SAChB+xB,EAAOnsC,EAAKmsC,KACZC,EAAOpsC,EAAKosC,KACZnmB,EAAajmB,EAAKimB,WAClB4gB,EAAS7mC,EAAK6mC,OACd7+B,EAAYhI,EAAKgI,UAErB,GAAIijC,GAAsBjjC,IAAcmkC,EAAKS,QAAUR,EAAKQ,MAAO,CACjE,IAEI4B,EAAS,CACXrqC,EAHUgoC,EAAK5rC,MACJ4rC,EAAK3rC,OAEI,EACpB4D,EAAG,IAEL6hB,EAAkB,MAAI8kB,GAAW3H,EAAc,CAAC,EAAGyD,EAAQ,CACzD,mBAAoB,GAAGhmB,OAAO2tB,EAAOrqC,EAAI6D,EAAU7D,EAAI,GAAI,OAAO0c,OAAO2tB,EAAOpqC,EAAI4D,EAAU5D,EAAI,GAAI,QAE1G,CAEA,MAAO,CAAC,CACNgpC,IAAK,MACLnnB,WAAYA,EACZ7L,SAAUA,GAEd,CAkGWq0B,CAAO9wC,EAElB,CA+FA,IAAI+wC,GAAS,WAAiB,EAiD1BxnC,IA/CIiZ,EAAOwmB,oBAAsB/B,GAAeA,EAAYL,MAAQK,EAAY13B,QA+CvE,SAA0ByhC,EAAS7S,EAAI8S,EAAcC,GAChE,IAGIjxC,EACA6B,EACAq4B,EALAnqB,EAAO1J,OAAO0J,KAAKghC,GACnB5wC,EAAS4P,EAAK5P,OACdglC,OAA2BtmC,IAAhBoyC,EAtBG,SAAuBC,EAAMD,GAC/C,OAAO,SAAUhqC,EAAGC,EAAG0rB,EAAGue,GACxB,OAAOD,EAAK1wC,KAAKywC,EAAahqC,EAAGC,EAAG0rB,EAAGue,EACzC,CACF,CAkB6CC,CAAclT,EAAI+S,GAAe/S,EAa5E,SARqBr/B,IAAjBmyC,GACFhxC,EAAI,EACJk6B,EAAS6W,EAAQhhC,EAAK,MAEtB/P,EAAI,EACJk6B,EAAS8W,GAGJhxC,EAAIG,EAAQH,IAEjBk6B,EAASiL,EAASjL,EAAQ6W,EAD1BlvC,EAAMkO,EAAK/P,IAC6B6B,EAAKkvC,GAG/C,OAAO7W,CACT,GAaA,SAASmX,GAAYrgB,EAAQsd,GAC3B,IACIgD,GADSlxC,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnDmxC,UAC3BA,OAAkC,IAAtBD,GAAuCA,EACnDE,EAAanrC,OAAO0J,KAAKu+B,GAAOhlC,QAAO,SAAUU,EAAK66B,GACxD,IAAIC,EAAOwJ,EAAMzJ,GASjB,QARiBC,EAAKA,KAGpB96B,EAAI86B,EAAKD,UAAYC,EAAKA,KAE1B96B,EAAI66B,GAAYC,EAGX96B,CACT,GAAG,CAAC,GAEmC,mBAA5Bo/B,EAAUF,MAAMuI,SAA2BF,EAGpDnI,EAAUH,OAAOjY,GAAUwU,EAAc,CAAC,EAAG4D,EAAUH,OAAOjY,IAAW,CAAC,EAAGwgB,GAF7EpI,EAAUF,MAAMuI,QAAQzgB,EAAQwgB,GAYnB,QAAXxgB,GACFqgB,GAAY,KAAM/C,EAEtB,CAEA,IAAIrF,GAASG,EAAUH,OACnBE,GAAQC,EAAUD,MAIlBuI,GAAQ,WACV,IAAIC,EAAS,SAAgB3yB,GAC3B,OAAO1V,GAAO2/B,IAAQ,SAAU2I,EAAGrvC,EAAOyuB,GAExC,OADA4gB,EAAE5gB,GAAU1nB,GAAO/G,EAAOyc,EAAS,CAAC,GAC7B4yB,CACT,GAAG,CAAC,EACN,EAEaD,GAAO,SAAU3nC,EAAK86B,EAAMD,GAKvC,OAJIC,EAAK,KACP96B,EAAI86B,EAAK,IAAMD,GAGV76B,CACT,IACc2nC,GAAO,SAAU3nC,EAAK86B,EAAMD,GACxC,IAAIgN,EAAY/M,EAAK,GAKrB,OAJA96B,EAAI66B,GAAYA,EAChBgN,EAAUthC,SAAQ,SAAUuhC,GAC1B9nC,EAAI8nC,GAAYjN,CAClB,IACO76B,CACT,IACA,IAAI+nC,EAAa,QAAS9I,GACb3/B,GAAO6/B,IAAO,SAAUn/B,EAAKgoC,GACxC,IAAIC,EAAUD,EAAK,GACfhhB,EAASghB,EAAK,GACdnN,EAAWmN,EAAK,GAUpB,MARe,QAAXhhB,GAAqB+gB,IACvB/gB,EAAS,OAGXhnB,EAAIioC,GAAW,CACbjhB,OAAQA,EACR6T,SAAUA,GAEL76B,CACT,GAAG,CAAC,EACN,EACA0nC,KAcetI,EAAUH,OA2BzB,SAASiJ,GAAgBC,EAASnhB,EAAQ6T,GACxC,GAAIsN,GAAWA,EAAQnhB,IAAWmhB,EAAQnhB,GAAQ6T,GAChD,MAAO,CACL7T,OAAQA,EACR6T,SAAUA,EACVC,KAAMqN,EAAQnhB,GAAQ6T,GAG5B,CAEA,SAASuN,GAAOC,GACd,IAAI7C,EAAM6C,EAAc7C,IACpB8C,EAAwBD,EAAchqB,WACtCA,OAAuC,IAA1BiqB,EAAmC,CAAC,EAAIA,EACrDC,EAAwBF,EAAc71B,SACtCA,OAAqC,IAA1B+1B,EAAmC,GAAKA,EAEvD,MAA6B,iBAAlBF,EACFnF,GAAWmF,GAEX,IAAIpvB,OAAOusB,EAAK,KAAKvsB,OAloBhC,SAAwBoF,GACtB,OAAOhiB,OAAO0J,KAAKsY,GAAc,CAAC,GAAG/e,QAAO,SAAUU,EAAKwoC,GACzD,OAAOxoC,EAAM,GAAGiZ,OAAOuvB,EAAe,MAAOvvB,OAAOiqB,GAAW7kB,EAAWmqB,IAAiB,KAC7F,GAAG,IAAIC,MACT,CA8nBuCC,CAAerqB,GAAa,KAAKpF,OAAOzG,EAAS0G,IAAIkvB,IAAQjgB,KAAK,IAAK,MAAMlP,OAAOusB,EAAK,IAEhI,CAsMA,IAAImD,GAAuB,SAA8BC,GACvD,IAAIxoC,EAAY,CACd6hC,KAAM,GACN1lC,EAAG,EACHC,EAAG,EACH2lC,OAAO,EACPC,OAAO,EACPF,OAAQ,GAGV,OAAK0G,EAGIA,EAAgBC,cAActoC,MAAM,KAAKjB,QAAO,SAAUU,EAAKzK,GACpE,IAAIuzC,EAAQvzC,EAAEszC,cAActoC,MAAM,KAC9BwoC,EAAQD,EAAM,GACdvT,EAAOuT,EAAMpyC,MAAM,GAAGyxB,KAAK,KAE/B,GAAI4gB,GAAkB,MAATxT,EAEX,OADAv1B,EAAImiC,OAAQ,EACLniC,EAGT,GAAI+oC,GAAkB,MAATxT,EAEX,OADAv1B,EAAIoiC,OAAQ,EACLpiC,EAKT,GAFAu1B,EAAOn0B,WAAWm0B,GAEd//B,MAAM+/B,GACR,OAAOv1B,EAGT,OAAQ+oC,GACN,IAAK,OACH/oC,EAAIiiC,KAAOjiC,EAAIiiC,KAAO1M,EACtB,MAEF,IAAK,SACHv1B,EAAIiiC,KAAOjiC,EAAIiiC,KAAO1M,EACtB,MAEF,IAAK,OACHv1B,EAAIzD,EAAIyD,EAAIzD,EAAIg5B,EAChB,MAEF,IAAK,QACHv1B,EAAIzD,EAAIyD,EAAIzD,EAAIg5B,EAChB,MAEF,IAAK,KACHv1B,EAAIxD,EAAIwD,EAAIxD,EAAI+4B,EAChB,MAEF,IAAK,OACHv1B,EAAIxD,EAAIwD,EAAIxD,EAAI+4B,EAChB,MAEF,IAAK,SACHv1B,EAAIkiC,OAASliC,EAAIkiC,OAAS3M,EAI9B,OAAOv1B,CACT,GAAGI,GAtDIA,CAwDX,EA0FA,SAAS4oC,GAAY9yC,GACnBxB,KAAK2X,KAAO,cACZ3X,KAAK67B,QAAUr6B,GAAS,mBACxBxB,KAAKsiC,OAAQ,IAAI3gC,OAAQ2gC,KAC3B,CACAgS,GAAY5zC,UAAYiH,OAAOu0B,OAAOv6B,MAAMjB,WAC5C4zC,GAAY5zC,UAAUwQ,YAAcojC,GAEpC,IAAIC,GAAO,CACT9E,KAAM,gBAEJ+E,GAAiB,CACnBC,cAAe,MACfC,YAAa,aACbC,IAAK,MAEHC,GAAO,CACT9D,IAAK,OACLnnB,WAAYmd,EAAc,CAAC,EAAGyN,GAAM,CAClC9B,EAAG,s4CAIHoC,GAAkB/N,EAAc,CAAC,EAAG0N,GAAgB,CACtDV,cAAe,YAKHhN,EAAc,CAAC,EAAGyN,GAAM,CAClCO,GAAI,MACJC,GAAI,MACJC,EAAG,OAISlO,EAAc,CAAC,EAAG0N,GAAgB,CAC5CV,cAAe,IACfj1B,OAAQ,uBAIEioB,EAAc,CAAC,EAAG+N,GAAiB,CAC7Ch2B,OAAQ,iBAMAioB,EAAc,CAAC,EAAGyN,GAAM,CAClCU,QAAS,IACTxC,EAAG,ySAIS3L,EAAc,CAAC,EAAG+N,GAAiB,CAC7Ch2B,OAAQ,iBAMAioB,EAAc,CAAC,EAAGyN,GAAM,CAClCU,QAAS,IACTxC,EAAG,gJAIS3L,EAAc,CAAC,EAAG+N,GAAiB,CAC7Ch2B,OAAQ,iBASC6rB,EAAUH,OACzB,SAAS2K,GAAY9O,GACnB,IAAIniC,EAAQmiC,EAAK,GACbliC,EAASkiC,EAAK,GAId+O,EADehO,EADDf,EAAKpkC,MAAM,GACkB,GACjB,GAoC9B,MAAO,CACLsuC,OAAO,EACPrsC,MAAOA,EACPC,OAAQA,EACRkiC,KApCErkC,MAAMgpB,QAAQoqB,GACN,CACRrE,IAAK,IACLnnB,WAAY,CACVyrB,MAAO,GAAG7wB,OAAOV,EAAO+lB,aAAc,KAAKrlB,OAAOykB,EAAgBC,QAEpEnrB,SAAU,CAAC,CACTgzB,IAAK,OACLnnB,WAAY,CACVyrB,MAAO,GAAG7wB,OAAOV,EAAO+lB,aAAc,KAAKrlB,OAAOykB,EAAgBI,WAClEqG,KAAM,eACNgD,EAAG0C,EAAW,KAEf,CACDrE,IAAK,OACLnnB,WAAY,CACVyrB,MAAO,GAAG7wB,OAAOV,EAAO+lB,aAAc,KAAKrlB,OAAOykB,EAAgBG,SAClEsG,KAAM,eACNgD,EAAG0C,EAAW,OAKV,CACRrE,IAAK,OACLnnB,WAAY,CACV8lB,KAAM,eACNgD,EAAG0C,IAWX,CAuBezK,EAAUH,OAmQzB,IAAI8K,GAAa,2jQAEjB,SAASzH,KACP,IAAI0H,EAAM3M,EACN4M,EAAM3M,EACN4M,EAAK3xB,EAAO+lB,aACZ6L,EAAK5xB,EAAOgmB,iBACZ6L,EAAIL,GAER,GAAIG,IAAOF,GAAOG,IAAOF,EAAK,CAC5B,IAAII,EAAQ,IAAIC,OAAO,MAAMrxB,OAAO+wB,EAAK,OAAQ,KAC7CO,EAAiB,IAAID,OAAO,OAAOrxB,OAAO+wB,EAAK,OAAQ,KACvDQ,EAAQ,IAAIF,OAAO,MAAMrxB,OAAOgxB,GAAM,KAC1CG,EAAIA,EAAEze,QAAQ0e,EAAO,IAAIpxB,OAAOixB,EAAI,MAAMve,QAAQ4e,EAAgB,KAAKtxB,OAAOixB,EAAI,MAAMve,QAAQ6e,EAAO,IAAIvxB,OAAOkxB,GACpH,CAEA,OAAOC,CACT,CAEA,IAAIK,GAEJ,WACE,SAASA,KAviEX,SAAyBC,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAIl1C,UAAU,oCAExB,CAoiEIm1C,CAAgBl2C,KAAM+1C,GAEtB/1C,KAAKm2C,YAAc,CAAC,CACtB,CA3hEF,IAAsBF,EAAaG,EAAYC,EAokE7C,OApkEoBJ,EA6hEPF,EA7hEoBK,EA6hEX,CAAC,CACrBjzC,IAAK,MACLS,MAAO,WAGL,IAFA,IAAIk8B,EAAQ9/B,KAEHsH,EAAO5F,UAAUD,OAAQ00C,EAAc,IAAIp0C,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACtF2uC,EAAY3uC,GAAQ9F,UAAU8F,GAGhC,IAAI8uC,EAAYH,EAAYvrC,OAAO5K,KAAKu2C,iBAAkB,CAAC,GAC3D5uC,OAAO0J,KAAKilC,GAAWzkC,SAAQ,SAAU1O,GACvC28B,EAAMqW,YAAYhzC,GAAO2jC,EAAc,CAAC,EAAGhH,EAAMqW,YAAYhzC,IAAQ,CAAC,EAAGmzC,EAAUnzC,IACnFwvC,GAAYxvC,EAAKmzC,EAAUnzC,IAC3B6vC,IACF,GACF,GACC,CACD7vC,IAAK,QACLS,MAAO,WACL5D,KAAKm2C,YAAc,CAAC,CACtB,GACC,CACDhzC,IAAK,mBACLS,MAAO,SAA0B0yC,EAAWE,GAC1C,IAAI1D,EAAa0D,EAAWlkB,QAAUkkB,EAAWrQ,UAAYqQ,EAAWpQ,KAAO,CAC7E,EAAGoQ,GACDA,EASJ,OARA7uC,OAAO0J,KAAKyhC,GAAYtuB,KAAI,SAAUrhB,GACpC,IAAIszC,EAAkB3D,EAAW3vC,GAC7BmvB,EAASmkB,EAAgBnkB,OACzB6T,EAAWsQ,EAAgBtQ,SAC3BC,EAAOqQ,EAAgBrQ,KACtBkQ,EAAUhkB,KAASgkB,EAAUhkB,GAAU,CAAC,GAC7CgkB,EAAUhkB,GAAQ6T,GAAYC,CAChC,IACOkQ,CACT,IAhkEEF,GAAY1P,EAAkBuP,EAAYv1C,UAAW01C,GACrDC,GAAa3P,EAAkBuP,EAAaI,GAkkEzCN,CACT,CA/CA,GAiDA,SAASW,KACH7yB,EAAOkmB,aAAe4M,KACxBhJ,EAAUC,MAEV+I,IAAe,EAEnB,CAEA,SAASC,GAAUrN,EAAKsN,GAmBtB,OAlBAlvC,OAAO4J,eAAeg4B,EAAK,WAAY,CACrCjgC,IAAKutC,IAEPlvC,OAAO4J,eAAeg4B,EAAK,OAAQ,CACjCjgC,IAAK,WACH,OAAOigC,EAAIgG,SAAS/qB,KAAI,SAAUjc,GAChC,OAAOmrC,GAAOnrC,EAChB,GACF,IAEFZ,OAAO4J,eAAeg4B,EAAK,OAAQ,CACjCjgC,IAAK,WACH,GAAKi/B,EAAL,CACA,IAAI5iC,EAAY0iC,EAAS/X,cAAc,OAEvC,OADA3qB,EAAUmoC,UAAYvE,EAAIuN,KACnBnxC,EAAUmY,QAHE,CAIrB,IAEKyrB,CACT,CAEA,SAASwN,GAAmBC,GAC1B,IAAIC,EAAqBD,EAAW1kB,OAChCA,OAAgC,IAAvB2kB,EAAgC,KAAOA,EAChD9Q,EAAW6Q,EAAW7Q,SAC1B,GAAKA,EACL,OAAOqN,GAAgB0D,GAAQf,YAAa7jB,EAAQ6T,IAAaqN,GAAgB9I,EAAUH,OAAQjY,EAAQ6T,EAC7G,CAkBA,IAhBsBtH,GAgBlBqY,GAAU,IAAInB,GAMdY,IAAe,EAoDf1e,GAAQ,CACVvsB,UAAW,SAAmBwoC,GAC5B,OAAOD,GAAqBC,EAC9B,GAEE9N,IA/EkBvH,GA+EE,SAAUsY,GAChC,IAAI5Z,EAAS77B,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E01C,EAAoB7Z,EAAO7xB,UAC3BA,OAAkC,IAAtB0rC,EAA+B9J,EAAuB8J,EAClEC,EAAiB9Z,EAAOwS,OACxBA,OAA4B,IAAnBsH,GAAoCA,EAC7CC,EAAe/Z,EAAOuS,KACtBA,OAAwB,IAAjBwH,EAA0B,KAAOA,EACxCC,EAAiBha,EAAO0S,OACxBA,OAA4B,IAAnBsH,EAA4B,KAAOA,EAC5CC,EAAgBja,EAAOyS,MACvBA,OAA0B,IAAlBwH,EAA2B,KAAOA,EAC1CC,EAAkBla,EAAO2S,QACzBA,OAA8B,IAApBuH,EAA6B,KAAOA,EAC9CC,EAAkBna,EAAOoT,QACzBA,OAA8B,IAApB+G,EAA6B,GAAKA,EAC5CC,EAAqBpa,EAAO5T,WAC5BA,OAAoC,IAAvBguB,EAAgC,CAAC,EAAIA,EAClDC,EAAiBra,EAAOgN,OACxBA,OAA4B,IAAnBqN,EAA4B,CAAC,EAAIA,EAC9C,GAAKT,EAAL,CACA,IAAI7kB,EAAS6kB,EAAe7kB,OACxB6T,EAAWgR,EAAehR,SAC1BC,EAAO+Q,EAAe/Q,KAC1B,OAAOwQ,GAAU9P,EAAc,CAC7B7lC,KAAM,QACLk2C,IAAiB,WAYlB,OAXAT,KAEI7yB,EAAOmmB,WACLgG,EACFrmB,EAAW,mBAAqB,GAAGpF,OAAOV,EAAOgmB,iBAAkB,WAAWtlB,OAAO2rB,GAAW5B,OAEhG3kB,EAAW,eAAiB,OAC5BA,EAAsB,UAAI,UAIvB+lB,GAAsB,CAC3BE,MAAO,CACLC,KAAMqF,GAAY9O,GAClB0J,KAAMA,EAAOoF,GAAYpF,EAAK1J,MAAQ,CACpCkK,OAAO,EACPrsC,MAAO,KACPC,OAAQ,KACRkiC,KAAM,CAAC,IAGX9T,OAAQA,EACR6T,SAAUA,EACVz6B,UAAWo7B,EAAc,CAAC,EAAGwG,EAAsB5hC,GACnDqkC,OAAQA,EACRC,MAAOA,EACPC,OAAQA,EACRC,QAASA,EACTC,MAAO,CACLxmB,WAAYA,EACZ4gB,OAAQA,EACRoG,QAASA,IAGf,GAzC2B,CA0C7B,EA5IS,SAAUkH,GACf,IAAIta,EAAS77B,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9Ey1C,GAAkBU,GAAuB,CAAC,GAAGzR,KAAOyR,EAAsBd,GAAmBc,GAAuB,CAAC,GACrH/H,EAAOvS,EAAOuS,KAMlB,OAJIA,IACFA,GAAQA,GAAQ,CAAC,GAAG1J,KAAO0J,EAAOiH,GAAmBjH,GAAQ,CAAC,IAGzDjR,GAAKsY,EAAgBrQ,EAAc,CAAC,EAAGvJ,EAAQ,CACpDuS,KAAMA,IAEV,sCCxpEF,SAAS/I,GAAQvU,EAAQslB,GACvB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAEvB,GAAI7qB,OAAOq/B,sBAAuB,CAChC,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAC3CslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GACpD,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UACtD,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAC7B,CAEA,OAAO1mC,CACT,CAEA,SAAS2mC,GAAeruC,GACtB,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CACzC,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EACpDA,EAAI,EAAIylC,GAAQp/B,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GACpD,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GACtC,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW0P,GAAQp/B,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAC5JwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAC7E,GACF,CAEA,OAAOwG,CACT,CAEA,SAAS,GAAQizB,GAGf,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAC1H,EAAG,GAAQA,EACb,CAEA,SAAS,GAAgBA,EAAKz5B,EAAKS,GAYjC,OAXIT,KAAOy5B,EACTj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAC9BS,MAAOA,EACP8N,YAAY,EACZi1B,cAAc,EACdC,UAAU,IAGZhK,EAAIz5B,GAAOS,EAGNg5B,CACT,CAiBA,SAASub,GAAyB9gB,EAAQ+gB,GACxC,GAAc,MAAV/gB,EAAgB,MAAO,CAAC,EAE5B,IAEIl0B,EAAK7B,EAFLqI,EAlBN,SAAuC0tB,EAAQ+gB,GAC7C,GAAc,MAAV/gB,EAAgB,MAAO,CAAC,EAC5B,IAEIl0B,EAAK7B,EAFLqI,EAAS,CAAC,EACV0uC,EAAa1wC,OAAO0J,KAAKgmB,GAG7B,IAAK/1B,EAAI,EAAGA,EAAI+2C,EAAW52C,OAAQH,IACjC6B,EAAMk1C,EAAW/2C,GACb82C,EAASzrC,QAAQxJ,IAAQ,IAC7BwG,EAAOxG,GAAOk0B,EAAOl0B,IAGvB,OAAOwG,CACT,CAKe2uC,CAA8BjhB,EAAQ+gB,GAInD,GAAIzwC,OAAOq/B,sBAAuB,CAChC,IAAIuR,EAAmB5wC,OAAOq/B,sBAAsB3P,GAEpD,IAAK/1B,EAAI,EAAGA,EAAIi3C,EAAiB92C,OAAQH,IACvC6B,EAAMo1C,EAAiBj3C,GACnB82C,EAASzrC,QAAQxJ,IAAQ,GACxBwE,OAAOjH,UAAU83C,qBAAqB12C,KAAKu1B,EAAQl0B,KACxDwG,EAAOxG,GAAOk0B,EAAOl0B,GAEzB,CAEA,OAAOwG,CACT,CAEA,SAAS,GAAmBy9B,GAC1B,OAGF,SAA4BA,GAC1B,GAAIrlC,MAAMgpB,QAAQqc,GAAM,OAAOqR,GAAkBrR,EACnD,CALS,CAAmBA,IAO5B,SAA0BsR,GACxB,GAAsB,oBAAXlS,QAAmD,MAAzBkS,EAAKlS,OAAOC,WAA2C,MAAtBiS,EAAK,cAAuB,OAAO32C,MAAM6c,KAAK85B,EACtH,CAToC,CAAiBtR,IAWrD,SAAqC8L,EAAGyF,GACtC,IAAKzF,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAOuF,GAAkBvF,EAAGyF,GACvD,IAAI93C,EAAI8G,OAAOjH,UAAU4tB,SAASxsB,KAAKoxC,GAAGlxC,MAAM,GAAI,GAC1C,WAANnB,GAAkBqyC,EAAEhiC,cAAarQ,EAAIqyC,EAAEhiC,YAAYyG,MACvD,GAAU,QAAN9W,GAAqB,QAANA,EAAa,OAAOkB,MAAM6c,KAAKs0B,GAClD,GAAU,cAANryC,GAAqB,2CAA2C8M,KAAK9M,GAAI,OAAO43C,GAAkBvF,EAAGyF,EAC3G,CAlB6DC,CAA4BxR,IA4BzF,WACE,MAAM,IAAIrmC,UAAU,uIACtB,CA9BiG,EACjG,CAmBA,SAAS03C,GAAkBrR,EAAKhmC,IACnB,MAAPA,GAAeA,EAAMgmC,EAAI3lC,UAAQL,EAAMgmC,EAAI3lC,QAE/C,IAAK,IAAIH,EAAI,EAAGu3C,EAAO,IAAI92C,MAAMX,GAAME,EAAIF,EAAKE,IAAKu3C,EAAKv3C,GAAK8lC,EAAI9lC,GAEnE,OAAOu3C,CACT,CAmEA,SAASC,GAASC,GAChB,OAPoBnc,EAOHmc,GANjBnc,GAAY,IAEGA,EAKNmc,GAITA,EAASA,EAAO9hB,QAAQ,iBAAiB,SAAUkB,EAAO6gB,GACxD,OAAOA,EAAMA,EAAI7K,cAAgB,EACnC,KAEc8K,OAAO,EAAG,GAAG9E,cAAgB4E,EAAOE,OAAO,GAhB3D,IAAsBrc,CAiBtB,CAEA,IAAIsc,GAAc,CAAC,SAqEnB,IAAI,IAAa,EAEjB,IACE,IAAa,CACf,CAAE,MAAO/hB,IAAI,CAUb,SAASgiB,GAAkB/S,GAGzB,OAAIA,GAA0B,WAAlB,GAAQA,IAAsBA,EAAK9T,QAAU8T,EAAKD,UAAYC,EAAKA,KACtEA,EAGLnO,GAAMmO,KACDnO,GAAMmO,KAAKA,GAIP,OAATA,EACK,KAILA,GAA0B,WAAlB,GAAQA,IAAsBA,EAAK9T,QAAU8T,EAAKD,SACrDC,EAILrkC,MAAMgpB,QAAQqb,IAAyB,IAAhBA,EAAK3kC,OAEvB,CACL6wB,OAAQ8T,EAAK,GACbD,SAAUC,EAAK,IAKC,iBAATA,EACF,CACL9T,OAAQ,MACR6T,SAAUC,QAHd,CAMF,CAKA,SAASgT,GAAcj2C,EAAKS,GAK1B,OAAO7B,MAAMgpB,QAAQnnB,IAAUA,EAAMnC,OAAS,IAAMM,MAAMgpB,QAAQnnB,IAAUA,EAAQ,GAAgB,CAAC,EAAGT,EAAKS,GAAS,CAAC,CACzH,CAEA,IAAI+8B,GAAY,CAAC,gBACjB,SAAS0Y,GAAgB31C,GACvB,IAAI41C,EAAe51C,EAAK41C,aACpBzlC,EAAQskC,GAAyBz0C,EAAMi9B,IAEvC4Y,EAAW1lC,EAAMuyB,KACjBoT,EAAW3lC,EAAMi8B,KACjBC,EAASl8B,EAAMk8B,OACf0J,EAAY5lC,EAAM4lC,UAClBzJ,EAAQn8B,EAAMm8B,MACdE,EAAUr8B,EAAMq8B,QAChBD,EAASp8B,EAAMo8B,OACf+G,EAAamC,GAAkBI,GAC/B5I,EAAUyI,GAAc,UAAW,GAAG70B,OAAO,GA3NnD,SAAmB1Q,GACjB,IAAI6lC,EAEAC,EAAO9lC,EAAM8lC,KACbC,EAAO/lC,EAAM+lC,KACbC,EAAWhmC,EAAMgmC,SACjBC,EAASjmC,EAAMimC,OACfC,EAAQlmC,EAAMkmC,MACdC,EAAQnmC,EAAMmmC,MACdC,EAAOpmC,EAAMomC,KACbC,EAAYrmC,EAAMqmC,UAClBC,EAActmC,EAAMsmC,YACpBC,EAAQvmC,EAAMumC,MACdC,EAAaxmC,EAAMwmC,WACnBC,EAAUzmC,EAAMymC,QAChBl2C,EAASyP,EAAMzP,OACfm2C,EAAW1mC,EAAM0mC,SACjBC,EAAO3mC,EAAM2mC,KACbjN,EAAO15B,EAAM05B,KACbkN,EAAW5mC,EAAM4mC,SACjBC,EAAO7mC,EAAM6mC,KAEb/J,GAkBD,GAlBY+I,EAAW,CACxB,UAAWC,EACX,UAAWC,EACX,eAAgBC,EAChB,YAAaC,EACb,WAAYC,EACZ,WAAYC,EACZ,UAAWC,EACX,kBAAmBE,EACnB,gBAAiBD,EACjB,WAAYE,EACZ,QAASC,EACT,aAAcC,EACd,YAAal2C,EACb,QAASm2C,EACT,WAAoB,IAATC,EACX,qBAA+B,eAATA,GAAkC,SAATA,EAC/C,mBAA6B,aAATA,GAAgC,SAATA,GAChB,MAAMj2B,OAAOgpB,GAAO,MAAOA,GAAwC,GAAgBmM,EAAU,aAAan1B,OAAOk2B,GAAW,MAAOA,GAA8D,IAAbA,GAAiB,GAAgBf,EAAU,WAAWn1B,OAAOm2B,GAAO,MAAOA,GAAwC,GAAgBhB,EAAU,kBAAmB7lC,EAAM8mC,aAAcjB,GAGrY,OAAO/xC,OAAO0J,KAAKs/B,GAASnsB,KAAI,SAAUrhB,GACxC,OAAOwtC,EAAQxtC,GAAOA,EAAM,IAC9B,IAAGsE,QAAO,SAAUtE,GAClB,OAAOA,CACT,GACF,CA2KsEy3C,CAAU/mC,IAAS,GAAmB4lC,EAAU5tC,MAAM,QACtHH,EAAY0tC,GAAc,YAAwC,iBAApBvlC,EAAMnI,UAAyBusB,GAAMvsB,UAAUmI,EAAMnI,WAAamI,EAAMnI,WACtHokC,EAAOsJ,GAAc,OAAQD,GAAkBK,IAC/CqB,EAAezU,GAAK4Q,EAAYgB,GAAeA,GAAeA,GAAeA,GAAe,CAAC,EAAGrH,GAAUjlC,GAAYokC,GAAO,CAAC,EAAG,CACnIC,OAAQA,EACRC,MAAOA,EACPE,QAASA,EACTD,OAAQA,KAGV,IAAK4K,EAEH,OAnFJ,WAEI,IAAIC,GADD,IAAct4C,SAAoC,mBAAlBA,QAAQhB,QAG1Cs5C,EAAWt4C,SAAShB,MAAMS,MAAM64C,EAAUp5C,UAE/C,CA4EIq5C,CAAI,sBAAuB/D,GACpB,KAGT,IAAIzH,EAAWsL,EAAatL,SACxByL,EAAa,CACf5qB,IAAKkpB,GAQP,OANA3xC,OAAO0J,KAAKwC,GAAOhC,SAAQ,SAAU1O,GAE9Bk2C,GAAgB4B,aAAaxjB,eAAet0B,KAC/C63C,EAAW73C,GAAO0Q,EAAM1Q,GAE5B,IACO+3C,GAAa3L,EAAS,GAAIyL,EACnC,CACA3B,GAAgB8B,YAAc,kBAC9B9B,GAAgB+B,UAAY,CAC1BzB,KAAM,UACNv1C,OAAQ,UACRy1C,SAAU,UACVC,OAAQ,UACRL,UAAW,YACXG,KAAM,UACNI,MAAO,UACPlK,KAAM,eAAoB,CAAC,YAAkB,WAAiB,cAC9DG,OAAQ,YACRoK,WAAY,UACZC,QAAS,UACTE,KAAM,WAAgB,EAAC,GAAM,EAAO,aAAc,WAAY,SAC9DpU,KAAM,eAAoB,CAAC,YAAkB,WAAiB,cAC9DmU,SAAU,UACVG,KAAM,WAAgB,CAAC,QAAS,SAChCN,MAAO,UACPK,SAAU,WAAgB,CAAC,EAAG,GAAI,IAAK,MACvCV,MAAO,UACPxM,KAAM,WAAgB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QACnH0M,KAAM,UACNC,UAAW,UACXC,YAAa,UACbpK,OAAQ,eAAoB,CAAC,UAAgB,cAC7CC,MAAO,YACPE,QAAS,YACTxkC,UAAW,eAAoB,CAAC,YAAkB,cAClDivC,YAAa,WAEftB,GAAgB4B,aAAe,CAC7B72C,QAAQ,EACRq1C,UAAW,GACX3J,KAAM,KACNG,OAAQ,KACRoK,YAAY,EACZC,SAAS,EACTE,MAAM,EACNpU,KAAM,KACNmU,UAAU,EACVG,KAAM,KACNN,OAAO,EACPK,SAAU,KACVlN,KAAM,KACN0M,MAAM,EACNC,WAAW,EACXC,aAAa,EACbR,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,OAAO,EACPhK,QAAQ,EACRC,MAAO,GACPE,QAAS,KACTxkC,UAAW,KACXivC,aAAa,GAEf,IAAIO,GAnNJ,SAASG,EAAQ/qB,EAAenkB,GAC9B,IAAI6uC,EAAat5C,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEtF,GAAuB,iBAAZyK,EACT,OAAOA,EAGT,IAAI2R,GAAY3R,EAAQ2R,UAAY,IAAI0G,KAAI,SAAUsc,GACpD,OAAOua,EAAQ/qB,EAAewQ,EAChC,IAGIwa,EAAS3zC,OAAO0J,KAAKlF,EAAQwd,YAAc,CAAC,GAAG/e,QAAO,SAAUU,EAAKnI,GACvE,IAAIomC,EAAMp9B,EAAQwd,WAAWxmB,GAE7B,OAAQA,GACN,IAAK,QACHmI,EAAIiwC,MAAiB,UAAIhS,SAClBp9B,EAAQwd,WAAkB,MACjC,MAEF,IAAK,QACHre,EAAIiwC,MAAa,MAAkBhS,EAnC5B19B,MAAM,KAAK2Y,KAAI,SAAUkxB,GACpC,OAAOA,EAAE3B,MACX,IAAGtsC,QAAO,SAAUiuC,GAClB,OAAOA,CACT,IAAG9qC,QAAO,SAAUU,EAAKkwC,GACvB,IAVgBjS,EAUZjoC,EAAIk6C,EAAK7uC,QAAQ,KACjB6qB,EAAOshB,GAAS0C,EAAKx5C,MAAM,EAAGV,IAC9BsC,EAAQ43C,EAAKx5C,MAAMV,EAAI,GAAGyyC,OAE9B,OADAvc,EAAK7rB,WAAW,UAAYL,GAbZi+B,EAa2B/R,EAZtC+R,EAAI5S,OAAO,GAAGwX,cAAgB5E,EAAIvnC,MAAM,KAYO4B,EAAQ0H,EAAIksB,GAAQ5zB,EACjE0H,CACT,GAAG,CAAC,GA0BE,MAEF,QAC+B,IAAzBnI,EAAIwJ,QAAQ,UAA2C,IAAzBxJ,EAAIwJ,QAAQ,SAC5CrB,EAAIiwC,MAAMp4C,EAAIgxC,eAAiB5K,EAE/Bj+B,EAAIiwC,MAAMzC,GAAS31C,IAAQomC,EAKjC,OAAOj+B,CACT,GAAG,CACDiwC,MAAO,CAAC,IAGNE,EAAoBT,EAAWn3C,MAC/B63C,OAAsC,IAAtBD,EAA+B,CAAC,EAAIA,EACpDrO,EAAY+K,GAAyB6C,EAAY9B,IAKrD,OAHAoC,EAAOC,MAAa,MAAIvD,GAAeA,GAAe,CAAC,EAAGsD,EAAOC,MAAa,OAAIG,GAG3EprB,EAAcruB,WAAM,EAAQ,CAACkK,EAAQ2kC,IAAKkH,GAAeA,GAAe,CAAC,EAAGsD,EAAOC,OAAQnO,IAAY7oB,OAAO,GAAmBzG,IAC1I,EAoK2B5J,KAAK,KAAM,+LC3ZvB,SAASynC,EAAiBC,EAAyBC,EAAchuC,QAC9D,IAAZA,IACFA,GAAU,GAGZ,ICnBoCT,ECJOjB,EFuBvC2vC,GAA0B,QAAcD,GACxCE,GAAuB,QAAcF,IAf3C,SAAyB1vC,GACvB,IAAIrD,EAAOqD,EAAQC,wBACfN,GAAS,QAAMhD,EAAK7E,OAASkI,EAAQ6vC,aAAe,EACpDjwC,GAAS,QAAMjD,EAAK5E,QAAUiI,EAAQ8vC,cAAgB,EAC1D,OAAkB,IAAXnwC,GAA2B,IAAXC,CACzB,CAU4DmwC,CAAgBL,GACtErT,GAAkB,EAAA2T,EAAA,GAAmBN,GACrC/yC,GAAO,EAAAsD,EAAA,GAAsBwvC,EAAyBG,EAAsBluC,GAC5EuuC,EAAS,CACX/tC,WAAY,EACZG,UAAW,GAET6tC,EAAU,CACZx0C,EAAG,EACHC,EAAG,GAkBL,OAfIg0C,IAA4BA,IAA4BjuC,MACxB,UAA9B,EAAAyuC,EAAA,GAAYT,KAChB,EAAAU,EAAA,GAAe/T,MACb4T,GCnCgChvC,EDmCTyuC,MClCd,EAAAnrB,EAAA,GAAUtjB,KAAU,QAAcA,GCJxC,CACLiB,YAFyClC,EDQbiB,GCNRiB,WACpBG,UAAWrC,EAAQqC,YDGZ,EAAAguC,EAAA,GAAgBpvC,KDoCnB,QAAcyuC,KAChBQ,GAAU,EAAAjwC,EAAA,GAAsByvC,GAAc,IACtCh0C,GAAKg0C,EAAaY,WAC1BJ,EAAQv0C,GAAK+zC,EAAaa,WACjBlU,IACT6T,EAAQx0C,GAAI,EAAA80C,EAAA,GAAoBnU,KAI7B,CACL3gC,EAAGiB,EAAKH,KAAOyzC,EAAO/tC,WAAaguC,EAAQx0C,EAC3CC,EAAGgB,EAAKF,IAAMwzC,EAAO5tC,UAAY6tC,EAAQv0C,EACzC7D,MAAO6E,EAAK7E,MACZC,OAAQ4E,EAAK5E,OAEjB,iDGvDA,SAASyV,EAAM+H,GACb,IAAI8C,EAAM,IAAIjJ,IACVqhC,EAAU,IAAIn6B,IACd+Y,EAAS,GAKb,SAAShyB,EAAK4B,GACZwxC,EAAQ5qC,IAAI5G,EAASuM,MACN,GAAG4M,OAAOnZ,EAASyxC,UAAY,GAAIzxC,EAAS0xC,kBAAoB,IACtEjrC,SAAQ,SAAUkrC,GACzB,IAAKH,EAAQI,IAAID,GAAM,CACrB,IAAIE,EAAcz4B,EAAIlb,IAAIyzC,GAEtBE,GACFzzC,EAAKyzC,EAET,CACF,IACAzhB,EAAOl5B,KAAK8I,EACd,CAQA,OAzBAsW,EAAU7P,SAAQ,SAAUzG,GAC1BoZ,EAAI3D,IAAIzV,EAASuM,KAAMvM,EACzB,IAiBAsW,EAAU7P,SAAQ,SAAUzG,GACrBwxC,EAAQI,IAAI5xC,EAASuM,OAExBnO,EAAK4B,EAET,IACOowB,CACT,CCvBA,IAAI0hB,EAAkB,CACpBC,UAAW,SACXz7B,UAAW,GACXtD,SAAU,YAGZ,SAASg/B,IACP,IAAK,IAAI91C,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EnG,EAAKmG,GAAQ9F,UAAU8F,GAGzB,OAAQnG,EAAKoM,MAAK,SAAUtB,GAC1B,QAASA,GAAoD,mBAAlCA,EAAQC,sBACrC,GACF,CAEO,SAASixC,EAAgBC,QACL,IAArBA,IACFA,EAAmB,CAAC,GAGtB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkBE,iBAC1CA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAyBH,EAAkBvxC,eAC3CA,OAA4C,IAA3B0xC,EAAoCR,EAAkBQ,EAC3E,OAAO,SAAsBC,EAAWC,EAAQx2C,QAC9B,IAAZA,IACFA,EAAU4E,GAGZ,ICxC6BwzB,EAC3Bqe,EDuCEt9B,EAAQ,CACV48B,UAAW,SACXW,iBAAkB,GAClB12C,QAASO,OAAO8xB,OAAO,CAAC,EAAGyjB,EAAiBlxC,GAC5C+xC,cAAe,CAAC,EAChBx3B,SAAU,CACRo3B,UAAWA,EACXC,OAAQA,GAEVj0B,WAAY,CAAC,EACb4gB,OAAQ,CAAC,GAEPyT,EAAmB,GACnBC,GAAc,EACdjI,EAAW,CACbz1B,MAAOA,EACP29B,WAAY,SAAoBC,GAC9B,IAAI/2C,EAAsC,mBAArB+2C,EAAkCA,EAAiB59B,EAAMnZ,SAAW+2C,EACzFC,IACA79B,EAAMnZ,QAAUO,OAAO8xB,OAAO,CAAC,EAAGztB,EAAgBuU,EAAMnZ,QAASA,GACjEmZ,EAAMrT,cAAgB,CACpBywC,WAAW,QAAUA,IAAa,EAAAU,EAAA,GAAkBV,GAAaA,EAAUW,gBAAiB,EAAAD,EAAA,GAAkBV,EAAUW,gBAAkB,GAC1IV,QAAQ,EAAAS,EAAA,GAAkBT,IAI5B,IElE4Bl8B,EAC9B68B,EFiEMT,EDhCG,SAAwBp8B,GAErC,IAAIo8B,EAAmBnkC,EAAM+H,GAE7B,OAAO,KAAe9W,QAAO,SAAUU,EAAKkzC,GAC1C,OAAOlzC,EAAIiZ,OAAOu5B,EAAiBr2C,QAAO,SAAU2D,GAClD,OAAOA,EAASozC,QAAUA,CAC5B,IACF,GAAG,GACL,CCuB+BC,EElEK/8B,EFkEsB,GAAG6C,OAAOk5B,EAAkBl9B,EAAMnZ,QAAQsa,WEjE9F68B,EAAS78B,EAAU9W,QAAO,SAAU2zC,EAAQ3pC,GAC9C,IAAI8pC,EAAWH,EAAO3pC,EAAQ+C,MAK9B,OAJA4mC,EAAO3pC,EAAQ+C,MAAQ+mC,EAAW/2C,OAAO8xB,OAAO,CAAC,EAAGilB,EAAU9pC,EAAS,CACrExN,QAASO,OAAO8xB,OAAO,CAAC,EAAGilB,EAASt3C,QAASwN,EAAQxN,SACrDkB,KAAMX,OAAO8xB,OAAO,CAAC,EAAGilB,EAASp2C,KAAMsM,EAAQtM,QAC5CsM,EACE2pC,CACT,GAAG,CAAC,GAEG52C,OAAO0J,KAAKktC,GAAQ/5B,KAAI,SAAUrhB,GACvC,OAAOo7C,EAAOp7C,EAChB,MF4DM,OAJAod,EAAMu9B,iBAAmBA,EAAiBr2C,QAAO,SAAUrF,GACzD,OAAOA,EAAEqX,OACX,IA+FF8G,EAAMu9B,iBAAiBjsC,SAAQ,SAAUnO,GACvC,IAAIiU,EAAOjU,EAAKiU,KACZgnC,EAAej7C,EAAK0D,QACpBA,OAA2B,IAAjBu3C,EAA0B,CAAC,EAAIA,EACzCC,EAASl7C,EAAKk7C,OAElB,GAAsB,mBAAXA,EAAuB,CAChC,IAAIC,EAAYD,EAAO,CACrBr+B,MAAOA,EACP5I,KAAMA,EACNq+B,SAAUA,EACV5uC,QAASA,IAGP03C,EAAS,WAAmB,EAEhCd,EAAiB17C,KAAKu8C,GAAaC,EACrC,CACF,IA/GS9I,EAAS+I,QAClB,EAMAC,YAAa,WACX,IAAIf,EAAJ,CAIA,IAAIgB,EAAkB1+B,EAAMgG,SACxBo3B,EAAYsB,EAAgBtB,UAC5BC,EAASqB,EAAgBrB,OAG7B,GAAKR,EAAiBO,EAAWC,GAAjC,CAKAr9B,EAAMkG,MAAQ,CACZk3B,UAAWhC,EAAiBgC,GAAW,EAAAuB,EAAA,GAAgBtB,GAAoC,UAA3Br9B,EAAMnZ,QAAQgX,UAC9Ew/B,QAAQ,EAAAuB,EAAA,GAAcvB,IAOxBr9B,EAAM6+B,OAAQ,EACd7+B,EAAM48B,UAAY58B,EAAMnZ,QAAQ+1C,UAKhC58B,EAAMu9B,iBAAiBjsC,SAAQ,SAAUzG,GACvC,OAAOmV,EAAMw9B,cAAc3yC,EAASuM,MAAQhQ,OAAO8xB,OAAO,CAAC,EAAGruB,EAAS9C,KACzE,IAEA,IAAK,IAAIyS,EAAQ,EAAGA,EAAQwF,EAAMu9B,iBAAiBr8C,OAAQsZ,IACzD,IAAoB,IAAhBwF,EAAM6+B,MAAV,CAMA,IAAIC,EAAwB9+B,EAAMu9B,iBAAiB/iC,GAC/CykB,EAAK6f,EAAsB7f,GAC3B8f,EAAyBD,EAAsBj4C,QAC/Cm4C,OAAsC,IAA3BD,EAAoC,CAAC,EAAIA,EACpD3nC,EAAO0nC,EAAsB1nC,KAEf,mBAAP6nB,IACTjf,EAAQif,EAAG,CACTjf,MAAOA,EACPnZ,QAASm4C,EACT5nC,KAAMA,EACNq+B,SAAUA,KACNz1B,EAdR,MAHEA,EAAM6+B,OAAQ,EACdrkC,GAAS,CAzBb,CATA,CAqDF,EAGAgkC,QC1I2Bvf,ED0IV,WACf,OAAO,IAAInX,SAAQ,SAAUC,GAC3B0tB,EAASgJ,cACT12B,EAAQ/H,EACV,GACF,EC7IG,WAUL,OATKs9B,IACHA,EAAU,IAAIx1B,SAAQ,SAAUC,GAC9BD,QAAQC,UAAUsW,MAAK,WACrBif,OAAU19C,EACVmoB,EAAQkX,IACV,GACF,KAGKqe,CACT,GDmII2B,QAAS,WACPpB,IACAH,GAAc,CAChB,GAGF,IAAKb,EAAiBO,EAAWC,GAC/B,OAAO5H,EAmCT,SAASoI,IACPJ,EAAiBnsC,SAAQ,SAAU2tB,GACjC,OAAOA,GACT,IACAwe,EAAmB,EACrB,CAEA,OAvCAhI,EAASkI,WAAW92C,GAASw3B,MAAK,SAAUre,IACrC09B,GAAe72C,EAAQq4C,eAC1Br4C,EAAQq4C,cAAcl/B,EAE1B,IAmCOy1B,CACT,CACF,qFGlMe,SAASh5B,EAAS0iC,EAAQ5e,GACvC,IAAI6e,EAAW7e,EAAM8e,aAAe9e,EAAM8e,cAE1C,GAAIF,EAAO1iC,SAAS8jB,GAClB,OAAO,EAEJ,GAAI6e,IAAY,QAAaA,GAAW,CACzC,IAAI9gB,EAAOiC,EAEX,EAAG,CACD,GAAIjC,GAAQ6gB,EAAOG,WAAWhhB,GAC5B,OAAO,EAITA,EAAOA,EAAK/wB,YAAc+wB,EAAKihB,IACjC,OAASjhB,EACX,CAGF,OAAO,CACT,oHClBe,SAASzyB,EAAsBD,EAAS4zC,EAAcC,QAC9C,IAAjBD,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAIC,EAAa9zC,EAAQC,wBACrBN,EAAS,EACTC,EAAS,EAETg0C,IAAgB,QAAc5zC,KAChCL,EAASK,EAAQ6vC,YAAc,IAAI,QAAMiE,EAAWh8C,OAASkI,EAAQ6vC,aAAmB,EACxFjwC,EAASI,EAAQ8vC,aAAe,IAAI,QAAMgE,EAAW/7C,QAAUiI,EAAQ8vC,cAAoB,GAG7F,IACIiE,IADO,QAAU/zC,IAAW,OAAUA,GAAW+B,QAC3BgyC,eAEtBC,IAAoB,UAAsBH,EAC1Cn4C,GAAKo4C,EAAWt3C,MAAQw3C,GAAoBD,EAAiBA,EAAeE,WAAa,IAAMt0C,EAC/FhE,GAAKm4C,EAAWr3C,KAAOu3C,GAAoBD,EAAiBA,EAAeG,UAAY,IAAMt0C,EAC7F9H,EAAQg8C,EAAWh8C,MAAQ6H,EAC3B5H,EAAS+7C,EAAW/7C,OAAS6H,EACjC,MAAO,CACL9H,MAAOA,EACPC,OAAQA,EACR0E,IAAKd,EACL+B,MAAOhC,EAAI5D,EACX8F,OAAQjC,EAAI5D,EACZyE,KAAMd,EACNA,EAAGA,EACHC,EAAGA,EAEP,qFCvCe,SAASwE,EAAiBH,GACvC,OAAO,OAAUA,GAASG,iBAAiBH,EAC7C,qFCFe,SAASgwC,EAAmBhwC,GAEzC,SAAS,QAAUA,GAAWA,EAAQ0kB,cACtC1kB,EAAQyC,WAAaV,OAAOU,UAAU45B,eACxC,qFCFe,SAAS2W,EAAchzC,GACpC,IAAI8zC,GAAa,OAAsB9zC,GAGnClI,EAAQkI,EAAQ6vC,YAChB93C,EAASiI,EAAQ8vC,aAUrB,OARI/zC,KAAKoI,IAAI2vC,EAAWh8C,MAAQA,IAAU,IACxCA,EAAQg8C,EAAWh8C,OAGjBiE,KAAKoI,IAAI2vC,EAAW/7C,OAASA,IAAW,IAC1CA,EAAS+7C,EAAW/7C,QAGf,CACL2D,EAAGsE,EAAQi0C,WACXt4C,EAAGqE,EAAQk0C,UACXp8C,MAAOA,EACPC,OAAQA,EAEZ,sCCxBe,SAASo4C,EAAYnwC,GAClC,OAAOA,GAAWA,EAAQm0C,UAAY,IAAInM,cAAgB,IAC5D,qJCDe,SAASoM,EAAep0C,GACrC,MAAO,CAAC,QAAS,KAAM,MAAMQ,SAAQ,EAAA2vC,EAAA,GAAYnwC,KAAa,CAChE,2BCKA,SAASq0C,EAAoBr0C,GAC3B,OAAK,QAAcA,IACoB,WAAvC,EAAAG,EAAA,GAAiBH,GAASnJ,SAInBmJ,EAAQ0vC,aAHN,IAIX,CAwCe,SAASqD,EAAgB/yC,GAItC,IAHA,IAAI+B,GAAS,EAAAwiB,EAAA,GAAUvkB,GACnB0vC,EAAe2E,EAAoBr0C,GAEhC0vC,GAAgB0E,EAAe1E,IAA6D,YAA5C,EAAAvvC,EAAA,GAAiBuvC,GAAc74C,UACpF64C,EAAe2E,EAAoB3E,GAGrC,OAAIA,IAA+C,UAA9B,EAAAS,EAAA,GAAYT,IAA0D,UAA9B,EAAAS,EAAA,GAAYT,IAAwE,YAA5C,EAAAvvC,EAAA,GAAiBuvC,GAAc74C,UAC3HkL,EAGF2tC,GAhDT,SAA4B1vC,GAC1B,IAAIs0C,EAAY,WAAW9yC,MAAK,UAGhC,GAFW,WAAWA,MAAK,YAEf,QAAcxB,IAII,WAFX,EAAAG,EAAA,GAAiBH,GAEnBnJ,SACb,OAAO,KAIX,IAAIk9B,GAAc,EAAAwgB,EAAA,GAAcv0C,GAMhC,KAJI,QAAa+zB,KACfA,EAAcA,EAAY4f,OAGrB,QAAc5f,IAAgB,CAAC,OAAQ,QAAQvzB,SAAQ,EAAA2vC,EAAA,GAAYpc,IAAgB,GAAG,CAC3F,IAAI0N,GAAM,EAAAthC,EAAA,GAAiB4zB,GAI3B,GAAsB,SAAlB0N,EAAIliC,WAA4C,SAApBkiC,EAAI+S,aAA0C,UAAhB/S,EAAIgT,UAAiF,IAA1D,CAAC,YAAa,eAAej0C,QAAQihC,EAAIiT,aAAsBJ,GAAgC,WAAnB7S,EAAIiT,YAA2BJ,GAAa7S,EAAInmC,QAAyB,SAAfmmC,EAAInmC,OACjO,OAAOy4B,EAEPA,EAAcA,EAAYpyB,UAE9B,CAEA,OAAO,IACT,CAgByBgzC,CAAmB30C,IAAY+B,CACxD,2GCjEe,SAASwyC,EAAcv0C,GACpC,MAA6B,UAAzB,OAAYA,GACPA,EAMPA,EAAQ40C,cACR50C,EAAQ2B,cACR,QAAa3B,GAAWA,EAAQ2zC,KAAO,QAEvC,OAAmB3zC,EAGvB,sCClBe,SAASukB,EAAUtjB,GAChC,GAAY,MAARA,EACF,OAAOc,OAGT,GAAwB,oBAApBd,EAAKkhB,WAAkC,CACzC,IAAIuC,EAAgBzjB,EAAKyjB,cACzB,OAAOA,GAAgBA,EAAcC,aAAwB5iB,MAC/D,CAEA,OAAOd,CACT,oHCVe,SAASovC,EAAgBpvC,GACtC,IAAI4zC,GAAM,OAAU5zC,GAGpB,MAAO,CACLiB,WAHe2yC,EAAIC,YAInBzyC,UAHcwyC,EAAIE,YAKtB,0GCNe,SAASvE,EAAoBxwC,GAQ1C,OAAO,QAAsB,OAAmBA,IAAUxD,MAAO,OAAgBwD,GAASkC,UAC5F,sICVA,SAAS8yC,EAAU/zC,GAEjB,OAAOA,aADU,OAAUA,GAAMg0C,SACIh0C,aAAgBg0C,OACvD,CAEA,SAASnwB,EAAc7jB,GAErB,OAAOA,aADU,OAAUA,GAAM2P,aACI3P,aAAgB2P,WACvD,CAEA,SAASskC,EAAaj0C,GAEpB,MAA0B,oBAAfk0C,aAKJl0C,aADU,OAAUA,GAAMk0C,YACIl0C,aAAgBk0C,WACvD,qFCnBe,SAASC,IACtB,OAAQ,iCAAiC5zC,MAAK,SAChD,qFCFe,SAAS4uC,EAAepwC,GAErC,IAAIq1C,GAAoB,OAAiBr1C,GACrC7H,EAAWk9C,EAAkBl9C,SAC7Bm9C,EAAYD,EAAkBC,UAC9BC,EAAYF,EAAkBE,UAElC,MAAO,6BAA6B/zC,KAAKrJ,EAAWo9C,EAAYD,EAClE,sHCLe,SAASE,EAAgBv0C,GACtC,MAAI,CAAC,OAAQ,OAAQ,aAAaT,SAAQ,EAAA2vC,EAAA,GAAYlvC,KAAU,EAEvDA,EAAKyjB,cAAc3T,MAGxB,QAAc9P,KAAS,EAAAmvC,EAAA,GAAenvC,GACjCA,EAGFu0C,GAAgB,EAAAjB,EAAA,GAActzC,GACvC,gBCJe,SAASixC,EAAkBlyC,EAASpJ,GACjD,IAAI6+C,OAES,IAAT7+C,IACFA,EAAO,IAGT,IAAI8+C,EAAeF,EAAgBx1C,GAC/B21C,EAASD,KAAqE,OAAlDD,EAAwBz1C,EAAQ0kB,oBAAyB,EAAS+wB,EAAsB1kC,MACpH8jC,GAAM,EAAAtwB,EAAA,GAAUmxB,GAChBl4C,EAASm4C,EAAS,CAACd,GAAKz8B,OAAOy8B,EAAId,gBAAkB,IAAI,EAAA3D,EAAA,GAAesF,GAAgBA,EAAe,IAAMA,EAC7GE,EAAch/C,EAAKwhB,OAAO5a,GAC9B,OAAOm4C,EAASC,EAChBA,EAAYx9B,OAAO85B,GAAkB,EAAAqC,EAAA,GAAc/2C,IACrD,sZCzBO,IAAIf,EAAM,MACNmB,EAAS,SACTF,EAAQ,QACRlB,EAAO,OACPq5C,EAAO,OACPC,EAAiB,CAACr5C,EAAKmB,EAAQF,EAAOlB,GACtCoK,EAAQ,QACRK,EAAM,MACN8uC,EAAkB,kBAClBC,EAAW,WACXvE,EAAS,SACTD,EAAY,YACZyE,EAAmCH,EAAer3C,QAAO,SAAUU,EAAK6xC,GACjF,OAAO7xC,EAAIiZ,OAAO,CAAC44B,EAAY,IAAMpqC,EAAOoqC,EAAY,IAAM/pC,GAChE,GAAG,IACQivC,EAA0B,GAAG99B,OAAO09B,EAAgB,CAACD,IAAOp3C,QAAO,SAAUU,EAAK6xC,GAC3F,OAAO7xC,EAAIiZ,OAAO,CAAC44B,EAAWA,EAAY,IAAMpqC,EAAOoqC,EAAY,IAAM/pC,GAC3E,GAAG,IAaQkvC,EAAiB,CAXJ,aACN,OACK,YAEC,aACN,OACK,YAEE,cACN,QACK,wJCoDxB,KACE3qC,KAAM,QACN8B,SAAS,EACT+kC,MAAO,OACPhf,GApEF,SAAe97B,GACb,IAAI6+C,EAEAhiC,EAAQ7c,EAAK6c,MACb5I,EAAOjU,EAAKiU,KACZvQ,EAAU1D,EAAK0D,QACfo7C,EAAejiC,EAAMgG,SAASk8B,MAC9BC,EAAgBniC,EAAMw9B,cAAc2E,cACpCC,GAAgB,OAAiBpiC,EAAM48B,WACvC/rC,GAAO,OAAyBuxC,GAEhCvhD,EADa,CAAC,KAAM,MAAOuL,QAAQg2C,IAAkB,EAClC,SAAW,QAElC,GAAKH,GAAiBE,EAAtB,CAIA,IAAIE,EAxBgB,SAAyBv+C,EAASkc,GAItD,OAHAlc,EAA6B,mBAAZA,EAAyBA,EAAQsD,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMkG,MAAO,CAC/E02B,UAAW58B,EAAM48B,aACb94C,GACC,OAAsC,iBAAZA,EAAuBA,GAAU,OAAgBA,EAAS,MAC7F,CAmBsBw+C,CAAgBz7C,EAAQ/C,QAASkc,GACjDuiC,GAAY,OAAcN,GAC1BO,EAAmB,MAAT3xC,EAAe,KAAM,KAC/B4xC,EAAmB,MAAT5xC,EAAe,IAAS,KAClC6xC,EAAU1iC,EAAMkG,MAAMk3B,UAAUv8C,GAAOmf,EAAMkG,MAAMk3B,UAAUvsC,GAAQsxC,EAActxC,GAAQmP,EAAMkG,MAAMm3B,OAAOx8C,GAC9G8hD,EAAYR,EAActxC,GAAQmP,EAAMkG,MAAMk3B,UAAUvsC,GACxD+xC,GAAoB,OAAgBX,GACpCY,EAAaD,EAA6B,MAAT/xC,EAAe+xC,EAAkBh0C,cAAgB,EAAIg0C,EAAkB/zC,aAAe,EAAI,EAC3Hi0C,EAAoBJ,EAAU,EAAIC,EAAY,EAG9Cp5C,EAAM84C,EAAcG,GACpBn5C,EAAMw5C,EAAaN,EAAU1hD,GAAOwhD,EAAcI,GAClDM,EAASF,EAAa,EAAIN,EAAU1hD,GAAO,EAAIiiD,EAC/CnR,GAAS,OAAOpoC,EAAKw5C,EAAQ15C,GAE7B25C,EAAWnyC,EACfmP,EAAMw9B,cAAcpmC,KAAS4qC,EAAwB,CAAC,GAAyBgB,GAAYrR,EAAQqQ,EAAsBiB,aAAetR,EAASoR,EAAQf,EAnBzJ,CAoBF,EAkCE3D,OAhCF,SAAgBz5C,GACd,IAAIob,EAAQpb,EAAMob,MAEdkjC,EADUt+C,EAAMiC,QACW+E,QAC3Bq2C,OAAoC,IAArBiB,EAA8B,sBAAwBA,EAErD,MAAhBjB,IAKwB,iBAAjBA,IACTA,EAAejiC,EAAMgG,SAASq3B,OAAO/pB,cAAc2uB,OAOhD,OAASjiC,EAAMgG,SAASq3B,OAAQ4E,KAIrCjiC,EAAMgG,SAASk8B,MAAQD,EACzB,EASE3F,SAAU,CAAC,iBACXC,iBAAkB,CAAC,iJC/EjB4G,EAAa,CACf96C,IAAK,OACLiB,MAAO,OACPE,OAAQ,OACRpB,KAAM,QAeD,SAASg7C,EAAYx+C,GAC1B,IAAIy+C,EAEAhG,EAASz4C,EAAMy4C,OACfiG,EAAa1+C,EAAM0+C,WACnB1G,EAAYh4C,EAAMg4C,UAClB2G,EAAY3+C,EAAM2+C,UAClBzH,EAAUl3C,EAAMk3C,QAChBr5C,EAAWmC,EAAMnC,SACjB+gD,EAAkB5+C,EAAM4+C,gBACxBC,EAAW7+C,EAAM6+C,SACjBC,EAAe9+C,EAAM8+C,aACrBp2C,EAAU1I,EAAM0I,QAChBq2C,EAAa7H,EAAQx0C,EACrBA,OAAmB,IAAfq8C,EAAwB,EAAIA,EAChCC,EAAa9H,EAAQv0C,EACrBA,OAAmB,IAAfq8C,EAAwB,EAAIA,EAEhC7+C,EAAgC,mBAAjB2+C,EAA8BA,EAAa,CAC5Dp8C,EAAGA,EACHC,EAAGA,IACA,CACHD,EAAGA,EACHC,EAAGA,GAGLD,EAAIvC,EAAMuC,EACVC,EAAIxC,EAAMwC,EACV,IAAIs8C,EAAO/H,EAAQ5kB,eAAe,KAC9B4sB,EAAOhI,EAAQ5kB,eAAe,KAC9B6sB,EAAQ,KACRC,EAAQ,KACRvD,EAAM9yC,OAEV,GAAI81C,EAAU,CACZ,IAAInI,GAAe,OAAgB+B,GAC/B4G,EAAa,eACbC,EAAY,cAchB,GAZI5I,KAAiB,OAAU+B,KAC7B/B,GAAe,OAAmB+B,GAEc,YAA5C,OAAiB/B,GAAc74C,UAAsC,aAAbA,IAC1DwhD,EAAa,eACbC,EAAY,gBAOZtH,IAAc,OAAQA,IAAc,MAAQA,IAAc,OAAU2G,IAAc,KACpFS,EAAQ,IAGRz8C,IAFc+F,GAAWguC,IAAiBmF,GAAOA,EAAId,eAAiBc,EAAId,eAAeh8C,OACzF23C,EAAa2I,IACEX,EAAW3/C,OAC1B4D,GAAKi8C,EAAkB,GAAK,EAG9B,GAAI5G,IAAc,OAASA,IAAc,MAAOA,IAAc,MAAW2G,IAAc,KACrFQ,EAAQ,KAGRz8C,IAFcgG,GAAWguC,IAAiBmF,GAAOA,EAAId,eAAiBc,EAAId,eAAej8C,MACzF43C,EAAa4I,IACEZ,EAAW5/C,MAC1B4D,GAAKk8C,EAAkB,GAAK,CAEhC,CAEA,IAgBMW,EAhBFC,EAAeh9C,OAAO8xB,OAAO,CAC/Bz2B,SAAUA,GACTghD,GAAYN,GAEXl+C,GAAyB,IAAjBy+C,EAlFd,SAA2BvgD,EAAMs9C,GAC/B,IAAIn5C,EAAInE,EAAKmE,EACTC,EAAIpE,EAAKoE,EACT88C,EAAM5D,EAAI6D,kBAAoB,EAClC,MAAO,CACLh9C,GAAG,QAAMA,EAAI+8C,GAAOA,GAAO,EAC3B98C,GAAG,QAAMA,EAAI88C,GAAOA,GAAO,EAE/B,CA0EsCE,CAAkB,CACpDj9C,EAAGA,EACHC,EAAGA,IACF,OAAU81C,IAAW,CACtB/1C,EAAGA,EACHC,EAAGA,GAML,OAHAD,EAAIrC,EAAMqC,EACVC,EAAItC,EAAMsC,EAENi8C,EAGKp8C,OAAO8xB,OAAO,CAAC,EAAGkrB,IAAeD,EAAiB,CAAC,GAAkBH,GAASF,EAAO,IAAM,GAAIK,EAAeJ,GAASF,EAAO,IAAM,GAAIM,EAAeh5C,WAAas1C,EAAI6D,kBAAoB,IAAM,EAAI,aAAeh9C,EAAI,OAASC,EAAI,MAAQ,eAAiBD,EAAI,OAASC,EAAI,SAAU48C,IAG5R/8C,OAAO8xB,OAAO,CAAC,EAAGkrB,IAAef,EAAkB,CAAC,GAAmBW,GAASF,EAAOv8C,EAAI,KAAO,GAAI87C,EAAgBU,GAASF,EAAOv8C,EAAI,KAAO,GAAI+7C,EAAgBl4C,UAAY,GAAIk4C,GAC9L,CA4CA,KACEjsC,KAAM,gBACN8B,SAAS,EACT+kC,MAAO,cACPhf,GA9CF,SAAuB54B,GACrB,IAAI2Z,EAAQ3Z,EAAM2Z,MACdnZ,EAAUR,EAAMQ,QAChB29C,EAAwB39C,EAAQ28C,gBAChCA,OAA4C,IAA1BgB,GAA0CA,EAC5DC,EAAoB59C,EAAQ48C,SAC5BA,OAAiC,IAAtBgB,GAAsCA,EACjDC,EAAwB79C,EAAQ68C,aAChCA,OAAyC,IAA1BgB,GAA0CA,EACzDN,EAAe,CACjBxH,WAAW,OAAiB58B,EAAM48B,WAClC2G,WAAW,OAAavjC,EAAM48B,WAC9BS,OAAQr9B,EAAMgG,SAASq3B,OACvBiG,WAAYtjC,EAAMkG,MAAMm3B,OACxBmG,gBAAiBA,EACjBl2C,QAAoC,UAA3B0S,EAAMnZ,QAAQgX,UAGgB,MAArCmC,EAAMw9B,cAAc2E,gBACtBniC,EAAMgqB,OAAOqT,OAASj2C,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMgqB,OAAOqT,OAAQ+F,EAAYh8C,OAAO8xB,OAAO,CAAC,EAAGkrB,EAAc,CACvGtI,QAAS97B,EAAMw9B,cAAc2E,cAC7B1/C,SAAUud,EAAMnZ,QAAQgX,SACxB4lC,SAAUA,EACVC,aAAcA,OAIe,MAA7B1jC,EAAMw9B,cAAc0E,QACtBliC,EAAMgqB,OAAOkY,MAAQ96C,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMgqB,OAAOkY,MAAOkB,EAAYh8C,OAAO8xB,OAAO,CAAC,EAAGkrB,EAAc,CACrGtI,QAAS97B,EAAMw9B,cAAc0E,MAC7Bz/C,SAAU,WACVghD,UAAU,EACVC,aAAcA,OAIlB1jC,EAAMoJ,WAAWi0B,OAASj2C,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMoJ,WAAWi0B,OAAQ,CACnE,wBAAyBr9B,EAAM48B,WAEnC,EAQE70C,KAAM,CAAC,sDCrKLsP,EAAU,CACZA,SAAS,GAsCX,KACED,KAAM,iBACN8B,SAAS,EACT+kC,MAAO,QACPhf,GAAI,WAAe,EACnBof,OAxCF,SAAgBl7C,GACd,IAAI6c,EAAQ7c,EAAK6c,MACby1B,EAAWtyC,EAAKsyC,SAChB5uC,EAAU1D,EAAK0D,QACf89C,EAAkB99C,EAAQg1C,OAC1BA,OAA6B,IAApB8I,GAAoCA,EAC7CC,EAAkB/9C,EAAQg+C,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7Cj3C,GAAS,OAAUqS,EAAMgG,SAASq3B,QAClC1wC,EAAgB,GAAGqX,OAAOhE,EAAMrT,cAAcywC,UAAWp9B,EAAMrT,cAAc0wC,QAYjF,OAVIxB,GACFlvC,EAAc2E,SAAQ,SAAUgwC,GAC9BA,EAAa1vC,iBAAiB,SAAU6jC,EAAS+I,OAAQnnC,EAC3D,IAGEwtC,GACFl3C,EAAOiE,iBAAiB,SAAU6jC,EAAS+I,OAAQnnC,GAG9C,WACDwkC,GACFlvC,EAAc2E,SAAQ,SAAUgwC,GAC9BA,EAAa9vC,oBAAoB,SAAUikC,EAAS+I,OAAQnnC,EAC9D,IAGEwtC,GACFl3C,EAAO6D,oBAAoB,SAAUikC,EAAS+I,OAAQnnC,EAE1D,CACF,EASEtP,KAAM,CAAC,uEC/CT,IAAI+8C,EAAO,CACT18C,KAAM,QACNkB,MAAO,OACPE,OAAQ,MACRnB,IAAK,UAEQ,SAAS08C,EAAqBnI,GAC3C,OAAOA,EAAUlmB,QAAQ,0BAA0B,SAAUsuB,GAC3D,OAAOF,EAAKE,EACd,GACF,eCVI,EAAO,CACTxyC,MAAO,MACPK,IAAK,SAEQ,SAASoyC,EAA8BrI,GACpD,OAAOA,EAAUlmB,QAAQ,cAAc,SAAUsuB,GAC/C,OAAO,EAAKA,EACd,GACF,qCCiIA,OACE5tC,KAAM,OACN8B,SAAS,EACT+kC,MAAO,OACPhf,GA5HF,SAAc97B,GACZ,IAAI6c,EAAQ7c,EAAK6c,MACbnZ,EAAU1D,EAAK0D,QACfuQ,EAAOjU,EAAKiU,KAEhB,IAAI4I,EAAMw9B,cAAcpmC,GAAM8tC,MAA9B,CAoCA,IAhCA,IAAIC,EAAoBt+C,EAAQu+C,SAC5BC,OAAsC,IAAtBF,GAAsCA,EACtDG,EAAmBz+C,EAAQ0+C,QAC3BC,OAAoC,IAArBF,GAAqCA,EACpDG,EAA8B5+C,EAAQ6+C,mBACtC5hD,EAAU+C,EAAQ/C,QAClB6hD,EAAW9+C,EAAQ8+C,SACnBC,EAAe/+C,EAAQ++C,aACvBC,EAAch/C,EAAQg/C,YACtBC,EAAwBj/C,EAAQk/C,eAChCA,OAA2C,IAA1BD,GAA0CA,EAC3DE,EAAwBn/C,EAAQm/C,sBAChCC,EAAqBjmC,EAAMnZ,QAAQ+1C,UACnCwF,GAAgB,EAAA8D,EAAA,GAAiBD,GAEjCP,EAAqBD,IADHrD,IAAkB6D,IACqCF,EAAiB,CAAChB,EAAqBkB,IAjCtH,SAAuCrJ,GACrC,IAAI,EAAAsJ,EAAA,GAAiBtJ,KAAe,KAClC,MAAO,GAGT,IAAIuJ,EAAoBpB,EAAqBnI,GAC7C,MAAO,CAACqI,EAA8BrI,GAAYuJ,EAAmBlB,EAA8BkB,GACrG,CA0B6IC,CAA8BH,IACrKnE,EAAa,CAACmE,GAAoBjiC,OAAO0hC,GAAoBr7C,QAAO,SAAUU,EAAK6xC,GACrF,OAAO7xC,EAAIiZ,QAAO,EAAAkiC,EAAA,GAAiBtJ,KAAe,KCvCvC,SAA8B58B,EAAOnZ,QAClC,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIm4C,EAAWn4C,EACX+1C,EAAYoC,EAASpC,UACrB+I,EAAW3G,EAAS2G,SACpBC,EAAe5G,EAAS4G,aACxB9hD,EAAUk7C,EAASl7C,QACnBiiD,EAAiB/G,EAAS+G,eAC1BM,EAAwBrH,EAASgH,sBACjCA,OAAkD,IAA1BK,EAAmC,KAAgBA,EAC3E9C,GAAY,EAAA+C,EAAA,GAAa1J,GACzBkF,EAAayB,EAAYwC,EAAiB,KAAsB,KAAoB7+C,QAAO,SAAU01C,GACvG,OAAO,EAAA0J,EAAA,GAAa1J,KAAe2G,CACrC,IAAK,KACDgD,EAAoBzE,EAAW56C,QAAO,SAAU01C,GAClD,OAAOoJ,EAAsB55C,QAAQwwC,IAAc,CACrD,IAEiC,IAA7B2J,EAAkBrlD,SACpBqlD,EAAoBzE,GAItB,IAAI0E,EAAYD,EAAkBl8C,QAAO,SAAUU,EAAK6xC,GAOtD,OANA7xC,EAAI6xC,IAAa,EAAA6J,EAAA,GAAezmC,EAAO,CACrC48B,UAAWA,EACX+I,SAAUA,EACVC,aAAcA,EACd9hD,QAASA,KACR,EAAAoiD,EAAA,GAAiBtJ,IACb7xC,CACT,GAAG,CAAC,GACJ,OAAO3D,OAAO0J,KAAK01C,GAAWv9C,MAAK,SAAUjB,EAAGC,GAC9C,OAAOu+C,EAAUx+C,GAAKw+C,EAAUv+C,EAClC,GACF,CDC6Dy+C,CAAqB1mC,EAAO,CACnF48B,UAAWA,EACX+I,SAAUA,EACVC,aAAcA,EACd9hD,QAASA,EACTiiD,eAAgBA,EAChBC,sBAAuBA,IACpBpJ,EACP,GAAG,IACC+J,EAAgB3mC,EAAMkG,MAAMk3B,UAC5BkG,EAAatjC,EAAMkG,MAAMm3B,OACzBuJ,EAAY,IAAI5rC,IAChB6rC,GAAqB,EACrBC,EAAwBhF,EAAW,GAE9B/gD,EAAI,EAAGA,EAAI+gD,EAAW5gD,OAAQH,IAAK,CAC1C,IAAI67C,EAAYkF,EAAW/gD,GAEvBgmD,GAAiB,EAAAb,EAAA,GAAiBtJ,GAElCoK,GAAmB,EAAAV,EAAA,GAAa1J,KAAe,KAC/CqK,EAAa,CAAC,KAAK,KAAQ76C,QAAQ26C,IAAmB,EACtDlmD,EAAMomD,EAAa,QAAU,SAC7BljD,GAAW,EAAA0iD,EAAA,GAAezmC,EAAO,CACnC48B,UAAWA,EACX+I,SAAUA,EACVC,aAAcA,EACdC,YAAaA,EACb/hD,QAASA,IAEPojD,EAAoBD,EAAaD,EAAmB,KAAQ,KAAOA,EAAmB,IAAS,KAE/FL,EAAc9lD,GAAOyiD,EAAWziD,KAClCqmD,EAAoBnC,EAAqBmC,IAG3C,IAAIC,EAAmBpC,EAAqBmC,GACxCE,EAAS,GAUb,GARI/B,GACF+B,EAAOrlD,KAAKgC,EAASgjD,IAAmB,GAGtCvB,GACF4B,EAAOrlD,KAAKgC,EAASmjD,IAAsB,EAAGnjD,EAASojD,IAAqB,GAG1EC,EAAOC,OAAM,SAAUC,GACzB,OAAOA,CACT,IAAI,CACFR,EAAwBlK,EACxBiK,GAAqB,EACrB,KACF,CAEAD,EAAUtmC,IAAIs8B,EAAWwK,EAC3B,CAEA,GAAIP,EAqBF,IAnBA,IAEIU,EAAQ,SAAe7iB,GACzB,IAAI8iB,EAAmB1F,EAAW2F,MAAK,SAAU7K,GAC/C,IAAIwK,EAASR,EAAU79C,IAAI6zC,GAE3B,GAAIwK,EACF,OAAOA,EAAO3lD,MAAM,EAAGijC,GAAI2iB,OAAM,SAAUC,GACzC,OAAOA,CACT,GAEJ,IAEA,GAAIE,EAEF,OADAV,EAAwBU,EACjB,OAEX,EAES9iB,EAnBYqhB,EAAiB,EAAI,EAmBZrhB,EAAK,EAAGA,IAAM,CAG1C,GAAa,UAFF6iB,EAAM7iB,GAEK,KACxB,CAGE1kB,EAAM48B,YAAckK,IACtB9mC,EAAMw9B,cAAcpmC,GAAM8tC,OAAQ,EAClCllC,EAAM48B,UAAYkK,EAClB9mC,EAAM6+B,OAAQ,EA5GhB,CA8GF,EAQEtC,iBAAkB,CAAC,UACnBx0C,KAAM,CACJm9C,OAAO,iEE7IX,SAASwC,EAAe3jD,EAAUwE,EAAMo/C,GAQtC,YAPyB,IAArBA,IACFA,EAAmB,CACjBrgD,EAAG,EACHC,EAAG,IAIA,CACLc,IAAKtE,EAASsE,IAAME,EAAK5E,OAASgkD,EAAiBpgD,EACnD+B,MAAOvF,EAASuF,MAAQf,EAAK7E,MAAQikD,EAAiBrgD,EACtDkC,OAAQzF,EAASyF,OAASjB,EAAK5E,OAASgkD,EAAiBpgD,EACzDa,KAAMrE,EAASqE,KAAOG,EAAK7E,MAAQikD,EAAiBrgD,EAExD,CAEA,SAASsgD,EAAsB7jD,GAC7B,MAAO,CAAC,KAAK,KAAO,IAAQ,MAAMmJ,MAAK,SAAU26C,GAC/C,OAAO9jD,EAAS8jD,IAAS,CAC3B,GACF,CA+BA,KACEzwC,KAAM,OACN8B,SAAS,EACT+kC,MAAO,OACP1B,iBAAkB,CAAC,mBACnBtd,GAlCF,SAAc97B,GACZ,IAAI6c,EAAQ7c,EAAK6c,MACb5I,EAAOjU,EAAKiU,KACZuvC,EAAgB3mC,EAAMkG,MAAMk3B,UAC5BkG,EAAatjC,EAAMkG,MAAMm3B,OACzBsK,EAAmB3nC,EAAMw9B,cAAcsK,gBACvCC,GAAoB,OAAe/nC,EAAO,CAC5CgoC,eAAgB,cAEdC,GAAoB,OAAejoC,EAAO,CAC5C6lC,aAAa,IAEXqC,EAA2BR,EAAeK,EAAmBpB,GAC7DwB,EAAsBT,EAAeO,EAAmB3E,EAAYqE,GACpES,EAAoBR,EAAsBM,GAC1CG,EAAmBT,EAAsBO,GAC7CnoC,EAAMw9B,cAAcpmC,GAAQ,CAC1B8wC,yBAA0BA,EAC1BC,oBAAqBA,EACrBC,kBAAmBA,EACnBC,iBAAkBA,GAEpBroC,EAAMoJ,WAAWi0B,OAASj2C,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMoJ,WAAWi0B,OAAQ,CACnE,+BAAgC+K,EAChC,sBAAuBC,GAE3B,gECJA,KACEjxC,KAAM,SACN8B,SAAS,EACT+kC,MAAO,OACP3B,SAAU,CAAC,iBACXrd,GA5BF,SAAgBr6B,GACd,IAAIob,EAAQpb,EAAMob,MACdnZ,EAAUjC,EAAMiC,QAChBuQ,EAAOxS,EAAMwS,KACbkxC,EAAkBzhD,EAAQ8qC,OAC1BA,OAA6B,IAApB2W,EAA6B,CAAC,EAAG,GAAKA,EAC/CvgD,EAAO,KAAWsC,QAAO,SAAUU,EAAK6xC,GAE1C,OADA7xC,EAAI6xC,GA5BD,SAAiCA,EAAW12B,EAAOyrB,GACxD,IAAIyQ,GAAgB,OAAiBxF,GACjC2L,EAAiB,CAAC,KAAM,MAAKn8C,QAAQg2C,IAAkB,GAAK,EAAI,EAEhEj/C,EAAyB,mBAAXwuC,EAAwBA,EAAOvqC,OAAO8xB,OAAO,CAAC,EAAGhT,EAAO,CACxE02B,UAAWA,KACPjL,EACF6W,EAAWrlD,EAAK,GAChB4U,EAAW5U,EAAK,GAIpB,OAFAqlD,EAAWA,GAAY,EACvBzwC,GAAYA,GAAY,GAAKwwC,EACtB,CAAC,KAAM,MAAOn8C,QAAQg2C,IAAkB,EAAI,CACjD96C,EAAGyQ,EACHxQ,EAAGihD,GACD,CACFlhD,EAAGkhD,EACHjhD,EAAGwQ,EAEP,CASqB0wC,CAAwB7L,EAAW58B,EAAMkG,MAAOyrB,GAC1D5mC,CACT,GAAG,CAAC,GACA29C,EAAwB3gD,EAAKiY,EAAM48B,WACnCt1C,EAAIohD,EAAsBphD,EAC1BC,EAAImhD,EAAsBnhD,EAEW,MAArCyY,EAAMw9B,cAAc2E,gBACtBniC,EAAMw9B,cAAc2E,cAAc76C,GAAKA,EACvC0Y,EAAMw9B,cAAc2E,cAAc56C,GAAKA,GAGzCyY,EAAMw9B,cAAcpmC,GAAQrP,CAC9B,sDC1BA,KACEqP,KAAM,gBACN8B,SAAS,EACT+kC,MAAO,OACPhf,GApBF,SAAuB97B,GACrB,IAAI6c,EAAQ7c,EAAK6c,MACb5I,EAAOjU,EAAKiU,KAKhB4I,EAAMw9B,cAAcpmC,IAAQ,OAAe,CACzCgmC,UAAWp9B,EAAMkG,MAAMk3B,UACvBxxC,QAASoU,EAAMkG,MAAMm3B,OACrBx/B,SAAU,WACV++B,UAAW58B,EAAM48B,WAErB,EAQE70C,KAAM,CAAC,yLCgHT,OACEqP,KAAM,kBACN8B,SAAS,EACT+kC,MAAO,OACPhf,GA/HF,SAAyB97B,GACvB,IAAI6c,EAAQ7c,EAAK6c,MACbnZ,EAAU1D,EAAK0D,QACfuQ,EAAOjU,EAAKiU,KACZ+tC,EAAoBt+C,EAAQu+C,SAC5BC,OAAsC,IAAtBF,GAAsCA,EACtDG,EAAmBz+C,EAAQ0+C,QAC3BC,OAAoC,IAArBF,GAAsCA,EACrDK,EAAW9+C,EAAQ8+C,SACnBC,EAAe/+C,EAAQ++C,aACvBC,EAAch/C,EAAQg/C,YACtB/hD,EAAU+C,EAAQ/C,QAClB6kD,EAAkB9hD,EAAQ+hD,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAwBhiD,EAAQiiD,aAChCA,OAAyC,IAA1BD,EAAmC,EAAIA,EACtD9kD,GAAW,EAAA0iD,EAAA,GAAezmC,EAAO,CACnC2lC,SAAUA,EACVC,aAAcA,EACd9hD,QAASA,EACT+hD,YAAaA,IAEXzD,GAAgB,EAAA8D,EAAA,GAAiBlmC,EAAM48B,WACvC2G,GAAY,EAAA+C,EAAA,GAAatmC,EAAM48B,WAC/BmM,GAAmBxF,EACnB6B,GAAW,EAAA4D,EAAA,GAAyB5G,GACpCmD,ECrCY,MDqCSH,ECrCH,IAAM,IDsCxBjD,EAAgBniC,EAAMw9B,cAAc2E,cACpCwE,EAAgB3mC,EAAMkG,MAAMk3B,UAC5BkG,EAAatjC,EAAMkG,MAAMm3B,OACzB4L,EAA4C,mBAAjBH,EAA8BA,EAAa1hD,OAAO8xB,OAAO,CAAC,EAAGlZ,EAAMkG,MAAO,CACvG02B,UAAW58B,EAAM48B,aACbkM,EACFI,EAA2D,iBAAtBD,EAAiC,CACxE7D,SAAU6D,EACV1D,QAAS0D,GACP7hD,OAAO8xB,OAAO,CAChBksB,SAAU,EACVG,QAAS,GACR0D,GACCE,EAAsBnpC,EAAMw9B,cAAc7L,OAAS3xB,EAAMw9B,cAAc7L,OAAO3xB,EAAM48B,WAAa,KACjG70C,EAAO,CACTT,EAAG,EACHC,EAAG,GAGL,GAAK46C,EAAL,CAIA,GAAIkD,EAAe,CACjB,IAAI+D,EAEAC,EAAwB,MAAbjE,EAAmB,KAAM,KACpCkE,EAAuB,MAAblE,EAAmB,IAAS,KACtCvkD,EAAmB,MAAbukD,EAAmB,SAAW,QACpCzT,EAASwQ,EAAciD,GACvB77C,EAAMooC,EAAS5tC,EAASslD,GACxBhgD,EAAMsoC,EAAS5tC,EAASulD,GACxBC,EAAWX,GAAUtF,EAAWziD,GAAO,EAAI,EAC3Cu3C,EAASmL,IAAc,KAAQoD,EAAc9lD,GAAOyiD,EAAWziD,GAC/D2oD,EAASjG,IAAc,MAASD,EAAWziD,IAAQ8lD,EAAc9lD,GAGjEohD,EAAejiC,EAAMgG,SAASk8B,MAC9BK,EAAYqG,GAAU3G,GAAe,EAAArD,EAAA,GAAcqD,GAAgB,CACrEv+C,MAAO,EACPC,OAAQ,GAEN8lD,EAAqBzpC,EAAMw9B,cAAc,oBAAsBx9B,EAAMw9B,cAAc,oBAAoB15C,SAAU,EAAA4lD,EAAA,KACjHC,EAAkBF,EAAmBJ,GACrCO,EAAkBH,EAAmBH,GAMrCO,IAAW,EAAAC,EAAA,GAAO,EAAGnD,EAAc9lD,GAAM0hD,EAAU1hD,IACnDkpD,GAAYhB,EAAkBpC,EAAc9lD,GAAO,EAAI0oD,EAAWM,GAAWF,EAAkBT,EAA4B9D,SAAWhN,EAASyR,GAAWF,EAAkBT,EAA4B9D,SACxM4E,GAAYjB,GAAmBpC,EAAc9lD,GAAO,EAAI0oD,EAAWM,GAAWD,EAAkBV,EAA4B9D,SAAWoE,EAASK,GAAWD,EAAkBV,EAA4B9D,SACzMxC,GAAoB5iC,EAAMgG,SAASk8B,QAAS,EAAAvD,EAAA,GAAgB3+B,EAAMgG,SAASk8B,OAC3E+H,GAAerH,GAAiC,MAAbwC,EAAmBxC,GAAkBzG,WAAa,EAAIyG,GAAkB1G,YAAc,EAAI,EAC7HgO,GAAwH,OAAjGd,EAA+C,MAAvBD,OAA8B,EAASA,EAAoB/D,IAAqBgE,EAAwB,EACvJe,GAAYxY,EAASoY,GAAYG,GAAsBD,GACvDG,GAAYzY,EAASqY,GAAYE,GACjCG,IAAkB,EAAAP,EAAA,GAAOlB,GAAS,EAAA0B,EAAA,IAAQ/gD,EAAK4gD,IAAa5gD,EAAKooC,EAAQiX,GAAS,EAAA0B,EAAA,IAAQjhD,EAAK+gD,IAAa/gD,GAChH84C,EAAciD,GAAYiF,GAC1BtiD,EAAKq9C,GAAYiF,GAAkB1Y,CACrC,CAEA,GAAI6T,EAAc,CAChB,IAAI+E,GAEAC,GAAyB,MAAbpF,EAAmB,KAAM,KAErCqF,GAAwB,MAAbrF,EAAmB,IAAS,KAEvCsF,GAAUvI,EAAcoD,GAExBx+C,GAAmB,MAAZw+C,EAAkB,SAAW,QAEpCoF,GAAOD,GAAU3mD,EAASymD,IAE1BI,GAAOF,GAAU3mD,EAAS0mD,IAE1BI,IAAuD,IAAxC,CAAC,KAAK,MAAMz+C,QAAQg2C,GAEnC0I,GAAyH,OAAjGP,GAAgD,MAAvBpB,OAA8B,EAASA,EAAoB5D,IAAoBgF,GAAyB,EAEzJQ,GAAaF,GAAeF,GAAOD,GAAU/D,EAAc5/C,IAAQu8C,EAAWv8C,IAAQ+jD,GAAuB5B,EAA4B3D,QAEzIyF,GAAaH,GAAeH,GAAU/D,EAAc5/C,IAAQu8C,EAAWv8C,IAAQ+jD,GAAuB5B,EAA4B3D,QAAUqF,GAE5IK,GAAmBrC,GAAUiC,IAAe,EAAAf,EAAA,GAAeiB,GAAYL,GAASM,KAAc,EAAAlB,EAAA,GAAOlB,EAASmC,GAAaJ,GAAMD,GAAS9B,EAASoC,GAAaJ,IAEpKzI,EAAcoD,GAAW0F,GACzBljD,EAAKw9C,GAAW0F,GAAmBP,EACrC,CAEA1qC,EAAMw9B,cAAcpmC,GAAQrP,CAvE5B,CAwEF,EAQEw0C,iBAAkB,CAAC,8HExIN,SAAS2O,EAAe/nD,GACrC,IAOI24C,EAPAsB,EAAYj6C,EAAKi6C,UACjBxxC,EAAUzI,EAAKyI,QACfgxC,EAAYz5C,EAAKy5C,UACjBwF,EAAgBxF,GAAY,OAAiBA,GAAa,KAC1D2G,EAAY3G,GAAY,OAAaA,GAAa,KAClDuO,EAAU/N,EAAU91C,EAAI81C,EAAU15C,MAAQ,EAAIkI,EAAQlI,MAAQ,EAC9D0nD,EAAUhO,EAAU71C,EAAI61C,EAAUz5C,OAAS,EAAIiI,EAAQjI,OAAS,EAGpE,OAAQy+C,GACN,KAAK,KACHtG,EAAU,CACRx0C,EAAG6jD,EACH5jD,EAAG61C,EAAU71C,EAAIqE,EAAQjI,QAE3B,MAEF,KAAK,IACHm4C,EAAU,CACRx0C,EAAG6jD,EACH5jD,EAAG61C,EAAU71C,EAAI61C,EAAUz5C,QAE7B,MAEF,KAAK,KACHm4C,EAAU,CACRx0C,EAAG81C,EAAU91C,EAAI81C,EAAU15C,MAC3B6D,EAAG6jD,GAEL,MAEF,KAAK,KACHtP,EAAU,CACRx0C,EAAG81C,EAAU91C,EAAIsE,EAAQlI,MACzB6D,EAAG6jD,GAEL,MAEF,QACEtP,EAAU,CACRx0C,EAAG81C,EAAU91C,EACbC,EAAG61C,EAAU71C,GAInB,IAAI69C,EAAWhD,GAAgB,OAAyBA,GAAiB,KAEzE,GAAgB,MAAZgD,EAAkB,CACpB,IAAIvkD,EAAmB,MAAbukD,EAAmB,SAAW,QAExC,OAAQ7B,GACN,KAAK,KACHzH,EAAQsJ,GAAYtJ,EAAQsJ,IAAahI,EAAUv8C,GAAO,EAAI+K,EAAQ/K,GAAO,GAC7E,MAEF,KAAK,KACHi7C,EAAQsJ,GAAYtJ,EAAQsJ,IAAahI,EAAUv8C,GAAO,EAAI+K,EAAQ/K,GAAO,GAKnF,CAEA,OAAOi7C,CACT,mPCrEe,SAASuP,EAAiB9iD,GACvC,OAAOnB,OAAO8xB,OAAO,CAAC,EAAG3wB,EAAM,CAC7BH,KAAMG,EAAKjB,EACXe,IAAKE,EAAKhB,EACV+B,MAAOf,EAAKjB,EAAIiB,EAAK7E,MACrB8F,OAAQjB,EAAKhB,EAAIgB,EAAK5E,QAE1B,CCqBA,SAAS2nD,EAA2B1/C,EAAS2/C,EAAgB1tC,GAC3D,OAAO0tC,IAAmB,KAAWF,ECzBxB,SAAyBz/C,EAASiS,GAC/C,IAAI4iC,GAAM,EAAAtwB,EAAA,GAAUvkB,GAChB2qC,GAAO,EAAAqF,EAAA,GAAmBhwC,GAC1B+zC,EAAiBc,EAAId,eACrBj8C,EAAQ6yC,EAAK1nC,YACblL,EAAS4yC,EAAK3nC,aACdtH,EAAI,EACJC,EAAI,EAER,GAAIo4C,EAAgB,CAClBj8C,EAAQi8C,EAAej8C,MACvBC,EAASg8C,EAAeh8C,OACxB,IAAI6nD,GAAiB,EAAAxK,EAAA,MAEjBwK,IAAmBA,GAA+B,UAAb3tC,KACvCvW,EAAIq4C,EAAeE,WACnBt4C,EAAIo4C,EAAeG,UAEvB,CAEA,MAAO,CACLp8C,MAAOA,EACPC,OAAQA,EACR2D,EAAGA,GAAI,EAAA80C,EAAA,GAAoBxwC,GAC3BrE,EAAGA,EAEP,CDDwDkkD,CAAgB7/C,EAASiS,KAAa,QAAU0tC,GAdxG,SAAoC3/C,EAASiS,GAC3C,IAAItV,GAAO,EAAAsD,EAAA,GAAsBD,GAAS,EAAoB,UAAbiS,GASjD,OARAtV,EAAKF,IAAME,EAAKF,IAAMuD,EAAQuwC,UAC9B5zC,EAAKH,KAAOG,EAAKH,KAAOwD,EAAQswC,WAChC3zC,EAAKiB,OAASjB,EAAKF,IAAMuD,EAAQgD,aACjCrG,EAAKe,MAAQf,EAAKH,KAAOwD,EAAQiD,YACjCtG,EAAK7E,MAAQkI,EAAQiD,YACrBtG,EAAK5E,OAASiI,EAAQgD,aACtBrG,EAAKjB,EAAIiB,EAAKH,KACdG,EAAKhB,EAAIgB,EAAKF,IACPE,CACT,CAG0HmjD,CAA2BH,EAAgB1tC,GAAYwtC,EEtBlK,SAAyBz/C,GACtC,IAAIy1C,EAEA9K,GAAO,EAAAqF,EAAA,GAAmBhwC,GAC1B+/C,GAAY,EAAA1P,EAAA,GAAgBrwC,GAC5B+Q,EAA0D,OAAlD0kC,EAAwBz1C,EAAQ0kB,oBAAyB,EAAS+wB,EAAsB1kC,KAChGjZ,GAAQ,QAAI6yC,EAAKxnC,YAAawnC,EAAK1nC,YAAa8N,EAAOA,EAAK5N,YAAc,EAAG4N,EAAOA,EAAK9N,YAAc,GACvGlL,GAAS,QAAI4yC,EAAKvnC,aAAcunC,EAAK3nC,aAAc+N,EAAOA,EAAK3N,aAAe,EAAG2N,EAAOA,EAAK/N,aAAe,GAC5GtH,GAAKqkD,EAAU79C,YAAa,EAAAsuC,EAAA,GAAoBxwC,GAChDrE,GAAKokD,EAAU19C,UAMnB,MAJiD,SAA7C,EAAAlC,EAAA,GAAiB4Q,GAAQ45B,GAAM5mC,YACjCrI,IAAK,QAAIivC,EAAK1nC,YAAa8N,EAAOA,EAAK9N,YAAc,GAAKnL,GAGrD,CACLA,MAAOA,EACPC,OAAQA,EACR2D,EAAGA,EACHC,EAAGA,EAEP,CFCkMqkD,EAAgB,EAAAhQ,EAAA,GAAmBhwC,IACrO,CAsBe,SAASigD,EAAgBjgD,EAAS+5C,EAAUC,EAAc/nC,GACvE,IAAIiuC,EAAmC,oBAAbnG,EAlB5B,SAA4B/5C,GAC1B,IAAI+1C,GAAkB,EAAA7D,EAAA,IAAkB,EAAAqC,EAAA,GAAcv0C,IAElDmgD,EADoB,CAAC,WAAY,SAAS3/C,SAAQ,EAAAL,EAAA,GAAiBH,GAASnJ,WAAa,IACnD,QAAcmJ,IAAW,EAAA+yC,EAAA,GAAgB/yC,GAAWA,EAE9F,OAAK,QAAUmgD,GAKRpK,EAAgBz6C,QAAO,SAAUqkD,GACtC,OAAO,QAAUA,KAAmB,EAAA9uC,EAAA,GAAS8uC,EAAgBQ,IAAmD,UAAhC,EAAAhQ,EAAA,GAAYwP,EAC9F,IANS,EAOX,CAK6DS,CAAmBpgD,GAAW,GAAGoY,OAAO2hC,GAC/FhE,EAAkB,GAAG39B,OAAO8nC,EAAqB,CAAClG,IAClDqG,EAAsBtK,EAAgB,GACtCuK,EAAevK,EAAgBt3C,QAAO,SAAU8hD,EAASZ,GAC3D,IAAIhjD,EAAO+iD,EAA2B1/C,EAAS2/C,EAAgB1tC,GAK/D,OAJAsuC,EAAQ9jD,KAAM,QAAIE,EAAKF,IAAK8jD,EAAQ9jD,KACpC8jD,EAAQ7iD,OAAQ,QAAIf,EAAKe,MAAO6iD,EAAQ7iD,OACxC6iD,EAAQ3iD,QAAS,QAAIjB,EAAKiB,OAAQ2iD,EAAQ3iD,QAC1C2iD,EAAQ/jD,MAAO,QAAIG,EAAKH,KAAM+jD,EAAQ/jD,MAC/B+jD,CACT,GAAGb,EAA2B1/C,EAASqgD,EAAqBpuC,IAK5D,OAJAquC,EAAaxoD,MAAQwoD,EAAa5iD,MAAQ4iD,EAAa9jD,KACvD8jD,EAAavoD,OAASuoD,EAAa1iD,OAAS0iD,EAAa7jD,IACzD6jD,EAAa5kD,EAAI4kD,EAAa9jD,KAC9B8jD,EAAa3kD,EAAI2kD,EAAa7jD,IACvB6jD,CACT,sCG3De,SAASzF,EAAezmC,EAAOnZ,QAC5B,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAIm4C,EAAWn4C,EACXulD,EAAqBpN,EAASpC,UAC9BA,OAAmC,IAAvBwP,EAAgCpsC,EAAM48B,UAAYwP,EAC9DC,EAAoBrN,EAASnhC,SAC7BA,OAAiC,IAAtBwuC,EAA+BrsC,EAAMnC,SAAWwuC,EAC3DC,EAAoBtN,EAAS2G,SAC7BA,OAAiC,IAAtB2G,EAA+B,KAAkBA,EAC5DC,EAAwBvN,EAAS4G,aACjCA,OAAyC,IAA1B2G,EAAmC,KAAWA,EAC7DC,EAAwBxN,EAASgJ,eACjCA,OAA2C,IAA1BwE,EAAmC,KAASA,EAC7DC,EAAuBzN,EAAS6G,YAChCA,OAAuC,IAAzB4G,GAA0CA,EACxDC,EAAmB1N,EAASl7C,QAC5BA,OAA+B,IAArB4oD,EAA8B,EAAIA,EAC5CrK,GAAgB,EAAAsK,EAAA,GAAsC,iBAAZ7oD,EAAuBA,GAAU,EAAA8oD,EAAA,GAAgB9oD,EAAS,OACpG+oD,EAAa7E,IAAmB,KAAS,KAAY,KACrD1E,EAAatjC,EAAMkG,MAAMm3B,OACzBzxC,EAAUoU,EAAMgG,SAAS6/B,EAAcgH,EAAa7E,GACpD8E,EAAqBjB,GAAgB,QAAUjgD,GAAWA,EAAUA,EAAQmyC,iBAAkB,EAAAnC,EAAA,GAAmB57B,EAAMgG,SAASq3B,QAASsI,EAAUC,EAAc/nC,GACjKkvC,GAAsB,EAAAlhD,EAAA,GAAsBmU,EAAMgG,SAASo3B,WAC3D+E,GAAgB,EAAA+I,EAAA,GAAe,CACjC9N,UAAW2P,EACXnhD,QAAS03C,EACTzlC,SAAU,WACV++B,UAAWA,IAEToQ,EAAmB3B,EAAiBjkD,OAAO8xB,OAAO,CAAC,EAAGoqB,EAAYnB,IAClE8K,EAAoBjF,IAAmB,KAASgF,EAAmBD,EAGnEG,EAAkB,CACpB7kD,IAAKykD,EAAmBzkD,IAAM4kD,EAAkB5kD,IAAMg6C,EAAch6C,IACpEmB,OAAQyjD,EAAkBzjD,OAASsjD,EAAmBtjD,OAAS64C,EAAc74C,OAC7EpB,KAAM0kD,EAAmB1kD,KAAO6kD,EAAkB7kD,KAAOi6C,EAAcj6C,KACvEkB,MAAO2jD,EAAkB3jD,MAAQwjD,EAAmBxjD,MAAQ+4C,EAAc/4C,OAExE6jD,EAAantC,EAAMw9B,cAAc7L,OAErC,GAAIqW,IAAmB,MAAUmF,EAAY,CAC3C,IAAIxb,EAASwb,EAAWvQ,GACxBx1C,OAAO0J,KAAKo8C,GAAiB57C,SAAQ,SAAU1O,GAC7C,IAAIwqD,EAAW,CAAC,KAAO,KAAQhhD,QAAQxJ,IAAQ,EAAI,GAAK,EACpDiO,EAAO,CAAC,KAAK,KAAQzE,QAAQxJ,IAAQ,EAAI,IAAM,IACnDsqD,EAAgBtqD,IAAQ+uC,EAAO9gC,GAAQu8C,CACzC,GACF,CAEA,OAAOF,CACT,sCChEe,SAASN,EAAgBvpD,EAAOyN,GAC7C,OAAOA,EAAKzG,QAAO,SAAUgjD,EAASzqD,GAEpC,OADAyqD,EAAQzqD,GAAOS,EACRgqD,CACT,GAAG,CAAC,EACN,oECJe,SAASnH,EAAiBtJ,GACvC,OAAOA,EAAUtxC,MAAM,KAAK,EAC9B,qECHe,SAASo+C,IACtB,MAAO,CACLrhD,IAAK,EACLiB,MAAO,EACPE,OAAQ,EACRpB,KAAM,EAEV,qECPe,SAAS4gD,EAAyBpM,GAC/C,MAAO,CAAC,MAAO,UAAUxwC,QAAQwwC,IAAc,EAAI,IAAM,GAC3D,qECFe,SAAS0J,EAAa1J,GACnC,OAAOA,EAAUtxC,MAAM,KAAK,EAC9B,oJCFO,IAAIjC,EAAM1B,KAAK0B,IACXE,EAAM5B,KAAK4B,IACXwpB,EAAQprB,KAAKorB,yFCDT,SAAS45B,EAAmBtK,GACzC,OAAOj7C,OAAO8xB,OAAO,CAAC,GAAG,SAAsBmpB,EACjD,sCCHe,SAASiL,IACtB,IAAIC,EAAS3zB,UAAU4zB,cAEvB,OAAc,MAAVD,GAAkBA,EAAOE,QAAUjsD,MAAMgpB,QAAQ+iC,EAAOE,QACnDF,EAAOE,OAAOxpC,KAAI,SAAU0I,GACjC,OAAOA,EAAK+gC,MAAQ,IAAM/gC,EAAKghC,OACjC,IAAGz6B,KAAK,KAGH0G,UAAUY,SACnB,yICTO,SAASsvB,EAAOvgD,EAAKlG,EAAOgG,GACjC,OAAO,QAAQE,GAAK,QAAQlG,EAAOgG,GACrC,CACO,SAASukD,EAAerkD,EAAKlG,EAAOgG,GACzC,IAAIwkD,EAAI/D,EAAOvgD,EAAKlG,EAAOgG,GAC3B,OAAOwkD,EAAIxkD,EAAMA,EAAMwkD,CACzB,qFCmBe,SAASC,IACtB,OAAO,IAAAroD,UAAS,KAClB,qFCVA,MAPA,SAAyBpC,GACvB,MAAMwsB,GAAM,IAAA5V,QAAO5W,GAInB,OAHA,IAAA0C,YAAU,KACR8pB,EAAIxb,QAAUhR,CAAK,GAClB,CAACA,IACGwsB,CACT,ECfe,SAASk+B,EAAiB9uB,GACvC,MAAMpP,EAAM,EAAgBoP,GAC5B,OAAO,IAAAv5B,cAAY,YAAa5E,GAC9B,OAAO+uB,EAAIxb,SAAWwb,EAAIxb,WAAWvT,EACvC,GAAG,CAAC+uB,GACN,qFCWe,SAASm+B,IAGtB,MAAO,CAAExuC,IAAY,IAAA1D,aAAWkE,IAAUA,IAAO,GACjD,OAAOR,CACT,qDCtBA,MAAMyuC,EAAUp+B,GAAQA,GAAsB,mBAARA,EAA2BxsB,IAC/DwsB,EAAIxb,QAAUhR,CAAK,EADsCwsB,EA+B3D,IAHA,SAAuBq+B,EAAMC,GAC3B,OAAO,IAAAhoD,UAAQ,IA1BV,SAAmB+nD,EAAMC,GAC9B,MAAMnmD,EAAIimD,EAAQC,GACZjmD,EAAIgmD,EAAQE,GAClB,OAAO9qD,IACD2E,GAAGA,EAAE3E,GACL4E,GAAGA,EAAE5E,EAAM,CAEnB,CAmBuB+qD,CAAUF,EAAMC,IAAO,CAACD,EAAMC,GACrD,oFCTe,SAASE,IACtB,MAAMxoD,GAAU,IAAAoU,SAAO,GACjBq0C,GAAY,IAAAr0C,SAAO,IAAMpU,EAAQwO,UAOvC,OANA,IAAAtO,YAAU,KACRF,EAAQwO,SAAU,EACX,KACLxO,EAAQwO,SAAU,CAAK,IAExB,IACIi6C,EAAUj6C,OACnB,qFCbe,SAASwd,EAAYxuB,GAClC,MAAMwsB,GAAM,IAAA5V,QAAO,MAInB,OAHA,IAAAlU,YAAU,KACR8pB,EAAIxb,QAAUhR,CAAK,IAEdwsB,EAAIxb,OACb,qFChBe,SAASk6C,EAAetvB,GACrC,MAAMuvB,ECFO,SAAuBnrD,GACpC,MAAMkuB,GAAW,IAAAtX,QAAO5W,GAExB,OADAkuB,EAASld,QAAUhR,EACZkuB,CACT,CDFoBk9B,CAAcxvB,IAChC,IAAAl5B,YAAU,IAAM,IAAMyoD,EAAUn6C,WAAW,GAC7C,kCEVA,SAAS3N,IACP,OAAO,IACT,CAIA,SAASgoD,IACP,OAAOhoD,CACT,CAJAA,EAAKioD,WAAajoD,EAMlBzG,EAAOC,QAAU,CACf0uD,IAAKF,EACLG,QAASH,EACTI,YAAaJ,EACbK,4BAA6BL,EAC7BM,WAAYN,EACZO,eAAgBP,EAChBQ,mBAAoBR,EACpBS,kBAAmBT,EACnBU,aAAcV,EACdW,YAAaX,EACbY,MAAOZ,EACPa,aAAcb,EACdc,iBAAkBpoD,OAClBqoD,QAASf,EACTgB,OAAQhB,EACRiB,uBAAwBjB,EACxBkB,2BAA4BlB,EAC5BmB,UAAWnB,EACXoB,mBAAoBppD,EACpBqpD,kBAAmBrB,EACnBsB,cAAetB,EACfz8B,OAAQy8B,EACRuB,GAAIvB,EACJwB,UAAWxB,EACXyB,MAAOzB,EACP7+B,IAAK6+B,EACL0B,WAAY1B,EACZ2B,eAAgB3B,EAChB4B,WAAY5B,EACZ6B,MAAO7B,EACP8B,eAAgB9B,EAChB+B,iBAAkB/B,EAClBgC,YAAahC,EACbiC,cAAejC,EACfkC,SAAUlC,EACVmC,UAAWnC,0BChDbzuD,EAAOC,QAAkD,EAAQ,0CCEjE,IAAI4wD,EAAsB,EAAQ,OAC9BC,EAAmB,EAAQ,OAC3BC,EAAgB,EAAQ,OAiC5B,SAASC,EAAoBC,EAAQ12C,EAAO2qB,GAC1C,OAAO,IAAI2rB,EAAoBI,EAAQ12C,EAAO2qB,EAChD,CAOA8rB,EAAoBtD,QAAU,EAAQ,OAOtCsD,EAAoBH,oBAAsBA,EAO1CG,EAAoBF,iBAAmBA,EAOvCE,EAAoBD,cAAgBA,EAEpC/wD,EAAOC,QAAU+wD,sCCnEjB,IAAIzxD,EAAe,EAAQ,OAgB3B,SAAS2xD,EAAcC,EAAYnyB,GACjCx/B,KAAK6vC,KAAO8hB,EACZ3xD,KAAKw/B,GAAKA,EACVx/B,KAAK4xD,YAAc,IACrB,CAlBe,EAAQ,MAoBvBC,CAASH,EAAe3xD,GAOxB2xD,EAAchxD,UAAUuV,OAAS,WAC/BjW,KAAKkD,qBACLlD,KAAK6vC,KAAKiiB,oBAAoB9xD,KAChC,EAEA0xD,EAAchxD,UAAUqxD,iBAAmB,SAAUC,GACnD,OAAOhyD,KAAKw/B,GAAGwyB,EACjB,EAEAxxD,EAAOC,QAAUixD,sCC1BjB,IAAIO,EAAe,EAAQ,OACvBC,EAAgB,EAAQ,OACxBC,EAAO,EAAQ,OAEfC,EAAM,CAQRC,cAAe,SAAuBC,EAAgBC,EAAW3uD,GAC/D,GAAIwuD,EAAII,UAAUF,EAAgBC,EAAW3uD,GAC3C,OAAO0uD,EAGT,IAAIG,EAAgB,GAAK7uD,EAErB8uD,EAAmBJ,EAAeC,GAElCD,EAAeC,GAAWhuC,OAAOkuC,GADjC,CAACA,GAGDE,EAAM,CAAC,EAIX,OAFAA,EAAIJ,GAAaG,EAEVT,EAAa,CAAC,EAAGU,EAAKL,EAC/B,EAUAM,iBAAkB,SAChBN,EACAC,EACA3uD,GAEA,QAAczD,IAAVyD,EAGF,OAAOwuD,EAAIS,gBAAgBP,GAAgB,SAAUlE,EAAG0E,GACtD,OAAOP,IAAcO,CACvB,IAGF,IAAIL,EAAgB,GAAK7uD,EAEzB,OAAOwuD,EAAIS,gBAAgBP,GAAgB,SAAUlE,EAAG0E,GACtD,OAAOP,IAAcO,GAAKL,IAAkBrE,CAC9C,GACF,EAQA2E,iBAAkB,SAChBT,EACAC,EACA3uD,GAEA,QAAczD,IAAVyD,EACF,MAAM,IAAIjC,MAAM,gDAElB,OAAIywD,EAAII,UAAUF,EAAgBC,EAAW3uD,GACpCwuD,EAAIQ,iBAAiBN,EAAgBC,EAAW3uD,GAGlDwuD,EAAIC,cAAcC,EAAgBC,EAAW3uD,EACtD,EAYAivD,gBAAiB,SACfP,EACAC,EACAS,GAEA,QAAkB7yD,IAAdoyD,EAGF,OAAKL,EAAcI,GAGZ,CAAC,EAFCA,EAGJ,GAAyB,iBAAdC,EAChB,OAAOJ,EAAKG,EAAgB,CAACC,IACxB,GAAyB,mBAAdA,EAA0B,CAC1C,IAAIU,GAAa,EAEbC,EAAoBvrD,OAAO0J,KAAKihD,GAAgB1nD,QAAO,SACzDkX,EACA3e,GAEA,IAAI0b,EAASyzC,EAAenvD,IAAQ,GAChCgwD,EAAYt0C,EAAOpX,QAAO,SAAU7D,GACtC,OAAQ2uD,EAAU3uD,EAAOT,EAAK6vD,EAChC,IAQA,OANIG,EAAU1xD,SAAWod,EAAOpd,SAC9BwxD,GAAa,GAGfnxC,EAAK3e,GAAOgwD,EAELrxC,CACT,GACA,CAAC,GAED,OAAImxC,EAAmBC,EAChBZ,CACT,CAKF,EAUAE,UAAW,SAAmBF,EAAgBC,EAAWa,GACvD,IAAIC,EACFh9C,QAAQi8C,EAAeC,KACvBD,EAAeC,GAAW9wD,OAAS,EAErC,QAAwBtB,IAApBizD,IAAkCC,EACpC,OAAOA,EAGT,IAAIC,EAA0B,GAAKF,EAEnC,OAAuE,IAAhEd,EAAeC,GAAW5lD,QAAQ2mD,EAC3C,GAGF9yD,EAAOC,QAAU2xD,sCCzKjB,IAAIH,EAAe,EAAQ,OACvBjK,EAAO,EAAQ,MACfuL,EAAe,EAAQ,OACvBC,EAAQ,EAAQ,OAChBtB,EAAgB,EAAQ,OACxBC,EAAO,EAAQ,OACfsB,EAAc,EAAQ,OACtBC,EAAmB,EAAQ,OAE3BC,EAAiB,EAAQ,OAY7B,SAASC,EAAyBrrD,EAAGC,GACnC,OAAIzG,MAAMgpB,QAAQxiB,IAAMxG,MAAMgpB,QAAQviB,GAElCD,EAAE9G,SAAW+G,EAAE/G,QACf8G,EAAEq/C,OAAM,SAAUiM,EAAIvyD,GACpB,OAAOsyD,EAAyBprD,EAAElH,GAAIuyD,EACxC,IAGGtrD,IAAMC,CACf,CA+DA,SAAS8oD,EAAiBwC,GACxB,IAAIv2B,EAASu2B,EACTxC,EAAiByC,cAAcD,GAC/B,CAAC,OAEoB3zD,IAArBo9B,EAAOy2B,WAA4BN,EAAiBn2B,EAAOy2B,YAE7DxxD,QAAQyxD,KACN,mIASJj0D,KAAKk0D,OAAS32B,EAAO22B,QAAU,GAO/Bl0D,KAAKm0D,kBAAoB52B,EAAO42B,mBAAqB,GASrDn0D,KAAKo0D,mBAAqB72B,EAAO62B,oBAAsB,GAevDp0D,KAAKq0D,kBAAoB92B,EAAO82B,mBAAqB,CAAC,EAatDr0D,KAAKs0D,eAAiB/2B,EAAO+2B,gBAAkB,CAAC,EAahDt0D,KAAKu0D,6BAA+Bh3B,EAAOg3B,8BAAgC,CAAC,EAY5Ev0D,KAAKw0D,mBAAqBj3B,EAAOi3B,oBAAsB,CAAC,EAQxDx0D,KAAKy0D,eAAiBl3B,EAAOk3B,gBAAkB,GAe/Cz0D,KAAK00D,8BACHn3B,EAAOm3B,+BAAiC,CAAC,EAG3C,IAAI/8B,EAAO33B,KACX2H,OAAO0J,KAAKksB,GAAQ1rB,SAAQ,SAAU8iD,GACpC,IAAIC,GAAiE,IAApDtD,EAAiBuD,WAAWloD,QAAQgoD,GACjDG,OAAuC30D,IAAtBo9B,EAAOo3B,IAEvBC,GAAcE,IACjBn9B,EAAKg9B,GAAap3B,EAAOo3B,GAE7B,GACF,CAOArD,EAAiBuD,WAAaltD,OAAO0J,KAAK,IAAIigD,GAO9CA,EAAiByC,cAAgB,SAAUgB,GAEzC,GAAIA,aAAwBzD,EAAkB,OAAOyD,EAErD,IAAIC,EAAU,CAAC,EAwCf,GAtCiB,CACf,kBACA,eACA,iBACA,uBACA,sBACA,OACA,oBACA,WACA,sBACA,cACA,gBAGSnjD,SAAQ,SAAUorB,GAC3B,IAAIr5B,EAAQmxD,EAAa93B,GACzB,GAAqB,iBAAVr5B,EAAoB,CAC7B,IAAIqxD,EAAcvoD,WAAW9I,GAE7BoxD,EAAQ/3B,GAAKn8B,MAAMm0D,GAAerxD,EAAQqxD,CAC5C,CACF,IAIIlzD,MAAMgpB,QAAQgqC,EAAaG,qBAC7BF,EAAQE,kBAAoBH,EAAaG,kBAAkB1wC,KAAI,SAC7D2wC,GAEA,OAAIpzD,MAAMgpB,QAAQoqC,GACTA,EAAQ3wC,KAAI,SAAU5gB,GAC3B,OAAO8I,WAAW9I,EACpB,IAEKuxD,CACT,KAGEJ,EAAaP,mBAAoB,CACnC,IAAIA,EAAqB,CAAC,EAC1B7sD,OAAO0J,KAAK0jD,EAAaP,oBAAoB3iD,SAAQ,SAAU0gD,GAC7D,IAAI6C,EAAYL,EAAaP,mBAAmBjC,IAAc,CAAC,EAC/DiC,EAAmBjC,GAAa,CAAC,EACjC5qD,OAAO0J,KAAK+jD,GAAWvjD,SAAQ,SAAUwjD,GACvC,IACIC,EADSF,EAAUC,GACG7wC,KAAI,SAAU4pC,GACtC,OAAIrsD,MAAMgpB,QAAQqjC,GACTA,EAAE5pC,KAAI,SAAU+wC,GACrB,MAAsB,iBAAXA,EACF7oD,WAAW6oD,GAEbA,CACT,IACsB,iBAANnH,EACT1hD,WAAW0hD,GAEbA,CACT,IACAoG,EAAmBjC,GAAW8C,GAAYC,CAC5C,GACF,IACAN,EAAQR,mBAAqBA,CAC/B,CAEA,OAAOhB,EAAM,CAAC,EAAGuB,EAAcC,EACjC,EAQA1D,EAAiBkE,KAAO,SAA8B1B,GACpD,IAAI9d,EAAW,IAAIsb,EAAiBwC,GAyBpC,OAvByBA,EAAcM,oBAAsB,IAC1CviD,SAAQ,SAAU4jD,GACnC,GAAIA,EAAMC,SAAU,CAClB,IAAIC,EAAoB3f,EAAS4f,0BAA0BH,EAAM99C,MAG/Dg+C,EAAkBl0D,OAAS,GACsB,IAAjDk0D,EAAkB,GAAGhpD,QAAQ8oD,EAAMC,YAEnC1f,EAAWA,EAAS6f,iBAAiBJ,EAAM99C,OAKZ,KADjCg+C,EAAoB3f,EAAS4f,0BAA0BH,EAAM99C,OACvClW,SACpBu0C,EAAWA,EAAS8f,kCAClBL,EAAM99C,KACN89C,EAAMC,UAGZ,CACF,IAEO1f,CACT,EAQAsb,EAAiByE,SAAW,SAAUC,EAAchE,GAClD,IAAIz0B,EAASy0B,GAAc,CAAC,EAE5B,OACEgE,EAAaC,YACb14B,EAAOk3B,gBACPl3B,EAAOk3B,eAAehzD,OAAS,EAExB,IAAIE,MACT,qLAKAq0D,EAAavB,eAAehzD,OAAS,GAAK87B,EAAO04B,WAC5C,IAAIt0D,MACT,oKAMFq0D,EAAaE,gBACb34B,EAAOi3B,oBACPtC,EAAc30B,EAAOi3B,oBAEd,IAAI7yD,MACT,+KAMAuwD,EAAc8D,EAAaxB,qBAAuBj3B,EAAO24B,eACpD,IAAIv0D,MACT,+KAMG,IACT,EAEA2vD,EAAiB5wD,UAAY,CAC3BwQ,YAAaogD,EAWbuE,iBAAkB,SAA0BtD,GAC1C,IAAI4D,EAAQ,CACV3B,mBAAoBx0D,KAAKo2D,yBAAyB7D,GAClD8B,kBAAmBV,EAAed,gBAChC7yD,KAAKq0D,kBACL9B,EACA,oBAEF+B,eAAgBX,EAAed,gBAC7B7yD,KAAKs0D,eACL/B,EACA,WAEFgC,6BAA8BZ,EAAed,gBAC3C7yD,KAAKu0D,6BACLhC,EACA,oBAEFmC,8BAA+Bf,EAAed,gBAC5C7yD,KAAK00D,8BACLnC,EACA,sBAGJ,OACE4D,EAAM3B,qBAAuBx0D,KAAKw0D,oBAClC2B,EAAM9B,oBAAsBr0D,KAAKq0D,mBACjC8B,EAAM7B,iBAAmBt0D,KAAKs0D,gBAC9B6B,EAAM5B,+BACJv0D,KAAKu0D,8BACP4B,EAAMzB,gCAAkC10D,KAAK00D,8BAEtC10D,KAEFA,KAAKq2D,mBAAmBF,EACjC,EAMAG,UAAW,WACT,YAAwBn2D,IAApBH,KAAKi2D,YAA2D,IAA/Bj2D,KAAKy0D,eAAehzD,OAChDzB,KAEFA,KAAKq2D,mBAAmB,CAC7BJ,gBAAY91D,EACZs0D,eAAgB,IAEpB,EAOA8B,SAAU,SAAkBx7C,GAC1B,OAAIA,IAAU/a,KAAK+a,MAAc/a,KAE1BA,KAAKq2D,mBAAmB,CAC7Bt7C,MAAOA,GAEX,EAOAy7C,SAAU,SAAkBC,GAC1B,OAAIA,IAAaz2D,KAAK02D,MAAc12D,KAE7BA,KAAKq2D,mBAAmB,CAC7BK,MAAOD,GAEX,EAOAE,QAAS,SAAiBC,GACxB,OAAIA,IAAY52D,KAAK62D,KAAa72D,KAE3BA,KAAKq2D,mBAAmB,CAC7BQ,KAAMD,GAEV,EAQAE,UAAW,SAAmB5C,GAC5B,OAAOl0D,KAAKq2D,mBAAmB,CAC7BnC,OAAQA,GAEZ,EAQA6C,qBAAsB,SAA8B7C,GAClD,OAAOl0D,KAAKq2D,mBAAmB,CAC7BlC,kBAAmBD,GAEvB,EAQA8C,eAAgB,SAAwBn2D,GACtC,OAAIb,KAAKi3D,cAAgBp2D,EAAUb,KAE5BA,KAAKq2D,mBAAmB,CAC7BY,YAAap2D,GAEjB,EAQAq2D,iBAAkB,SAA0BC,GAC1C,OAAIn3D,KAAKm3D,gBAAkBA,EAAsBn3D,KAE1CA,KAAKq2D,mBAAmB,CAC7Bc,cAAeA,GAEnB,EAkBAC,qBAAsB,SAAU7E,EAAW8C,EAAUzxD,GACnD,IAAI2lC,EAAMkqB,EAAY7vD,GAEtB,GAAI5D,KAAKq3D,iBAAiB9E,EAAW8C,EAAU9rB,GAAM,OAAOvpC,KAE5D,IAAI2yD,EAAMa,EAAM,CAAC,EAAGxzD,KAAKw0D,oBAazB,OAXA7B,EAAIJ,GAAaiB,EAAM,CAAC,EAAGb,EAAIJ,IAE3BI,EAAIJ,GAAW8C,IAEjB1C,EAAIJ,GAAW8C,GAAY1C,EAAIJ,GAAW8C,GAAUrzD,QAEpD2wD,EAAIJ,GAAW8C,GAAU/yD,KAAKinC,IAE9BopB,EAAIJ,GAAW8C,GAAY,CAAC9rB,GAGvBvpC,KAAKq2D,mBAAmB,CAC7B7B,mBAAoB7B,GAExB,EAMA2E,0BAA2B,SAAUC,GACnC,OAAKv3D,KAAKw3D,mBAAmBD,IAGtBv3D,KAAKq0D,kBAAkBkD,IAFrB,EAGX,EAMAE,0BAA2B,SAAUF,GACnC,OAAKv3D,KAAK03D,mBAAmBH,IAGtBv3D,KAAKu0D,6BAA6BgD,IAFhC,EAGX,EAMA3B,0BAA2B,SAAU2B,GAGnC,OAAOv3D,KAAK00D,8BAA8B6C,IAAc,EAC1D,EAMAI,sBAAuB,SAAUJ,GAC/B,OAAKv3D,KAAKw3D,mBAAmBD,IAGtBv3D,KAAKs0D,eAAeiD,IAFlB,EAGX,EAUAK,wBAAyB,SAAUrF,EAAW8C,EAAU/wB,GACtD,IAAIuzB,EAAavzB,EACjB,YAAmBnkC,IAAf03D,EACG73D,KAAKq3D,iBAAiB9E,EAAW8C,EAAUwC,GAGzC73D,KAAKq2D,mBAAmB,CAC7B7B,mBAAoBx0D,KAAKo2D,0BAAyB,SAChDxyD,EACAT,GAEA,OACEA,IAAQovD,GACR3uD,EAAMk0D,KAAOzC,GACbzB,EAAyBhwD,EAAM2lC,IAAKkqB,EAAYoE,GAEpD,MAZO73D,UAcaG,IAAbk1D,EACJr1D,KAAKq3D,iBAAiB9E,EAAW8C,GAC/Br1D,KAAKq2D,mBAAmB,CAC7B7B,mBAAoBx0D,KAAKo2D,0BAAyB,SAChDxyD,EACAT,GAEA,OAAOA,IAAQovD,GAAa3uD,EAAMk0D,KAAOzC,CAC3C,MAPsDr1D,KAWrDA,KAAKq3D,iBAAiB9E,GACpBvyD,KAAKq2D,mBAAmB,CAC7B7B,mBAAoBx0D,KAAKo2D,0BAAyB,SAAUxyD,EAAOT,GACjE,OAAOA,IAAQovD,CACjB,MAJ4CvyD,IAMhD,EAMA+3D,sBAAuB,SAAUR,GAC/B,OAAOv3D,KAAKw0D,mBAAmB+C,IAAc,CAAC,CAChD,EAOAS,qBAAsB,SAAUzF,EAAW8C,GACzC,OACEr1D,KAAKw0D,mBAAmBjC,IACxBvyD,KAAKw0D,mBAAmBjC,GAAW8C,EAEvC,EAWAe,yBAA0B,SAAkC7D,GAC1D,QAAkBpyD,IAAdoyD,EACF,OAAKL,EAAclyD,KAAKw0D,oBAGjB,CAAC,EAFCx0D,KAAKw0D,mBAGT,GAAyB,iBAAdjC,EAChB,OAAOJ,EAAKnyD,KAAKw0D,mBAAoB,CAACjC,IACjC,GAAyB,mBAAdA,EAA0B,CAC1C,IAAIU,GAAa,EACbuB,EAAqBx0D,KAAKw0D,mBAC1ByD,EAAwBtwD,OAAO0J,KAAKmjD,GAAoB5pD,QAC1D,SAAUkX,EAAM3e,GACd,IAAIiyD,EAAYZ,EAAmBrxD,GAC/B+0D,EAAe,CAAC,EAsBpB,OApBA9C,EAAYA,GAAa,CAAC,EAC1BztD,OAAO0J,KAAK+jD,GAAWvjD,SAAQ,SAAUwjD,GACvC,IAAIx2C,EAASu2C,EAAUC,IAAa,GAChC8C,EAAY,GAChBt5C,EAAOhN,SAAQ,SAAUjO,GACD2uD,EACpB,CAAEhpB,IAAK3lC,EAAOk0D,GAAIzC,GAClBlyD,EACA,YAEoBg1D,EAAU71D,KAAKsB,EACvC,IACIu0D,EAAU12D,SAAWod,EAAOpd,SAC9BwxD,GAAa,GAEfiF,EAAa7C,GAAY8C,CAC3B,IAEAr2C,EAAK3e,GAAO+0D,EAELp2C,CACT,GACA,CAAC,GAGH,OAAImxC,EAAmBgF,EAChBj4D,KAAKw0D,kBACd,CAKF,EAQA4D,SAAU,SAAkB3C,GAC1B,OAAIz1D,KAAKw3D,mBAAmB/B,GACnBz1D,KAGFA,KAAKq2D,mBAAmB,CAC7BnC,OAAQl0D,KAAKk0D,OAAO3vC,OAAO,CAACkxC,KAEhC,EAQA4C,oBAAqB,SAA6B5C,GAChD,OAAIz1D,KAAK03D,mBAAmBjC,GACnBz1D,KAGFA,KAAKq2D,mBAAmB,CAC7BlC,kBAAmBn0D,KAAKm0D,kBAAkB5vC,OAAO,CAACkxC,KAEtD,EASA6C,qBAAsB,SAA8BC,GAClD,GAAIv4D,KAAKw4D,oBAAoBD,EAAkB5gD,MAC7C,MAAM,IAAIhW,MACR,+DACE42D,EAAkB5gD,KAClB,KAIN,OAAO3X,KAAKq2D,mBAAmB,CAC7BjC,mBAAoBp0D,KAAKo0D,mBAAmB7vC,OAAO,CAACg0C,KAExD,EAQAE,mBAAoB,SAA4BhD,EAAO7xD,GACrD,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAGN,OAAI9B,EAAenB,UAAUxyD,KAAKq0D,kBAAmBoB,EAAO7xD,GACnD5D,KAEFA,KAAKq2D,mBAAmB,CAC7BhC,kBAAmBV,EAAetB,cAChCryD,KAAKq0D,kBACLoB,EACA7xD,IAGN,EAQA80D,qBAAsB,SAA8BjD,EAAO7xD,GACzD,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAGN,OAAI9B,EAAenB,UAAUxyD,KAAKs0D,eAAgBmB,EAAO7xD,GAChD5D,KAEFA,KAAKq2D,mBAAmB,CAC7B/B,eAAgBX,EAAetB,cAC7BryD,KAAKs0D,eACLmB,EACA7xD,IAGN,EAQA+0D,8BAA+B,SAC7BlD,EACA7xD,GAEA,IAAK5D,KAAK03D,mBAAmBjC,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,kFAIN,OACE9B,EAAenB,UAAUxyD,KAAKu0D,6BAA8BkB,EAAO7xD,GAE5D5D,KAEFA,KAAKq2D,mBAAmB,CAC7B9B,6BAA8BZ,EAAetB,cAC3CryD,KAAKu0D,6BACLkB,EACA7xD,IAGN,EAMAg1D,iBAAkB,SAA0B9nB,GAC1C,GAAI9wC,KAAK64D,aAAa/nB,GAAM,OAAO9wC,KAEnC,IAAI84D,EAAe,CACjBrE,eAAgBz0D,KAAKy0D,eAAelwC,OAAOusB,IAG7C,OAAO9wC,KAAKq2D,mBAAmByC,EACjC,EAQAC,YAAa,SAAqBtD,GAChC,OAAKz1D,KAAKw3D,mBAAmB/B,GAItBz1D,KAAK61D,iBAAiBJ,GAAOY,mBAAmB,CACrDnC,OAAQl0D,KAAKk0D,OAAOzsD,QAAO,SAAUqrD,GACnC,OAAOA,IAAM2C,CACf,MANOz1D,IAQX,EAQAg5D,uBAAwB,SAAgCvD,GACtD,OAAKz1D,KAAK03D,mBAAmBjC,GAItBz1D,KAAK61D,iBAAiBJ,GAAOY,mBAAmB,CACrDlC,kBAAmBn0D,KAAKm0D,kBAAkB1sD,QAAO,SAAUqrD,GACzD,OAAOA,IAAM2C,CACf,MANOz1D,IAQX,EAQAi5D,wBAAyB,SAAiCxD,GACxD,OAAKz1D,KAAKw4D,oBAAoB/C,GAIvBz1D,KAAK61D,iBAAiBJ,GAAOY,mBAAmB,CACrDjC,mBAAoBp0D,KAAKo0D,mBAAmB3sD,QAAO,SAAUqrD,GAC3D,OAAOA,EAAEn7C,OAAS89C,CACpB,MANOz1D,IAQX,EAUAk5D,sBAAuB,SAA+BzD,EAAO7xD,GAC3D,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAGN,OAAK9B,EAAenB,UAAUxyD,KAAKq0D,kBAAmBoB,EAAO7xD,GAGtD5D,KAAKq2D,mBAAmB,CAC7BhC,kBAAmBV,EAAef,iBAChC5yD,KAAKq0D,kBACLoB,EACA7xD,KANK5D,IASX,EAQAm5D,wBAAyB,SAAiC1D,EAAO7xD,GAC/D,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAGN,OAAK9B,EAAenB,UAAUxyD,KAAKs0D,eAAgBmB,EAAO7xD,GAGnD5D,KAAKq2D,mBAAmB,CAC7B/B,eAAgBX,EAAef,iBAC7B5yD,KAAKs0D,eACLmB,EACA7xD,KANK5D,IASX,EAQAo5D,iCAAkC,SAChC3D,EACA7xD,GAEA,IAAK5D,KAAK03D,mBAAmBjC,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,kFAGN,OACG9B,EAAenB,UAAUxyD,KAAKu0D,6BAA8BkB,EAAO7xD,GAI/D5D,KAAKq2D,mBAAmB,CAC7B9B,6BAA8BZ,EAAef,iBAC3C5yD,KAAKu0D,6BACLkB,EACA7xD,KANK5D,IASX,EAOAq5D,oBAAqB,SAA6BvoB,GAChD,IAAK9wC,KAAK64D,aAAa/nB,GAAM,OAAO9wC,KAEpC,IAAI84D,EAAe,CACjBrE,eAAgBz0D,KAAKy0D,eAAehtD,QAAO,SAAU6xD,GACnD,OAAOA,IAAMxoB,CACf,KAGF,OAAO9wC,KAAKq2D,mBAAmByC,EACjC,EAUA/F,iBAAkB,SAA0B0C,EAAO7xD,GACjD,OAAO5D,KAAKu5D,sBAAsB9D,EAAO7xD,EAC3C,EASA21D,sBAAuB,SAA+B9D,EAAO7xD,GAC3D,GAAI5D,KAAKw4D,oBAAoB/C,GAC3B,OAAOz1D,KAAK81D,kCAAkCL,EAAO7xD,GAChD,GAAI5D,KAAKw3D,mBAAmB/B,GACjC,OAAOz1D,KAAKw5D,iCAAiC/D,EAAO7xD,GAC/C,GAAI5D,KAAK03D,mBAAmBjC,GACjC,OAAOz1D,KAAKy5D,iCAAiChE,EAAO7xD,GAGtD,MAAM,IAAIjC,MACR,sCACE8zD,EACA,6FAEN,EAQA+D,iCAAkC,SAChC/D,EACA7xD,GAEA,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAIN,OAAOz1D,KAAKq2D,mBAAmB,CAC7BhC,kBAAmBV,EAAeZ,iBAChC/yD,KAAKq0D,kBACLoB,EACA7xD,IAGN,EAQA81D,6BAA8B,SAC5BjE,EACA7xD,GAEA,IAAK5D,KAAKw3D,mBAAmB/B,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,uEAIN,OAAOz1D,KAAKq2D,mBAAmB,CAC7B/B,eAAgBX,EAAeZ,iBAC7B/yD,KAAKs0D,eACLmB,EACA7xD,IAGN,EAQA61D,iCAAkC,SAChChE,EACA7xD,GAEA,IAAK5D,KAAK03D,mBAAmBjC,GAC3B,MAAM,IAAI9zD,MACR8zD,EACE,kFAIN,OAAOz1D,KAAKq2D,mBAAmB,CAC7B9B,6BAA8BZ,EAAeZ,iBAC3C/yD,KAAKu0D,6BACLkB,EACA7xD,IAGN,EAQAkyD,kCAAmC,SACjCL,EACA7xD,GAEA,IAAK5D,KAAKw4D,oBAAoB/C,GAC5B,MAAM,IAAI9zD,MACR8zD,EACE,mFAIN,IAAIkE,EAAY35D,KAAK45D,+BACnB55D,KAAK65D,2BAA2BpE,IAG9B9C,EAAM,CAAC,EA2BX,YAxBgDxyD,IAA9CH,KAAK00D,8BAA8Be,IACnCz1D,KAAK00D,8BAA8Be,GAAOh0D,OAAS,IAGlDzB,KAAK00D,8BAA8Be,GAAO,KAAO7xD,GAO1C,IAFN5D,KAAK00D,8BAA8Be,GAAO,GAAG9oD,QAC3C/I,EAAQ+1D,KAIsB,IAA9B/1D,EAAM+I,QAAQgtD,GAEhBhH,EAAI8C,GAAS,GAEb9C,EAAI8C,GAAS,CAAC7xD,EAAM5B,MAAM,EAAG4B,EAAMk2D,YAAYH,KAGjDhH,EAAI8C,GAAS,CAAC7xD,GAGT5D,KAAKq2D,mBAAmB,CAC7B3B,8BAA+BzC,EAC7B,CAAC,EACDU,EACA3yD,KAAK00D,gCAGX,EASAqF,+BAAgC,SAAUtE,EAAOrmB,GAC/C,GAAIpvC,KAAKg6D,2BAA2BvE,GAClC,MAAM,IAAI9zD,MAAM8zD,EAAQ,wBAE1B,IAAKz1D,KAAKw4D,oBAAoB/C,GAC5B,MAAM,IAAI9zD,MACR8zD,EACE,oFAGN,IAAI9C,EAAM,CAAC,EAEX,OADAA,EAAI8C,GAAS,CAACrmB,GACPpvC,KAAKq2D,mBAAmB,CAC7B3B,8BAA+BzC,EAC7B,CAAC,EACDU,EACA3yD,KAAK00D,gCAGX,EAQAuF,kCAAmC,SAAUxE,GAC3C,IAAKz1D,KAAKg6D,2BAA2BvE,GACnC,OAAOz1D,KAET,IAAI2yD,EAAM,CAAC,EAEX,OADAA,EAAI8C,GAAS,GACNz1D,KAAKq2D,mBAAmB,CAC7B3B,8BAA+BzC,EAC7B,CAAC,EACDU,EACA3yD,KAAK00D,gCAGX,EAOAwF,oBAAqB,SAA6BppB,GAChD,OAAI9wC,KAAK64D,aAAa/nB,GACb9wC,KAAKq5D,oBAAoBvoB,GAG3B9wC,KAAK44D,iBAAiB9nB,EAC/B,EAOA4mB,mBAAoB,SAAUjC,GAC5B,OAAOz1D,KAAKm0D,kBAAkBxnD,QAAQ8oD,IAAU,CAClD,EAOA+C,oBAAqB,SAAUjB,GAC7B,YAAsDp3D,IAA/CH,KAAK65D,2BAA2BtC,EACzC,EAOAC,mBAAoB,SAAU/B,GAC5B,OAAOz1D,KAAKk0D,OAAOvnD,QAAQ8oD,IAAU,CACvC,EAUA0E,eAAgB,SAAwB1E,EAAO7xD,GAC7C,QAAK5D,KAAKw3D,mBAAmB/B,IAGtB9B,EAAenB,UAAUxyD,KAAKq0D,kBAAmBoB,EAAO7xD,EACjE,EAWAw2D,iBAAkB,SAA0B3E,EAAO7xD,GACjD,QAAK5D,KAAKw3D,mBAAmB/B,IAGtB9B,EAAenB,UAAUxyD,KAAKs0D,eAAgBmB,EAAO7xD,EAC9D,EAUAy2D,0BAA2B,SAAmC5E,EAAO7xD,GACnE,QAAK5D,KAAK03D,mBAAmBjC,IAGtB9B,EAAenB,UACpBxyD,KAAKu0D,6BACLkB,EACA7xD,EAEJ,EAUAo2D,2BAA4B,SAC1BvE,EACA7xD,GAEA,IAAK5D,KAAKw4D,oBAAoB/C,GAC5B,OAAO,EAGT,IAAI6E,EAAct6D,KAAK41D,0BAA0BH,GAEjD,OAAK7xD,GAIkC,IAAhC02D,EAAY3tD,QAAQ/I,GAHlB02D,EAAY74D,OAAS,CAIhC,EAWA41D,iBAAkB,SAA0B9E,EAAW8C,EAAUzxD,GAC/D,QAAczD,IAAVyD,QAAoCzD,IAAbk1D,EACzB,OAAOh/C,QAAQrW,KAAKw0D,mBAAmBjC,IAGzC,IAAIgI,EACFv6D,KAAKw0D,mBAAmBjC,SACyBpyD,IAAjDH,KAAKw0D,mBAAmBjC,GAAW8C,GAErC,QAAcl1D,IAAVyD,IAAwB22D,EAC1B,OAAOA,EAGT,IAr1CelvC,EAAOmvC,EAq1ClBvF,EAAcxB,EAAY7vD,GAC1B62D,OAEFt6D,KAx1CakrB,EAu1CHrrB,KAAKw0D,mBAAmBjC,GAAW8C,GAv1CzBmF,EAu1CoCvF,EAt1CrDjN,EAAK38B,GAAO,SAAUqvC,GAC3B,OAAO9G,EAAyB8G,EAAcF,EAChD,KAu1CE,OAAOD,GAAqBE,CAC9B,EAOA5B,aAAc,SAAsB/nB,GAClC,OAA6C,IAAtC9wC,KAAKy0D,eAAe9nD,QAAQmkC,EACrC,EAQA6pB,4BAA6B,WAE3B,IAAIhjC,EAAO33B,KAGP46D,EAAkCrH,EACpC5rD,OAAO0J,KAAKrR,KAAKw0D,oBAAoB/sD,QAAO,SAAUguD,GACpD,OAAO9tD,OAAO0J,KAAKsmB,EAAK68B,mBAAmBiB,IAAQh0D,OAAS,CAC9D,IACAzB,KAAKm0D,mBAGP,OAAOxsD,OAAO0J,KAAKrR,KAAKu0D,8BACrB9sD,QAAO,SAAUguD,GAChB,OAAO99B,EAAK48B,6BAA6BkB,GAAOh0D,OAAS,CAC3D,IACC8iB,OAAOq2C,GACPr2C,OAAOvkB,KAAK66D,gCACZrxD,MACL,EAQAqxD,6BAA8B,WAE5B,IAAIljC,EAAO33B,KACX,OAAOuzD,EAGLvzD,KAAKo0D,mBAAmB5vC,KAAI,SAAUixC,GACpC,OAAOA,EAAM99C,IACf,IACAhQ,OAAO0J,KAAKrR,KAAK00D,+BAA+BjtD,QAAO,SAAUguD,GAC/D,OAAO99B,EAAK+8B,8BAA8Be,GAAOh0D,OAAS,CAC5D,KACA+H,MACJ,EAMAsxD,8BAA+B,WAC7B,IAAIC,EAAgB/6D,KAAK26D,8BAEzB,OAAO36D,KAAKm0D,kBAAkB1sD,QAAO,SAAUqrD,GAC7C,OAAqC,IAA9BiI,EAAcpuD,QAAQmmD,EAC/B,GACF,EAEAkI,kBAAmB,CACjB,QAEA,SACA,oBACA,oBACA,qBACA,iBAEA,+BACA,qBACA,iBACA,iCAGFC,eAAgB,WACd,IAAID,EAAoBh7D,KAAKg7D,kBAEzBE,EAAc,CAAC,EAGfvjC,EAAO33B,KAWX,OAVA2H,OAAO0J,KAAKrR,MAAM6R,SAAQ,SAAU8iD,GAClC,IAAIkD,EAAalgC,EAAKg9B,IAEsB,IAA1CqG,EAAkBruD,QAAQgoD,SACXx0D,IAAf03D,IAEAqD,EAAYvG,GAAakD,EAE7B,IAEOqD,CACT,EAWAC,kBAAmB,SAAsBC,EAAWx3D,GAClD,GAAI5D,KAAKo7D,KAAex3D,EAAO,OAAO5D,KAEtC,IAAI84D,EAAe,CAAC,EAIpB,OAFAA,EAAasC,GAAax3D,EAEnB5D,KAAKq2D,mBAAmByC,EACjC,EAOAzC,mBAAoB,SAA4B94B,GAC9C,IAAKA,EAAQ,OAAOv9B,KAEpB,IAAIwB,EAAQ8vD,EAAiByE,SAAS/1D,KAAMu9B,GAE5C,GAAI/7B,EACF,MAAMA,EAIR,IAAIm2B,EAAO33B,KACPq7D,EAAkB/J,EAAiByC,cAAcx2B,GACjD+9B,EAAsB3zD,OAAO0J,KAAKrR,MAAM4K,QAAO,SAAUU,EAAKnI,GAEhE,OADAmI,EAAInI,GAAOw0B,EAAKx0B,GACTmI,CACT,GAAG,CAAC,GAEAiwD,EAAkB5zD,OAAO0J,KAAKgqD,GAAiBzwD,QAAO,SACxD6f,EACAtnB,GAEA,IAAIq4D,OAA2Cr7D,IAAlBsqB,EAAStnB,GAClCs4D,OAA8Ct7D,IAAzBk7D,EAAgBl4D,GAEzC,OAAIq4D,IAA2BC,EACtBtJ,EAAK1nC,EAAU,CAACtnB,KAGrBs4D,IACFhxC,EAAStnB,GAAOk4D,EAAgBl4D,IAG3BsnB,EACT,GACA6wC,GAEA,OAAO,IAAIt7D,KAAKkR,YAAYqqD,EAC9B,EAQAG,UAAW,WACT,YAAkBv7D,IAAdH,KAAK62D,KACA72D,KAGFA,KAAK22D,QAAQ,EACtB,EAOAgF,4BAA6B,SAAUpD,GACrC,OAAOA,EAAkBqD,QAAU,CAAC,iBAAkB,WACxD,EAQAhC,+BAAgC,SAAUrB,GACxC,OAAOA,EAAkBoB,WAAa,KACxC,EAQAkC,yBAA0B,SAAUtD,GAClC,OAAOA,EAAkB7C,UAAY,IACvC,EAQAoG,gCAAiC,SAAUvD,GACzC,MAAiD,kBAAtCA,EAAkBwD,iBACpBxD,EAAkBwD,eAG7B,EAOAlC,2BAA4B,SAAUmC,GACpC,OAAOhU,EAAKhoD,KAAKo0D,oBAAoB,SAAUtB,GAC7C,OAAOA,EAAEn7C,OAASqkD,CACpB,GACF,EAOAC,+BAAgC,SAAU1E,GACxC,IAAKv3D,KAAKw4D,oBAAoBjB,GAC5B,MAAO,GAGT,IAAI2E,EAAal8D,KAAK41D,0BAA0B2B,GAAW,GAC3D,IAAK2E,EAAY,MAAO,GAExB,IAAIvC,EAAY35D,KAAK45D,+BACnB55D,KAAK65D,2BAA2BtC,IAGlC,OADW2E,EAAWrwD,MAAM8tD,GAChBn1C,KAAI,SAAU23C,GACxB,OAAOA,EAAKpoB,MACd,GACF,EAEAzlB,SAAU,WACR,OAAOtT,KAAKC,UAAUjb,KAAM,KAAM,EACpC,GAYFQ,EAAOC,QAAU6wD,sCCppDjB9wD,EAAOC,QASP,SAAuB8f,GACrB,OAAO,SAAkB67C,EAAyBC,GAChD,IAAI9D,EAAoBh4C,EAAM6zC,mBAAmBiI,GAC7CC,EACD/7C,EAAMm0C,8BAA8B6D,EAAkB5gD,OACrD4I,EAAMm0C,8BAA8B6D,EAAkB5gD,MAAM,IAC9D,GACE4kD,EACFh8C,EAAMq5C,+BAA+BrB,GACnCiE,EACFj8C,EAAMs7C,yBAAyBtD,GAC7BkE,EACFl8C,EAAMu7C,gCAAgCvD,GACpCqD,EAASc,EACXn8C,EAAMo7C,4BAA4BpD,IAGhCoE,EAAiBP,EAAwBxU,OAAM,SAAUgV,GAC3D,OAAOA,EAAYC,UACrB,IAEIC,EA4BR,SACElB,EACAW,EACAC,EACAC,EACA9G,GAEA,OAAO,SACLoH,EACAX,EACAY,GAEA,IAAItd,EAASqd,EAEb,GAAIC,EAA2B,EAAG,CAChC,IAAIC,EAAQ,EAIZ,IAFAvd,EAASqd,EAEFE,EAAQD,GAA0B,CAIvC,IAAI10D,EAAOo3C,GAAU39C,MAAMgpB,QAAQ20B,EAAOp3C,MAAQo3C,EAAOp3C,KAAO,GAChEo3C,EAASsI,EAAK1/C,GAAM,SAAU8U,GAC5B,OAAOA,EAAQo1C,SACjB,IACAyK,GACF,CACF,CAGA,GAAIvd,EAAQ,CAYV,IAAIwd,EAASv1D,OAAO0J,KAAK+qD,EAAwB9zD,MAC9Ckc,KAAI,SAAU24C,GACb,MAAO,CAACA,EAAYf,EAAwB9zD,KAAK60D,GACnD,IACC11D,QAAO,SAAU21D,GAEhB,OAiCV,SACED,EACAE,EACA1H,EACA4G,EACAC,EACAC,GAGA,GACED,IAC8C,IAA7CW,EAAWxwD,QAAQ6vD,IAClBA,IAAyBW,GAE3B,OAAO,EAIT,OACIX,IAC+C,IAA/CW,EAAWxwD,QAAQ4vD,IAEpBC,GACCW,EAAWtxD,MAAM0wD,GAAuB96D,OACtC+6D,EAAqB3wD,MAAM0wD,GAAuB96D,QAClD,IAG4C,IAA/C07D,EAAWxwD,QAAQ4vD,KACoC,IAAtD5G,EAAkBhpD,QAAQ4vD,IAEc,IAA1C5G,EAAkBhpD,QAAQwwD,IAEkC,IAA3DA,EAAWxwD,QAAQ0wD,EAAad,KAC9BE,GAC2C,IAA1CU,EAAWxwD,QAAQgpD,GAE3B,CAtEiB2H,CADUF,EAAM,GAGrB1d,EAAOtQ,MAAQotB,EACf7G,EACA4G,EACAC,EACAC,EAEJ,IAEF/c,EAAOp3C,KAAOi1D,EACZL,EAAO14C,KAAI,SAAU44C,GACnB,IAAID,EAAaC,EAAM,GAGvB,OAyDV,SACEI,EACAL,EACAZ,EACA5G,EACAkH,GAEA,IAAIzoB,EAAQ+oB,EAAWtxD,MAAM0wD,GAC7B,MAAO,CACL5kD,KAAMy8B,EAAMA,EAAM3yC,OAAS,GAAGsyC,OAC9B3E,KAAM+tB,EACNM,aAAcC,EAAiBP,GAC/BQ,MAAOH,EACPhL,UACEmD,IAAsBwH,GAC4C,IAAlExH,EAAkBhpD,QAAQwwD,EAAaZ,GACzCM,WAAYA,EACZv0D,KAAM,KAEV,CA5EiB09B,CAFUo3B,EAAM,GAIrBD,EACAZ,EACAqB,EAAmBjI,GACnByG,EAAwBS,WAE5B,IACAjB,EAAO,GACPA,EAAO,GAEX,CAEA,OAAOmB,CACT,CACF,CA5GyBc,CACnBjC,EACAW,EACAC,EACAC,EACAH,GAGEnvB,EAAUivB,EAQd,OANII,IACFrvB,EAAUivB,EAAwBp6D,MAChCw6D,EAAqB3wD,MAAM0wD,GAAuB96D,SAI/C0rC,EAAQviC,OAAOkyD,EAAgB,CACpCnlD,KAAM4I,EAAM6zC,mBAAmBiI,GAAwB1kD,KACvDgmD,MAAO,KACPnL,WAAW,EACXpjB,KAAM,KACNquB,aAAc,KACdZ,WAAYF,EACZr0D,KAAM,MAEV,CACF,EAtDA,IAAIw1D,EAAK,EAAQ,OACb9V,EAAO,EAAQ,MACf0U,EAAiC,EAAQ,OACzCa,EAAU,EAAQ,OAClBG,EAAmBI,EAAGJ,iBACtBE,EAAqBE,EAAGF,uDCP5B,IAAIG,EAAU,EAAQ,OAClB9L,EAAe,EAAQ,OACvB6L,EAAK,EAAQ,OACb9V,EAAO,EAAQ,MACfgW,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OACrBzK,EAAQ,EAAQ,OAChB+J,EAAU,EAAQ,OAClBG,EAAmBI,EAAGJ,iBACtBE,EAAqBE,EAAGF,mBAExBC,EAA2B,EAAQ,OAgDvC,SAASK,EAAWv0C,GAClB,IAAIw0C,EAAU,CAAC,EAMf,OAJAx0C,EAAW9X,SAAQ,SAAU03B,EAAK60B,GAChCD,EAAQ50B,GAAO60B,CACjB,IAEOD,CACT,CAEA,SAASE,EAAiBC,EAAMC,EAAYp7D,GACtCo7D,GAAcA,EAAWp7D,KAC3Bm7D,EAAKE,MAAQD,EAAWp7D,GAE5B,CA6JA,SAASouD,EAAchxC,EAAO4sB,EAAS/lC,GACrC,IAAIq3D,EAAkBtxB,EAAQ,GAE9BntC,KAAK0+D,YAAcvxB,EAGnB,IAAIxV,EAAO33B,KAGX2H,OAAO0J,KAAKotD,GAAiB5sD,SAAQ,SAAU1O,GAC7Cw0B,EAAKx0B,GAAOs7D,EAAgBt7D,EAC9B,IAGAwE,OAAO0J,KAAKjK,GAAW,CAAC,GAAGyK,SAAQ,SAAU1O,GAC3Cw0B,EAAKx0B,GAAOiE,EAAQjE,EACtB,IA8IAnD,KAAK2+D,iBAAmBxxB,EAAQviC,QAAO,SAAUg0D,EAAKpjC,GACpD,YAAmCr7B,IAA5Bq7B,EAAOmjC,iBACVC,EACAA,EAAMpjC,EAAOmjC,gBACnB,GAAG,GAMH3+D,KAAKm0D,kBAAoB,GAKzBn0D,KAAKo0D,mBAAqB7zC,EAAM6zC,mBAAmB5vC,KACjD,WACE,MAAO,EACT,IAMFxkB,KAAKk0D,OAAS,GAEd,IAAIC,EAAoB5zC,EAAMo6C,8BAE1BkE,EAAgBX,EAAW39C,EAAM2zC,QACjC4K,EAA2BZ,EAAW39C,EAAM4zC,mBAC5C4K,EAAwB,EAKxBC,EAAaP,EAAgBvK,QAAU,CAAC,EAE5CvsD,OAAO0J,KAAK2tD,GAAYntD,SAAQ,SAAUotD,GACxC,IAnVF7K,EACA8K,EAkVMC,EAAmBH,EAAWC,GAE9B1G,GArVNnE,EAsVI7zC,EAAM6zC,mBArVV8K,EAsVID,EApVGjX,EACLoM,GACA,SAAkCmE,GAEhC,OADiBA,EAAkB5uC,YAAc,IAC/Bhd,QAAQuyD,IAA8B,CAC1D,KAkVA,GAAI3G,EAAmB,CAGrB,IAAI6G,EAAa7G,EAAkB5uC,WAAWhd,QAAQsyD,GAClDI,EAAmBrB,EAAUz9C,EAAM6zC,oBAAoB,SAAUtB,GACnE,OAAOA,EAAEn7C,OAAS4gD,EAAkB5gD,IACtC,IACAggB,EAAKy8B,mBAAmBiL,GAAkBD,GAAc,CACtD7M,UAAW0M,EACX32D,KAAM62D,EACNtC,WAAY4B,EAAgBa,sBAEhC,KAAO,CACL,IAEIt8D,EAFAu8D,GAAoE,IAA/Ch/C,EAAM4zC,kBAAkBxnD,QAAQsyD,GACrDO,GAAyD,IAApCj/C,EAAM2zC,OAAOvnD,QAAQsyD,GAG1CM,IACFv8D,EAAW87D,EAAyBG,GACpCtnC,EAAKw8B,kBAAkBnxD,GAAY,CACjC2U,KAAMsnD,EACN32D,KAAM62D,EACNtC,WAAY4B,EAAgBa,uBAE9BjB,EACE1mC,EAAKw8B,kBAAkBnxD,GACvBy7D,EAAgBgB,aAChBR,IAGAO,IACFx8D,EAAW67D,EAAcI,GACzBtnC,EAAKu8B,OAAOlxD,GAAY,CACtB2U,KAAMsnD,EACN32D,KAAM62D,EACNtC,WAAY4B,EAAgBa,uBAE9BjB,EACE1mC,EAAKu8B,OAAOlxD,GACZy7D,EAAgBgB,aAChBR,GAGN,CACF,IAGAj/D,KAAKo0D,mBAAqB2J,EAAQ/9D,KAAKo0D,oBAGvCD,EAAkBtiD,SAAQ,SAAU6tD,GAClC,IAAIlkC,EAAS2R,EAAQ4xB,GACjB7K,EAAS14B,GAAUA,EAAO04B,OAAS14B,EAAO04B,OAAS,CAAC,EACpDqE,EAAoBh4C,EAAMs5C,2BAA2B6F,GAGzD/3D,OAAO0J,KAAK6iD,GAAQriD,SAAQ,SAAU8tD,GACpC,IAEI38D,EAFA48D,EAAe1L,EAAOyL,GAI1B,GAAIpH,EAAmB,CACrBv1D,EAAWg7D,EAAUz9C,EAAM6zC,oBAAoB,SAAUtB,GACvD,OAAOA,EAAEn7C,OAAS4gD,EAAkB5gD,IACtC,IACA,IAAIkoD,EAAiB7B,EACnBrmC,EAAKy8B,mBAAmBpxD,IACxB,SAAU8vD,GACR,OAAOA,EAAEP,YAAcoN,CACzB,IAIF,IAAwB,IAApBE,EACF,OAGFloC,EAAKy8B,mBAAmBpxD,GAAU68D,GAAgBv3D,KAAOkrD,EACvD,CAAC,EACD77B,EAAKy8B,mBAAmBpxD,GAAU68D,GAAgBv3D,KAClDs3D,EAEJ,KAAO,CACL58D,EAAW87D,EAAyBa,GAEpC,IAAIG,EACDrB,EAAgBvK,QAAUuK,EAAgBvK,OAAOyL,IAAY,CAAC,EAEjEhoC,EAAKw8B,kBAAkBnxD,GAAY,CACjC2U,KAAMgoD,EACNr3D,KAAM2pD,EAAa,CAAC,EAAG2N,EAAcE,GACrCjD,WAAYrhC,EAAO8jC,uBAErBjB,EACE1mC,EAAKw8B,kBAAkBnxD,GACvBw4B,EAAOikC,aACPE,GAGEp/C,EAAMg0C,6BAA6BoL,IACrCp/C,EAAMg0C,6BAA6BoL,GAAQ9tD,SAAQ,SACjDuhD,IAIGz7B,EAAKw8B,kBAAkBnxD,GAAUsF,KAAK8qD,IACvC7yC,EAAMg0C,6BAA6BoL,GAAQhzD,QACzCixD,EAAmBxK,KAChB,IAELz7B,EAAKw8B,kBAAkBnxD,GAAUsF,KAAK8qD,GAAmB,EAE7D,GAEJ,CACF,IACA2L,GACF,IAGAx+C,EAAMs6C,+BAA+BhpD,SAAQ,SAAUkuD,GACrD,IAAIxH,EAAoBh4C,EAAMs5C,2BAA2BkG,GACrDpG,EAAYp5C,EAAMq5C,+BAA+BrB,GAEjD5C,EAAoBp1C,EAAMq1C,0BAA0BmK,GAIzB,IAA7BpK,EAAkBl0D,QAClBk0D,EAAkB,GAAG9pD,MAAM8tD,GAAWl4D,OAAS,GAKjD0rC,EAAQnrC,MAAM+8D,GAAuBltD,SAAQ,SAAU2pB,GACrD,IAAI04B,EAAS14B,GAAUA,EAAO04B,OAAS14B,EAAO04B,OAAS,CAAC,EAExDvsD,OAAO0J,KAAK6iD,GAAQriD,SAAQ,SAAU8tD,GACpC,IAAIC,EAAe1L,EAAOyL,GACtB38D,EAAWg7D,EAAUz9C,EAAM6zC,oBAAoB,SAAUtB,GAC3D,OAAOA,EAAEn7C,OAAS4gD,EAAkB5gD,IACtC,IACIkoD,EAAiB7B,EACnBrmC,EAAKy8B,mBAAmBpxD,IACxB,SAAU8vD,GACR,OAAOA,EAAEP,YAAcoN,CACzB,IAIF,IAAwB,IAApBE,EAAJ,CAYA,IAAI5hD,EAAc,CAAC,EAEnB,GAAI03C,EAAkBl0D,OAAS,EAAG,CAChC,IAAIu+D,EAAOrK,EAAkB,GAAG9pD,MAAM8tD,GAAW,GACjD17C,EAAY+hD,GACVroC,EAAKy8B,mBAAmBpxD,GAAU68D,GAAgBv3D,KAAK03D,EAC3D,CAEAroC,EAAKy8B,mBAAmBpxD,GAAU68D,GAAgBv3D,KAAO2pD,EACvDh0C,EACA2hD,EACAjoC,EAAKy8B,mBAAmBpxD,GAAU68D,GAAgBv3D,KArBpD,CAuBF,IAEAy2D,GACF,GACF,IAGAp3D,OAAO0J,KAAKkP,EAAM+zC,gBAAgBziD,SAAQ,SAAU0lD,GAClD,IAAI0I,EAAW1/C,EAAM+zC,eAAeiD,GAChCv0D,EAAW67D,EAActH,GAE7B5/B,EAAKu8B,OAAOlxD,GAAY,CACtB2U,KAAM4/C,EACNjvD,KAAM02D,EAAWzH,GACjBsF,WAAY4B,EAAgBa,uBAE9BW,EAASpuD,SAAQ,SAAUsrD,GACzBxlC,EAAKu8B,OAAOlxD,GAAY20B,EAAKu8B,OAAOlxD,IAAa,CAAE2U,KAAM4/C,GACzD5/B,EAAKu8B,OAAOlxD,GAAUsF,KAAOqvB,EAAKu8B,OAAOlxD,GAAUsF,MAAQ,CAAC,EAC5DqvB,EAAKu8B,OAAOlxD,GAAUsF,KAAK60D,GAAc,CAC3C,GACF,IAKAn9D,KAAKo0D,mBAAqBp0D,KAAKo0D,mBAAmB5vC,IAChDq5C,EAAyBt9C,IAM3BvgB,KAAKk0D,OAAS6J,EAAQ/9D,KAAKk0D,QAI3Bl0D,KAAKm0D,kBAAoB4J,EAAQ/9D,KAAKm0D,mBAEtCn0D,KAAK6rC,OAAStrB,CAChB,CA2BA,SAAS2/C,EAA6B/yB,EAASolB,GAC7C,SAAS9B,EAAUgF,GACjB,OAAOA,EAAM99C,OAAS46C,CACxB,CAEA,GAAIplB,EAAQtB,OAAO2rB,mBAAmBjF,GAAY,CAChD,IAAIkD,EAAQzN,EAAK7a,EAAQ+mB,OAAQzD,GACjC,OAAKgF,EAEE9tD,OAAO0J,KAAKokD,EAAMntD,MAAMkc,KAAI,SAAU7M,GAC3C,IAAI/T,EAAQ85D,EAAiB/lD,GAC7B,MAAO,CACLA,KAAMA,EACN8lD,aAAc75D,EACd+5D,MAAOlI,EAAMntD,KAAKqP,GAClB66C,UAAWrlB,EAAQtB,OAAOsuB,eAAe5H,EAAW3uD,GACpDu8D,WAAYhzB,EAAQtB,OAAOuuB,iBAAiB7H,EAAW56C,GAE3D,IAXmB,EAYrB,CAAO,GAAIw1B,EAAQtB,OAAO6rB,mBAAmBnF,GAAY,CACvD,IAAImN,EAAmB1X,EAAK7a,EAAQgnB,kBAAmB1D,GACvD,OAAKiP,EAEE/3D,OAAO0J,KAAKquD,EAAiBp3D,MAAMkc,KAAI,SAAU7M,GACtD,IAAI/T,EAAQ85D,EAAiB/lD,GAC7B,MAAO,CACLA,KAAMA,EACN8lD,aAAc75D,EACd+5D,MAAO+B,EAAiBp3D,KAAKqP,GAC7B66C,UAAWrlB,EAAQtB,OAAOwuB,0BAA0B9H,EAAW3uD,GAEnE,IAV8B,EAWhC,CAAO,GAAIupC,EAAQtB,OAAO2sB,oBAAoBjG,GAAY,CACxD,IAAI6N,EAA0BpY,EAAK7a,EAAQinB,mBAAoB3D,GAC/D,IAAK2P,EAAyB,OAAOA,EAErC,IAAI7H,EACFprB,EAAQtB,OAAOguB,2BAA2BtH,GACxCoH,EACFxsB,EAAQtB,OAAO+tB,+BAA+BrB,GAC5C5C,EAAoBiI,EACtBzwB,EAAQtB,OAAO+pB,0BAA0BrD,GAAW,IAAM,IAGE,IAA1DoD,EAAkBhpD,QAAQ4rD,EAAkB7C,YAC9CC,EAAoBA,EAAkB1+B,QACpCshC,EAAkB7C,SAAWiE,EAC7B,KAIJ,IAAI0G,EAAyB1K,EAAkB9pD,MAAM8tD,GAKrD,OAJA0G,EAAuBC,QAAQ/N,GAE/BgO,EAAaH,EAAyBC,EAAwB,GAEvDD,CACT,CAGF,CASA,SAASG,EAAarzC,EAAMyoC,EAAmB6K,GAC7CtzC,EAAKslC,UAAYtlC,EAAKvV,OAASg+C,EAAkB6K,GAC7CtzC,EAAK5kB,MACP4kB,EAAK5kB,KAAKuJ,SAAQ,SAAUivB,GAC1By/B,EAAaz/B,EAAO60B,EAAmB6K,EAAQ,EACjD,GAEJ,CAWA,SAASC,EAAQC,EAAQtzD,EAAMuzD,EAAO1D,GAGpC,GAFAA,EAAQA,GAAS,EAEbl7D,MAAMgpB,QAAQ3d,GAChB,OAAOszD,EAAOtzD,EAAMuzD,EAAM1D,IAG5B,IAAK7vD,EAAK9E,MAA6B,IAArB8E,EAAK9E,KAAK7G,OAC1B,OAAO2L,EAGT,IAAI0Q,EAAW1Q,EAAK9E,KAAKkc,KAAI,SAAUo8C,GACrC,OAAOH,EAAQC,EAAQE,EAAWD,EAAO1D,EAAQ,EACnD,IACI4D,EAAiBH,EAAO5iD,EAAU6iD,EAAM1D,IAE5C,OADchL,EAAa,CAAE3pD,KAAMu4D,GAAkBzzD,EAEvD,CA2MA,SAAS0zD,EAAyB3N,EAAWoE,GAC3C,IAAIjvD,EAAO0/C,EAAKmL,GAAW,SAAUsC,GACnC,OAAOA,EAAM99C,OAAS4/C,CACxB,IACA,OAAOjvD,GAAQA,EAAKk2D,KACtB,CAwGA,SAASuC,EAAcxgD,EAAOtf,EAAM6yC,EAAen8B,EAAMqpD,GACvD,IAAIvL,EAAQzN,EAAKgZ,GAAe,SAAUlO,GACxC,OAAOA,EAAEn7C,OAASm8B,CACpB,IACI6pB,EAAQlI,GAASA,EAAMntD,MAAQmtD,EAAMntD,KAAKqP,GAAQ89C,EAAMntD,KAAKqP,GAAQ,EACrEklD,EAAcpH,GAASA,EAAMoH,aAAe,EAEhD,MAAO,CACL57D,KAAMA,EACN6yC,cAAeA,EACfn8B,KAAMA,EACNgmD,MAAOA,EACPd,WAAYA,EAEhB,CAjcAtL,EAAc7wD,UAAUugE,eAAiB,SAAUtpD,GACjD,SAAS84C,EAAUgF,GACjB,OAAOA,EAAM99C,OAASA,CACxB,CAEA,OACEqwC,EAAKhoD,KAAKk0D,OAAQzD,IAClBzI,EAAKhoD,KAAKm0D,kBAAmB1D,IAC7BzI,EAAKhoD,KAAKo0D,mBAAoB3D,EAElC,EAmHAc,EAAc2P,aAAe,CAAC,iBAAkB,aAAc,YA+H9D3P,EAAc7wD,UAAUygE,eAAiB,SAAU5O,EAAW7sB,GAC5D,IAAI07B,EAAclB,EAA6BlgE,KAAMuyD,GACrD,GAAK6O,EAAL,CAIA,IASIz3C,EATAviB,EAAU6qD,EAAa,CAAC,EAAGvsB,EAAM,CACnCk2B,OAAQrK,EAAc2P,aAGtBG,gBAAiB37B,GAAQA,EAAKk2B,UAI5BzuB,EAAUntC,KAEd,GAAI+B,MAAMgpB,QAAQq2C,GAChBz3C,EAAa,CAAC4oC,QAGd5oC,EADawjB,EAAQtB,OAAOguB,2BAA2BuH,EAAYzpD,MAC/CgS,WAGtB,OAAO82C,GACL,SAAUn4D,EAAMivD,GACd,GAAInwD,EAAQi6D,cAAe,CACzB,IAAIA,EAnFZ,SAA0Bl0B,EAASolB,GACjC,OACEplB,EAAQm0B,kBACRn0B,EAAQm0B,iBAAiBD,eACzBl0B,EAAQm0B,iBAAiBD,cAAcxiD,QACvCsuB,EAAQm0B,iBAAiBD,cAAcxiD,OAAO0zC,EAElD,CA4E4BgP,CAAiBp0B,EAASoqB,GAC9C,GAAI8J,EACF,OAxIV,SAA8BD,EAAaC,GACzC,IAAIG,EAAgB,GAChBC,EAAkB,GAOlBC,GALQL,EAAc1nD,OAAS,IAKV/O,QAAO,SAAUU,EAAKqM,EAAMrW,GAEnD,OADAgK,EAAIqM,GAAQrW,EACLgK,CACT,GAAG,CAAC,GAEJ81D,EAAYvvD,SAAQ,SAAUqb,GAE5B,IAAIvV,EAAOuV,EAAKkiB,MAAQliB,EAAKvV,UACFxX,IAAvBuhE,EAAa/pD,GACf6pD,EAAcE,EAAa/pD,IAASuV,EAEpCu0C,EAAgBn/D,KAAK4qB,EAEzB,IAEAs0C,EAAgBA,EAAc/5D,QAAO,SAAUguD,GAC7C,OAAOA,CACT,IAEA,IACIkM,EADAC,EAAkBP,EAAcO,gBAEpC,MAAwB,WAApBA,EACKJ,GAEPG,EAD6B,UAApBC,EACE,CACT,CAAC,OAAQ,QACT,CAAC,MAAO,QAGC,CAAC,CAAC,SAAU,CAAC,SAGnBJ,EAAcj9C,OACnBg5C,EAAQkE,EAAiBE,EAAS,GAAIA,EAAS,KAEnD,CA4FiBE,CAAqBv5D,EAAM+4D,EAEtC,CAEA,GAAIt/D,MAAMgpB,QAAQ3jB,EAAQw0D,QAAS,CACjC,IAAIjiD,EAAQskD,EAAW72D,EAAQw0D,OAAQrK,EAAc2P,cACrD,OAAO3D,EAAQj1D,EAAMqR,EAAM,GAAIA,EAAM,GACvC,CAAO,GAA8B,mBAAnBvS,EAAQw0D,OACxB,OAjKR,SAAuBjiD,EAAOrR,GAC5B,OAAOA,EAAKkB,KAAKmQ,EACnB,CA+JemoD,CAAc16D,EAAQw0D,OAAQtzD,GAEvC,MAAM,IAAI3G,MACR,oHAGJ,GACAy/D,EACAz3C,EAxCF,CA0CF,EAQA4nC,EAAc7wD,UAAUqhE,cAAgB,SAAUxP,GAChD,OAAIvyD,KAAK6rC,OAAO2rB,mBAAmBjF,GAC1BuO,EAAyB9gE,KAAKk0D,OAAQ3B,GACpCvyD,KAAK6rC,OAAO6rB,mBAAmBnF,GACjCuO,EAAyB9gE,KAAKm0D,kBAAmB5B,QADnD,CAKT,EA+BAhB,EAAc7wD,UAAUshE,eAAiB,WACvC,IAAIzhD,EAAQvgB,KAAK6rC,OAEbsB,EAAUntC,KACViiE,EAAM,GAoEV,OAlEAt6D,OAAO0J,KAAKkP,EAAM8zC,mBAAmBxiD,SAAQ,SAAUiiC,GACrDvzB,EAAM8zC,kBAAkBvgB,GAAejiC,SAAQ,SAAU8F,GACvDsqD,EAAI3/D,KACFy+D,EAAcxgD,EAAO,QAASuzB,EAAen8B,EAAMw1B,EAAQ+mB,QAE/D,GACF,IAEAvsD,OAAO0J,KAAKkP,EAAM+zC,gBAAgBziD,SAAQ,SAAUiiC,GAClDvzB,EAAM+zC,eAAexgB,GAAejiC,SAAQ,SAAU8F,GACpDsqD,EAAI3/D,KACFy+D,EAAcxgD,EAAO,UAAWuzB,EAAen8B,EAAMw1B,EAAQ+mB,QAEjE,GACF,IAEAvsD,OAAO0J,KAAKkP,EAAMg0C,8BAA8B1iD,SAAQ,SACtDiiC,GAEAvzB,EAAMg0C,6BAA6BzgB,GAAejiC,SAAQ,SAAU8F,GAClEsqD,EAAI3/D,KACFy+D,EACExgD,EACA,cACAuzB,EACAn8B,EACAw1B,EAAQgnB,mBAGd,GACF,IAEAxsD,OAAO0J,KAAKkP,EAAMm0C,+BAA+B7iD,SAAQ,SACvDiiC,GAEAvzB,EAAMm0C,8BAA8B5gB,GAAejiC,SAAQ,SAAU8F,GACnEsqD,EAAI3/D,KAuEV,SAAmCie,EAAOuzB,EAAen8B,EAAMqpD,GAC7D,IAAIkB,EAAmB3hD,EAAMs5C,2BAA2B/lB,GACpD6lB,EAAYp5C,EAAMq5C,+BAA+BsI,GACjDr2D,EAAQ8L,EAAK9L,MAAM8tD,GACnBwI,EAAYna,EAAKgZ,GAAe,SAAUvL,GAC5C,OAAOA,EAAM99C,OAASm8B,CACxB,IAEI2hB,EAAQ5pD,EAAMjB,QAAO,SAAUw3D,EAAmBjG,GACpD,IAAIkG,EACFD,GACApa,EAAKoa,EAAkB95D,MAAM,SAAUwqD,GACrC,OAAOA,EAAEn7C,OAASwkD,CACpB,IACF,YAAoBh8D,IAAbkiE,EAAyBA,EAAWD,CAC7C,GAAGD,GAECxE,EAASlI,GAASA,EAAMkI,OAAU,EAClCd,EAAcpH,GAASA,EAAMoH,aAAe,EAC5CztB,EAAQqmB,GAASA,EAAMrmB,MAAS,GAEpC,MAAO,CACLnuC,KAAM,eACN6yC,cAAeA,EACfn8B,KAAMy3B,EACNuuB,MAAOA,EACPd,WAAYA,EAEhB,CAlGQjH,CACEr1C,EACAuzB,EACAn8B,EACAw1B,EAAQinB,oBAGd,GACF,IAEAzsD,OAAO0J,KAAKkP,EAAMi0C,oBAAoB3iD,SAAQ,SAAUiiC,GACtD,IAAIshB,EAAY70C,EAAMi0C,mBAAmB1gB,GACzCnsC,OAAO0J,KAAK+jD,GAAWvjD,SAAQ,SAAUwjD,GACvCD,EAAUC,GAAUxjD,SAAQ,SAAUjO,GACpCq+D,EAAI3/D,KAAK,CACPrB,KAAM,UACN6yC,cAAeA,EACfn8B,KAAM/T,EACN0+D,aAAc1+D,EACdyxD,SAAUA,GAEd,GACF,GACF,IAEA90C,EAAMk0C,eAAe5iD,SAAQ,SAAU8F,GACrCsqD,EAAI3/D,KAAK,CAAErB,KAAM,MAAO6yC,cAAe,QAASn8B,KAAMA,GACxD,IAEOsqD,CACT,EAsEAzhE,EAAOC,QAAU8wD,sCCxnCjB,IAAIxxD,EAAe,EAAQ,OAEvB2xD,EAAgB,EAAQ,OACxBgM,EAAmB,0BACnB7L,EAAW,EAAQ,OACnB2B,EAAQ,EAAQ,OAChBtB,EAAgB,EAAQ,OACxBC,EAAO,EAAQ,OACfoQ,EAAiB,EAAQ,OACzBjR,EAAmB,EAAQ,OAC3BC,EAAgB,EAAQ,OACxBrD,EAAU,EAAQ,OAyGtB,SAASmD,EAAoBI,EAAQ12C,EAAO3T,GACJ,mBAA3BqqD,EAAO+Q,iBAChB/Q,EAAO+Q,gBAAgB,cAAgBtU,EAAU,KAGnDluD,KAAKyiE,UAAUhR,GACf,IAAI/rB,EAAOt+B,GAAW,CAAC,EACvBs+B,EAAK3qB,MAAQA,EACb/a,KAAKugB,MAAQ+wC,EAAiBkE,KAAK9vB,GACnC1lC,KAAK4xD,YAAc,KACnB5xD,KAAK0iE,SAAW,EAChB1iE,KAAK2iE,sBAAwB,EAC7B3iE,KAAK4iE,eAAiB,GACtB5iE,KAAK6iE,kBAAoB,CAC3B,CAszBA,SAASC,EAAejM,GACtB,GAAIA,EAAO,EAAG,MAAM,IAAIl1D,MAAM,2BAO9B,OALA3B,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMo2C,QAAQE,GAC1BmM,aAAa,IAGRhjE,IACT,CA8MA,SAASijE,IACP,OAAOjjE,KAAKugB,MAAMs2C,IACpB,CA7gCAhF,EAASR,EAAqBtxD,GAa9BsxD,EAAoB3wD,UAAUwiE,OAAS,WAErC,OADAljE,KAAKmjE,QAAQ,CAAEC,wBAAwB,IAChCpjE,IACT,EAEAqxD,EAAoB3wD,UAAU2iE,6BAA+B,WAE3D,OADArjE,KAAKmjE,QAAQ,CAAEC,wBAAwB,IAChCpjE,IACT,EAOAqxD,EAAoB3wD,UAAU4iE,SAAW,WACvC,IAAI/iD,EAAQvgB,KAAKugB,MACjB,OAAOgiD,EAAegB,qBAAqBhjD,EAC7C,EAsCA8wC,EAAoB3wD,UAAU8iE,WAAa,SAAUp8D,EAASq8D,GAC5D,IAAIC,EAAat8D,EAEbpH,KAAKugB,MAAM81C,mBAAmBjvD,GAD9BpH,KAAKugB,MAELojD,EAAUpB,EAAeqB,YAAYF,EAAU3oD,MAAO2oD,GAEtD/rC,EAAO33B,KAQX,GANAA,KAAK6iE,oBAEL7iE,KAAKgB,KAAK,aAAc,CACtBuf,MAAOmjD,KAGLD,EAuBJ,OAAOzjE,KAAKyxD,OAAOyR,OAAOS,GAAS/kC,MACjC,SAAUgS,GAGR,OAFAjZ,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBAAyBlrC,EAAK32B,KAAK,oBACrC,CACL4vC,QAAS,IAAI2gB,EAAcmS,EAAW9yB,EAAQzD,SAC9C5sB,MAAOmjD,EACPG,kBAAmBjzB,EAEvB,IACA,SAAUzZ,GAGR,MAFAQ,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBAAyBlrC,EAAK32B,KAAK,oBACtCm2B,CACR,IApCAn3B,KAAKyxD,OACFyR,OAAOS,GACP/kC,MAAK,SAAUgS,GACdjZ,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBACPlrC,EAAK32B,KAAK,oBAGZyiE,EAAG,KAAM,IAAIlS,EAAcmS,EAAW9yB,EAAQzD,SAAUu2B,EAC1D,IACC3qC,OAAM,SAAUn3B,GACf+1B,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBACPlrC,EAAK32B,KAAK,oBAGZyiE,EAAG7hE,EAAK,KAAM8hE,EAChB,GAqBN,EAaArS,EAAoB3wD,UAAUojE,YAAc,SAAU18D,GAEpD5E,QAAQyxD,KAAK,yDACb,IAAI1zC,EAAQvgB,KAAKugB,MACbwjD,EAAgB/jE,KAAK4iE,eAAe,GACxC,IAAKmB,EACH,OAAO17C,QAAQC,QAAQ,IAEzB,IAAI07C,EAAeD,EAAchS,iBAAiBxxC,GAC9CjY,EAAOkrD,EACT,CACEyQ,wBAAyB78D,EAAQ68D,wBACjCC,OAAQ98D,EAAQ88D,QAElB,CACE3mC,OAAQ40B,EAAKoQ,EAAegB,qBAAqBS,GAAe,CAC9D,sBACA,cACA,+BACA,0BAKFG,EACF,8GACF,GAAqC,mBAA1BnkE,KAAKyxD,OAAO2S,UACrB,MAAM,IAAIziE,MAAMwiE,GAElB,IAAIppD,EAAQ/a,KAAKyxD,OAAO2S,UAAUJ,EAAajpD,OAC/C,GAAiC,mBAAtBA,EAAM+oD,YACf,MAAM,IAAIniE,MAAMwiE,GAElB,OAAOppD,EAAM+oD,YAAYE,EAAatN,MAAOtvD,EAAQi9D,eAAgB/7D,EACvE,EAoCA+oD,EAAoB3wD,UAAU4jE,qBAAuB,SACnD7O,EACAiB,EACA6N,EACAC,GAEA,IAAIC,EAA4D,mBAArCzkE,KAAKyxD,OAAO6S,qBACnCI,EAAsD,mBAA1B1kE,KAAKyxD,OAAO2S,UAC5C,IACGK,IACAC,GAC6B,mBAAvB1kE,KAAKyxD,OAAOyR,OAEnB,MAAM,IAAIvhE,MACR,yKAIJ,IAAI4e,EAAQvgB,KAAKugB,MAAM81C,mBAAmBmO,GAAa,CAAC,GACpDG,EAAgBpkD,EAAMm3C,mBAAmBjC,GACzCmP,EAAerC,EAAesC,uBAChCpP,EACAiB,EACA6N,EACAhkD,GAGFvgB,KAAK6iE,oBAEL,IACIiC,EADAntC,EAAO33B,KAoCX,OAjCIykE,EACFK,EAA8B9kE,KAAKyxD,OAAO6S,qBAAqB,CAC7D,CAAES,UAAWxkD,EAAMxF,MAAOwiB,OAAQqnC,KAG3BF,EACTI,EAA8B9kE,KAAKyxD,OAChC2S,UAAU7jD,EAAMxF,OAChBupD,qBAAqBM,WAIjBA,EAAarN,UACpBuN,EAA8B9kE,KAAKyxD,OAChCyR,OAAO,CACN,CACEjiE,KAAM,QACNw0D,MAAOA,EACPsP,UAAWxkD,EAAMxF,MACjBwiB,OAAQqnC,KAGXhmC,MAAK,SAAyBomC,GAC7B,OAAOA,EAAS73B,QAAQ,EAC1B,KAGJntC,KAAKgB,KAAK,uBAAwB,CAChCuf,MAAOA,EACPk1C,MAAOA,EACPiB,MAAOA,IAGFoO,EAA4BlmC,MACjC,SAAsBgS,GAapB,OAZAjZ,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBAAyBlrC,EAAK32B,KAAK,qBAE5C4vC,EAAU7uC,MAAMgpB,QAAQ6lB,GAAWA,EAAQ,GAAKA,GAExCq0B,UAAUpzD,SAAQ,SAAUihD,GAClCA,EAAE2K,aAAeC,EAAiB5K,EAAElvD,OACpCkvD,EAAEN,UAAYmS,EACVpkD,EAAM85C,0BAA0B5E,EAAO3C,EAAE2K,cACzCl9C,EAAM45C,eAAe1E,EAAO3C,EAAE2K,aACpC,IAEO7sB,CACT,IACA,SAAUzZ,GAGR,MAFAQ,EAAKkrC,oBAC0B,IAA3BlrC,EAAKkrC,mBAAyBlrC,EAAK32B,KAAK,oBACtCm2B,CACR,GAEJ,EAWAk6B,EAAoB3wD,UAAU81D,SAAW,SAAU0O,GAMjD,OALAllE,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYlF,SAAS0O,GACvClC,aAAa,IAGRhjE,IACT,EAyBAqxD,EAAoB3wD,UAAUm1D,iBAAmB,SAAUl+C,GAMzD,OALA3X,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAY7F,iBAAiBl+C,GAC/CqrD,aAAa,IAGRhjE,IACT,EAUAqxD,EAAoB3wD,UAAU41D,UAAY,WAMxC,OALAt2D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYpF,YAC9B0M,aAAa,IAGRhjE,IACT,EAaAqxD,EAAoB3wD,UAAUi4D,8BAAgC,SAC5DlD,EACA7xD,GAOA,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAY/C,8BAA8BlD,EAAO7xD,GACnEo/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAUykE,qBAAuB,WACnD,OAAOnlE,KAAK24D,8BAA8B12D,MAAMjC,KAAM0B,UACxD,EAeA2vD,EAAoB3wD,UAAUq5D,+BAAiC,SAC7DtE,EACArmB,GAOA,OALApvC,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAY3B,+BAA+BtE,EAAOrmB,GACpE4zB,aAAa,IAGRhjE,IACT,EAcAqxD,EAAoB3wD,UAAU02D,qBAAuB,SACnD7E,EACA8C,EACAzxD,GASA,OAPA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MACTm7C,YACAtE,qBAAqB7E,EAAW8C,EAAUzxD,GAC7Co/D,aAAa,IAGRhjE,IACT,EAaAqxD,EAAoB3wD,UAAU+3D,mBAAqB,SAAUhD,EAAO7xD,GAMlE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYjD,mBAAmBhD,EAAO7xD,GACxDo/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAU0kE,UAAY,WACxC,OAAOplE,KAAKy4D,mBAAmBx2D,MAAMjC,KAAM0B,UAC7C,EAaA2vD,EAAoB3wD,UAAU2kE,kBAAoB,SAAU5P,EAAO7xD,GAMjE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYhD,qBAAqBjD,EAAO7xD,GAC1Do/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAU4kE,WAAa,WACzC,OAAOtlE,KAAKqlE,kBAAkBpjE,MAAMjC,KAAM0B,UAC5C,EAYA2vD,EAAoB3wD,UAAU6kE,OAAS,SAAUz0B,GAM/C,OALA9wC,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAY9C,iBAAiB9nB,GAC/CkyB,aAAa,IAGRhjE,IACT,EAoBAqxD,EAAoB3wD,UAAUk3D,wBAA0B,SACtDrF,EACA8C,EACAzxD,GASA,OAPA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MACTm7C,YACA9D,wBAAwBrF,EAAW8C,EAAUzxD,GAChDo/D,aAAa,IAGRhjE,IACT,EAgBAqxD,EAAoB3wD,UAAU04D,iCAAmC,SAC/D3D,EACA7xD,GASA,OAPA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MACTm7C,YACAtC,iCAAiC3D,EAAO7xD,GAC3Co/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAU8kE,wBAA0B,WACtD,OAAOxlE,KAAKo5D,iCAAiCn3D,MAAMjC,KAAM0B,UAC3D,EAUA2vD,EAAoB3wD,UAAUu5D,kCAAoC,SAChExE,GAOA,OALAz1D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYzB,kCAAkCxE,GAChEuN,aAAa,IAGRhjE,IACT,EAgBAqxD,EAAoB3wD,UAAUw4D,sBAAwB,SAAUzD,EAAO7xD,GAMrE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYxC,sBAAsBzD,EAAO7xD,GAC3Do/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAU+kE,aAAe,WAC3C,OAAOzlE,KAAKk5D,sBAAsBj3D,MAAMjC,KAAM0B,UAChD,EAgBA2vD,EAAoB3wD,UAAUglE,qBAAuB,SAAUjQ,EAAO7xD,GAMpE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYvC,wBAAwB1D,EAAO7xD,GAC7Do/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAUilE,cAAgB,WAC5C,OAAO3lE,KAAK0lE,qBAAqBzjE,MAAMjC,KAAM0B,UAC/C,EAYA2vD,EAAoB3wD,UAAUklE,UAAY,SAAU90B,GAMlD,OALA9wC,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYrC,oBAAoBvoB,GAClDkyB,aAAa,IAGRhjE,IACT,EAaAqxD,EAAoB3wD,UAAUmlE,qBAAuB,SAAUpQ,EAAO7xD,GAMpE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYhC,6BAA6BjE,EAAO7xD,GAClEo/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAUolE,cAAgB,WAC5C,OAAO9lE,KAAK6lE,qBAAqB5jE,MAAMjC,KAAM0B,UAC/C,EAiBA2vD,EAAoB3wD,UAAUqyD,iBAAmB,SAAU0C,EAAO7xD,GAChE,OAAO5D,KAAKu5D,sBAAsB9D,EAAO7xD,EAC3C,EAgBAytD,EAAoB3wD,UAAU64D,sBAAwB,SAAU9D,EAAO7xD,GAMrE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYnC,sBAAsB9D,EAAO7xD,GAC3Do/D,aAAa,IAGRhjE,IACT,EAMAqxD,EAAoB3wD,UAAUqlE,aAAe,WAC3C,OAAO/lE,KAAKu5D,sBAAsBt3D,MAAMjC,KAAM0B,UAChD,EAYA2vD,EAAoB3wD,UAAUslE,UAAY,SAAUl1B,GAMlD,OALA9wC,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYxB,oBAAoBppB,GAClDkyB,aAAa,IAGRhjE,IACT,EAWAqxD,EAAoB3wD,UAAUulE,SAAW,WACvC,IAAIpP,EAAO72D,KAAKugB,MAAMs2C,MAAQ,EAC9B,OAAO72D,KAAK22D,QAAQE,EAAO,EAC7B,EAWAxF,EAAoB3wD,UAAUwlE,aAAe,WAC3C,IAAIrP,EAAO72D,KAAKugB,MAAMs2C,MAAQ,EAC9B,OAAO72D,KAAK22D,QAAQE,EAAO,EAC7B,EA4BAxF,EAAoB3wD,UAAUoiE,eAAiBA,EAU/CzR,EAAoB3wD,UAAUi2D,QAAUmM,EAWxCzR,EAAoB3wD,UAAU61D,SAAW,SAAU5+C,GAMjD,OALA3X,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYnF,SAAS5+C,GACvCqrD,aAAa,IAGRhjE,IACT,EAmBAqxD,EAAoB3wD,UAAUy6D,kBAAoB,SAAUC,EAAWx3D,GAMrE,OALA5D,KAAK+iE,QAAQ,CACXxiD,MAAOvgB,KAAKugB,MAAMm7C,YAAYP,kBAAkBC,EAAWx3D,GAC3Do/D,aAAa,IAGRhjE,IACT,EASAqxD,EAAoB3wD,UAAUylE,SAAW,SAAUC,GAMjD,OALApmE,KAAK+iE,QAAQ,CACXxiD,MAAO+wC,EAAiBkE,KAAK4Q,GAC7BpD,aAAa,IAGRhjE,IACT,EAmBAqxD,EAAoB3wD,UAAU2lE,0CAC5B,SAAUD,GAER,OADApmE,KAAKugB,MAAQ,IAAI+wC,EAAiB8U,GAC3BpmE,IACT,EAyBFqxD,EAAoB3wD,UAAU4lE,eAAiB,SAAU/T,GACvD,QAAIL,EAAclyD,KAAKugB,MAAMw3C,sBAAsBxF,MAExCvyD,KAAKugB,MAAMi3C,mBAAmBjF,GAChCvyD,KAAKugB,MAAM45C,eAAe5H,GACxBvyD,KAAKugB,MAAMm3C,mBAAmBnF,GAChCvyD,KAAKugB,MAAM85C,0BAA0B9H,KACnCvyD,KAAKugB,MAAMi4C,oBAAoBjG,IACjCvyD,KAAKugB,MAAMy5C,2BAA2BzH,GASjD,EAqBAlB,EAAoB3wD,UAAUy/D,WAAa,SAAU1K,EAAO7xD,GAC1D,OAAO5D,KAAKugB,MAAM65C,iBAAiB3E,EAAO7xD,EAC5C,EAMAytD,EAAoB3wD,UAAU6lE,qBAAuB,SAAU9Q,EAAO7xD,GACpE,OAAO5D,KAAKugB,MAAM85C,0BAA0B5E,EAAO7xD,EACrD,EAOAytD,EAAoB3wD,UAAU8lE,OAAS,SAAU11B,GAC/C,OAAO9wC,KAAKugB,MAAMs4C,aAAa/nB,EACjC,EAMAugB,EAAoB3wD,UAAUm4D,aAAe,WAC3C,OAAO74D,KAAKymE,kBAAkBxkE,MAAMjC,KAAM0B,UAC5C,EASA2vD,EAAoB3wD,UAAUgmE,SAAW,WACvC,OAAO1mE,KAAKugB,MAAMxF,KACpB,EAWAs2C,EAAoB3wD,UAAUuiE,eAAiBA,EAM/C5R,EAAoB3wD,UAAUimE,QAAU1D,EAOxC5R,EAAoB3wD,UAAUkmE,QAAU,WACtC,OAAO5mE,KAAKugB,MAAMk0C,cACpB,EA8CApD,EAAoB3wD,UAAUshE,eAAiB,SAAUzK,GACvD,IAAI+C,EAAc,GAElB,GAAIt6D,KAAKugB,MAAMi3C,mBAAmBD,GACVv3D,KAAKugB,MAAM+2C,0BAA0BC,GAE3C1lD,SAAQ,SAAUmjC,GAChCslB,EAAYh4D,KAAK,CACfsB,MAAOoxC,EACP/zC,KAAM,eAEV,IAEyBjB,KAAKugB,MAAMo3C,sBAAsBJ,GAEvC1lD,SAAQ,SAAUmjC,GACnCslB,EAAYh4D,KAAK,CACfsB,MAAOoxC,EACP/zC,KAAM,WAEV,SACK,GAAIjB,KAAKugB,MAAMm3C,mBAAmBH,GAAY,CAEjDv3D,KAAKugB,MAAMk3C,0BAA0BF,GAEhB1lD,SAAQ,SAAUmjC,GACvCslB,EAAYh4D,KAAK,CACfsB,MAAOoxC,EACP/zC,KAAM,eAEV,GACF,CAEA,IAAIuzD,EAAqBx0D,KAAKugB,MAAMw3C,sBAAsBR,GAY1D,OAVA5vD,OAAO0J,KAAKmjD,GAAoB3iD,SAAQ,SAAUwjD,GAChD,IAAIzxD,EAAQ4wD,EAAmBa,GAE/BiF,EAAYh4D,KAAK,CACfsB,MAAOA,EACPyxD,SAAUA,EACVp0D,KAAM,WAEV,IAEOq5D,CACT,EAQAjJ,EAAoB3wD,UAAUs3D,qBAAuB,SACnDzF,EACA8C,GAEA,OAAOr1D,KAAKugB,MAAMy3C,qBAAqBzF,EAAW8C,EACpD,EAOAhE,EAAoB3wD,UAAUu7D,+BAAiC,SAC7D1E,GAEA,OAAOv3D,KAAKugB,MAAM07C,+BAA+B1E,EACnD,EAcAlG,EAAoB3wD,UAAUyiE,QAAU,SAAU/7D,GAChD,IAAImZ,EAAQvgB,KAAKugB,MACbsmD,EAAS,GACTC,EAAc,GAEb1/D,EAAQg8D,yBACX0D,EAAcvE,EAAeqB,YAAYrjD,EAAMxF,MAAOwF,GAEtDsmD,EAAOvkE,KAAK,CACVie,MAAOA,EACPwmD,aAAcD,EAAYrlE,OAC1BulE,OAAQhnE,OAGVA,KAAKgB,KAAK,SAAU,CAClBuf,MAAOA,EACP4sB,QAASntC,KAAK4xD,eAIlB,IAAIqV,EAAiBjnE,KAAK4iE,eAAep+C,KAAI,SAAUu/C,GACrD,IAAIC,EAAeD,EAAchS,iBAAiBxxC,GAC9C2mD,EAAsBlD,EAAajpD,MACnCwnD,EAAeqB,YAAYI,EAAajpD,MAAOipD,GAC/C,GAaJ,OAXA6C,EAAOvkE,KAAK,CACVie,MAAOyjD,EACP+C,aAAcG,EAAoBzlE,OAClCulE,OAAQjD,IAGVA,EAAc/iE,KAAK,SAAU,CAC3Buf,MAAOyjD,EACP72B,QAAS42B,EAAcnS,cAGlBsV,CACT,IAEIvD,EAAU5hE,MAAMrB,UAAU6jB,OAAOtiB,MAAM6kE,EAAaG,GAEpDE,EAAUnnE,KAAK0iE,WAGnB,GAFA1iE,KAAK6iE,qBAEAc,EAAQliE,OACX,OAAO4mB,QAAQC,QAAQ,CAAE6kB,QAAS,KAAMvO,KACtC5+B,KAAKonE,yBAAyBlzD,KAAKlU,KAAM6mE,EAAQM,IAIrD,IACEnnE,KAAKyxD,OACFyR,OAAOS,GACP/kC,KAAK5+B,KAAKonE,yBAAyBlzD,KAAKlU,KAAM6mE,EAAQM,IACtDpuC,MAAM/4B,KAAKqnE,sBAAsBnzD,KAAKlU,KAAMmnE,GACjD,CAAE,MAAO3lE,GAEPxB,KAAKgB,KAAK,QAAS,CACjBQ,MAAOA,GAEX,CAGF,EAYA6vD,EAAoB3wD,UAAU0mE,yBAA2B,SACvDP,EACAM,EACAv2B,GAIA,KAAIu2B,EAAUnnE,KAAK2iE,sBAAnB,CAKA3iE,KAAK6iE,mBAAqBsE,EAAUnnE,KAAK2iE,qBACzC3iE,KAAK2iE,qBAAuBwE,EAEG,IAA3BnnE,KAAK6iE,mBAAyB7iE,KAAKgB,KAAK,oBAE5C,IAAImsC,EAAUyD,EAAQzD,QAAQnrC,QAE9B6kE,EAAOh1D,SAAQ,SAAU6jC,GACvB,IAAIn1B,EAAQm1B,EAAEn1B,MACVwmD,EAAerxB,EAAEqxB,aACjBC,EAAStxB,EAAEsxB,OACXM,EAAkBn6B,EAAQlqC,OAAO,EAAG8jE,GAEnCxmD,EAAMxF,OAQXisD,EAAOpV,YAAc,IAAIL,EAAchxC,EAAO+mD,GAE9CN,EAAOhmE,KAAK,SAAU,CACpBmsC,QAAS65B,EAAOpV,YAChBrxC,MAAOA,KAXPymD,EAAOhmE,KAAK,SAAU,CACpBmsC,QAAS,KACT5sB,MAAOA,GAWb,GA7BA,CA8BF,EAEA8wC,EAAoB3wD,UAAU2mE,sBAAwB,SACpDF,EACA3lE,GAEI2lE,EAAUnnE,KAAK2iE,uBAKnB3iE,KAAK6iE,mBAAqBsE,EAAUnnE,KAAK2iE,qBACzC3iE,KAAK2iE,qBAAuBwE,EAE5BnnE,KAAKgB,KAAK,QAAS,CACjBQ,MAAOA,IAGsB,IAA3BxB,KAAK6iE,mBAAyB7iE,KAAKgB,KAAK,oBAC9C,EAEAqwD,EAAoB3wD,UAAU6mE,mBAAqB,SACjD7Q,EACA8Q,EACAtR,EACAD,GAEA,OACES,GACwB,IAAxB8Q,EAAa/lE,QACa,IAA1By0D,EAAez0D,QACO,IAAtBw0D,EAAWx0D,MAEf,EAQA4vD,EAAoB3wD,UAAU+mE,2BAA6B,SAAUhS,GACnE,OACEz1D,KAAKugB,MAAMmnD,uBAAuBjS,IAClCz1D,KAAKugB,MAAMmnD,uBAAuBjS,GAAOh0D,OAAS,CAEtD,EAEA4vD,EAAoB3wD,UAAUqiE,QAAU,SAAUnwD,GAChD,IAAI2N,EAAQ3N,EAAM2N,MACdyiD,EAAcpwD,EAAMowD,YAEpBziD,IAAUvgB,KAAKugB,QACjBvgB,KAAKugB,MAAQA,EAEbvgB,KAAKgB,KAAK,SAAU,CAClBuf,MAAOvgB,KAAKugB,MACZ4sB,QAASntC,KAAK4xD,YACdoR,YAAaA,IAGnB,EAMA3R,EAAoB3wD,UAAUinE,WAAa,WAEzC,OADI3nE,KAAKyxD,OAAOkW,YAAY3nE,KAAKyxD,OAAOkW,aACjC3nE,IACT,EAQAqxD,EAAoB3wD,UAAU+hE,UAAY,SAAUmF,GAClD,OAAI5nE,KAAKyxD,SAAWmW,IAEqB,mBAA9BA,EAAUpF,iBACnBoF,EAAUpF,gBAAgB,cAAgBtU,EAAU,KAEtDluD,KAAKyxD,OAASmW,GALwB5nE,IAQxC,EAMAqxD,EAAoB3wD,UAAUmnE,UAAY,WACxC,OAAO7nE,KAAKyxD,MACd,EAqBAJ,EAAoB3wD,UAAUonE,OAAS,SAAUtoC,GAC/C,IAAIukC,EAAgB,IAAIrS,EAAc1xD,KAAMw/B,GAE5C,OADAx/B,KAAK4iE,eAAetgE,KAAKyhE,GAClBA,CACT,EAUA1S,EAAoB3wD,UAAUoxD,oBAAsB,SAAUiS,GAC5D,IAAI9tC,EAAMj2B,KAAK4iE,eAAej2D,QAAQo3D,GACtC,IAAa,IAAT9tC,EAAY,MAAM,IAAIt0B,MAAM,mCAChC3B,KAAK4iE,eAAe3/D,OAAOgzB,EAAK,EAClC,EAMAo7B,EAAoB3wD,UAAUqnE,mBAAqB,WACjD,OAAO/nE,KAAK6iE,kBAAoB,CAClC,EAkBAriE,EAAOC,QAAU4wD,kCC7jDjB7wD,EAAOC,QAAU,SAAiB4qB,GAChC,OAAKtpB,MAAMgpB,QAAQM,GAIZA,EAAM5jB,OAAO4O,SAHX,EAIX,kCCJA7V,EAAOC,QAAU,WAGf,OAFcsB,MAAMrB,UAAUsB,MAAMF,KAAKJ,WAE1BsmE,aAAY,SAAU18D,EAAK+rB,GAWxC,OAVA1vB,OAAO0J,KAAK1J,OAAO0vB,IAASxlB,SAAQ,SAAU1O,QACxBhD,IAAhBk3B,EAAOl0B,UAGMhD,IAAbmL,EAAInI,WAECmI,EAAInI,GAEbmI,EAAInI,GAAOk0B,EAAOl0B,GACpB,IACOmI,CACT,GAAG,CAAC,EACN,kCCMA9K,EAAOC,QAAU,CACfi9D,iBAnBF,SAA0B95D,GACxB,MAAqB,iBAAVA,EAA2BA,EAE/BuyB,OAAOvyB,GAAOqzB,QAAQ,KAAM,MACrC,EAgBE2mC,mBARF,SAA4Bh6D,GAC1B,MAAqB,iBAAVA,EAA2BA,EAE/BA,EAAMqzB,QAAQ,OAAQ,IAC/B,kCCrBAz2B,EAAOC,QAAU,SAAc4qB,EAAO48C,GACpC,GAAKlmE,MAAMgpB,QAAQM,GAInB,IAAK,IAAI/pB,EAAI,EAAGA,EAAI+pB,EAAM5pB,OAAQH,IAChC,GAAI2mE,EAAW58C,EAAM/pB,IACnB,OAAO+pB,EAAM/pB,EAKnB,kCCZAd,EAAOC,QAAU,SAAc4qB,EAAO48C,GACpC,IAAKlmE,MAAMgpB,QAAQM,GACjB,OAAQ,EAGV,IAAK,IAAI/pB,EAAI,EAAGA,EAAI+pB,EAAM5pB,OAAQH,IAChC,GAAI2mE,EAAW58C,EAAM/pB,IACnB,OAAOA,EAGX,OAAQ,CACV,sCCZA,IAAI0mD,EAAO,EAAQ,MAQnBxnD,EAAOC,QAAU,SAAoBm7D,EAAQp4B,GAC3C,IAAI0kC,GAAuB1kC,GAAY,IAAIhf,KAAI,SAAUhb,GACvD,OAAOA,EAAKqC,MAAM,IACpB,IAEA,OAAO+vD,EAAOhxD,QACZ,SAA0BopB,EAAKxqB,GAC7B,IAAI2+D,EAAkB3+D,EAAKqC,MAAM,KAE7Bu8D,EAAkBpgB,EACpBkgB,GACA,SAAUG,GACR,OAAOA,EAAmB,KAAOF,EAAgB,EACnD,IAGF,OAAIA,EAAgB1mE,OAAS,IAAM2mE,GACjCp0C,EAAI,GAAG1xB,KAAK6lE,EAAgB,IAC5Bn0C,EAAI,GAAG1xB,KAAK6lE,EAAgB,IACrBn0C,IAGTA,EAAI,GAAG1xB,KAAK8lE,EAAgB,IAC5Bp0C,EAAI,GAAG1xB,KAAK8lE,EAAgB,IACrBp0C,EACT,GACA,CAAC,GAAI,IAET,kCCzBAxzB,EAAOC,QAXP,SAAkB6nE,EAAMC,GACtBD,EAAK5nE,UAAYiH,OAAOu0B,OAAOqsC,EAAU7nE,UAAW,CAClDwQ,YAAa,CACXtN,MAAO0kE,EACP52D,YAAY,EACZk1B,UAAU,EACVD,cAAc,IAGpB,kCCAAnmC,EAAOC,QATP,SAAsB+nE,EAAM3vB,GAC1B,OAAO2vB,EAAK/gE,QAAO,SAAU7D,EAAOmX,GAClC,OACE89B,EAAKlsC,QAAQ/I,IAAU,GACvB4kE,EAAK77D,QAAQ/I,KAAWmX,CAE5B,GACF,kCCAA,SAAS0tD,EAA0B7kE,GACjC,MACmB,mBAAVA,GACP7B,MAAMgpB,QAAQnnB,IAC4B,oBAA1C+D,OAAOjH,UAAU4tB,SAASxsB,KAAK8B,EAEnC,CAEA,SAAS8kE,EAAO/+D,EAAQ0tB,GACtB,GAAI1tB,IAAW0tB,EACb,OAAO1tB,EAIT,IAAK,IAAIxG,KAAOk0B,EACd,GACG1vB,OAAOjH,UAAU+2B,eAAe31B,KAAKu1B,EAAQl0B,IACtC,cAARA,GACQ,gBAARA,EAHF,CASA,IAAIwlE,EAAYtxC,EAAOl0B,GACnBylE,EAAYj/D,EAAOxG,QAEE,IAAdylE,QAAkD,IAAdD,IAM7CF,EAA0BG,IAC1BH,EAA0BE,GAE1Bh/D,EAAOxG,GAAOulE,EAAOE,EAAWD,GAEhCh/D,EAAOxG,GA5CU,iBADRS,EA6CW+kE,IA5CmB,OAAV/kE,EACxB8kE,EAAO3mE,MAAMgpB,QAAQnnB,GAAS,GAAK,CAAC,EAAGA,GAEzCA,EAyBL,CA7BJ,IAAeA,EAgDb,OAAO+F,CACT,CAgCAnJ,EAAOC,QAfP,SAAekJ,GACR8+D,EAA0B9+D,KAC7BA,EAAS,CAAC,GAGZ,IAAK,IAAIrI,EAAI,EAAGunE,EAAInnE,UAAUD,OAAQH,EAAIunE,EAAGvnE,IAAK,CAChD,IAAI+1B,EAAS31B,UAAUJ,GAEnBmnE,EAA0BpxC,IAC5BqxC,EAAO/+D,EAAQ0tB,EAEnB,CACA,OAAO1tB,CACT,kCC3EAnJ,EAAOC,QAJP,SAAuBm8B,GACrB,OAAOA,GAAOj1B,OAAO0J,KAAKurB,GAAKn7B,OAAS,CAC1C,kCCcAjB,EAAOC,QAfP,SAAuC42B,EAAQ+gB,GAC7C,GAAe,OAAX/gB,EAAiB,MAAO,CAAC,EAC7B,IAEIl0B,EACA7B,EAHAqI,EAAS,CAAC,EACV0uC,EAAa1wC,OAAO0J,KAAKgmB,GAG7B,IAAK/1B,EAAI,EAAGA,EAAI+2C,EAAW52C,OAAQH,IACjC6B,EAAMk1C,EAAW/2C,GAEb82C,EAASzrC,QAAQxJ,IAAQ,IAC7BwG,EAAOxG,GAAOk0B,EAAOl0B,IAEvB,OAAOwG,CACT,kCCdA,SAASm/D,EAAiBllE,EAAOmlE,GAC/B,GAAInlE,IAAUmlE,EAAO,CACnB,IAAIC,OAAyB7oE,IAAVyD,EACfqlE,EAAsB,OAAVrlE,EAEZslE,OAAyB/oE,IAAV4oE,EACfI,EAAsB,OAAVJ,EAEhB,IACII,GAAavlE,EAAQmlE,GACtBE,GAAaC,IACbF,EAED,OAAO,EAET,IACIC,GAAarlE,EAAQmlE,GACtBI,GAAaH,IACbE,EAED,OAAQ,CAEZ,CACA,OAAO,CACT,CAqDA1oE,EAAOC,QA7CP,SAAiB2oE,EAAYC,EAAWC,GACtC,IAAKvnE,MAAMgpB,QAAQq+C,GACjB,MAAO,GAGJrnE,MAAMgpB,QAAQu+C,KACjBA,EAAS,IAGX,IAAI9tC,EAAS4tC,EAAW5kD,KAAI,SAAU5gB,EAAOmX,GAC3C,MAAO,CACLwuD,SAAUF,EAAU7kD,KAAI,SAAUglD,GAChC,OAAO5lE,EAAM4lE,EACf,IACAzuD,MAAOA,EACPnX,MAAOA,EAEX,IAuBA,OArBA43B,EAAOhyB,MAAK,SAAkBgpB,EAAQu2C,GAGpC,IAFA,IAAIhuD,GAAS,IAEJA,EAAQyX,EAAO+2C,SAAS9nE,QAAQ,CACvC,IAAIwgE,EAAM6G,EAAiBt2C,EAAO+2C,SAASxuD,GAAQguD,EAAMQ,SAASxuD,IAClE,GAAIknD,EACF,OAAIlnD,GAASuuD,EAAO7nE,OACXwgE,EAEa,SAAlBqH,EAAOvuD,IACDknD,EAEHA,CAEX,CAIA,OAAOzvC,EAAOzX,MAAQguD,EAAMhuD,KAC9B,IAEOygB,EAAOhX,KAAI,SAAUy9C,GAC1B,OAAOA,EAAIr+D,KACb,GACF,kCC7DApD,EAAOC,QAdP,SAASgzD,EAAYrF,GACnB,GAAiB,iBAANA,EACT,OAAOA,EACF,GAAiB,iBAANA,EAChB,OAAO1hD,WAAW0hD,GACb,GAAIrsD,MAAMgpB,QAAQqjC,GACvB,OAAOA,EAAE5pC,IAAIivC,GAGf,MAAM,IAAI9xD,MACR,wEAEJ,sCCZA,IAAI6xD,EAAQ,EAAQ,OAEpB,SAASiW,EAAW7sC,GAClB,OAAOj1B,OAAO0J,KAAKurB,GAChBpzB,OACAoB,QAAO,SAAUU,EAAKo+D,GAErB,OADAp+D,EAAIo+D,GAAQ9sC,EAAI8sC,GACTp+D,CACT,GAAG,CAAC,EACR,CAEA,IAAIi3D,EAAiB,CASnBqB,YAAa,SAAoB7oD,EAAOwF,GACtC,IAAIojD,EAAU,GAoGd,OAjGAA,EAAQrhE,KAAK,CACXyiE,UAAWhqD,EACXwiB,OAAQglC,EAAegB,qBAAqBhjD,KAI9CA,EAAMo6C,8BAA8B9oD,SAAQ,SAAUkuD,GACpD4D,EAAQrhE,KAAK,CACXyiE,UAAWhqD,EACXwiB,OAAQglC,EAAeoH,iCACrBppD,EACAw/C,IAGN,IAGAx/C,EAAMs6C,+BAA+BhpD,SAAQ,SAAUkuD,GACrD,IAAIxH,EAAoBh4C,EAAMs5C,2BAA2BkG,GACrDpK,EAAoBp1C,EAAMq1C,0BAA0BmK,GACpDpG,EAAYp5C,EAAMq5C,+BAA+BrB,GAIrD,GACE5C,EAAkBl0D,OAAS,GAC3Bk0D,EAAkB,GAAG9pD,MAAM8tD,GAAWl4D,OAAS,EAC/C,CAEA,IAAImoE,EAAajU,EAAkB,GAChC9pD,MAAM8tD,GACN33D,MAAM,GAAI,GACV4I,QAAO,SAA0B4Z,EAAKqlD,EAAS5M,GAC9C,OAAOz4C,EAAID,OAAO,CAChBguC,UAAWgG,EAAkB5uC,WAAWszC,GACxCr5D,MACY,IAAVq5D,EACI4M,EACA,CAACrlD,EAAIA,EAAI/iB,OAAS,GAAGmC,MAAOimE,GAASp2C,KAAKkmC,IAEpD,GAAG,IAELiQ,EAAW/3D,SAAQ,SAAUpK,EAAQw1D,GACnC,IAAI1/B,EAASglC,EAAeoH,iCAC1BppD,EACA9Y,EAAO8qD,UACG,IAAV0K,GAIF,SAAS6M,EAA2BlmE,GAClC,OAAO20D,EAAkB5uC,WAAWlc,MAAK,SAAU8kD,GACjD,OAAOA,IAAc3uD,EAAMiI,MAAM,KAAK,EACxC,GACF,CAEA,IAAIk+D,GAAwBxsC,EAAOiqC,cAAgB,IAAI58D,QACrD,SAAUU,EAAK0+D,GACb,GAAIjoE,MAAMgpB,QAAQi/C,GAAc,CAC9B,IAAIvmC,EAAWumC,EAAYviE,QAAO,SAAUwiE,GAC1C,OAAQH,EAA2BG,EACrC,IAEIxmC,EAAShiC,OAAS,GACpB6J,EAAIhJ,KAAKmhC,EAEb,CASA,MANyB,iBAAhBumC,GACNF,EAA2BE,IAE5B1+D,EAAIhJ,KAAK0nE,GAGJ1+D,CACT,GACA,IAGEo0C,EAASkqB,EAAW3M,EAAQ,GAE9B1/B,EAAOiqC,aADLvK,EAAQ,EACY8M,EAAqBxlD,OACzCm7B,EAAO6S,UAAY,IAAM7S,EAAO97C,OAIhCmmE,EAAqBtoE,OAAS,EAC1BsoE,OACA5pE,EAGRwjE,EAAQrhE,KAAK,CAAEyiE,UAAWhqD,EAAOwiB,OAAQA,GAC3C,GACF,CACF,IAEOomC,CACT,EAQAJ,qBAAsB,SAAUhjD,GAC9B,IAAI2zC,EAAS3zC,EAAM2zC,OAChB3vC,OAAOhE,EAAM4zC,mBACb5vC,OAAOg+C,EAAe2H,qCAAqC3pD,IAC3D/W,OAECg+D,EAAejF,EAAe4H,iBAAiB5pD,GAC/C21C,EAAiBqM,EAAe6H,mBAAmB7pD,GACnD01C,EAAasM,EAAe8H,eAAe9pD,GAC3C+pD,EAAmB,CACrBpW,OAAQA,EAAOvnD,QAAQ,MAAQ,EAAI,CAAC,KAAOunD,EAC3C+B,WAAYA,GAWd,OARIuR,EAAa/lE,OAAS,IACxB6oE,EAAiB9C,aAAeA,GAG9BtR,EAAez0D,OAAS,IAC1B6oE,EAAiBpU,eAAiBA,GAG7BuT,EAAWjW,EAAM,CAAC,EAAGjzC,EAAM06C,iBAAkBqP,GACtD,EAUAX,iCAAkC,SAChCppD,EACAk1C,EACA8U,GAEA,IAAI/C,EAAejF,EAAe4H,iBAChC5pD,EACAk1C,EACA8U,GAEErU,EAAiBqM,EAAe6H,mBAAmB7pD,EAAOk1C,GAC1DQ,EAAasM,EAAe8H,eAAe9pD,GAC3C+pD,EAAmB,CACrBrT,YAAa,EACbJ,KAAM,EACN2T,WAAW,EACXC,gBAAgB,GAGdxU,EAAWx0D,OAAS,IACtB6oE,EAAiBrU,WAAaA,GAGhC,IAAIsC,EAAoBh4C,EAAMs5C,2BAA2BpE,GAqBzD,OAlBE6U,EAAiBpW,OADfqE,EAEAgK,EAAemI,0CACbnqD,EACAg4C,EACAgS,GAGsB9U,EAGxBS,EAAez0D,OAAS,IAC1B6oE,EAAiBpU,eAAiBA,GAGhCsR,EAAa/lE,OAAS,IACxB6oE,EAAiB9C,aAAeA,GAG3BiC,EAAWjW,EAAM,CAAC,EAAGjzC,EAAM06C,iBAAkBqP,GACtD,EASAF,mBAAoB,SAAU7pD,EAAOg3C,GACnC,GAAIh3C,EAAM21C,eACR,OAAO31C,EAAM21C,eAGf,IAAIA,EAAiB,GAqBrB,OAnBAvuD,OAAO0J,KAAKkP,EAAMi0C,oBAAoB3iD,SAAQ,SAAU0gD,GACtD,IAAI6C,EAAY70C,EAAMi0C,mBAAmBjC,IAAc,CAAC,EACxD5qD,OAAO0J,KAAK+jD,GAAWvjD,SAAQ,SAAUwjD,GACvC,IAAIx2C,EAASu2C,EAAUC,IAAa,GAChCkC,IAAchF,GAChB1zC,EAAOhN,SAAQ,SAAUjO,GACvB,GAAI7B,MAAMgpB,QAAQnnB,GAAQ,CACxB,IAAI+mE,EAAK/mE,EAAM4gB,KAAI,SAAU4pC,GAC3B,OAAOmE,EAAY8C,EAAWjH,CAChC,IACA8H,EAAe5zD,KAAKqoE,EACtB,MACEzU,EAAe5zD,KAAKiwD,EAAY8C,EAAWzxD,EAE/C,GAEJ,GACF,IAEOsyD,CACT,EAQAmU,eAAgB,SAAU9pD,GACxB,OAAIA,EAAM01C,WACD11C,EAAM01C,WAGR11C,EAAMk0C,eAAehhC,KAAK,IACnC,EAWA02C,iBAAkB,SAAU5pD,EAAOk1C,EAAO8U,GACxC,IAAI/C,EAAe,GAEfnT,EAAoB9zC,EAAM8zC,mBAAqB,CAAC,EACpD1sD,OAAO0J,KAAKgjD,GACT7qD,OACAqI,SAAQ,SAAU0lD,IACClD,EAAkBkD,IAAc,IACtC/tD,OAAOqI,SAAQ,SAAUsrD,GACnCqK,EAAallE,KAAKi1D,EAAY,IAAM4F,EACtC,GACF,IAEF,IAAI7I,EAAiB/zC,EAAM+zC,gBAAkB,CAAC,EAC9C3sD,OAAO0J,KAAKijD,GACT9qD,OACAqI,SAAQ,SAAU0lD,IACCjD,EAAeiD,IAAc,IACnC/tD,OAAOqI,SAAQ,SAAUsrD,GACnCqK,EAAallE,KAAKi1D,EAAY,KAAO4F,EACvC,GACF,IAEF,IAAI5I,EAA+Bh0C,EAAMg0C,8BAAgC,CAAC,EAC1E5sD,OAAO0J,KAAKkjD,GACT/qD,OACAqI,SAAQ,SAAU0lD,GACjB,IAAI6J,EAAc7M,EAA6BgD,IAAc,GAC7D,GAAIA,IAAc9B,GAAU2L,GAAsC,IAAvBA,EAAY3/D,OAAvD,CAGA,IAAImpE,EAAY,GAEhBxJ,EAAY53D,OAAOqI,SAAQ,SAAUsrD,GACnCyN,EAAUtoE,KAAKi1D,EAAY,IAAM4F,EACnC,IAEAqK,EAAallE,KAAKsoE,EAPlB,CAQF,IAEF,IAAIlW,EACFn0C,EAAMm0C,+BAAiC,CAAC,EAmD1C,OAlDA/sD,OAAO0J,KAAKqjD,GACTlrD,OACAqI,SAAQ,SAAU0lD,GACjB,IACI4F,GADczI,EAA8B6C,IAAc,IACjC,GAE7B,QAAmBp3D,IAAfg9D,EAAJ,CAIA,IAGI0N,EACAC,EAJAvS,EAAoBh4C,EAAMs5C,2BAA2BtC,GACrDoC,EAAYp5C,EAAMq5C,+BAA+BrB,GACjD7C,EAAWn1C,EAAMs7C,yBAAyBtD,GAK9C,GAAI9C,IAAU8B,EAAW,CAGvB,IACqC,IAAnC4F,EAAWxwD,QAAQgtD,KACjBjE,IAAsC,IAA1B6U,GACb7U,GACCA,EAAS7pD,MAAM8tD,GAAWl4D,SACxB07D,EAAWtxD,MAAM8tD,GAAWl4D,OAEhC,OAGGi0D,GAIHoV,EAAkBpV,EAAS7pD,MAAM8tD,GAAWl4D,OAAS,EACrD07D,EAAazH,IAJboV,EAAkB3N,EAAWtxD,MAAM8tD,GAAWl4D,OAAS,EACvD07D,EAAaA,EAAWn7D,MAAM,EAAGm7D,EAAWrD,YAAYH,KAM1DkR,EAAoBtS,EAAkB5uC,WAAWmhD,EACnD,MACEA,EAAkB3N,EAAWtxD,MAAM8tD,GAAWl4D,OAAS,EAEvDopE,EAAoBtS,EAAkB5uC,WAAWmhD,GAG/CD,GACFrD,EAAallE,KAAK,CAACuoE,EAAoB,IAAM1N,GAtC/C,CAwCF,IAEKqK,CACT,EAEA0C,qCAAsC,SAAU3pD,GAG9C,OAAOA,EAAM6zC,mBAAmBxpD,QAE9B,SACEmgE,EACAxS,GAEA,IAAIyS,EAAyBzqD,EAAMq1C,0BACjC2C,EAAkB5gD,MAClB,GAGF,IAAKqzD,EAEH,OADAD,EAAczoE,KAAKi2D,EAAkB5uC,WAAW,IACzCohD,EAGT,IAAIpR,EAAYp5C,EAAMq5C,+BAA+BrB,GACjD0E,EAAQ+N,EAAuBn/D,MAAM8tD,GAAWl4D,OAChDwpE,EAAgB1S,EAAkB5uC,WAAW3nB,MAAM,EAAGi7D,EAAQ,GAElE,OAAO8N,EAAcxmD,OAAO0mD,EAC9B,GAvBQ,GA0BZ,EAEAP,0CAA2C,SACzCnqD,EACAg4C,EACA2S,GAEA,IAAIvR,EAAYp5C,EAAMq5C,+BAA+BrB,GACrD,IAAkB,IAAd2S,EAAoB,CACtB,IAAIxV,EAAWn1C,EAAMs7C,yBAAyBtD,GAC1CsH,EAAiB,EAKrB,OAHInK,IACFmK,EAAiBnK,EAAS7pD,MAAM8tD,GAAWl4D,QAEtC,CAAC82D,EAAkB5uC,WAAWk2C,GACvC,CAEA,IAKIsL,GAJF5qD,EAAMq1C,0BAA0B2C,EAAkB5gD,MAAM,IAAM,IAIvB9L,MAAM8tD,GAAWl4D,OAAS,EACnE,OAAO82D,EAAkB5uC,WAAW3nB,MAAM,EAAGmpE,EAAc,EAC7D,EAEAtG,uBAAwB,SAAUtN,EAAWb,EAAO6N,EAAchkD,GAChE,IAAI6qD,EAA+B7qD,EAAMm3C,mBAAmBH,GACxDh3C,EAAMs1C,iBAAiB0B,GACvBh3C,EACA8qD,EAAiC,CACnCC,WAAY5U,EACZa,UAAWA,GAKb,MAH4B,iBAAjBgN,IACT8G,EAA+B9G,aAAeA,GAEzCkF,EACLjW,EACE,CAAC,EACD+O,EAAegB,qBAAqB6H,GACpCC,GAGN,GAGF7qE,EAAOC,QAAU8hE,kCCvbjB/hE,EAAOC,QAAU,SAA0BuzD,GACzC,OAAkB,OAAdA,GAGG,wBAAwBrmD,KAAKqmD,EACtC,kCCLAxzD,EAAOC,QAAU,4BCDmDD,EAAOC,QAAgG,WAAY,aAAa,SAAS64D,EAAEA,EAAEniC,EAAE6d,GAAG,OAAO7d,KAAKmiC,EAAE3xD,OAAO4J,eAAe+nD,EAAEniC,EAAE,CAACvzB,MAAMoxC,EAAEtjC,YAAW,EAAGi1B,cAAa,EAAGC,UAAS,IAAK0yB,EAAEniC,GAAG6d,EAAEskB,CAAC,CAAC,SAASniC,EAAEmiC,EAAEniC,GAAG,IAAI6d,EAAErtC,OAAO0J,KAAKioD,GAAG,GAAG3xD,OAAOq/B,sBAAsB,CAAC,IAAInmC,EAAE8G,OAAOq/B,sBAAsBsyB,GAAGniC,IAAIt2B,EAAEA,EAAE4G,QAAO,SAAU0vB,GAAG,OAAOxvB,OAAOu/B,yBAAyBoyB,EAAEniC,GAAGzlB,UAAW,KAAIsjC,EAAE1yC,KAAKL,MAAM+yC,EAAEn0C,EAAE,CAAC,OAAOm0C,CAAC,CAAC,SAASA,EAAEA,GAAG,IAAI,IAAIn0C,EAAE,EAAEA,EAAEa,UAAUD,OAAOZ,IAAI,CAAC,IAAI0H,EAAE,MAAM7G,UAAUb,GAAGa,UAAUb,GAAG,CAAC,EAAEA,EAAE,EAAEs2B,EAAExvB,OAAOY,IAAG,GAAIsJ,SAAQ,SAAUslB,GAAGmiC,EAAEtkB,EAAE7d,EAAE5uB,EAAE4uB,GAAI,IAAGxvB,OAAOswC,0BAA0BtwC,OAAOuwC,iBAAiBlD,EAAErtC,OAAOswC,0BAA0B1vC,IAAI4uB,EAAExvB,OAAOY,IAAIsJ,SAAQ,SAAUynD,GAAG3xD,OAAO4J,eAAeyjC,EAAEskB,EAAE3xD,OAAOu/B,yBAAyB3+B,EAAE+wD,GAAI,GAAE,CAAC,OAAOtkB,CAAC,CAAC,SAASn0C,EAAEy4D,EAAEniC,GAAG,GAAG,MAAMmiC,EAAE,MAAM,CAAC,EAAE,IAAItkB,EAAEn0C,EAAE0H,EAAE,SAAS+wD,EAAEniC,GAAG,GAAG,MAAMmiC,EAAE,MAAM,CAAC,EAAE,IAAItkB,EAAEn0C,EAAE0H,EAAE,CAAC,EAAE2qC,EAAEvrC,OAAO0J,KAAKioD,GAAG,IAAIz4D,EAAE,EAAEA,EAAEqyC,EAAEzxC,OAAOZ,IAAIm0C,EAAE9B,EAAEryC,GAAGs2B,EAAExqB,QAAQqoC,IAAI,IAAIzsC,EAAEysC,GAAGskB,EAAEtkB,IAAI,OAAOzsC,CAAC,CAAnI,CAAqI+wD,EAAEniC,GAAG,GAAGxvB,OAAOq/B,sBAAsB,CAAC,IAAIkM,EAAEvrC,OAAOq/B,sBAAsBsyB,GAAG,IAAIz4D,EAAE,EAAEA,EAAEqyC,EAAEzxC,OAAOZ,IAAIm0C,EAAE9B,EAAEryC,GAAGs2B,EAAExqB,QAAQqoC,IAAI,GAAGrtC,OAAOjH,UAAU83C,qBAAqB12C,KAAKw3D,EAAEtkB,KAAKzsC,EAAEysC,GAAGskB,EAAEtkB,GAAG,CAAC,OAAOzsC,CAAC,CAAC,SAASA,EAAE+wD,EAAEniC,GAAG,OAAO,SAASmiC,GAAG,GAAGv3D,MAAMgpB,QAAQuuC,GAAG,OAAOA,CAAC,CAAxC,CAA0CA,IAAI,SAASA,EAAEniC,GAAG,GAAKqP,OAAOC,YAAY9+B,OAAO2xD,IAAI,uBAAuB3xD,OAAOjH,UAAU4tB,SAASxsB,KAAKw3D,GAAzF,CAAoG,IAAItkB,EAAE,GAAGn0C,GAAE,EAAG0H,GAAE,EAAG2qC,OAAE,EAAO,IAAI,IAAI,IAAI5xC,EAAEg1B,EAAEgjC,EAAE9yB,OAAOC,cAAc5lC,GAAGS,EAAEg1B,EAAEuI,QAAQ8I,QAAQqN,EAAE1yC,KAAKhB,EAAEsC,QAAQuzB,GAAG6d,EAAEvzC,SAAS01B,GAAGt2B,GAAE,GAAI,CAAC,MAAMy4D,GAAG/wD,GAAE,EAAG2qC,EAAEomB,CAAC,CAAC,QAAQ,IAAIz4D,GAAG,MAAMy1B,EAAEi1C,QAAQj1C,EAAEi1C,QAAQ,CAAC,QAAQ,GAAGhjE,EAAE,MAAM2qC,CAAC,CAAC,CAAC,OAAO8B,CAA7N,CAA8N,CAA/U,CAAiVskB,EAAEniC,IAAI,WAAW,MAAM,IAAIp2B,UAAU,uDAAuD,CAAtF,EAAyF,CAAC,SAASmyC,EAAEomB,GAAG,OAAO,SAASA,GAAG,GAAGv3D,MAAMgpB,QAAQuuC,GAAG,CAAC,IAAI,IAAIniC,EAAE,EAAE6d,EAAE,IAAIjzC,MAAMu3D,EAAE73D,QAAQ01B,EAAEmiC,EAAE73D,OAAO01B,IAAI6d,EAAE7d,GAAGmiC,EAAEniC,GAAG,OAAO6d,CAAC,CAAC,CAArG,CAAuGskB,IAAI,SAASA,GAAG,GAAG9yB,OAAOC,YAAY9+B,OAAO2xD,IAAI,uBAAuB3xD,OAAOjH,UAAU4tB,SAASxsB,KAAKw3D,GAAG,OAAOv3D,MAAM6c,KAAK06C,EAAE,CAA1H,CAA4HA,IAAI,WAAW,MAAM,IAAIv4D,UAAU,kDAAkD,CAAjF,EAAoF,CAAC,SAASO,EAAEg4D,GAAG,IAAIniC,EAAE6d,EAAE,2BAA2BzwB,OAAO+0C,EAAEn2D,KAAKtC,EAAE,WAAW,YAAO,IAASs2B,IAAIA,EAAEmiC,EAAEkS,cAAct9D,OAAOs9D,cAAcr0C,CAAC,EAAE+b,EAAE,WAAW,OAAOl4B,KAAKid,MAAMp3B,IAAI4qE,QAAQz2B,IAAI,KAAK,EAAE1zC,EAAE,SAASg4D,GAAGz4D,IAAI6qE,QAAQ12B,EAAEh6B,KAAKC,UAAUq+C,GAAG,EAAEhjC,EAAE,WAAW,IAAIa,EAAEmiC,EAAEqS,WAAW,IAAIrS,EAAEqS,WAAW,KAAK32B,EAAE9B,IAAIryC,EAAE8G,OAAOikE,YAAYjkE,OAAOoe,QAAQivB,GAAGvtC,QAAO,SAAU6xD,GAAG,YAAO,IAAS/wD,EAAE+wD,EAAE,GAAG,GAAGuS,SAAU,KAAI,GAAGvqE,EAAET,GAAGs2B,EAAE,CAAC,IAAIb,EAAE3uB,OAAOikE,YAAYjkE,OAAOoe,QAAQllB,GAAG4G,QAAO,SAAU6xD,GAAG,IAAItkB,EAAEzsC,EAAE+wD,EAAE,GAAG,GAAGz4D,GAAE,IAAKy2B,MAAMC,UAAU,QAAQyd,EAAE62B,UAAU10C,EAAEt2B,EAAG,KAAIS,EAAEg1B,EAAE,CAAC,EAAE,MAAM,CAAChtB,IAAI,SAASgwD,EAAEniC,GAAG,IAAI6d,EAAEtzC,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAACoqE,KAAK,WAAW,OAAOzjD,QAAQC,SAAS,GAAG,OAAOD,QAAQC,UAAUsW,MAAK,WAAYtI,IAAI,IAAIa,EAAEnc,KAAKC,UAAUq+C,GAAG,OAAOpmB,IAAI/b,EAAG,IAAGyH,MAAK,SAAU06B,GAAG,OAAOjxC,QAAQ4kB,IAAI,CAACqsB,EAAEA,EAAE11D,MAAMuzB,SAAI,IAASmiC,GAAI,IAAG16B,MAAK,SAAU06B,GAAG,IAAIniC,EAAE5uB,EAAE+wD,EAAE,GAAGz4D,EAAEs2B,EAAE,GAAG+b,EAAE/b,EAAE,GAAG,OAAO9O,QAAQ4kB,IAAI,CAACpsC,EAAEqyC,GAAG8B,EAAE82B,KAAKjrE,IAAK,IAAG+9B,MAAK,SAAU06B,GAAG,OAAO/wD,EAAE+wD,EAAE,GAAG,EAAG,GAAE,EAAEz4C,IAAI,SAASy4C,EAAEniC,GAAG,OAAO9O,QAAQC,UAAUsW,MAAK,WAAY,IAAIr2B,EAAE2qC,IAAI,OAAO3qC,EAAEyS,KAAKC,UAAUq+C,IAAI,CAACuS,WAAU,IAAKv0C,MAAMC,UAAU3zB,MAAMuzB,GAAGt2B,IAAI6qE,QAAQ12B,EAAEh6B,KAAKC,UAAU1S,IAAI4uB,CAAE,GAAE,EAAEnW,OAAO,SAASs4C,GAAG,OAAOjxC,QAAQC,UAAUsW,MAAK,WAAY,IAAIzH,EAAE+b,WAAW/b,EAAEnc,KAAKC,UAAUq+C,IAAIz4D,IAAI6qE,QAAQ12B,EAAEh6B,KAAKC,UAAUkc,GAAI,GAAE,EAAE40C,MAAM,WAAW,OAAO1jD,QAAQC,UAAUsW,MAAK,WAAY/9B,IAAImrE,WAAWh3B,EAAG,GAAE,EAAE,CAAC,SAAS1e,EAAEgjC,GAAG,IAAIniC,EAAE+b,EAAEomB,EAAE2S,QAAQj3B,EAAE7d,EAAE+0C,QAAQ,YAAO,IAASl3B,EAAE,CAAC1rC,IAAI,SAASgwD,EAAEniC,GAAG,IAAI6d,EAAEtzC,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAACoqE,KAAK,WAAW,OAAOzjD,QAAQC,SAAS,GAAS,OAAJ6O,IAAayH,MAAK,SAAU06B,GAAG,OAAOjxC,QAAQ4kB,IAAI,CAACqsB,EAAEtkB,EAAE82B,KAAKxS,IAAK,IAAG16B,MAAK,SAAU06B,GAAG,OAAO/wD,EAAE+wD,EAAE,GAAG,EAAG,GAAE,EAAEz4C,IAAI,SAASy4C,EAAEniC,GAAG,OAAO9O,QAAQC,QAAQ6O,EAAE,EAAEnW,OAAO,SAASs4C,GAAG,OAAOjxC,QAAQC,SAAS,EAAEyjD,MAAM,WAAW,OAAO1jD,QAAQC,SAAS,GAAG,CAAChf,IAAI,SAASgwD,EAAEz4D,GAAG,IAAI0H,EAAE7G,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAACoqE,KAAK,WAAW,OAAOzjD,QAAQC,SAAS,GAAG,OAAO0sB,EAAE1rC,IAAIgwD,EAAEz4D,EAAE0H,GAAGwwB,OAAM,WAAY,OAAOzC,EAAE,CAAC21C,OAAO90C,IAAI7tB,IAAIgwD,EAAEz4D,EAAE0H,EAAG,GAAE,EAAEsY,IAAI,SAASy4C,EAAEz4D,GAAG,OAAOm0C,EAAEn0B,IAAIy4C,EAAEz4D,GAAGk4B,OAAM,WAAY,OAAOzC,EAAE,CAAC21C,OAAO90C,IAAItW,IAAIy4C,EAAEz4D,EAAG,GAAE,EAAEmgB,OAAO,SAASs4C,GAAG,OAAOtkB,EAAEh0B,OAAOs4C,GAAGvgC,OAAM,WAAY,OAAOzC,EAAE,CAAC21C,OAAO90C,IAAInW,OAAOs4C,EAAG,GAAE,EAAEyS,MAAM,WAAW,OAAO/2B,EAAE+2B,QAAQhzC,OAAM,WAAY,OAAOzC,EAAE,CAAC21C,OAAO90C,IAAI40C,OAAQ,GAAE,EAAE,CAAC,SAASr2B,IAAI,IAAI4jB,EAAE53D,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAACyqE,cAAa,GAAIh1C,EAAE,CAAC,EAAE,MAAM,CAAC7tB,IAAI,SAAS0rC,EAAEn0C,GAAG,IAAI0H,EAAE7G,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAACoqE,KAAK,WAAW,OAAOzjD,QAAQC,SAAS,GAAG4qB,EAAEl4B,KAAKC,UAAU+5B,GAAG,GAAG9B,KAAK/b,EAAE,OAAO9O,QAAQC,QAAQgxC,EAAE6S,aAAanxD,KAAKid,MAAMd,EAAE+b,IAAI/b,EAAE+b,IAAI,IAAI5xC,EAAET,IAAIy1B,EAAE/tB,GAAGA,EAAEujE,MAAM,WAAW,OAAOzjD,QAAQC,SAAS,EAAE,OAAOhnB,EAAEs9B,MAAK,SAAU06B,GAAG,OAAOhjC,EAAEgjC,EAAG,IAAG16B,MAAK,WAAY,OAAOt9B,CAAE,GAAE,EAAEuf,IAAI,SAASm0B,EAAEn0C,GAAG,OAAOs2B,EAAEnc,KAAKC,UAAU+5B,IAAIskB,EAAE6S,aAAanxD,KAAKC,UAAUpa,GAAGA,EAAEwnB,QAAQC,QAAQznB,EAAE,EAAEmgB,OAAO,SAASs4C,GAAG,cAAcniC,EAAEnc,KAAKC,UAAUq+C,IAAIjxC,QAAQC,SAAS,EAAEyjD,MAAM,WAAW,OAAO50C,EAAE,CAAC,EAAE9O,QAAQC,SAAS,EAAE,CAAC,SAAS4L,EAAEolC,EAAEniC,EAAE6d,GAAG,IAAIn0C,EAAE,CAAC,oBAAoBm0C,EAAE,2BAA2B7d,GAAG,MAAM,CAACi1C,QAAQ,WAAW,OAAO9S,IAAIl3D,EAAEiqE,cAAcxrE,EAAE,CAAC,CAAC,EAAEyrE,gBAAgB,WAAW,OAAOhT,IAAIl3D,EAAEmqE,sBAAsB1rE,EAAE,CAAC,CAAC,EAAE,CAAC,SAASiyD,EAAEwG,GAAG,IAAIniC,EAAE,EAAE,OAAOmiC,GAAE,SAAUtkB,IAAI,OAAO7d,IAAI,IAAI9O,SAAQ,SAAUxnB,GAAG2T,YAAW,WAAY3T,EAAEy4D,EAAEtkB,GAAI,GAAE9sC,KAAK4B,IAAI,IAAIqtB,EAAE,KAAM,GAAG,GAAE,CAAC,SAASsb,EAAE6mB,GAAG,IAAIniC,EAAEz1B,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,SAAS43D,EAAEniC,GAAG,OAAO9O,QAAQC,SAAS,EAAE,OAAO3gB,OAAO8xB,OAAO6/B,EAAE,CAACkT,KAAK,SAASx3B,GAAG,OAAOvC,EAAE6mB,EAAE16B,MAAK,SAAU06B,GAAG,OAAOjxC,QAAQ4kB,IAAI,CAAC9V,EAAEmiC,EAAEtkB,GAAGskB,GAAI,IAAG16B,MAAK,SAAU06B,GAAG,OAAOA,EAAE,EAAG,IAAG,GAAG,CAAC,SAASuP,EAAEvP,GAAG,IAAI,IAAIniC,EAAEmiC,EAAE73D,OAAO,EAAE01B,EAAE,EAAEA,IAAI,CAAC,IAAI6d,EAAE9sC,KAAKukE,MAAMvkE,KAAKqmC,UAAUpX,EAAE,IAAIt2B,EAAEy4D,EAAEniC,GAAGmiC,EAAEniC,GAAGmiC,EAAEtkB,GAAGskB,EAAEtkB,GAAGn0C,CAAC,CAAC,OAAOy4D,CAAC,CAAC,SAASrlC,EAAEqlC,EAAEniC,GAAG,OAAOA,GAAGxvB,OAAO0J,KAAK8lB,GAAGtlB,SAAQ,SAAUmjC,GAAGskB,EAAEtkB,GAAG7d,EAAE6d,GAAGskB,EAAG,IAAGA,GAAGA,CAAC,CAAC,SAASzsD,EAAEysD,GAAG,IAAI,IAAIniC,EAAEz1B,UAAUD,OAAOuzC,EAAE,IAAIjzC,MAAMo1B,EAAE,EAAEA,EAAE,EAAE,GAAGt2B,EAAE,EAAEA,EAAEs2B,EAAEt2B,IAAIm0C,EAAEn0C,EAAE,GAAGa,UAAUb,GAAG,IAAI0H,EAAE,EAAE,OAAO+wD,EAAEriC,QAAQ,OAAM,WAAY,OAAOwG,mBAAmBuX,EAAEzsC,KAAM,GAAE,CAAC,IAAInG,EAAE,CAACmqE,sBAAsB,EAAEF,cAAc,GAAG,SAASvkE,EAAEwxD,EAAEniC,GAAG,IAAI6d,EAAEskB,GAAG,CAAC,EAAEz4D,EAAEm0C,EAAE1sC,MAAM,CAAC,EAAE,OAAOX,OAAO0J,KAAK2jC,GAAGnjC,SAAQ,SAAUynD,IAAI,IAAI,CAAC,UAAU,UAAU,kBAAkB,OAAO,aAAa3sD,QAAQ2sD,KAAKz4D,EAAEy4D,GAAGtkB,EAAEskB,GAAI,IAAG,CAAChxD,KAAKX,OAAOoe,QAAQllB,GAAGY,OAAO,EAAEZ,OAAE,EAAOypB,QAAQ0qB,EAAE1qB,SAAS6M,EAAEi1C,QAAQp3B,EAAEo3B,SAAS,CAAC,EAAEE,gBAAgBt3B,EAAEs3B,iBAAiB,CAAC,EAAEI,UAAU13B,EAAE03B,UAAU,CAAC,IAAI7pE,EAAE,CAAC8pE,KAAK,EAAEC,MAAM,EAAEC,IAAI,GAAGze,EAAE,EAAE5lD,EAAE,EAAEskE,EAAE,EAAE,SAASrgC,EAAE6sB,GAAG,IAAIniC,EAAEz1B,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG0sD,EAAE,OAAOpZ,EAAEA,EAAE,CAAC,EAAEskB,GAAG,CAAC,EAAE,CAAC12C,OAAOuU,EAAE41C,WAAWz1C,KAAK01C,OAAO,CAAC,SAASpgE,EAAE0sD,GAAG,MAAM,iBAAiBA,EAAE,CAAC2T,SAAS,QAAQpvC,IAAIy7B,EAAE4T,OAAOrqE,EAAEgqE,KAAK,CAACI,SAAS3T,EAAE2T,UAAU,QAAQpvC,IAAIy7B,EAAEz7B,IAAIqvC,OAAO5T,EAAE4T,QAAQrqE,EAAEgqE,IAAI,CAAC,IAAIM,EAAE,SAASC,EAAE,MAAMvlE,EAAE,OAAOwlE,EAAE,MAAM,SAASnI,EAAE5L,EAAEniC,GAAG,OAAO9O,QAAQ4kB,IAAI9V,EAAE3S,KAAI,SAAU2S,GAAG,OAAOmiC,EAAEhwD,IAAI6tB,GAAE,WAAY,OAAO9O,QAAQC,QAAQmkB,EAAEtV,GAAI,GAAG,KAAIyH,MAAK,SAAU06B,GAAG,IAAItkB,EAAEskB,EAAE7xD,QAAO,SAAU6xD,GAAG,OAAO,SAASA,GAAG,OAAOA,EAAE12C,SAASwrC,GAAG92B,KAAK01C,MAAM1T,EAAEyT,WAAW,IAAI,CAA7D,CAA+DzT,EAAG,IAAGz4D,EAAEy4D,EAAE7xD,QAAO,SAAU6xD,GAAG,OAAO,SAASA,GAAG,OAAOA,EAAE12C,SAASkqD,GAAGx1C,KAAK01C,MAAM1T,EAAEyT,YAAY,IAAI,CAA9D,CAAgEzT,EAAG,IAAG/wD,EAAE,GAAGgc,OAAO2uB,EAAE8B,GAAG9B,EAAEryC,IAAI,MAAM,CAACysE,WAAW,SAAShU,EAAEniC,GAAG,OAAO,IAAIt2B,EAAEY,QAAQ,IAAI63D,EAAE,EAAEz4D,EAAEY,OAAO,EAAE63D,GAAGniC,CAAC,EAAEo2C,eAAehlE,EAAE9G,OAAO,EAAE8G,EAAEic,KAAI,SAAU80C,GAAG,OAAO1sD,EAAE0sD,EAAG,IAAGniC,EAAG,GAAE,CAAC,SAASq2C,EAAElU,EAAEniC,EAAEt2B,EAAE0H,GAAG,IAAIjH,EAAE,GAAGg1B,EAAE,SAASgjC,EAAEniC,GAAG,GAAGmiC,EAAEn6B,SAASiuC,SAAG,IAAS9T,EAAEhxD,WAAM,IAAS6uB,EAAE7uB,MAA7C,CAAyD,IAAIzH,EAAEkB,MAAMgpB,QAAQuuC,EAAEhxD,MAAMgxD,EAAEhxD,KAAK0sC,EAAEA,EAAE,CAAC,EAAEskB,EAAEhxD,MAAM6uB,EAAE7uB,MAAM,OAAO0S,KAAKC,UAAUpa,EAAjF,CAAmF,CAAzJ,CAA2JA,EAAE0H,GAAGmtC,EAAE,SAAS4jB,EAAEniC,GAAG,IAAIt2B,EAAEm0C,EAAEA,EAAE,CAAC,EAAEskB,EAAE8S,SAASj1C,EAAEi1C,SAAS7jE,EAAE,CAAC,EAAE,OAAOZ,OAAO0J,KAAKxQ,GAAGgR,SAAQ,SAAUynD,GAAG,IAAIniC,EAAEt2B,EAAEy4D,GAAG/wD,EAAE+wD,EAAEnlB,eAAehd,CAAE,IAAG5uB,CAAC,CAArI,CAAuI+wD,EAAE/wD,GAAG2rB,EAAErzB,EAAEs+B,OAAO2zB,EAAEjyD,EAAEs+B,SAASiuC,EAAE,CAAC,EAAEp4B,EAAEA,EAAE,CAAC,EAAEn0C,EAAEyH,MAAMC,EAAED,MAAMmqC,EAAEuC,EAAEA,EAAEA,EAAE,CAAC,kBAAkBskB,EAAEv+B,UAAUn3B,OAAO01D,EAAEgT,iBAAiBxZ,GAAGvqD,EAAE+jE,iBAAiBzD,EAAE,EAAE50C,EAAE,SAASkD,EAAE6d,EAAE9B,GAAG,IAAI4f,EAAE9d,EAAEy4B,MAAM,QAAG,IAAS3a,EAAE,KAAK,CAACn7C,KAAK,aAAakkB,QAAQ,gHAAgH6xC,sBAAsBC,EAAErsE,IAAI,IAAI2yB,EAAE,CAAC3rB,KAAKguB,EAAE81C,QAAQ12B,EAAEvW,OAAOjL,EAAE2J,IAAI+vC,EAAE9a,EAAEjyD,EAAEuuC,KAAKqD,GAAGo7B,eAAe36B,EAAE21B,EAAEvP,EAAEwU,SAASC,SAASC,gBAAgB96B,EAAE21B,EAAEtgE,EAAE+hB,UAAUzd,EAAE,SAASysD,GAAG,IAAIniC,EAAE,CAACkE,QAAQpH,EAAE+wC,SAAS1L,EAAExZ,KAAKgT,EAAEmb,UAAUj5B,EAAEvzC,QAAQ,OAAOH,EAAEgB,KAAK60B,GAAGA,CAAC,EAAE/0B,EAAE,CAAC8rE,UAAU,SAAS5U,GAAG,OAAO,SAASA,GAAG,IAAI,OAAOt+C,KAAKid,MAAMqhC,EAAE1oB,QAAQ,CAAC,MAAMzZ,GAAG,MAAM,SAASmiC,EAAEniC,GAAG,MAAM,CAACxf,KAAK,uBAAuBkkB,QAAQy9B,EAAE0L,SAAS7tC,EAAE,CAAtE,CAAwEA,EAAE0E,QAAQy9B,EAAE,CAAC,CAAjJ,CAAmJA,EAAE,EAAE6U,QAAQ,SAASttE,GAAG,IAAI0H,EAAEsE,EAAEhM,GAAG,OAAOA,EAAEutE,YAAYvF,IAAIxgD,QAAQ4kB,IAAI,CAACqsB,EAAE+U,OAAO91C,KAAK,oBAAoB+1C,EAAE/lE,IAAI+wD,EAAEiV,WAAW1tD,IAAIiyC,EAAErmB,EAAEqmB,EAAEjyD,EAAEutE,WAAWtB,EAAEtkE,MAAMo2B,MAAK,WAAY,OAAOzH,EAAE6d,EAAE9B,EAAG,GAAE,EAAEs7B,OAAO,SAASlV,GAAG,MAAMzsD,EAAEysD,GAAG,SAASA,EAAEniC,GAAG,IAAI6d,EAAEskB,EAAE1oB,QAAQ/vC,EAAEy4D,EAAE12C,OAAOra,EAAEysC,EAAE,IAAIzsC,EAAEyS,KAAKid,MAAM+c,GAAGnZ,OAAO,CAAC,MAAMy9B,GAAG,CAAC,OAAO,SAASA,EAAEniC,EAAE6d,GAAG,MAAM,CAACr9B,KAAK,WAAWkkB,QAAQy9B,EAAE12C,OAAOuU,EAAEu2C,sBAAsB14B,EAAE,CAAlF,CAAoFzsC,EAAE1H,EAAEs2B,EAAE,CAApL,CAAsLmiC,EAAEqU,EAAErsE,GAAG,GAAG,OAAOg4D,EAAEmV,UAAUC,KAAKz6C,GAAG2K,MAAK,SAAU06B,GAAG,OAAO,SAASA,EAAEniC,GAAG,OAAO,SAASmiC,GAAG,IAAIniC,EAAEmiC,EAAE12C,OAAO,OAAO02C,EAAE8U,YAAY,SAAS9U,GAAG,IAAIniC,EAAEmiC,EAAE8U,WAAWp5B,EAAEskB,EAAE12C,OAAO,OAAOuU,GAAG,KAAK6d,CAAC,CAA1D,CAA4DskB,IAAI,MAAMniC,EAAE,MAAM,MAAMA,EAAE,IAAI,CAA1I,CAA4ImiC,GAAGniC,EAAEg3C,QAAQ7U,GAAG,MAAMA,EAAE12C,OAAO,KAAKuU,EAAE+2C,UAAU5U,GAAGniC,EAAEq3C,OAAOlV,EAAE,CAA/N,CAAiOA,EAAEl3D,EAAG,GAAE,EAAE,OAAO8iE,EAAE5L,EAAEiV,WAAWp3C,GAAGyH,MAAK,SAAU06B,GAAG,OAAOrlC,EAAEif,EAAEomB,EAAEiU,gBAAgBzyD,UAAUw+C,EAAEgU,WAAY,GAAE,CAAC,SAASrwC,EAAEq8B,GAAG,IAAIniC,EAAEmiC,EAAEiV,WAAWv5B,EAAEskB,EAAE+U,OAAOxtE,EAAEy4D,EAAEmV,UAAUv7B,EAAEomB,EAAEqV,cAAcrtE,EAAEg4D,EAAEsV,eAAet4C,EAAEgjC,EAAEwU,SAASp4B,EAAE4jB,EAAEv+B,UAAU7G,EAAEolC,EAAEuV,MAAM/b,EAAEwG,EAAEgT,gBAAgB75B,EAAE,CAAC87B,WAAWp3C,EAAEk3C,OAAOr5B,EAAEy5B,UAAU5tE,EAAE8tE,cAAcz7B,EAAE07B,eAAettE,EAAEwsE,SAASx3C,EAAEyE,UAAU2a,EAAE02B,QAAQ9S,EAAE8S,QAAQE,gBAAgBxZ,EAAE+b,MAAM36C,EAAE1P,KAAI,SAAU80C,GAAG,OAAO1sD,EAAE0sD,EAAG,IAAGwV,KAAK,SAASxV,EAAEniC,GAAG,IAAI6d,EAAEltC,EAAEqvB,EAAEsb,EAAEq7B,SAASgB,MAAMjuE,EAAE,WAAW,OAAO2sE,EAAE/6B,EAAEA,EAAEo8B,MAAMpnE,QAAO,SAAU6xD,GAAG,OAAO,IAAIA,EAAE4T,OAAOrqE,EAAE8pE,KAAM,IAAGrT,EAAEtkB,EAAE,EAAE,IAAG,UAAM,IAASA,EAAE03B,UAAU13B,EAAE03B,UAAUpT,EAAEoT,WAAW,OAAO7rE,IAAI,IAAIqyC,EAAE,CAAC7X,QAAQi+B,EAAEyV,qBAAqB/5B,EAAEg6B,YAAY,CAAC1C,gBAAgB75B,EAAE65B,gBAAgBF,QAAQ35B,EAAE25B,UAAU,OAAO35B,EAAEm8B,eAAetlE,IAAI4pC,GAAE,WAAY,OAAOT,EAAEk8B,cAAcrlE,IAAI4pC,GAAE,WAAY,OAAOT,EAAEk8B,cAAc9tD,IAAIqyB,EAAEryC,KAAK+9B,MAAK,SAAU06B,GAAG,OAAOjxC,QAAQ4kB,IAAI,CAACwF,EAAEk8B,cAAc3tD,OAAOkyB,GAAGomB,GAAI,IAAE,SAAUA,GAAG,OAAOjxC,QAAQ4kB,IAAI,CAACwF,EAAEk8B,cAAc3tD,OAAOkyB,GAAG7qB,QAAQuQ,OAAO0gC,IAAK,IAAG16B,MAAK,SAAU06B,GAAG,IAAIniC,EAAE5uB,EAAE+wD,EAAE,GAAQ,OAALniC,EAAE,GAAUA,EAAE,EAAG,GAAG,GAAG,GAAE,CAAC20C,KAAK,SAASxS,GAAG,OAAO7mB,EAAEm8B,eAAe/tD,IAAIqyB,EAAEomB,EAAE,GAAG,EAAE2V,MAAM,SAAS3V,EAAEniC,GAAG,OAAOq2C,EAAE/6B,EAAEA,EAAEo8B,MAAMpnE,QAAO,SAAU6xD,GAAG,OAAO,IAAIA,EAAE4T,OAAOrqE,EAAE+pE,MAAO,IAAGtT,EAAExxD,EAAEqvB,EAAEsb,EAAEq7B,SAASmB,OAAO,GAAG,OAAOx8B,CAAC,CAAC,SAASy8B,EAAE5V,GAAG,IAAIniC,EAAE,CAACvzB,MAAM,2BAA2B2gB,OAAO+0C,EAAE,KAAKtnD,IAAI,SAASsnD,GAAG,IAAItkB,EAAE,KAAKzwB,OAAO+0C,EAAEuQ,SAAStlD,YAAO,IAAS+0C,EAAEpL,QAAQ,KAAK3pC,OAAO+0C,EAAEpL,QAAQ,KAAK,IAAI,OAAO,IAAI/2B,EAAEvzB,MAAM+I,QAAQqoC,KAAK7d,EAAEvzB,MAAM,GAAG2gB,OAAO4S,EAAEvzB,OAAO2gB,OAAOywB,IAAI7d,CAAC,GAAG,OAAOA,CAAC,CAAC,SAASy2C,EAAEtU,EAAEniC,EAAE6d,GAAG,IAAIn0C,EAAEsuE,EAAEn6B,GAAGzsC,EAAE,GAAGgc,OAAO+0C,EAAE2T,SAAS,OAAO1oD,OAAO+0C,EAAEz7B,IAAI,KAAKtZ,OAAO,MAAM4S,EAAER,OAAO,GAAGQ,EAAE8hB,OAAO,GAAG9hB,GAAG,OAAOt2B,EAAEY,SAAS8G,GAAG,IAAIgc,OAAO1jB,IAAI0H,CAAC,CAAC,SAAS4mE,EAAE7V,GAAG,OAAO3xD,OAAO0J,KAAKioD,GAAG90C,KAAI,SAAU2S,GAAG,OAAOtqB,EAAE,QAAQsqB,GAAG6d,EAAEskB,EAAEniC,GAAG,oBAAoBxvB,OAAOjH,UAAU4tB,SAASxsB,KAAKkzC,IAAI,mBAAmBrtC,OAAOjH,UAAU4tB,SAASxsB,KAAKkzC,GAAGh6B,KAAKC,UAAUq+C,EAAEniC,IAAImiC,EAAEniC,KAAK,IAAI6d,CAAE,IAAGvhB,KAAK,IAAI,CAAC,SAASk6C,EAAErU,GAAG,OAAOA,EAAE90C,KAAI,SAAU80C,GAAG,OAAOgV,EAAEhV,EAAG,GAAE,CAAC,SAASgV,EAAEhV,GAAG,IAAIniC,EAAEmiC,EAAEj+B,QAAQ+wC,QAAQ,qBAAqB,CAAC,oBAAoB,SAAS,CAAC,EAAE,OAAOp3B,EAAEA,EAAE,CAAC,EAAEskB,GAAG,CAAC,EAAE,CAACj+B,QAAQ2Z,EAAEA,EAAE,CAAC,EAAEskB,EAAEj+B,SAAS,CAAC,EAAE,CAAC+wC,QAAQp3B,EAAEA,EAAE,CAAC,EAAEskB,EAAEj+B,QAAQ+wC,SAASj1C,MAAM,CAAC,IAAIi4C,EAAE,SAAS9V,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,YAAY9mC,KAAK6uB,GAAG6d,EAAE,CAAC,EAAEq6B,EAAE,SAAS/V,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAKviC,EAAE,eAAesqB,IAAI6d,EAAE,CAAC,EAAEs6B,EAAE,SAAShW,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,eAAesqB,IAAI6d,EAAE,CAAC,EAAEu6B,EAAE,SAASjW,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,aAAajY,EAAE,CAAC,EAAEq4C,EAAE,SAASlW,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,oBAAoBsqB,IAAI6d,EAAE,CAAC,EAAEy6B,EAAE,SAASnW,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,gCAAgCjY,EAAE,CAAC,EAAEu4C,EAAE,SAASpW,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,+BAA+B9mC,KAAK6uB,GAAG6d,EAAE,CAAC,EAAE,SAAS26B,EAAErW,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAEj+B,QAAQ2Z,GAAGpW,MAAK,SAAU/9B,GAAG,QAAG,IAASy4D,EAAEsW,OAAOtW,EAAEsW,MAAM/uE,EAAEgvE,OAAOvW,EAAEwW,WAAWjvE,GAAG,OAAOA,EAAEkvE,OAAO54C,EAAE,CAAC44C,OAAOlvE,EAAEkvE,SAAS54C,EAAE,CAAC0/B,MAAM7hB,EAAE6hB,MAAM,GAAG,GAAI,GAAE,CAAzK,CAA2K,CAAC,EAAE,CAAC,IAAImZ,EAAE,SAAS1W,GAAG,OAAO,SAASniC,EAAE5uB,GAAG,IAAI2qC,EAAE3qC,GAAG,CAAC,EAAEjH,EAAE4xC,EAAEo5B,gBAAgBh2C,EAAEz1B,EAAEqyC,EAAE,CAAC,oBAAoBwC,EAAEV,EAAE,CAACi7B,IAAI94C,QAAG,IAAS71B,EAAE,CAACgrE,gBAAgBhrE,GAAG,CAAC,GAAG,OAAOmxC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,SAAS9mC,KAAKotC,GAAGpf,IAAG,SAAUa,EAAE6d,GAAG,OAAO8d,GAAE,SAAUjyD,GAAG,OAAOqvE,GAAG5W,EAAH4W,CAAM/4C,EAAEh0B,IAAI6xC,GAAGjc,OAAM,SAAUugC,GAAG,GAAG,MAAMA,EAAE12C,OAAO,MAAM02C,EAAE,OAAOz4D,GAAI,GAAG,GAAG,GAAE,CAAC,EAAEsvE,EAAE,SAAS7W,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,IAAI0H,EAAET,EAAEjH,GAAG,OAAO0H,EAAE+jE,gBAAgB,qBAAqBn1C,EAAEmiC,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,qBAAqB9mC,KAAK,CAAC8nE,QAAQp7B,IAAIzsC,EAAE,CAAC,EAAE8nE,EAAE,SAAS/W,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAOy4D,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,2BAA2B9mC,KAAK,CAACgoE,MAAMn5C,EAAEi5C,QAAQp7B,IAAIn0C,EAAE,CAAC,EAAE0vE,EAAE,SAASjX,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BsqB,GAAG7uB,KAAK,CAACkoE,gCAA+B,EAAGC,SAAS,CAACjwD,OAAO,WAAWtD,KAAK,MAAM83B,IAAG,SAAU7d,EAAE6d,GAAG,OAAO07B,GAAGpX,EAAHoX,CAAMv5C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAE47B,EAAE,SAAStX,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAO4xC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,yBAAyBsqB,GAAG7uB,KAAK,CAACuoE,UAAU,OAAOC,YAAY97B,IAAIn0C,IAAG,SAAUm0C,EAAEn0C,GAAG,OAAOkwE,GAAGzX,EAAHyX,CAAM55C,EAAE,CAAC+H,QAAQ,CAAC8xC,SAASC,MAAMD,SAASh8B,EAAE27B,OAAO9vE,EAAG,GAAE,CAAC,EAAEqwE,EAAE,SAAS5X,GAAG,OAAO,SAASniC,EAAEt2B,EAAE0H,GAAG,OAAOqoE,EAAEtX,EAAFsX,CAAKz5C,EAAEt2B,EAAEm0C,EAAEA,EAAE,CAAC,EAAEzsC,GAAG,CAAC,EAAE,CAAC4oE,MAAM,CAACC,GAAGC,SAAS,CAAC,EAAE50C,EAAE,SAAS68B,GAAG,OAAO,SAASniC,EAAEt2B,EAAE0H,GAAG,OAAOqoE,EAAEtX,EAAFsX,CAAKz5C,EAAEt2B,EAAEm0C,EAAEA,EAAE,CAAC,EAAEzsC,GAAG,CAAC,EAAE,CAAC4oE,MAAM,CAACC,GAAGE,YAAY,CAAC,EAAEC,EAAE,SAASjY,GAAG,OAAO,SAASniC,EAAEt2B,EAAE0H,GAAG,OAAOqoE,EAAEtX,EAAFsX,CAAKz5C,EAAEt2B,EAAEm0C,EAAEA,EAAE,CAAC,EAAEzsC,GAAG,CAAC,EAAE,CAAC4oE,MAAM,CAACC,GAAGI,YAAY,CAAC,EAAEC,EAAE,SAASnY,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAO7d,EAAEgI,SAASiuC,EAAE9T,EAAE0V,YAAYF,KAAK33C,EAAE6d,GAAGskB,EAAE0V,YAAYC,MAAM93C,EAAE6d,EAAE,CAAC,EAAE08B,EAAE,SAASpY,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAKviC,EAAE,YAAYsqB,IAAI6d,IAAG,SAAUA,EAAEn0C,GAAG,OAAOiyD,GAAE,SAAU9d,GAAG,OAAOk7B,GAAG5W,EAAH4W,CAAM/4C,EAAEt2B,GAAG+9B,KAAKoW,GAAGjc,OAAM,SAAUugC,GAAG,GAAG,MAAMA,EAAE12C,OAAO,MAAM02C,CAAE,GAAG,GAAG,GAAE,CAAC,EAAEqY,EAAE,SAASrY,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,IAAI0H,EAAEysC,EAAExwB,KAAI,SAAU80C,GAAG,MAAM,CAAC94C,OAAO,cAActD,KAAK,CAAC00D,SAAStY,GAAI,IAAG,OAAO7mB,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BsqB,GAAG7uB,KAAK,CAACkoE,gCAA+B,EAAGC,SAASloE,IAAI1H,IAAG,SAAUs2B,EAAE6d,GAAG,OAAO07B,GAAGpX,EAAHoX,CAAMv5C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEk7B,GAAG,SAAS5W,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,YAAYsqB,IAAI6d,EAAE,CAAC,EAAE68B,GAAG,SAASvY,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,YAAYsqB,EAAE7I,aAAa0mB,EAAE,CAAC,EAAE88B,GAAG,SAASxY,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,8BAA8BjY,EAAE,CAAC,EAAE46C,GAAG,SAASzY,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,UAAUjY,EAAE,CAAC,EAAE66C,GAAG,SAAS1Y,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,0BAA0BjY,EAAE,CAAC,EAAE86C,GAAG,SAAS3Y,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,wBAAwBsqB,IAAI6d,EAAE,CAAC,EAAEk9B,GAAG,SAAS5Y,GAAG,OAAO,SAASniC,GAAG,IAAI6d,EAAE7d,GAAG,CAAC,EAAE5uB,EAAEysC,EAAEm9B,iBAAiBj/B,EAAEryC,EAAEm0C,EAAE,CAAC,qBAAqB,OAAM,IAAKzsC,IAAI2qC,EAAEk/B,aAAY,GAAI9Y,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,8BAA8B8D,EAAE,CAAC,EAAE69B,GAAG,SAASzX,GAAG,OAAO,SAASniC,GAAG,IAAI6d,EAAEtzC,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,CAAC,EAA0D,OAAOuyB,EAA7D,CAAC+6C,YAAY1V,EAAE0V,YAAYqD,MAAM/Y,EAAE+Y,MAAMtN,UAAU5tC,GAAc6d,EAAE9V,QAAQ,CAAC,EAAEozC,GAAG,SAAShZ,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,UAAUjY,EAAE,CAAC,EAAEo7C,GAAG,SAASjZ,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,cAAcjY,EAAE,CAAC,EAAEq7C,GAAG,SAASlZ,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,aAAajY,EAAE,CAAC,EAAEs7C,GAAG,SAASnZ,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAK,sBAAsBjY,EAAE,CAAC,EAAEu7C,GAAG,SAASpZ,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAO4xC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,yBAAyBsqB,GAAG7uB,KAAK,CAACuoE,UAAU,OAAOC,YAAY97B,IAAIn0C,IAAG,SAAUm0C,EAAEn0C,GAAG,OAAOkwE,GAAGzX,EAAHyX,CAAM55C,EAAE,CAAC+H,QAAQ,CAAC8xC,SAASC,MAAMD,SAASh8B,EAAE27B,OAAO9vE,EAAG,GAAE,CAAC,EAAE8xE,GAAG,SAASrZ,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAK,oBAAoB9mC,KAAK,CAACmoE,SAASt5C,IAAI6d,IAAG,SAAU7d,EAAE6d,GAAG,OAAO3sB,QAAQ4kB,IAAItlC,OAAO0J,KAAK8lB,EAAEw5C,QAAQnsD,KAAI,SAAU3jB,GAAG,OAAOkwE,GAAGzX,EAAHyX,CAAMlwE,EAAE,CAACq+B,QAAQ,CAAC8xC,SAASC,MAAMD,SAAS75C,EAAEw5C,OAAO9vE,GAAGm0C,EAAG,IAAI,GAAE,CAAC,EAAE49B,GAAG,SAAStZ,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAK,sBAAsB9mC,KAAK,CAACmoE,SAASt5C,IAAI6d,EAAE,CAAC,EAAE69B,GAAG,SAASvZ,GAAG,OAAO,SAASniC,EAAEt2B,GAAG,IAAI0H,EAAE4uB,EAAE3S,KAAI,SAAU80C,GAAG,OAAOtkB,EAAEA,EAAE,CAAC,EAAEskB,GAAG,CAAC,EAAE,CAAC/7B,OAAO4xC,EAAE7V,EAAE/7B,QAAQ,CAAC,IAAK,IAAG,OAAO+7B,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAK,sBAAsB9mC,KAAK,CAACmoE,SAASloE,GAAGmkE,WAAU,GAAI7rE,EAAE,CAAC,EAAEiyE,GAAG,SAASxZ,GAAG,OAAO,SAASniC,EAAE5uB,GAAG,OAAO8f,QAAQ4kB,IAAI9V,EAAE3S,KAAI,SAAU2S,GAAG,IAAI+b,EAAE/b,EAAEoG,OAAOj8B,EAAE4xC,EAAEqkB,UAAUjhC,EAAE4c,EAAEo4B,WAAW51B,EAAE70C,EAAEqyC,EAAE,CAAC,YAAY,eAAe,OAAO69B,GAAGzX,EAAHyX,CAAM55C,EAAE4tC,UAAU,CAAC7lC,QAAQ,CAAColC,qBAAqByO,MAAMzO,qBAAqBhjE,EAAEg1B,EAAE0e,EAAEA,EAAE,CAAC,EAAEzsC,GAAGmtC,GAAI,IAAG,CAAC,EAAEs9B,GAAG,SAAS1Z,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIn0C,EAAEiH,EAAEktC,GAAG,OAAOn0C,EAAEyrE,gBAAgB,qBAAqBn1C,EAAEmiC,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAK,sBAAsBvuC,EAAE,CAAC,EAAEoyE,GAAG,SAAS3Z,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,IAAI0H,EAAEysC,EAAExwB,KAAI,SAAU80C,GAAG,MAAM,CAAC94C,OAAO,WAAWtD,KAAKo8C,EAAG,IAAG,OAAO7mB,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BsqB,GAAG7uB,KAAK,CAACkoE,gCAA+B,EAAGC,SAASloE,IAAI1H,IAAG,SAAUs2B,EAAE6d,GAAG,OAAO07B,GAAGpX,EAAHoX,CAAMv5C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEk+B,GAAG,SAAS5Z,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,oBAAoBsqB,IAAI6d,IAAG,SAAUA,EAAEn0C,GAAG,OAAOiyD,GAAE,SAAU9d,GAAG,OAAOk7B,GAAG5W,EAAH4W,CAAM/4C,EAAEt2B,GAAGk4B,OAAM,SAAUugC,GAAG,GAAG,MAAMA,EAAE12C,OAAO,MAAM02C,EAAE,OAAOtkB,GAAI,GAAG,GAAG,GAAE,CAAC,EAAEm+B,GAAG,SAAS7Z,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,IAAI0H,EAAEysC,EAAExwB,KAAI,SAAU80C,GAAG,MAAM,CAAC94C,OAAO,WAAWtD,KAAKo8C,EAAG,IAAG,OAAO7mB,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BsqB,GAAG7uB,KAAK,CAACkoE,gCAA+B,EAAGC,SAASloE,IAAI1H,IAAG,SAAUs2B,EAAE6d,GAAG,OAAO07B,GAAGpX,EAAHoX,CAAMv5C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEo+B,GAAG,SAAS9Z,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAOy4D,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,4BAA4BsqB,GAAG7uB,KAAK,CAACouD,MAAM1hB,GAAG03B,WAAU,GAAI7rE,EAAE,CAAC,EAAEwyE,GAAG,SAAS/Z,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAK,4BAA4B9mC,KAAK,CAACouD,MAAMv/B,IAAI6d,EAAE,CAAC,EAAEs+B,GAAG,SAASha,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOkuC,EAAEj+B,KAAK,6BAA6B9mC,KAAK6uB,GAAG6d,IAAG,SAAU7d,EAAE6d,GAAG,OAAO07B,GAAGpX,EAAHoX,CAAMv5C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEu+B,GAAG,SAASja,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEZ,OAAO8xB,OAAO,CAAC,EAAEub,GAAG9B,EAAE8B,GAAG,CAAC,EAAE1zC,EAAE4xC,EAAEo5B,gBAAgBh2C,EAAEz1B,EAAEqyC,EAAE,CAAC,oBAAoBwC,EAAEp0C,EAAE,CAACgrE,gBAAgBhrE,GAAG,CAAC,EAAE4yB,EAAE,CAAC,MAAM,UAAU,WAAW,kBAAkB,kBAAkB,cAAc,yBAAyB,mBAAmB,OAAOue,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOkuC,EAAEj+B,KAAKviC,EAAE,YAAYsqB,GAAG7uB,KAAKotC,GAAGpf,IAAG,SAAU0e,EAAEn0C,GAAG,OAAOiyD,GAAE,SAAU9d,GAAG,OAAOk7B,GAAG5W,EAAH4W,CAAM/4C,EAAEt2B,GAAG+9B,MAAK,SAAU06B,GAAG,OAAO,SAASA,GAAG,OAAO3xD,OAAO0J,KAAK9I,GAAGd,QAAO,SAAU6xD,GAAG,OAAO,IAAIplC,EAAEvnB,QAAQ2sD,EAAG,IAAG1R,OAAM,SAAUzwB,GAAG,GAAGp1B,MAAMgpB,QAAQuuC,EAAEniC,KAAKp1B,MAAMgpB,QAAQxiB,EAAE4uB,IAAI,CAAC,IAAI6d,EAAEskB,EAAEniC,GAAG,OAAO6d,EAAEvzC,SAAS8G,EAAE4uB,GAAG11B,QAAQuzC,EAAE4S,OAAM,SAAU0R,EAAEtkB,GAAG,OAAOskB,IAAI/wD,EAAE4uB,GAAG6d,EAAG,GAAE,CAAC,OAAOskB,EAAEniC,KAAK5uB,EAAE4uB,EAAG,GAAE,CAA7P,CAA+PmiC,GAAGjxC,QAAQC,UAAU0sB,GAAI,GAAG,GAAG,GAAE,CAAC,EAAE07B,GAAG,SAASpX,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAO8d,GAAE,SAAUjyD,GAAG,OAAOgxE,GAAGvY,EAAHuY,CAAM16C,EAAE6d,GAAGpW,MAAK,SAAU06B,GAAG,MAAM,cAAcA,EAAE12C,OAAO/hB,SAAI,CAAO,GAAG,GAAE,CAAC,EAAE2yE,GAAG,SAASla,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,qBAAqBysD,EAAEyL,WAAWz8D,KAAK,CAACmoE,SAASt5C,IAAI6d,IAAG,SAAU7d,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEy+B,GAAG,SAASna,GAAG,OAAO,SAASniC,GAAG,OAAOw4C,EAAE36B,EAAEA,EAAE,CAAC86B,WAAW,SAASxW,GAAG,YAAO,IAASA,EAAEyW,MAAM,GAAG54C,GAAG,CAAC,EAAE,CAACkE,QAAQ,SAAS2Z,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,sBAAsBysD,EAAEyL,WAAWz8D,KAAK0sC,GAAG7d,EAAE,IAAI,CAAC,EAAEu8C,GAAG,SAASpa,GAAG,OAAO,SAASniC,GAAG,IAAIt2B,EAAEm0C,EAAE,CAACiiB,YAAY,KAAK9/B,GAAG,OAAOw4C,EAAE36B,EAAEA,EAAE,CAAC86B,WAAW,SAASxW,GAAG,OAAOA,EAAEuW,KAAKpuE,OAAOZ,EAAEo2D,WAAW,GAAGp2D,GAAG,CAAC,EAAE,CAACw6B,QAAQ,SAASlE,GAAG,OAAOw8C,GAAGra,EAAHqa,CAAM,GAAG3+B,EAAEA,EAAE,CAAC,EAAEn0C,GAAGs2B,IAAIyH,MAAK,SAAU06B,GAAG,OAAOtkB,EAAEA,EAAE,CAAC,EAAEskB,GAAG,CAAC,EAAE,CAACuW,KAAKvW,EAAEuW,KAAKrrD,KAAI,SAAU80C,GAAG,cAAcA,EAAEsa,iBAAiBta,CAAE,KAAK,GAAE,IAAI,CAAC,EAAEua,GAAG,SAASva,GAAG,OAAO,SAASniC,GAAG,IAAIt2B,EAAEm0C,EAAE,CAACiiB,YAAY,KAAK9/B,GAAG,OAAOw4C,EAAE36B,EAAEA,EAAE,CAAC86B,WAAW,SAASxW,GAAG,OAAOA,EAAEuW,KAAKpuE,OAAOZ,EAAEo2D,WAAW,GAAGp2D,GAAG,CAAC,EAAE,CAACw6B,QAAQ,SAASlE,GAAG,OAAO28C,GAAGxa,EAAHwa,CAAM,GAAG9+B,EAAEA,EAAE,CAAC,EAAEn0C,GAAGs2B,IAAIyH,MAAK,SAAU06B,GAAG,OAAOtkB,EAAEA,EAAE,CAAC,EAAEskB,GAAG,CAAC,EAAE,CAACuW,KAAKvW,EAAEuW,KAAKrrD,KAAI,SAAU80C,GAAG,cAAcA,EAAEsa,iBAAiBta,CAAE,KAAK,GAAE,IAAI,CAAC,EAAEya,GAAG,SAASza,GAAG,OAAO,SAASniC,EAAE6d,EAAEzsC,GAAG,IAAI2qC,EAAE3qC,GAAG,CAAC,EAAEjH,EAAE4xC,EAAE8gC,UAAU19C,EAAEz1B,EAAEqyC,EAAE,CAAC,cAAcwC,EAAE,CAACu+B,QAAQ,GAAGC,UAAU,IAAI,OAAOzhC,EAAE,SAAS5xC,IAAI,IAAI0H,EAA6D2rB,EAAE,GAAG,IAAI3rB,EAAlE7G,UAAUD,OAAO,QAAG,IAASC,UAAU,GAAGA,UAAU,GAAG,EAAe6G,EAAE4uB,EAAE11B,SAASyyB,EAAE5xB,KAAK60B,EAAE5uB,IAAI2rB,EAAEzyB,UAAUH,GAAG,MAAMiH,KAAK,OAAO,IAAI2rB,EAAEzyB,OAAO4mB,QAAQC,QAAQotB,GAAG89B,GAAGla,EAAHka,CAAMt/C,EAAE1P,KAAI,SAAU80C,GAAG,MAAM,CAAC94C,OAAOw0B,EAAE93B,KAAKo8C,EAAG,IAAGhjC,GAAGsI,MAAK,SAAU06B,GAAG,OAAO5jB,EAAEw+B,UAAUx+B,EAAEw+B,UAAU3vD,OAAO+0C,EAAE4a,WAAWx+B,EAAEu+B,QAAQ3xE,KAAKg3D,EAAEqX,QAAQpoE,IAAI1H,EAAE0H,EAAG,GAAE,CAAtV,IAA0V,SAAU4uB,EAAE6d,GAAG,OAAO3sB,QAAQ4kB,IAAI9V,EAAE88C,QAAQzvD,KAAI,SAAU2S,GAAG,OAAO85C,GAAG3X,EAAH2X,CAAM95C,EAAE6d,EAAG,IAAI,GAAE,CAAC,EAAEm/B,GAAG,SAAS7a,GAAG,OAAO,SAASniC,GAAG,OAAOsb,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,qBAAqBysD,EAAEyL,YAAY5tC,IAAG,SAAUA,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEo/B,GAAG,SAAS9a,GAAG,OAAO,SAASniC,GAAG,IAAI6d,EAAE7d,GAAG,CAAC,EAAE5uB,EAAEysC,EAAEq/B,kBAAkBnhC,EAAEprC,EAAEjH,EAAEm0C,EAAE,CAAC,uBAAuB,OAAOzsC,IAAI2qC,EAAEo5B,gBAAgB+H,kBAAkB,GAAG5hC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BysD,EAAEyL,YAAY7xB,IAAG,SAAU/b,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEs/B,GAAG,SAAShb,GAAG,OAAO,SAASniC,GAAG,IAAI6d,EAAE7d,GAAG,CAAC,EAAE5uB,EAAEysC,EAAEq/B,kBAAkBnhC,EAAEprC,EAAEjH,EAAEm0C,EAAE,CAAC,uBAAuB,OAAOzsC,IAAI2qC,EAAEo5B,gBAAgB+H,kBAAkB,GAAG5hC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,8BAA8BysD,EAAEyL,YAAY7xB,IAAG,SAAU/b,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEu/B,GAAG,SAASjb,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,6BAA6BysD,EAAEyL,WAAWz8D,KAAK6uB,GAAG6d,IAAG,SAAU7d,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEw/B,GAAG,SAASlb,GAAG,OAAO,SAASniC,GAAG,OAAOsb,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAKviC,EAAE,eAAeysD,EAAEyL,YAAY5tC,IAAG,SAAUA,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEy/B,GAAG,SAASnb,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAEiiC,GAAGpb,EAAHob,CAAM,CAACv9C,GAAG6d,GAAGpW,MAAK,SAAU06B,GAAG,MAAM,CAACqX,OAAOrX,EAAE2a,QAAQ,GAAI,KAAG,SAAU98C,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAE0/B,GAAG,SAASpb,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIn0C,EAAEs2B,EAAE3S,KAAI,SAAU80C,GAAG,MAAM,CAACsY,SAAStY,EAAG,IAAG,OAAOya,GAAGza,EAAHya,CAAMlzE,EAAE8zE,GAAGC,aAAa5/B,EAAE,CAAC,EAAE6/B,GAAG,SAASvb,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8rE,kBAAkB/yE,EAAEwG,EAAEjH,EAAE0H,EAAE,CAAC,uBAAuB,OAAO2qC,IAAI5xC,EAAEgrE,gBAAgB+H,kBAAkB,GAAG5hC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAKviC,EAAE,wBAAwBysD,EAAEyL,UAAU5tC,IAAI71B,IAAG,SAAU61B,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAE8/B,GAAG,SAASxb,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8rE,kBAAkB/yE,EAAEwG,EAAEjH,EAAE0H,EAAE,CAAC,uBAAuB,OAAO2qC,IAAI5xC,EAAEgrE,gBAAgB+H,kBAAkB,GAAG5hC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOguC,EAAE/9B,KAAKviC,EAAE,2BAA2BysD,EAAEyL,UAAU5tC,IAAI71B,IAAG,SAAU61B,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAE+/B,GAAG,SAASzb,GAAG,OAAO,SAASniC,GAAG,OAAO69C,GAAG1b,EAAH0b,CAAM79C,GAAGyH,MAAK,WAAY,OAAM,CAAG,IAAG7F,OAAM,SAAUugC,GAAG,GAAG,MAAMA,EAAE12C,OAAO,MAAM02C,EAAE,OAAM,CAAG,GAAE,CAAC,EAAE2b,GAAG,SAAS3b,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAOy4D,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,0BAA0BysD,EAAEyL,WAAWz8D,KAAK,CAACouD,MAAMv/B,EAAEktC,eAAervB,GAAG03B,WAAU,GAAI7rE,EAAE,CAAC,EAAEq0E,GAAG,SAAS5b,GAAG,OAAO,SAASniC,EAAE+b,GAAG,IAAI5xC,EAAE4xC,GAAG,CAAC,EAAE5c,EAAEh1B,EAAEo1D,MAAMhhB,EAAEp0C,EAAE6zE,SAASjhD,EAAErzB,EAAES,EAAE,CAAC,QAAQ,aAAawxD,EAAE,EAAE,OAAO,SAASjyD,IAAI,OAAOu0E,GAAG9b,EAAH8b,CAAM9+C,GAAG,GAAG0e,EAAEA,EAAE,CAAC,EAAE9gB,GAAG,CAAC,EAAE,CAAC2iC,KAAK/D,KAAKl0B,MAAK,SAAU06B,GAAG,IAAI,IAAItkB,EAAE,EAAE9B,EAAEvrC,OAAOoe,QAAQuzC,EAAEuW,MAAM76B,EAAE9B,EAAEzxC,OAAOuzC,IAAI,CAAC,IAAI1zC,EAAEiH,EAAE2qC,EAAE8B,GAAG,GAAG1e,EAAEh1B,EAAE,GAAG4yB,EAAE5yB,EAAE,GAAG,GAAG61B,EAAEjD,GAAG,MAAM,CAAC1B,OAAO0B,EAAElxB,SAASqyE,SAAS/+C,EAAE,IAAIugC,KAAK/D,EAAE,CAAC,GAAGA,KAAI,IAAKpd,GAAGod,GAAGwG,EAAEgc,QAAQ,KAAK,CAAC39D,KAAK,sBAAsBkkB,QAAQ,qBAAqB,OAAOh7B,GAAI,GAAE,CAA5T,EAA+T,CAAC,EAAE00E,GAAG,SAASjc,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,kBAAkBysD,EAAEyL,UAAU5tC,IAAI6d,EAAE,CAAC,EAAEwgC,GAAG,WAAW,OAAO,SAASlc,EAAEniC,GAAG,IAAI,IAAI6d,EAAE,EAAEn0C,EAAE8G,OAAOoe,QAAQuzC,EAAEuW,MAAM76B,EAAEn0C,EAAEY,OAAOuzC,IAAI,CAAC,IAAI9B,EAAE3qC,EAAE1H,EAAEm0C,GAAG,GAAG1zC,EAAE4xC,EAAE,GAAG,GAAGA,EAAE,GAAG0+B,WAAWz6C,EAAE,OAAOk+C,SAAS/zE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAEm0E,GAAG,SAASnc,GAAG,OAAO,SAASniC,EAAE5uB,GAAG,IAAI2qC,EAAE3qC,GAAG,CAAC,EAAEjH,EAAE4xC,EAAEwiC,qBAAqBp/C,EAAEz1B,EAAEqyC,EAAE,CAAC,yBAAyBwC,EAAEve,EAAE3S,KAAI,SAAU2S,GAAG,OAAO6d,EAAE,CAAC+vB,UAAUzL,EAAEyL,UAAU6M,SAASz6C,GAAG71B,EAAE,CAACo0E,qBAAqBp0E,GAAG,CAAC,EAAG,IAAG,OAAOg4D,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAK,sBAAsB9mC,KAAK,CAACmoE,SAAS/6B,IAAIpf,EAAE,CAAC,EAAEq/C,GAAG,SAASrc,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,wBAAwBysD,EAAEyL,UAAU5tC,IAAI6d,EAAE,CAAC,EAAEggC,GAAG,SAAS1b,GAAG,OAAO,SAASniC,GAAG,OAAOmiC,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,wBAAwBysD,EAAEyL,WAAWz8D,KAAK,CAACstE,WAAW,IAAIz+C,EAAE,CAAC,EAAE0+C,GAAG,SAASvc,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,2BAA2BysD,EAAEyL,UAAU5tC,IAAI6d,EAAE,CAAC,EAAE8gC,GAAG,SAASxc,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAEsjC,GAAGzc,EAAHyc,CAAM,CAAC5+C,GAAG6d,GAAGpW,MAAK,SAAU06B,GAAG,MAAM,CAACsY,SAAStY,EAAE4a,UAAU,GAAGvD,OAAOrX,EAAE2a,QAAQ,GAAI,KAAG,SAAU98C,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAE+gC,GAAG,SAASzc,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAEytE,kBAAkB10E,EAAET,EAAE0H,EAAE,CAAC,sBAAsB+tB,EAAE4c,EAAEyhC,GAAGsB,oBAAoBtB,GAAGuB,4BAA4B,OAAOnC,GAAGza,EAAHya,CAAM58C,EAAEb,EAAEh1B,EAAE,CAAC,EAAE60E,GAAG,SAAS7c,GAAG,OAAO,SAASniC,EAAE71B,GAAG,IAAIg1B,EAAEh1B,GAAG,CAAC,EAAEo0C,EAAEpf,EAAE8/C,KAAKliD,EAAEoC,EAAE+/C,+BAA+BvjB,EAAEx8B,EAAE09C,UAAUnL,EAAEhoE,EAAEy1B,EAAE,CAAC,OAAO,iCAAiC,cAAcrC,EAAE,SAASkD,EAAE6d,EAAEn0C,EAAE0H,GAAG,OAAOkqC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,yBAAyBsqB,GAAG7uB,KAAK,CAACuoE,UAAUhwE,EAAEiwE,YAAY97B,IAAIzsC,IAAG,SAAU4uB,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,EAAE5yC,EAAE8F,KAAKqmC,SAASjgB,SAAS,IAAI0P,UAAU,GAAGl2B,EAAE,GAAGyc,OAAO+0C,EAAEyL,UAAU,SAASxgD,OAAOniB,GAAGS,EAAEyzE,GAAG,CAACjE,MAAM/Y,EAAE+Y,MAAMrD,YAAY1V,EAAE0V,YAAYjK,UAAUj9D,IAAIsmD,EAAE,GAAG5lD,EAAEyrB,EAAEqlC,EAAEyL,UAAUj9D,EAAE,OAAOktC,EAAEA,EAAE,CAAC,EAAE6zB,GAAG,CAAC,EAAE,CAACsI,MAAM,CAAC,WAAW,WAAW,YAAY,OAAO/iB,EAAE9rD,KAAKkG,GAAGiqC,GAAGiD,EAAEltC,EAAEgkE,KAAK3D,GAAGrgE,GAAGo2B,MAAK,WAAY,IAAI06B,EAAEz2D,EAAEs0B,EAAE6d,EAAEA,EAAE,CAAC,EAAE6zB,GAAG,CAAC,EAAE,CAACwN,+BAA+BniD,EAAE8/C,UAAUlhB,KAAK,OAAO1E,EAAE9rD,KAAKg3D,GAAG5jB,EAAE4jB,EAAEkT,KAAK3D,GAAGvP,CAAE,IAAG16B,MAAK,WAAY,IAAIzH,EAAElD,EAAEnsB,EAAEwxD,EAAEyL,UAAU,OAAO8D,GAAG,OAAOza,EAAE9rD,KAAK60B,GAAGue,EAAEve,EAAEq1C,KAAK3D,GAAG1xC,CAAE,IAAGyH,MAAK,WAAY,OAAOvW,QAAQ4kB,IAAImhB,EAAG,IAAGxvB,MAAK,SAAU06B,GAAG,IAAIniC,EAAE5uB,EAAE+wD,EAAE,GAAGtkB,EAAE7d,EAAE,GAAGt2B,EAAEs2B,EAAE,GAAG71B,EAAE61B,EAAE,GAAG,MAAM,CAAC+8C,UAAUrzE,EAAEqzE,UAAUD,QAAQ,CAACj/B,EAAE27B,QAAQpsD,OAAO2uB,EAAEryC,EAAEozE,SAAS,CAAC3yE,EAAEqvE,SAAU,KAAG,SAAUrX,EAAEniC,GAAG,OAAO9O,QAAQ4kB,IAAImhB,EAAE5pC,KAAI,SAAU80C,GAAG,OAAOA,EAAEkT,KAAKr1C,EAAG,IAAI,GAAE,CAAC,EAAEo/C,GAAG,SAASjd,GAAG,OAAO,SAASniC,EAAEt2B,GAAG,OAAO21E,GAAGld,EAAHkd,CAAMr/C,EAAE6d,EAAEA,EAAE,CAAC,EAAEn0C,GAAG,CAAC,EAAE,CAAC41E,oBAAmB,IAAK,CAAC,EAAEC,GAAG,SAASpd,GAAG,OAAO,SAASniC,EAAEt2B,GAAG,OAAO81E,GAAGrd,EAAHqd,CAAMx/C,EAAE6d,EAAEA,EAAE,CAAC,EAAEn0C,GAAG,CAAC,EAAE,CAAC+1E,uBAAsB,IAAK,CAAC,EAAEC,GAAG,SAASvd,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOvC,EAAE6jC,GAAGhd,EAAHgd,CAAM,CAACn/C,GAAG6d,GAAGpW,MAAK,SAAU06B,GAAG,MAAM,CAACsY,SAAStY,EAAE4a,UAAU,GAAGvD,OAAOrX,EAAE2a,QAAQ,GAAI,KAAG,SAAU98C,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEshC,GAAG,SAAShd,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8tE,+BAA+B/0E,EAAET,EAAE0H,EAAE,CAAC,mCAAmC+tB,EAAE4c,EAAEyhC,GAAGmC,UAAUnC,GAAGoC,aAAa,GAAGzgD,IAAIq+C,GAAGoC,aAAa,CAAC,IAAIrhC,GAAE,EAAGxhB,GAAE,EAAG4+B,OAAE,EAAO,IAAI,IAAI,IAAI+V,EAAE50C,EAAEkD,EAAEqP,OAAOC,cAAciP,GAAGmzB,EAAE50C,EAAE4K,QAAQ8I,MAAM+N,GAAE,EAAI,QAAG,IAASmzB,EAAEjlE,MAAMguE,SAAS,OAAOn/B,EAAEpqB,QAAQuQ,OAAO,CAACjhB,KAAK,uBAAuBkkB,QAAQ,yOAA0O,CAAC,MAAMy9B,GAAGplC,GAAE,EAAG4+B,EAAEwG,CAAC,CAAC,QAAQ,IAAI5jB,GAAG,MAAMzhB,EAAEs3C,QAAQt3C,EAAEs3C,QAAQ,CAAC,QAAQ,GAAGr3C,EAAE,MAAM4+B,CAAC,CAAC,CAAC,CAAC,OAAOihB,GAAGza,EAAHya,CAAM58C,EAAEb,EAAEh1B,EAAE,CAAC,EAAE01E,GAAG,SAAS1d,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOwhC,GAAGld,EAAHkd,CAAM,CAACr/C,GAAG6d,EAAE,CAAC,EAAEwhC,GAAG,SAASld,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8rE,kBAAkB/yE,EAAEiH,EAAEkuE,mBAAmBngD,EAAExuB,EAAEjH,EAAE0H,EAAE,CAAC,oBAAoB,wBAAwB,OAAO2qC,IAAI5c,EAAEg2C,gBAAgB+H,kBAAkB,GAAG/yE,IAAIg1B,EAAEg2C,gBAAgBmK,mBAAmB,GAAGhkC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,2BAA2BysD,EAAEyL,WAAWz8D,KAAK6uB,GAAGb,IAAG,SAAUa,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEiiC,GAAG,SAAS3d,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAO2hC,GAAGrd,EAAHqd,CAAM,CAACx/C,GAAG6d,EAAE,CAAC,EAAE2hC,GAAG,SAASrd,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8rE,kBAAkB/yE,EAAEiH,EAAEquE,sBAAsBtgD,EAAE/tB,EAAE2uE,wBAAwBxhC,EAAE5tC,EAAEjH,EAAE0H,EAAE,CAAC,oBAAoB,wBAAwB,6BAA6B,OAAO2qC,IAAIwC,EAAE42B,gBAAgB+H,kBAAkB,IAAI/9C,GAAGh1B,KAAKo0C,EAAE42B,gBAAgB4K,wBAAwB,GAAGzkC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,8BAA8BysD,EAAEyL,WAAWz8D,KAAK6uB,GAAGue,IAAG,SAAUve,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEogC,GAAG,SAAS9b,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,qBAAqBysD,EAAEyL,WAAWz8D,KAAK,CAACouD,MAAMv/B,GAAGu1C,WAAU,GAAI13B,EAAE,CAAC,EAAE+9B,GAAG,SAASzZ,GAAG,OAAO,SAASniC,EAAE6d,EAAEn0C,GAAG,OAAOy4D,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,+BAA+BysD,EAAEyL,UAAU5tC,GAAG7uB,KAAK,CAACgjE,WAAWt2B,GAAG03B,WAAU,GAAI7rE,EAAE,CAAC,EAAE8yE,GAAG,SAASra,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,4BAA4BysD,EAAEyL,WAAWz8D,KAAK,CAACouD,MAAMv/B,IAAI6d,EAAE,CAAC,EAAE8+B,GAAG,SAASxa,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOt3B,EAAEunC,KAAKviC,EAAE,+BAA+BysD,EAAEyL,WAAWz8D,KAAK,CAACouD,MAAMv/B,IAAI6d,EAAE,CAAC,EAAEmiC,GAAG,SAAS7d,GAAG,OAAO,SAASniC,EAAE6d,GAAG,IAAIzsC,EAAEysC,GAAG,CAAC,EAAE9B,EAAE3qC,EAAE8rE,kBAAkB/yE,EAAEwG,EAAEjH,EAAE0H,EAAE,CAAC,uBAAuB,OAAO2qC,IAAI5xC,EAAEgrE,gBAAgB+H,kBAAkB,GAAG5hC,EAAE6mB,EAAE0V,YAAYC,MAAM,CAAC9vC,OAAOkuC,EAAEj+B,KAAKviC,EAAE,wBAAwBysD,EAAEyL,WAAWz8D,KAAK6uB,GAAG71B,IAAG,SAAU61B,EAAE6d,GAAG,OAAOi8B,GAAG3X,EAAH2X,CAAM95C,EAAEw5C,OAAO37B,EAAG,GAAE,CAAC,EAAEi8B,GAAG,SAAS3X,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAO8d,GAAE,SAAUjyD,GAAG,OAAO,SAASy4D,GAAG,OAAO,SAASniC,EAAE6d,GAAG,OAAOskB,EAAE0V,YAAYF,KAAK,CAAC3vC,OAAOiuC,EAAEh+B,KAAKviC,EAAE,uBAAuBysD,EAAEyL,UAAU5tC,EAAE7I,aAAa0mB,EAAE,CAAC,CAAjI,CAAmIskB,EAAnI,CAAsIniC,EAAE6d,GAAGpW,MAAK,SAAU06B,GAAG,MAAM,cAAcA,EAAE12C,OAAO/hB,SAAI,CAAO,GAAG,GAAE,CAAC,EAAE8zE,GAAG,CAACmC,UAAU,YAAYC,aAAa,eAAed,oBAAoB,sBAAsBC,4BAA4B,8BAA8BtB,aAAa,eAAewC,YAAY,SAASC,WAAW,SAASjG,GAAG,CAACE,SAAS,WAAWE,SAAS,WAAWH,MAAM,SAASiG,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE,SAASC,GAAGne,EAAEniC,EAAEt2B,GAAG,IAAI0H,EAAE2qC,EAAE,CAACm/B,MAAM/Y,EAAEoe,OAAOvgD,EAAE22C,SAAS,CAACC,QAAQ,EAAEe,KAAK,EAAEG,MAAM,IAAIR,UAAU,CAACC,KAAK,SAASpV,GAAG,OAAO,IAAIjxC,SAAQ,SAAU8O,GAAG,IAAI6d,EAAE,IAAI2iC,eAAe3iC,EAAE1Z,KAAKg+B,EAAEn6B,OAAOm6B,EAAEz7B,KAAI,GAAIl2B,OAAO0J,KAAKioD,EAAE8S,SAASv6D,SAAQ,SAAUslB,GAAG,OAAO6d,EAAE4iC,iBAAiBzgD,EAAEmiC,EAAE8S,QAAQj1C,GAAI,IAAG,IAAIt2B,EAAE0H,EAAE,SAAS+wD,EAAEz4D,GAAG,OAAO2T,YAAW,WAAYwgC,EAAE6iC,QAAQ1gD,EAAE,CAACvU,OAAO,EAAEguB,QAAQ/vC,EAAEutE,YAAW,GAAK,GAAE,IAAI9U,EAAE,EAAEpmB,EAAE3qC,EAAE+wD,EAAEuU,eAAe,sBAAsB74B,EAAE8iC,mBAAmB,WAAW9iC,EAAEnK,WAAWmK,EAAE+iC,aAAQ,IAASl3E,IAAImX,aAAak7B,GAAGryC,EAAE0H,EAAE+wD,EAAE0U,gBAAgB,kBAAkB,EAAEh5B,EAAEpZ,QAAQ,WAAW,IAAIoZ,EAAEpyB,SAAS5K,aAAak7B,GAAGl7B,aAAanX,GAAGs2B,EAAE,CAACyZ,QAAQoE,EAAEgjC,cAAc,yBAAyBp1D,OAAOoyB,EAAEpyB,OAAOwrD,YAAW,IAAK,EAAEp5B,EAAEijC,OAAO,WAAWjgE,aAAak7B,GAAGl7B,aAAanX,GAAGs2B,EAAE,CAACyZ,QAAQoE,EAAEgjC,aAAap1D,OAAOoyB,EAAEpyB,OAAOwrD,YAAW,GAAI,EAAEp5B,EAAE05B,KAAKpV,EAAEhxD,KAAM,GAAE,GAAG+lE,QAAQ9lE,EAAEivE,GAAG,CAACU,MAAM,SAAS5e,EAAEniC,GAAG,OAAOmgD,IAAI/uE,GAAG/F,QAAQ01E,MAAM5e,EAAEniC,GAAG9O,QAAQC,SAAS,EAAEiQ,KAAK,SAAS+gC,EAAEniC,GAAG,OAAOogD,IAAIhvE,GAAG/F,QAAQ+1B,KAAK+gC,EAAEniC,GAAG9O,QAAQC,SAAS,EAAE9mB,MAAM,SAAS83D,EAAEniC,GAAG,OAAO30B,QAAQhB,MAAM83D,EAAEniC,GAAG9O,QAAQC,SAAS,IAAIsmD,eAAel5B,IAAIi5B,cAAcj5B,EAAE,CAACy2B,cAAa,IAAKoC,WAAWj4C,EAAE,CAAC21C,OAAO,CAAC3qE,EAAE,CAAC6B,IAAI,GAAGohB,OAAO,SAAS,KAAKA,OAAO+0C,KAAK5jB,OAAO3a,UAAUm0C,EAAE,UAAUl9D,IAAI,CAAC63D,QAAQ,aAAa/W,EAAE9d,EAAEA,EAAE,CAAC,EAAE9B,GAAGryC,GAAG4xC,EAAE,WAAW,OAAO,SAAS6mB,GAAG,OAAO,SAASA,GAAG,IAAIniC,EAAEmiC,EAAE6e,QAAQ,KAAKt3E,EAAEqzB,EAAE9xB,EAAEiqE,cAAc/S,EAAE+Y,MAAM/Y,EAAEoe,QAAQnvE,EAAE00B,EAAE+X,EAAEA,EAAE,CAAC65B,MAAM,CAAC,CAAChxC,IAAI,mBAAmBtZ,OAAO4S,EAAE,mBAAmBmiC,GAAG,CAAC,EAAE,CAAC8S,QAAQp3B,EAAEA,EAAEA,EAAE,CAAC,EAAEn0C,EAAEurE,WAAW,CAAC,eAAe,qBAAqB9S,EAAE8S,SAASE,gBAAgBt3B,EAAEA,EAAE,CAAC,EAAEn0C,EAAEyrE,mBAAmBhT,EAAEgT,oBAAoB,OAAOr4C,EAAE,CAACo+C,MAAM/Y,EAAE+Y,MAAMrD,YAAYzmE,GAAG+wD,EAAEp6B,QAAQ,CAAnV,CAAqV8V,EAAEA,EAAEA,EAAE,CAAC,EAAE9B,GAAGomB,GAAG,CAAC,EAAE,CAACp6B,QAAQ,CAACk5C,2BAA2B3I,EAAE4I,2BAA2B3I,KAAK,CAAC,EAAE,OAAO,SAASpW,GAAG,IAAIniC,EAAEmiC,EAAE+Y,MAAMxxE,EAAEqzB,OAAE,IAASolC,EAAEgf,SAAShf,EAAEgf,SAASl2E,EAAEiqE,cAAcl1C,EAAEmiC,EAAEoe,QAAQnvE,EAAE00B,EAAE+X,EAAEA,EAAE,CAAC65B,MAAM,CAAC,CAAChxC,IAAI,GAAGtZ,OAAO4S,EAAE,oBAAoB+1C,OAAOrqE,EAAE8pE,MAAM,CAAC9uC,IAAI,GAAGtZ,OAAO4S,EAAE,gBAAgB+1C,OAAOrqE,EAAE+pE,QAAQroD,OAAOskD,EAAE,CAAC,CAAChrC,IAAI,GAAGtZ,OAAO4S,EAAE,sBAAsB,CAAC0G,IAAI,GAAGtZ,OAAO4S,EAAE,sBAAsB,CAAC0G,IAAI,GAAGtZ,OAAO4S,EAAE,0BAA0BmiC,GAAG,CAAC,EAAE,CAAC8S,QAAQp3B,EAAEA,EAAEA,EAAE,CAAC,EAAEn0C,EAAEurE,WAAW,CAAC,eAAe,sCAAsC9S,EAAE8S,SAASE,gBAAgBt3B,EAAEA,EAAE,CAAC,EAAEn0C,EAAEyrE,mBAAmBhT,EAAEgT,oBAAoB,OAAOr4C,EAAE,CAAC+6C,YAAYzmE,EAAE8pE,MAAMl7C,EAAEqrC,gBAAgB,SAASlJ,EAAEniC,GAAG5uB,EAAEwyB,UAAU/oB,IAAI,CAAC63D,QAAQvQ,EAAEpL,QAAQ/2B,GAAG,EAAEwwC,WAAW,WAAW,OAAOt/C,QAAQ4kB,IAAI,CAAC1kC,EAAEomE,cAAc5C,QAAQxjE,EAAEqmE,eAAe7C,UAAUntC,MAAK,WAAa,GAAE,GAAG06B,EAAEp6B,QAAQ,CAA9tB,CAAguB8V,EAAEA,EAAE,CAAC,EAAE8d,GAAG,CAAC,EAAE,CAAC5zB,QAAQ,CAACgkC,OAAO2P,GAAGvO,qBAAqBwO,GAAGyF,cAAc5F,GAAG6F,mBAAmB5F,GAAG6F,gBAAgB5F,GAAG6F,UAAU9H,EAAE+H,aAAal8C,EAAEm8C,aAAarH,EAAEsH,UAAU3H,EAAE4H,UAAUpG,GAAGqG,YAAYvG,GAAGwG,QAAQjH,GAAGkH,aAAa1G,GAAG2G,6BAA6BpG,GAAGqG,UAAUjJ,GAAGkJ,UAAUpJ,EAAEqJ,YAAY/G,GAAGgH,aAAa/F,GAAGgG,aAAa7H,EAAE8H,cAActG,GAAGuG,aAAatJ,EAAEuJ,cAAcrJ,EAAEsJ,UAAU1H,GAAG2H,cAAcvG,GAAGwG,YAAYpH,GAAGqH,cAAc9H,GAAG+H,aAAa/G,GAAGgH,mBAAmB9H,GAAG+H,uBAAuB1J,EAAE2J,wBAAwBvI,EAAEwI,sBAAsBrI,GAAGsI,WAAWvI,GAAGwI,yBAAyBpH,GAAGqH,sBAAsBnH,GAAGoH,wBAAwBnH,GAAGoH,sBAAsBlH,GAAGmH,YAAY/J,GAAGgK,cAAcjJ,EAAErN,UAAU,SAAS9K,GAAG,OAAO,SAASniC,GAAG,OAAO45C,GAAGzX,EAAHyX,CAAM55C,EAAE,CAAC+H,QAAQ,CAAC0wC,MAAM4D,GAAGxyD,OAAOwzD,GAAG1Q,YAAYmR,GAAG0F,UAAUpF,GAAGqF,WAAWnF,GAAGoF,WAAWhE,GAAGiE,YAAYxE,GAAGpT,OAAOkS,GAAG9Q,qBAAqByO,GAAG/B,SAASC,GAAG8J,YAAY5D,GAAG6D,YAAYhG,GAAGiG,oBAAoBnF,GAAGoF,qBAAqBnF,GAAGoF,aAAa1G,GAAG2G,cAAc1G,GAAG2G,SAAS9G,GAAG+G,aAAanH,GAAGoH,cAAc9H,GAAG+H,kBAAkBhG,GAAGiG,WAAWvG,GAAGwG,OAAO3G,GAAG4G,YAAY1E,GAAG2E,aAAajF,GAAGkF,WAAWhG,GAAGiG,eAAehI,GAAGiI,eAAelI,GAAGmI,cAAclH,GAAGmH,cAAc3H,GAAG4H,kBAAkB/F,GAAGgG,mBAAmBzF,GAAG0F,YAAYzI,GAAG0I,QAAQ1G,GAAG2G,WAAWzH,GAAG0H,SAASvF,GAAGwF,UAAUhG,GAAGiG,gBAAgBlG,GAAGmG,YAAYhJ,GAAGiJ,WAAWvI,KAAK,CAAC,EAAEwI,cAAc,WAAW,OAAO,SAAStjB,GAAG,OAAO,SAASA,GAAG,IAAIniC,EAAEmiC,EAAE6e,QAAQ,KAAKt3E,EAAEqzB,EAAE9xB,EAAEiqE,cAAc/S,EAAE+Y,MAAM/Y,EAAEoe,QAAQnvE,EAAE00B,EAAE+X,EAAEA,EAAE,CAAC65B,MAAM,CAAC,CAAChxC,IAAI,aAAatZ,OAAO4S,EAAE,mBAAmBmiC,GAAG,CAAC,EAAE,CAAC8S,QAAQp3B,EAAEA,EAAEA,EAAE,CAAC,EAAEn0C,EAAEurE,WAAW,CAAC,eAAe,qBAAqB9S,EAAE8S,SAASE,gBAAgBt3B,EAAEA,EAAE,CAAC,EAAEn0C,EAAEyrE,mBAAmBhT,EAAEgT,oBAAoB,OAAOr4C,EAAE,CAACo+C,MAAM/Y,EAAE+Y,MAAMrD,YAAYzmE,GAAG+wD,EAAEp6B,QAAQ,CAA7U,CAA+U8V,EAAEA,EAAEA,EAAE,CAAC,EAAE9B,GAAGomB,GAAG,CAAC,EAAE,CAACp6B,QAAQ,CAAC29C,UAAUzN,EAAE0N,UAAUxN,EAAEyN,WAAWxN,EAAEyN,WAAWxN,EAAEyN,aAAa5N,KAAK,CAAC,EAAE6N,oBAAoBzqC,EAAE0qC,mBAAmB,WAAW,OAAO,SAAS7jB,GAAG,OAAOxG,EAAEub,OAAO91C,KAAK,qFAAqFka,IAAI6mB,EAAE,CAAC,KAAK,CAAC,OAAOme,GAAGvpB,QAAQ,SAASupB,EAAG,CAAhihCtgD,0BCInF,IAAIimD,EAAY,EAAQ,MAExB38E,EAAQ4kD,KAAO,SAAex4C,EAAGzF,GAE/B,IAAIq8D,GADJr8D,EAAUA,GAAW,CAAC,GACLwU,UAAY,WAAa,EAE1C,GAAK/O,EAAL,CACA,IAAIwwE,EAAWj2E,EAAQi2E,UAAY58E,EAAQ48E,SAI3C7oE,YAAW,WACT,IAAI8oE,EAAM78E,EAAQ8lB,SAAS1Z,GACtBywE,IACDD,EAASC,EAAI35E,KAAO05E,EAASC,EAAI3lE,OAAmB8rD,IADlCA,GAAG,EAG3B,GAAG,EAVoB,MAAHA,GAWtB,EAEAhjE,EAAQ48E,SAAW,SAAmBxpB,GACpC,QAAKA,IACLA,EAAGhjD,kBACI,EACT,EAEApQ,EAAQ8lB,SAAW,SAAmB1Z,GACpC,IAAI0wE,EAAO98E,EAAQ+8E,UAAU3wE,GAC7B,GAAK0wE,EACL,MAAO,CACL55E,GAAIiL,SAAS6uE,eAAeF,EAAK55E,IACjCgU,KAAM/I,SAASilB,cAAc0pD,EAAK5lE,MAEtC,EAEAlX,EAAQ+8E,UAAY,SAAoB3wE,GACtC,GAAKA,IACLA,EAAIA,EAAEoqB,QAAQ,KAAM,KAEpB,MAAO,CACLtzB,GAAIkJ,EACJ8K,KAAM,UAAYylE,EAAUvwE,GAAK,KAErC,EAEApM,EAAQi9E,UAAY,SAAoBt2E,GACtC3G,EAAQ4kD,KAAKn3C,OAAOyvE,SAASt4B,KAAMj+C,EACrC,EAEA3G,EAAA,QAAkBA,EAAQi9E,8CCnD1B,IAAIE,EAAe,EAAQ,OAEvBC,EAAW,EAAQ,OAEnBC,EAAWD,EAASD,EAAa,6BAErCp9E,EAAOC,QAAU,SAA4BkX,EAAMomE,GAClD,IAAIC,EAAYJ,EAAajmE,IAAQomE,GACrC,MAAyB,mBAAdC,GAA4BF,EAASnmE,EAAM,gBAAkB,EAChEkmE,EAASG,GAEVA,CACR,sCCZA,IAAI9pE,EAAO,EAAQ,OACf0pE,EAAe,EAAQ,OAEvBK,EAASL,EAAa,8BACtBM,EAAQN,EAAa,6BACrBO,EAAgBP,EAAa,mBAAmB,IAAS1pE,EAAKpS,KAAKo8E,EAAOD,GAE1EG,EAAQR,EAAa,qCAAqC,GAC1DS,EAAkBT,EAAa,2BAA2B,GAC1DU,EAAOV,EAAa,cAExB,GAAIS,EACH,IACCA,EAAgB,CAAC,EAAG,IAAK,CAAEz6E,MAAO,GACnC,CAAE,MAAOuzB,GAERknD,EAAkB,IACnB,CAGD79E,EAAOC,QAAU,SAAkB89E,GAClC,IAAI/rC,EAAO2rC,EAAcjqE,EAAMgqE,EAAOx8E,WAClC08E,GAASC,IACDD,EAAM5rC,EAAM,UACd7L,cAER03C,EACC7rC,EACA,SACA,CAAE5uC,MAAO,EAAI06E,EAAK,EAAGC,EAAiB98E,QAAUC,UAAUD,OAAS,OAItE,OAAO+wC,CACR,EAEA,IAAIgsC,EAAY,WACf,OAAOL,EAAcjqE,EAAM+pE,EAAQv8E,UACpC,EAEI28E,EACHA,EAAgB79E,EAAOC,QAAS,QAAS,CAAEmD,MAAO46E,IAElDh+E,EAAOC,QAAQwB,MAAQu8E,uBC7CxB,OAOC,WACA,aAEA,IAAIC,EAAS,CAAC,EAAEhnD,eAGhB,SAASinD,IAGR,IAFA,IAAI/tC,EAAU,GAELrvC,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAC1C,IAAIjB,EAAMqB,UAAUJ,GACpB,GAAKjB,EAAL,CAEA,IAAIs+E,SAAiBt+E,EAErB,GAAgB,WAAZs+E,GAAoC,WAAZA,EAC3BhuC,EAAQruC,KAAKjC,QACP,GAAI0B,MAAMgpB,QAAQ1qB,IACxB,GAAIA,EAAIoB,OAAQ,CACf,IAAI0tC,EAAQuvC,EAAWz8E,MAAM,KAAM5B,GAC/B8uC,GACHwB,EAAQruC,KAAK6sC,EAEf,OACM,GAAgB,WAAZwvC,EAAsB,CAChC,GAAIt+E,EAAIiuB,WAAa3mB,OAAOjH,UAAU4tB,WAAajuB,EAAIiuB,SAASA,WAAWhhB,SAAS,iBAAkB,CACrGqjC,EAAQruC,KAAKjC,EAAIiuB,YACjB,QACD,CAEA,IAAK,IAAInrB,KAAO9C,EACXo+E,EAAO38E,KAAKzB,EAAK8C,IAAQ9C,EAAI8C,IAChCwtC,EAAQruC,KAAKa,EAGhB,CAxBkB,CAyBnB,CAEA,OAAOwtC,EAAQld,KAAK,IACrB,CAEqCjzB,EAAOC,SAC3Ci+E,EAAWE,QAAUF,EACrBl+E,EAAOC,QAAUi+E,QAKhB,KAFwB,EAAF,WACtB,OAAOA,CACP,UAFoB,OAEpB,YAIH,CApDA,uCCPA,SAASG,EAAMC,GACd,IAAI7hD,EAAGn1B,EAAGisB,EAAI,GAEd,GAAmB,iBAAR+qD,GAAmC,iBAARA,EACrC/qD,GAAO+qD,OACD,GAAmB,iBAARA,EACjB,GAAI/8E,MAAMgpB,QAAQ+zD,GACjB,IAAK7hD,EAAE,EAAGA,EAAI6hD,EAAIr9E,OAAQw7B,IACrB6hD,EAAI7hD,KACHn1B,EAAI+2E,EAAMC,EAAI7hD,OACjBlJ,IAAQA,GAAO,KACfA,GAAOjsB,QAKV,IAAKm1B,KAAK6hD,EACLA,EAAI7hD,KACPlJ,IAAQA,GAAO,KACfA,GAAOkJ,GAMX,OAAOlJ,CACR,CAEe,SAAS,IAEvB,IADA,IAASgrD,EAAKl3E,EAAVvG,EAAE,EAAWyyB,EAAI,GACdzyB,EAAII,UAAUD,SAChBs9E,EAAMr9E,UAAUJ,QACfuG,EAAIg3E,EAAME,MACbhrD,IAAQA,GAAO,KACfA,GAAOlsB,GAIV,OAAOksB,CACR,2HCvCA,IAAIirD,IAAmC,oBAAX9wE,SAA0BA,OAAOU,WAAYV,OAAOU,SAAS0hB,eAmCzF,IAAI2uD,OAAW,EAEf,SAASC,IAIP,YAHiB/+E,IAAb8+E,IACFA,EAnCJ,WACE,IAAKD,EACH,OAAO,EAGT,IAAK9wE,OAAOiE,mBAAqBjE,OAAO6D,sBAAwBpK,OAAO4J,eACrE,OAAO,EAGT,IAAI4tE,GAAwB,EAC5B,IACE,IAAIz5C,EAAO/9B,OAAO4J,eAAe,CAAC,EAAG,UAAW,CAE9CjI,IACE,WACE61E,GAAwB,CAC1B,IAKAl4E,EAAO,WAAiB,EAC5BiH,OAAOiE,iBAAiB,0BAA2BlL,EAAMy+B,GACzDx3B,OAAO6D,oBAAoB,0BAA2B9K,EAAMy+B,EAC9D,CAAE,MAAOvO,GAET,CAEA,OAAOgoD,CACT,CAMeC,IAENH,CACT,CAgDA,SAASI,EAAiCC,GACpCA,EAAcC,WAAaD,EAAcE,eAE3CF,EAAcE,aAAeF,EAAcC,SAASv9E,QAExD,CAEA,SAASy9E,EAAoB91E,GAC3B3J,KAAK2J,OAASA,EACd3J,KAAK6W,OAAS,CAAC,CACjB,CAEA4oE,EAAoB/+E,UAAUg/E,iBAC5B,SAA0BztE,EAAW7K,GACnC,IAvCqBu4E,EAuCjBx8E,EAAMgzB,OAAOlkB,GAAa,IAAMkkB,QAvCfwpD,EAuCsCv4E,IAhC9B,IAA3Bu4E,EACK,KAWKA,EAAuBznE,SAAW,IAClCynE,EAAuB/nE,SAAW,IACrC+nE,EAAuBh9E,MAAQ,GAnBjC,GA+CP,OARK3C,KAAK6W,OAAO1T,KACfnD,KAAK6W,OAAO1T,GAAO,CACjBo8E,SAAU,GACVK,iBAAaz/E,GAEfH,KAAK6W,OAAO1T,GAAKq8E,aAAex/E,KAAK6W,OAAO1T,GAAKo8E,UAG5Cv/E,KAAK6W,OAAO1T,EACrB,EAKFs8E,EAAoB/+E,UAAUk/E,YAC5B,SAAqB3tE,EAAW7K,EAASwL,GACvC,IAAI0sE,EAAgBt/E,KAAK0/E,iBAAiBztE,EAAW7K,GACrDk4E,EAAcC,SAAWD,EAAcE,aACvCF,EAAcC,SAAS1tE,SAAQ,SAAU1Q,GACnCA,GAKFA,EAAQyR,EAEZ,GACF,EAKF6sE,EAAoB/+E,UAAUsR,IAC5B,SAAaC,EAAW9P,EAAUiF,GAChC,IAAI04B,EAAQ9/B,KAGRs/E,EAAgBt/E,KAAK0/E,iBAAiBztE,EAAW7K,GAErDi4E,EAAiCC,GAES,IAAtCA,EAAcE,aAAa/9E,SAC7B69E,EAAcM,YAAc5/E,KAAK4/E,YAAY1rE,KAAKlU,KAAMiS,EAAW7K,GAEnEpH,KAAK2J,OAAOwI,iBAAiBF,EAAWqtE,EAAcM,YAAax4E,IAGrEk4E,EAAcE,aAAal9E,KAAKH,GAEhC,IAAI09E,GAAe,EAgCnB,OA9BE,WACE,GAAKA,EAAL,CAIAA,GAAe,EAEfR,EAAiCC,GACjC,IAAIvkE,EAAQukE,EAAcE,aAAa7yE,QAAQxK,GAC/Cm9E,EAAcE,aAAav8E,OAAO8X,EAAO,GAEC,IAAtCukE,EAAcE,aAAa/9E,SAIzBq+B,EAAMn2B,QAMRm2B,EAAMn2B,OAAOoI,oBAAoBE,EAAWqtE,EAAcM,YAAax4E,GAGzEk4E,EAAcM,iBAAcz/E,EArB9B,CAuBF,CAKJ,EAKF,IAAI2/E,EAAqB,mCAGzB,SAAS3tE,EAAiBxI,EAAQsI,EAAW9P,EAAUiF,GAChDuC,EAAOm2E,KAEVn2E,EAAOm2E,GAAsB,IAAIL,EAAoB91E,IAEvD,IAAIg2E,EA7JN,SAA+BI,GAC7B,GAAKA,EAIL,OAAKb,IAQEa,IAHIA,EAAa7nE,OAI1B,CA+I+B8nE,CAAsB54E,GACnD,OAAOuC,EAAOm2E,GAAoB9tE,IAAIC,EAAW9P,EAAUw9E,EAC7D,wBC1ME,IAAS3f,SAYQ,IAAV,EAAAn9D,EAAwB,EAAAA,EAAS7C,KARxCQ,EAAOC,QAQuC,SAASu/D,GAExD,GAAIA,EAAK5sC,KAAO4sC,EAAK5sC,IAAI6sD,OACxB,OAAOjgB,EAAK5sC,IAAI6sD,OAIjB,IAAIC,EAAY,SAASt8E,GACxB,GAAwB,GAApBlC,UAAUD,OACb,MAAM,IAAIV,UAAU,sCAQrB,IANA,IAGIo/E,EAHApnC,EAAS5iB,OAAOvyB,GAChBnC,EAASs3C,EAAOt3C,OAChBsZ,GAAS,EAETygB,EAAS,GACT4kD,EAAgBrnC,EAAO5kB,WAAW,KAC7BpZ,EAAQtZ,GAOA,IANhB0+E,EAAWpnC,EAAO5kB,WAAWpZ,IA2B5BygB,GAbC2kD,GAAY,GAAUA,GAAY,IAAuB,KAAZA,GAGpC,GAATplE,GAAcolE,GAAY,IAAUA,GAAY,IAIvC,GAATplE,GACAolE,GAAY,IAAUA,GAAY,IACjB,IAAjBC,EAIS,KAAOD,EAAS7xD,SAAS,IAAM,IAOhC,GAATvT,GACU,GAAVtZ,GACY,IAAZ0+E,KAWAA,GAAY,KACA,IAAZA,GACY,IAAZA,GACAA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,KAdxB,KAAOpnC,EAAOpiB,OAAO5b,GAiBrBg+B,EAAOpiB,OAAO5b,GAhDxBygB,GAAU,IAyDZ,OAAOA,CACR,EAOA,OALKwkC,EAAK5sC,MACT4sC,EAAK5sC,IAAM,CAAC,GAGb4sC,EAAK5sC,IAAI6sD,OAASC,EACXA,CAER,CApGmBG,CAAQrgB,sBCLyCx/D,EAAOC,QAAkI,WAAY,aAAa,IAAI64D,EAAE,IAAIniC,EAAE,IAAIt2B,EAAE,KAAKm0C,EAAE,cAAc1zC,EAAE,SAASo0C,EAAE,SAASpf,EAAE,OAAO/tB,EAAE,MAAM2qC,EAAE,OAAOhf,EAAE,QAAQ4+B,EAAE,UAAUjmD,EAAE,OAAO4lC,EAAE,OAAOo2B,EAAE,eAAe8I,EAAE,6FAA6F7pE,EAAE,sFAAsF4nE,EAAE,CAAC/3D,KAAK,KAAK2oE,SAAS,2DAA2Dz0E,MAAM,KAAK00E,OAAO,wFAAwF10E,MAAM,KAAK20E,QAAQ,SAASlnB,GAAG,IAAIniC,EAAE,CAAC,KAAK,KAAK,KAAK,MAAMt2B,EAAEy4D,EAAE,IAAI,MAAM,IAAIA,GAAGniC,GAAGt2B,EAAE,IAAI,KAAKs2B,EAAEt2B,IAAIs2B,EAAE,IAAI,GAAG,GAAG/0B,EAAE,SAASk3D,EAAEniC,EAAEt2B,GAAG,IAAIm0C,EAAE7e,OAAOmjC,GAAG,OAAOtkB,GAAGA,EAAEvzC,QAAQ01B,EAAEmiC,EAAE,GAAGv3D,MAAMo1B,EAAE,EAAE6d,EAAEvzC,QAAQgyB,KAAK5yB,GAAGy4D,CAAC,EAAElL,EAAE,CAAC1Y,EAAEtzC,EAAEktE,EAAE,SAAShW,GAAG,IAAIniC,GAAGmiC,EAAEmnB,YAAY5/E,EAAEqH,KAAKoI,IAAI6mB,GAAG6d,EAAE9sC,KAAKukE,MAAM5rE,EAAE,IAAIS,EAAET,EAAE,GAAG,OAAOs2B,GAAG,EAAE,IAAI,KAAK/0B,EAAE4yC,EAAE,EAAE,KAAK,IAAI5yC,EAAEd,EAAE,EAAE,IAAI,EAAEc,EAAE,SAASk3D,EAAEniC,EAAEt2B,GAAG,GAAGs2B,EAAEupD,OAAO7/E,EAAE6/E,OAAO,OAAOpnB,EAAEz4D,EAAEs2B,GAAG,IAAI6d,EAAE,IAAIn0C,EAAE8/E,OAAOxpD,EAAEwpD,SAAS9/E,EAAE+/E,QAAQzpD,EAAEypD,SAASt/E,EAAE61B,EAAE0pD,QAAQ7uE,IAAIgjC,EAAE9gB,GAAGwhB,EAAE70C,EAAES,EAAE,EAAEg1B,EAAEa,EAAE0pD,QAAQ7uE,IAAIgjC,GAAGU,GAAG,EAAE,GAAGxhB,GAAG,UAAU8gB,GAAGn0C,EAAES,IAAIo0C,EAAEp0C,EAAEg1B,EAAEA,EAAEh1B,KAAK,EAAE,EAAEiH,EAAE,SAAS+wD,GAAG,OAAOA,EAAE,EAAEpxD,KAAKuoC,KAAK6oB,IAAI,EAAEpxD,KAAKukE,MAAMnT,EAAE,EAAErlC,EAAE,SAASqlC,GAAG,MAAM,CAACoW,EAAEx7C,EAAEpsB,EAAE+E,EAAED,EAAEsmC,EAAET,EAAElqC,EAAE8kE,EAAE56B,EAAE5lC,EAAEypB,EAAEl0B,EAAEszC,EAAEA,EAAEp0C,EAAEw/E,GAAG9rC,EAAEq7B,EAAEvd,GAAGwG,IAAInjC,OAAOmjC,GAAG,IAAInlB,cAAcld,QAAQ,KAAK,GAAG,EAAEX,EAAE,SAASgjC,GAAG,YAAO,IAASA,CAAC,GAAGz2D,EAAE,KAAKwqE,EAAE,CAAC,EAAEA,EAAExqE,GAAG6sE,EAAE,IAAIz7C,EAAE,iBAAiBu5C,EAAE,SAASlU,GAAG,OAAOA,aAAa78B,MAAM68B,IAAIA,EAAErlC,GAAG,EAAErnB,EAAE,SAAS0sD,EAAEniC,EAAEt2B,EAAEm0C,GAAG,IAAI1zC,EAAE,IAAI61B,EAAE,OAAOt0B,EAAE,GAAG,iBAAiBs0B,EAAE,CAAC,IAAIue,EAAEve,EAAEgd,cAAck5B,EAAE33B,KAAKp0C,EAAEo0C,GAAG70C,IAAIwsE,EAAE33B,GAAG70C,EAAES,EAAEo0C,GAAG,IAAIpf,EAAEa,EAAEtrB,MAAM,KAAK,IAAIvK,GAAGg1B,EAAE70B,OAAO,EAAE,OAAO63D,EAAEhjC,EAAE,GAAG,KAAK,CAAC,IAAI/tB,EAAE4uB,EAAExf,KAAK01D,EAAE9kE,GAAG4uB,EAAE71B,EAAEiH,CAAC,CAAC,OAAOysC,GAAG1zC,IAAIuB,EAAEvB,GAAGA,IAAI0zC,GAAGnyC,CAAC,EAAEiqE,EAAE,SAASxT,EAAEniC,GAAG,GAAGq2C,EAAElU,GAAG,OAAOA,EAAEunB,QAAQ,IAAIhgF,EAAE,iBAAiBs2B,EAAEA,EAAE,CAAC,EAAE,OAAOt2B,EAAE6/E,KAAKpnB,EAAEz4D,EAAEQ,KAAKK,UAAU,IAAI+6B,EAAE57B,EAAE,EAAE2H,EAAE4lD,EAAE5lD,EAAEqgE,EAAEj8D,EAAEpE,EAAElH,EAAEksE,EAAEhlE,EAAEoE,EAAE,SAAS0sD,EAAEniC,GAAG,OAAO21C,EAAExT,EAAE,CAACx2B,OAAO3L,EAAE4pD,GAAGC,IAAI7pD,EAAE8pD,GAAGp5E,EAAEsvB,EAAE+pD,GAAGC,QAAQhqD,EAAEgqD,SAAS,EAAE,IAAI1kD,EAAE,WAAW,SAASizC,EAAEpW,GAAGt5D,KAAK+gF,GAAGn0E,EAAE0sD,EAAEx2B,OAAO,MAAK,GAAI9iC,KAAKi4B,MAAMqhC,GAAGt5D,KAAKkhF,GAAGlhF,KAAKkhF,IAAI5nB,EAAEzxD,GAAG,CAAC,EAAE7H,KAAKi0B,IAAG,CAAE,CAAC,IAAI7xB,EAAEstE,EAAEhvE,UAAU,OAAO0B,EAAE61B,MAAM,SAASqhC,GAAGt5D,KAAKohF,GAAG,SAAS9nB,GAAG,IAAIniC,EAAEmiC,EAAEonB,KAAK7/E,EAAEy4D,EAAE0nB,IAAI,GAAG,OAAO7pD,EAAE,OAAO,IAAIG,KAAK+pD,KAAK,GAAG74E,EAAE8tB,EAAEa,GAAG,OAAO,IAAIG,KAAK,GAAGH,aAAaG,KAAK,OAAO,IAAIA,KAAKH,GAAG,GAAG,iBAAiBA,IAAI,MAAMxpB,KAAKwpB,GAAG,CAAC,IAAI6d,EAAE7d,EAAEgB,MAAMw5C,GAAG,GAAG38B,EAAE,CAAC,IAAI1zC,EAAE0zC,EAAE,GAAG,GAAG,EAAEU,GAAGV,EAAE,IAAI,KAAKhX,UAAU,EAAE,GAAG,OAAOn9B,EAAE,IAAIy2B,KAAKA,KAAKgqD,IAAItsC,EAAE,GAAG1zC,EAAE0zC,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEU,IAAI,IAAIpe,KAAK0d,EAAE,GAAG1zC,EAAE0zC,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEU,EAAE,CAAC,CAAC,OAAO,IAAIpe,KAAKH,EAAE,CAA3X,CAA6XmiC,GAAGt5D,KAAKuhF,MAAM,EAAEn/E,EAAEm/E,KAAK,WAAW,IAAIjoB,EAAEt5D,KAAKohF,GAAGphF,KAAKwhF,GAAGloB,EAAEmoB,cAAczhF,KAAK0hF,GAAGpoB,EAAEqoB,WAAW3hF,KAAK4hF,GAAGtoB,EAAEuoB,UAAU7hF,KAAK8hF,GAAGxoB,EAAEyoB,SAAS/hF,KAAKgiF,GAAG1oB,EAAE2oB,WAAWjiF,KAAKkiF,GAAG5oB,EAAE6oB,aAAaniF,KAAKoiF,GAAG9oB,EAAE+oB,aAAariF,KAAKsiF,IAAIhpB,EAAEipB,iBAAiB,EAAEngF,EAAEogF,OAAO,WAAW,OAAOh6E,CAAC,EAAEpG,EAAEqgF,QAAQ,WAAW,QAAQziF,KAAKohF,GAAG9yD,aAAau6C,EAAE,EAAEzmE,EAAEsgF,OAAO,SAASppB,EAAEniC,GAAG,IAAIt2B,EAAEisE,EAAExT,GAAG,OAAOt5D,KAAK2iF,QAAQxrD,IAAIt2B,GAAGA,GAAGb,KAAK4iF,MAAMzrD,EAAE,EAAE/0B,EAAEygF,QAAQ,SAASvpB,EAAEniC,GAAG,OAAO21C,EAAExT,GAAGt5D,KAAK2iF,QAAQxrD,EAAE,EAAE/0B,EAAE0gF,SAAS,SAASxpB,EAAEniC,GAAG,OAAOn3B,KAAK4iF,MAAMzrD,GAAG21C,EAAExT,EAAE,EAAEl3D,EAAE2gF,GAAG,SAASzpB,EAAEniC,EAAEt2B,GAAG,OAAO2H,EAAE8tB,EAAEgjC,GAAGt5D,KAAKm3B,GAAGn3B,KAAK6gB,IAAIhgB,EAAEy4D,EAAE,EAAEl3D,EAAE4gF,KAAK,WAAW,OAAO96E,KAAKukE,MAAMzsE,KAAKijF,UAAU,IAAI,EAAE7gF,EAAE6gF,QAAQ,WAAW,OAAOjjF,KAAKohF,GAAG7pD,SAAS,EAAEn1B,EAAEugF,QAAQ,SAASrpB,EAAEniC,GAAG,IAAIt2B,EAAEb,KAAKg1C,IAAIxsC,EAAE8tB,EAAEa,IAAIA,EAAE27B,EAAEtqD,EAAEyrB,EAAEqlC,GAAGuP,EAAE,SAASvP,EAAEniC,GAAG,IAAI71B,EAAEkH,EAAEoE,EAAE/L,EAAEogF,GAAG3pD,KAAKgqD,IAAIzgF,EAAE2gF,GAAGrqD,EAAEmiC,GAAG,IAAIhiC,KAAKz2B,EAAE2gF,GAAGrqD,EAAEmiC,GAAGz4D,GAAG,OAAOm0C,EAAE1zC,EAAEA,EAAEshF,MAAMr6E,EAAE,EAAEopE,EAAE,SAASrY,EAAEniC,GAAG,OAAO3uB,EAAEoE,EAAE/L,EAAEqiF,SAAS5pB,GAAGr3D,MAAMpB,EAAEqiF,OAAO,MAAMluC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMhzC,MAAMm1B,IAAIt2B,EAAE,EAAEiH,EAAE9H,KAAK8hF,GAAGpS,EAAE1vE,KAAK0hF,GAAGt/E,EAAEpC,KAAK4hF,GAAGxzB,EAAE,OAAOpuD,KAAKihF,GAAG,MAAM,IAAI,OAAOnuB,GAAG,KAAKjmD,EAAE,OAAOmoC,EAAE6zB,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAK30C,EAAE,OAAO8gB,EAAE6zB,EAAE,EAAE6G,GAAG7G,EAAE,EAAE6G,EAAE,GAAG,KAAKx8B,EAAE,IAAIrwC,EAAE7C,KAAKmjF,UAAUC,WAAW,EAAE/V,GAAGvlE,EAAEjF,EAAEiF,EAAE,EAAEA,GAAGjF,EAAE,OAAOgmE,EAAE7zB,EAAE5yC,EAAEirE,EAAEjrE,GAAG,EAAEirE,GAAGqC,GAAG,KAAKnnE,EAAE,KAAKkqC,EAAE,OAAOk/B,EAAEvjB,EAAE,QAAQ,GAAG,KAAK93B,EAAE,OAAOq7C,EAAEvjB,EAAE,UAAU,GAAG,KAAK1Y,EAAE,OAAOi8B,EAAEvjB,EAAE,UAAU,GAAG,KAAK9sD,EAAE,OAAOqwE,EAAEvjB,EAAE,eAAe,GAAG,QAAQ,OAAOpuD,KAAK6gF,QAAQ,EAAEz+E,EAAEwgF,MAAM,SAAStpB,GAAG,OAAOt5D,KAAK2iF,QAAQrpB,GAAE,EAAG,EAAEl3D,EAAEihF,KAAK,SAAS/pB,EAAEniC,GAAG,IAAIt2B,EAAEqyC,EAAE1qC,EAAEyrB,EAAEqlC,GAAGxG,EAAE,OAAO9yD,KAAKihF,GAAG,MAAM,IAAIpY,GAAGhoE,EAAE,CAAC,EAAEA,EAAE0H,GAAGuqD,EAAE,OAAOjyD,EAAE4xC,GAAGqgB,EAAE,OAAOjyD,EAAEqzB,GAAG4+B,EAAE,QAAQjyD,EAAEgM,GAAGimD,EAAE,WAAWjyD,EAAEy1B,GAAGw8B,EAAE,QAAQjyD,EAAE60C,GAAGod,EAAE,UAAUjyD,EAAES,GAAGwxD,EAAE,UAAUjyD,EAAEm0C,GAAG8d,EAAE,eAAejyD,GAAGqyC,GAAGy+B,EAAEz+B,IAAI3qC,EAAEvI,KAAK4hF,IAAIzqD,EAAEn3B,KAAK8hF,IAAI3qD,EAAE,GAAG+b,IAAIhf,GAAGgf,IAAIrmC,EAAE,CAAC,IAAI/E,EAAE9H,KAAK6gF,QAAQhgE,IAAI4xB,EAAE,GAAG3qC,EAAEs5E,GAAGvY,GAAG8I,GAAG7pE,EAAEy5E,OAAOvhF,KAAKohF,GAAGt5E,EAAE+Y,IAAI4xB,EAAEvqC,KAAK4B,IAAI9J,KAAK4hF,GAAG95E,EAAEw7E,gBAAgBlC,EAAE,MAAMvY,GAAG7oE,KAAKohF,GAAGvY,GAAG8I,GAAG,OAAO3xE,KAAKuhF,OAAOvhF,IAAI,EAAEoC,EAAEye,IAAI,SAASy4C,EAAEniC,GAAG,OAAOn3B,KAAK6gF,QAAQwC,KAAK/pB,EAAEniC,EAAE,EAAE/0B,EAAEkH,IAAI,SAASgwD,GAAG,OAAOt5D,KAAKwI,EAAEyrB,EAAEqlC,KAAK,EAAEl3D,EAAE4P,IAAI,SAASgjC,EAAE8d,GAAG,IAAIrgB,EAAEo2B,EAAE7oE,KAAKg1C,EAAE7qC,OAAO6qC,GAAG,IAAI28B,EAAEnpE,EAAEyrB,EAAE6+B,GAAGhrD,EAAE,SAASwxD,GAAG,IAAIniC,EAAE21C,EAAEjE,GAAG,OAAOrgE,EAAEoE,EAAEuqB,EAAEupD,KAAKvpD,EAAEupD,OAAOx4E,KAAKorB,MAAMgmC,EAAEtkB,IAAI6zB,EAAE,EAAE,GAAG8I,IAAIz9C,EAAE,OAAOl0B,KAAK6gB,IAAIqT,EAAEl0B,KAAK0hF,GAAG1sC,GAAG,GAAG28B,IAAI9kE,EAAE,OAAO7M,KAAK6gB,IAAIhU,EAAE7M,KAAKwhF,GAAGxsC,GAAG,GAAG28B,IAAIppE,EAAE,OAAOT,EAAE,GAAG,GAAG6pE,IAAIz+B,EAAE,OAAOprC,EAAE,GAAG,IAAI4nE,GAAGj9B,EAAE,CAAC,EAAEA,EAAEiD,GAAGve,EAAEsb,EAAEnc,GAAGz1B,EAAE4xC,EAAEnxC,GAAGg4D,EAAE7mB,GAAGk/B,IAAI,EAAEvvE,EAAEpC,KAAKohF,GAAG7pD,UAAUyd,EAAE06B,EAAE,OAAOlnE,EAAEoE,EAAExK,EAAEpC,KAAK,EAAEoC,EAAEswB,SAAS,SAAS4mC,EAAEniC,GAAG,OAAOn3B,KAAKgS,KAAK,EAAEsnD,EAAEniC,EAAE,EAAE/0B,EAAE4jC,OAAO,SAASszB,GAAG,IAAIniC,EAAEn3B,KAAKa,EAAEb,KAAKmjF,UAAU,IAAInjF,KAAKyiF,UAAU,OAAO5hF,EAAE0iF,aAAa1a,EAAE,IAAI7zB,EAAEskB,GAAG,uBAAuBh4D,EAAEkH,EAAE8mE,EAAEtvE,MAAM01C,EAAE11C,KAAKgiF,GAAG1rD,EAAEt2B,KAAKkiF,GAAG35E,EAAEvI,KAAK0hF,GAAGxuC,EAAEryC,EAAEy/E,SAASpsD,EAAErzB,EAAE0/E,OAAOztB,EAAEjyD,EAAE2iF,SAAS32E,EAAE,SAASysD,EAAEz4D,EAAES,EAAEo0C,GAAG,OAAO4jB,IAAIA,EAAEz4D,IAAIy4D,EAAEniC,EAAE6d,KAAK1zC,EAAET,GAAGmB,MAAM,EAAE0zC,EAAE,EAAEjD,EAAE,SAAS6mB,GAAG,OAAO9wD,EAAEktC,EAAEA,EAAE,IAAI,GAAG4jB,EAAE,IAAI,EAAEqY,EAAE7e,GAAG,SAASwG,EAAEniC,EAAEt2B,GAAG,IAAIm0C,EAAEskB,EAAE,GAAG,KAAK,KAAK,OAAOz4D,EAAEm0C,EAAEb,cAAca,CAAC,EAAE,OAAOA,EAAE/d,QAAQnvB,GAAE,SAAUwxD,EAAEtkB,GAAG,OAAOA,GAAG,SAASskB,GAAG,OAAOA,GAAG,IAAI,KAAK,OAAOnjC,OAAOgB,EAAEqqD,IAAIx/E,OAAO,GAAG,IAAI,OAAO,OAAOwG,EAAEktC,EAAEve,EAAEqqD,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOj5E,EAAE,EAAE,IAAI,KAAK,OAAOC,EAAEktC,EAAEntC,EAAE,EAAE,EAAE,KAAK,IAAI,MAAM,OAAOsE,EAAEhM,EAAE4iF,YAAYl7E,EAAE2rB,EAAE,GAAG,IAAI,OAAO,OAAOrnB,EAAEqnB,EAAE3rB,GAAG,IAAI,IAAI,OAAO4uB,EAAEyqD,GAAG,IAAI,KAAK,OAAOp5E,EAAEktC,EAAEve,EAAEyqD,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOzrD,OAAOgB,EAAE2qD,IAAI,IAAI,KAAK,OAAOj1E,EAAEhM,EAAE6iF,YAAYvsD,EAAE2qD,GAAG5uC,EAAE,GAAG,IAAI,MAAM,OAAOrmC,EAAEhM,EAAE8iF,cAAcxsD,EAAE2qD,GAAG5uC,EAAE,GAAG,IAAI,OAAO,OAAOA,EAAE/b,EAAE2qD,IAAI,IAAI,IAAI,OAAO3rD,OAAOuf,GAAG,IAAI,KAAK,OAAOltC,EAAEktC,EAAEA,EAAE,EAAE,KAAK,IAAI,IAAI,OAAOjD,EAAE,GAAG,IAAI,KAAK,OAAOA,EAAE,GAAG,IAAI,IAAI,OAAOk/B,EAAEj8B,EAAEpf,GAAE,GAAI,IAAI,IAAI,OAAOq7C,EAAEj8B,EAAEpf,GAAE,GAAI,IAAI,IAAI,OAAOH,OAAOG,GAAG,IAAI,KAAK,OAAO9tB,EAAEktC,EAAEpf,EAAE,EAAE,KAAK,IAAI,IAAI,OAAOH,OAAOgB,EAAEirD,IAAI,IAAI,KAAK,OAAO55E,EAAEktC,EAAEve,EAAEirD,GAAG,EAAE,KAAK,IAAI,MAAM,OAAO55E,EAAEktC,EAAEve,EAAEmrD,IAAI,EAAE,KAAK,IAAI,IAAI,OAAOhhF,EAAE,OAAO,IAAI,CAAptB,CAAstBg4D,IAAIh4D,EAAE21B,QAAQ,IAAI,GAAI,GAAE,EAAE70B,EAAEq+E,UAAU,WAAW,OAAO,IAAIv4E,KAAKorB,MAAMtzB,KAAKohF,GAAGwC,oBAAoB,GAAG,EAAExhF,EAAEyhF,KAAK,SAAS7uC,EAAEvC,EAAEo2B,GAAG,IAAI8I,EAAE7pE,EAAE9H,KAAK0vE,EAAElnE,EAAEyrB,EAAEwe,GAAGrwC,EAAE0qE,EAAE93B,GAAGoZ,GAAGhsD,EAAEq+E,YAAYzgF,KAAKygF,aAAatpD,EAAEt0B,EAAE7C,KAAKoC,EAAEirE,EAAE,WAAW,OAAO7kE,EAAEpG,EAAE0F,EAAE1F,EAAE,EAAE,OAAOstE,GAAG,KAAK7iE,EAAE8kE,EAAEtE,IAAI,GAAG,MAAM,KAAKn5C,EAAEy9C,EAAEtE,IAAI,MAAM,KAAKva,EAAE6e,EAAEtE,IAAI,EAAE,MAAM,KAAKn6B,EAAEy+B,GAAG9uE,EAAEurD,GAAG,OAAO,MAAM,KAAK7lD,EAAEopE,GAAG9uE,EAAEurD,GAAG,MAAM,MAAM,KAAK93B,EAAEq7C,EAAE9uE,EAAEhC,EAAE,MAAM,KAAK60C,EAAEi8B,EAAE9uE,EAAEs0B,EAAE,MAAM,KAAK71B,EAAEqwE,EAAE9uE,EAAEy2D,EAAE,MAAM,QAAQqY,EAAE9uE,EAAE,OAAOgmE,EAAE8I,EAAEnpE,EAAED,EAAEopE,EAAE,EAAEvvE,EAAEkhF,YAAY,WAAW,OAAOtjF,KAAK4iF,MAAM1uD,GAAG0tD,EAAE,EAAEx/E,EAAE+gF,QAAQ,WAAW,OAAO9V,EAAErtE,KAAK+gF,GAAG,EAAE3+E,EAAE0gC,OAAO,SAASw2B,EAAEniC,GAAG,IAAImiC,EAAE,OAAOt5D,KAAK+gF,GAAG,IAAIlgF,EAAEb,KAAK6gF,QAAQ7rC,EAAEpoC,EAAE0sD,EAAEniC,GAAE,GAAI,OAAO6d,IAAIn0C,EAAEkgF,GAAG/rC,GAAGn0C,CAAC,EAAEuB,EAAEy+E,MAAM,WAAW,OAAOr4E,EAAEoE,EAAE5M,KAAKohF,GAAGphF,KAAK,EAAEoC,EAAE8gF,OAAO,WAAW,OAAO,IAAI5rD,KAAKt3B,KAAKijF,UAAU,EAAE7gF,EAAE0hF,OAAO,WAAW,OAAO9jF,KAAKyiF,UAAUziF,KAAK+jF,cAAc,IAAI,EAAE3hF,EAAE2hF,YAAY,WAAW,OAAO/jF,KAAKohF,GAAG2C,aAAa,EAAE3hF,EAAEksB,SAAS,WAAW,OAAOtuB,KAAKohF,GAAG4C,aAAa,EAAEtU,CAAC,CAA/sJ,GAAmtJzyC,EAAER,EAAE/7B,UAAU,OAAOosE,EAAEpsE,UAAUu8B,EAAE,CAAC,CAAC,MAAM+X,GAAG,CAAC,KAAK1zC,GAAG,CAAC,KAAKo0C,GAAG,CAAC,KAAKpf,GAAG,CAAC,KAAK/tB,GAAG,CAAC,KAAK2rB,GAAG,CAAC,KAAKrnB,GAAG,CAAC,KAAK4lC,IAAI5gC,SAAQ,SAAUynD,GAAGr8B,EAAEq8B,EAAE,IAAI,SAASniC,GAAG,OAAOn3B,KAAK+iF,GAAG5rD,EAAEmiC,EAAE,GAAGA,EAAE,GAAG,CAAE,IAAGwT,EAAEmX,OAAO,SAAS3qB,EAAEniC,GAAG,OAAOmiC,EAAE4qB,KAAK5qB,EAAEniC,EAAEsF,EAAEqwC,GAAGxT,EAAE4qB,IAAG,GAAIpX,CAAC,EAAEA,EAAEhqC,OAAOl2B,EAAEkgE,EAAEqX,QAAQ3W,EAAEV,EAAEkW,KAAK,SAAS1pB,GAAG,OAAOwT,EAAE,IAAIxT,EAAE,EAAEwT,EAAEsX,GAAG/W,EAAExqE,GAAGiqE,EAAEuX,GAAGhX,EAAEP,EAAE74C,EAAE,CAAC,EAAE64C,CAAE,CAAl6N31C,mCCCnF,IAAI8B,EAAQ,eACRqrD,EAAgB,IAAI1uC,OAAO3c,EAAO,MAClCsrD,EAAe,IAAI3uC,OAAO,IAAM3c,EAAQ,KAAM,MAElD,SAASurD,EAAiBC,EAAY54E,GACrC,IAEC,OAAO8xB,mBAAmB8mD,EAAWhxD,KAAK,IAC3C,CAAE,MAAO7xB,GAET,CAEA,GAA0B,IAAtB6iF,EAAWhjF,OACd,OAAOgjF,EAGR54E,EAAQA,GAAS,EAGjB,IAAIlD,EAAO87E,EAAWziF,MAAM,EAAG6J,GAC3BhC,EAAQ46E,EAAWziF,MAAM6J,GAE7B,OAAO9J,MAAMrB,UAAU6jB,OAAOziB,KAAK,GAAI0iF,EAAiB77E,GAAO67E,EAAiB36E,GACjF,CAEA,SAAS66E,EAAO3vD,GACf,IACC,OAAO4I,mBAAmB5I,EAC3B,CAAE,MAAOnzB,GAGR,IAFA,IAAI+iF,EAAS5vD,EAAMoD,MAAMmsD,GAEhBhjF,EAAI,EAAGA,EAAIqjF,EAAOljF,OAAQH,IAGlCqjF,GAFA5vD,EAAQyvD,EAAiBG,EAAQrjF,GAAGmyB,KAAK,KAE1B0E,MAAMmsD,GAGtB,OAAOvvD,CACR,CACD,CAuCAv0B,EAAOC,QAAU,SAAUmkF,GAC1B,GAA0B,iBAAfA,EACV,MAAM,IAAI7jF,UAAU,6DAA+D6jF,EAAa,KAGjG,IAIC,OAHAA,EAAaA,EAAW3tD,QAAQ,MAAO,KAGhC0G,mBAAmBinD,EAC3B,CAAE,MAAOhjF,GAER,OAjDF,SAAkCmzB,GAQjC,IANA,IAAI8vD,EAAa,CAChB,SAAU,KACV,SAAU,MAGP1sD,EAAQosD,EAAaO,KAAK/vD,GACvBoD,GAAO,CACb,IAEC0sD,EAAW1sD,EAAM,IAAMwF,mBAAmBxF,EAAM,GACjD,CAAE,MAAOv2B,GACR,IAAI45B,EAASkpD,EAAOvsD,EAAM,IAEtBqD,IAAWrD,EAAM,KACpB0sD,EAAW1sD,EAAM,IAAMqD,EAEzB,CAEArD,EAAQosD,EAAaO,KAAK/vD,EAC3B,CAGA8vD,EAAW,OAAS,IAIpB,IAFA,IAAI9+D,EAAUpe,OAAO0J,KAAKwzE,GAEjBvjF,EAAI,EAAGA,EAAIykB,EAAQtkB,OAAQH,IAAK,CAExC,IAAI6B,EAAM4iB,EAAQzkB,GAClByzB,EAAQA,EAAMkC,QAAQ,IAAI2e,OAAOzyC,EAAK,KAAM0hF,EAAW1hF,GACxD,CAEA,OAAO4xB,CACR,CAcSgwD,CAAyBH,EACjC,CACD,iCC3FA,IAAII,EAAoB,SAA2BphF,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,iBAAVA,CAC1B,CANQqhF,CAAgBrhF,KAQxB,SAAmBA,GAClB,IAAIshF,EAAcv9E,OAAOjH,UAAU4tB,SAASxsB,KAAK8B,GAEjD,MAAuB,oBAAhBshF,GACa,kBAAhBA,GAQL,SAAwBthF,GACvB,OAAOA,EAAMuhF,WAAaC,CAC3B,CATKC,CAAezhF,EACpB,CAbM0hF,CAAU1hF,EAChB,EAeA,IACIwhF,EADiC,mBAAX5+C,QAAyBA,OAAO++C,IAClB/+C,OAAO++C,IAAI,iBAAmB,MAUtE,SAASC,EAA8B5hF,EAAOwD,GAC7C,OAA0B,IAAlBA,EAAQy5E,OAAmBz5E,EAAQ49E,kBAAkBphF,GAC1D6hF,GANiBl8C,EAMK3lC,EALlB7B,MAAMgpB,QAAQwe,GAAO,GAAK,CAAC,GAKD3lC,EAAOwD,GACrCxD,EAPJ,IAAqB2lC,CAQrB,CAEA,SAASm8C,EAAkB/7E,EAAQ0tB,EAAQjwB,GAC1C,OAAOuC,EAAO4a,OAAO8S,GAAQ7S,KAAI,SAASrY,GACzC,OAAOq5E,EAA8Br5E,EAAS/E,EAC/C,GACD,CAkBA,SAASu+E,EAAQh8E,GAChB,OAAOhC,OAAO0J,KAAK1H,GAAQ4a,OAT5B,SAAyC5a,GACxC,OAAOhC,OAAOq/B,sBACXr/B,OAAOq/B,sBAAsBr9B,GAAQlC,QAAO,SAASsoC,GACtD,OAAOpoC,OAAO6wC,qBAAqB12C,KAAK6H,EAAQomC,EACjD,IACE,EACJ,CAGmC61C,CAAgCj8E,GACnE,CAEA,SAASk8E,EAAmBrzD,EAAQ9kB,GACnC,IACC,OAAOA,KAAY8kB,CACpB,CAAE,MAAMiK,GACP,OAAO,CACR,CACD,CASA,SAASqpD,EAAYn8E,EAAQ0tB,EAAQjwB,GACpC,IAAI0pE,EAAc,CAAC,EAiBnB,OAhBI1pE,EAAQ49E,kBAAkBr7E,IAC7Bg8E,EAAQh8E,GAAQkI,SAAQ,SAAS1O,GAChC2tE,EAAY3tE,GAAOqiF,EAA8B77E,EAAOxG,GAAMiE,EAC/D,IAEDu+E,EAAQtuD,GAAQxlB,SAAQ,SAAS1O,IAblC,SAA0BwG,EAAQxG,GACjC,OAAO0iF,EAAmBl8E,EAAQxG,MAC5BwE,OAAO8vB,eAAe31B,KAAK6H,EAAQxG,IACpCwE,OAAO6wC,qBAAqB12C,KAAK6H,EAAQxG,GAC/C,EAUM4iF,CAAiBp8E,EAAQxG,KAIzB0iF,EAAmBl8E,EAAQxG,IAAQiE,EAAQ49E,kBAAkB3tD,EAAOl0B,IACvE2tE,EAAY3tE,GAhDf,SAA0BA,EAAKiE,GAC9B,IAAKA,EAAQ4+E,YACZ,OAAOP,EAER,IAAIO,EAAc5+E,EAAQ4+E,YAAY7iF,GACtC,MAA8B,mBAAhB6iF,EAA6BA,EAAcP,CAC1D,CA0CsBQ,CAAiB9iF,EAAKiE,EAAtB6+E,CAA+Bt8E,EAAOxG,GAAMk0B,EAAOl0B,GAAMiE,GAE5E0pE,EAAY3tE,GAAOqiF,EAA8BnuD,EAAOl0B,GAAMiE,GAEhE,IACO0pE,CACR,CAEA,SAAS2U,EAAU97E,EAAQ0tB,EAAQjwB,IAClCA,EAAUA,GAAW,CAAC,GACd8+E,WAAa9+E,EAAQ8+E,YAAcR,EAC3Ct+E,EAAQ49E,kBAAoB59E,EAAQ49E,mBAAqBA,EAGzD59E,EAAQo+E,8BAAgCA,EAExC,IAAIW,EAAgBpkF,MAAMgpB,QAAQsM,GAIlC,OAFgC8uD,IADZpkF,MAAMgpB,QAAQphB,GAKvBw8E,EACH/+E,EAAQ8+E,WAAWv8E,EAAQ0tB,EAAQjwB,GAEnC0+E,EAAYn8E,EAAQ0tB,EAAQjwB,GAJ5Bo+E,EAA8BnuD,EAAQjwB,EAM/C,CAEAq+E,EAAUx4C,IAAM,SAAsB5hB,EAAOjkB,GAC5C,IAAKrF,MAAMgpB,QAAQM,GAClB,MAAM,IAAI1pB,MAAM,qCAGjB,OAAO0pB,EAAMzgB,QAAO,SAASw7E,EAAMvnD,GAClC,OAAO4mD,EAAUW,EAAMvnD,EAAMz3B,EAC9B,GAAG,CAAC,EACL,EAEA,IAAIi/E,EAAcZ,EAElBjlF,EAAOC,QAAU4lF,sCClIjB,IAAIC,EAAyB,EAAQ,MAAR,GAEzB1I,EAAe,EAAQ,OAEvBS,EAAkBiI,GAA0B1I,EAAa,2BAA2B,GAEpF2I,EAAe3I,EAAa,iBAC5B4I,EAAa5I,EAAa,eAE1B6I,EAAO,EAAQ,OAGnBjmF,EAAOC,QAAU,SAChBm8B,EACAlvB,EACA9J,GAEA,IAAKg5B,GAAuB,iBAARA,GAAmC,mBAARA,EAC9C,MAAM,IAAI4pD,EAAW,0CAEtB,GAAwB,iBAAb94E,GAA6C,iBAAbA,EAC1C,MAAM,IAAI84E,EAAW,4CAEtB,GAAI9kF,UAAUD,OAAS,GAA6B,kBAAjBC,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8kF,EAAW,2DAEtB,GAAI9kF,UAAUD,OAAS,GAA6B,kBAAjBC,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8kF,EAAW,yDAEtB,GAAI9kF,UAAUD,OAAS,GAA6B,kBAAjBC,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI8kF,EAAW,6DAEtB,GAAI9kF,UAAUD,OAAS,GAA6B,kBAAjBC,UAAU,GAC5C,MAAM,IAAI8kF,EAAW,2CAGtB,IAAIE,EAAgBhlF,UAAUD,OAAS,EAAIC,UAAU,GAAK,KACtDilF,EAAcjlF,UAAUD,OAAS,EAAIC,UAAU,GAAK,KACpDklF,EAAkBllF,UAAUD,OAAS,EAAIC,UAAU,GAAK,KACxDmlF,EAAQnlF,UAAUD,OAAS,GAAIC,UAAU,GAGzColF,IAASL,GAAQA,EAAK7pD,EAAKlvB,GAE/B,GAAI2wE,EACHA,EAAgBzhD,EAAKlvB,EAAU,CAC9Bi5B,aAAkC,OAApBigD,GAA4BE,EAAOA,EAAKngD,cAAgBigD,EACtEl1E,WAA8B,OAAlBg1E,GAA0BI,EAAOA,EAAKp1E,YAAcg1E,EAChE9iF,MAAOA,EACPgjC,SAA0B,OAAhB+/C,GAAwBG,EAAOA,EAAKlgD,UAAY+/C,QAErD,KAAIE,IAAWH,GAAkBC,GAAgBC,GAIvD,MAAM,IAAIL,EAAa,+GAFvB3pD,EAAIlvB,GAAY9J,CAGjB,CACD,qCCzDA,IAAIyN,EAAO,EAAQ,OACf01E,EAA+B,mBAAXvgD,QAAkD,iBAAlBA,OAAO,OAE3DwgD,EAAQr/E,OAAOjH,UAAU4tB,SACzB/J,EAASxiB,MAAMrB,UAAU6jB,OACzB0iE,EAAqB,EAAQ,OAM7BC,EAAsB,EAAQ,MAAR,GAEtB31E,EAAiB,SAAUihB,EAAQ7a,EAAM/T,EAAO6sD,GACnD,GAAI94C,KAAQ6a,EACX,IAAkB,IAAdi+B,GACH,GAAIj+B,EAAO7a,KAAU/T,EACpB,YAEK,GAXa,mBADK47B,EAYFixB,IAX8B,sBAAnBu2B,EAAMllF,KAAK09B,KAWPixB,IACrC,OAbc,IAAUjxB,EAiBtB0nD,EACHD,EAAmBz0D,EAAQ7a,EAAM/T,GAAO,GAExCqjF,EAAmBz0D,EAAQ7a,EAAM/T,EAEnC,EAEIs0C,EAAmB,SAAU1lB,EAAQhO,GACxC,IAAI2iE,EAAazlF,UAAUD,OAAS,EAAIC,UAAU,GAAK,CAAC,EACpDmS,EAAQxC,EAAKmT,GACbuiE,IACHlzE,EAAQ0Q,EAAOziB,KAAK+R,EAAOlM,OAAOq/B,sBAAsBxiB,KAEzD,IAAK,IAAIljB,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,GAAK,EACtCiQ,EAAeihB,EAAQ3e,EAAMvS,GAAIkjB,EAAI3Q,EAAMvS,IAAK6lF,EAAWtzE,EAAMvS,IAEnE,EAEA42C,EAAiBgvC,sBAAwBA,EAEzC1mF,EAAOC,QAAUy3C,yBC9CjB,kBAGE,IAAIkvC,EAAqBl5E,OAAOm5E,YA2ChC,SAASC,EAAkBzzB,GACzB,KAAOA,GAAI,CACT,GAAqB,WAAjBA,EAAG0zB,UACL,OAAwC,EAE1C1zB,EAAKA,EAAGruC,aACV,CACA,OAAO,IACT,CASA,SAASgiE,EAAS3zB,GACZA,GAAMA,EAAG4zB,MAAQ5zB,IAAOjlD,SAASsO,MACnC22C,EAAG4zB,MAEP,CAOA,SAASC,EAAWC,EAAUv6E,GAC5B,IAAK,IAAI9L,EAAI,EAAGA,EAAIqmF,EAASlmF,SAAUH,EACrC,GAAIqmF,EAASrmF,KAAO8L,EAClB,OAAO,EAGX,OAAO,CACT,CAMA,SAASw6E,EAAmB/zB,GAC1B,SAAKA,IAAOA,EAAGg0B,aAAa,YAGuB,WAA5Ch0B,EAAGpqB,aAAa,UAAU0K,aACnC,CAMA,SAAS2zC,EAAmBC,GAkB1B,GAjBA/nF,KAAKgoF,QAAUD,EACf/nF,KAAKioF,mBAAoB,EACzBjoF,KAAKkoF,cAAe,EAGfH,EAAOF,aAAa,SACvBE,EAAOl6C,aAAa,OAAQ,UAG9Bk6C,EAAOI,KAAOnoF,KAAKmoF,KAAKj0E,KAAKlU,MAC7B+nF,EAAOK,UAAYpoF,KAAKooF,UAAUl0E,KAAKlU,MACvC+nF,EAAOtsD,MAAQz7B,KAAKy7B,MAAMvnB,KAAKlU,MAEzB,gBAAiB+nF,IACrBA,EAAOM,YAAc,IAGnB,qBAAsBn6E,OAAQ,CACvB,IAAIyO,iBAAiB3c,KAAKsoF,eAAep0E,KAAKlU,OACpDid,QAAQ8qE,EAAQ,CAACp+D,YAAY,EAAM4+D,gBAAiB,CAAC,SAC1D,KAAO,CAIL,IAKIj+D,EALAk+D,GAAU,EACV/kB,EAAK,WACP+kB,EAAUxoF,KAAKyoF,iBAAmBzoF,KAAKsoF,iBACvCE,GAAU,CACZ,EAAEt0E,KAAKlU,MAEH0oF,EAAa,SAASC,GACxB,GAAIA,EAAGh/E,SAAWo+E,EAAlB,CACA,IAAIa,EAAO,iBACXJ,GAAYG,EAAG1nF,KAAKg4C,OAAO,EAAG2vC,MAAiBA,EAC/C16E,OAAO8J,aAAasS,GACpBA,EAAUpc,OAAOsG,WAAWivD,EAAI,EAJI,CAKtC,EACA,CAAC,kBAAmB,iBAAkB,8BAA8B5xD,SAAQ,SAAS8F,GACnFowE,EAAO51E,iBAAiBwF,EAAM+wE,EAChC,GACF,CAIA/gF,OAAO4J,eAAew2E,EAAQ,OAAQ,CACpClnE,IAAK7gB,KAAK6oF,QAAQ30E,KAAKlU,MACvBsJ,IAAKy+E,EAAOF,aAAa3zE,KAAK6zE,EAAQ,UAGxC/nF,KAAK8oF,UAAYl6E,SAAS0hB,cAAc,OACxCtwB,KAAK8oF,UAAUrvC,UAAY,WAC3Bz5C,KAAK8oF,UAAU32E,iBAAiB,QAASnS,KAAK+oF,eAAe70E,KAAKlU,MACpE,CAnJKonF,GAAoD,iBAAvBA,KAChCA,EAAqB,SAAqBx0E,EAAO/K,GAC/CA,EAAIA,GAAK,CAAC,EACV,IAAI8gF,EAAK/5E,SAASo6E,YAAY,eAE9B,OADAL,EAAGM,gBAAgBr2E,IAAS/K,EAAEqhF,UAAWrhF,EAAE0Q,WAAY1Q,EAAEshF,QAAU,MAC5DR,CACT,GACmBjoF,UAAYwN,OAAOk7E,MAAM1oF,WA8I9ConF,EAAmBpnF,UAAY,CAE7B,UAAIqnF,GACF,OAAO/nF,KAAKgoF,OACd,EAOAM,eAAgB,WACVtoF,KAAKgoF,QAAQH,aAAa,SAAWj5E,SAASsO,KAAKF,SAAShd,KAAKgoF,UACrEhoF,KAAKyoF,gBACP,EAKAA,eAAgB,WACTzoF,KAAKkoF,eACVloF,KAAKkoF,cAAe,EACpBloF,KAAKgoF,QAAQnkF,MAAMwlF,OAAS,GAKxBrpF,KAAKioF,oBACPjoF,KAAKgoF,QAAQnkF,MAAM+E,IAAM,GACzB5I,KAAKioF,mBAAoB,GAI3BjoF,KAAK8oF,UAAUh7E,YAAc9N,KAAK8oF,UAAUh7E,WAAWw7E,YAAYtpF,KAAK8oF,WACxES,EAAeC,GAAGC,aAAazpF,MACjC,EAKA6oF,QAAS,SAASjlF,GACZA,EACF5D,KAAKgoF,QAAQH,aAAa,SAAW7nF,KAAKgoF,QAAQn6C,aAAa,OAAQ,KAEvE7tC,KAAKgoF,QAAQ0B,gBAAgB,QAC7B1pF,KAAKsoF,iBAET,EAQAS,eAAgB,SAAS5xD,GACvB,GAAKn3B,KAAKgoF,QAAQH,aAAa,YAU7B7nF,KAAKgoF,QAAQxmE,YAV6B,CAI1C,IAAImoE,EAAO/6E,SAAS0hB,cAAc,OAClCtwB,KAAKgoF,QAAQ55C,aAAau7C,EAAM3pF,KAAKgoF,QAAQjqE,YAC7C4rE,EAAK9/D,UAAY,EACjB8/D,EAAKnoE,QACLxhB,KAAKgoF,QAAQsB,YAAYK,EAC3B,CAIA,IAAIC,EAAkBh7E,SAASo6E,YAAY,eAC3CY,EAAgBC,eAAe1yD,EAAEl2B,KAAMk2B,EAAE+xD,QAAS/xD,EAAE5e,WAAYrK,OAC5DipB,EAAEgyD,OAAQhyD,EAAE2yD,QAAS3yD,EAAE4yD,QAAS5yD,EAAEnE,QAASmE,EAAElE,QAASkE,EAAE6yD,QACxD7yD,EAAE8yD,OAAQ9yD,EAAE+yD,SAAU/yD,EAAEgzD,QAAShzD,EAAEre,OAAQqe,EAAEizD,eACjDpqF,KAAKgoF,QAAQqC,cAAcT,GAC3BzyD,EAAEtkB,iBACJ,EAMAy3E,OAAQ,WAEN,IAAI3gF,EAAS3J,KAAKgoF,QAAQn0D,cAAc,+BAIxC,IAHKlqB,GAAU3J,KAAKgoF,QAAQn+D,UAAY,IACtClgB,EAAS3J,KAAKgoF,UAEXr+E,EAAQ,CAGX,IACI+sD,EADO,CAAC,SAAU,QAAS,SAAU,SAAU,YAClClyC,KAAI,SAASqvC,GAC5B,OAAOA,EAAK,kBACd,IAEA6C,EAAMp0D,KAAK,iDACXqH,EAAS3J,KAAKgoF,QAAQn0D,cAAc6iC,EAAMjjC,KAAK,MACjD,CACA+zD,EAAS54E,SAASwS,eAClBzX,GAAUA,EAAO6X,OACnB,EAQA+oE,aAAc,SAASC,EAASC,GAC9B,GAAID,EAAUC,EACZ,MAAM,IAAI9oF,MAAM,uCAElB3B,KAAKgoF,QAAQnkF,MAAMwlF,OAASmB,EAC5BxqF,KAAK8oF,UAAUjlF,MAAMwlF,OAASoB,CAChC,EAKAtC,KAAM,WACCnoF,KAAKgoF,QAAQ1sD,OAChBt7B,KAAK6oF,SAAQ,GACb7oF,KAAKsqF,SAET,EAKAlC,UAAW,WACT,GAAIpoF,KAAKgoF,QAAQH,aAAa,QAC5B,MAAM,IAAIlmF,MAAM,iHAElB,IAAKiN,SAASsO,KAAKF,SAAShd,KAAKgoF,SAC/B,MAAM,IAAIrmF,MAAM,8EAElB,IAAK4nF,EAAeC,GAAGkB,WAAW1qF,MAChC,MAAM,IAAI2B,MAAM,oFAhRtB,SAAgCkyD,GAC9B,KAAOA,GAAMA,IAAOjlD,SAASsO,MAAM,CACjC,IAAIw4B,EAAIxnC,OAAO5B,iBAAiBunD,GAC5B82B,EAAU,SAAS1tD,EAAG2tD,GACxB,aAAkBzqF,IAATu1C,EAAEzY,IAAoByY,EAAEzY,KAAO2tD,EAC1C,EACA,GAAIl1C,EAAET,QAAU,GACZ01C,EAAQ,SAAU,SAClBA,EAAQ,YAAa,SACrBA,EAAQ,eAAgB,WACxBA,EAAQ,SAAU,SAClBA,EAAQ,cAAe,SACJ,YAAnBj1C,EAAa,WACE,UAAfA,EAAE1yC,UAC4B,UAA9B0yC,EAAEm1C,wBACJ,OAAO,EAETh3B,EAAKA,EAAGruC,aACV,CACA,OAAO,CACT,EA+PQslE,CAAuB9qF,KAAKgoF,QAAQxiE,gBACtChjB,QAAQyxD,KAAK,+LAKfj0D,KAAK6oF,SAAQ,GACb7oF,KAAKkoF,cAAe,EAGhBqB,EAAewB,eAAe/qF,KAAKgoF,UACrCuB,EAAeyB,WAAWhrF,KAAKgoF,SAC/BhoF,KAAKioF,mBAAoB,GAEzBjoF,KAAKioF,mBAAoB,EAI3BjoF,KAAKgoF,QAAQl6E,WAAWsgC,aAAapuC,KAAK8oF,UAAW9oF,KAAKgoF,QAAQiD,aAGlEjrF,KAAKsqF,QACP,EAQA7uD,MAAO,SAASyvD,GACd,IAAKlrF,KAAKgoF,QAAQH,aAAa,QAC7B,MAAM,IAAIlmF,MAAM,uHAElB3B,KAAK6oF,SAAQ,QAGW1oF,IAApB+qF,IACFlrF,KAAKgoF,QAAQK,YAAc6C,GAI7B,IAAIC,EAAa,IAAI/D,EAAmB,QAAS,CAC/C8B,SAAS,EACT3wE,YAAY,IAEdvY,KAAKgoF,QAAQqC,cAAcc,EAC7B,GAIF,IAAI5B,EAAiB,CAErBA,WAA4B,SAASp9E,GACnC,IAAIqC,EAAYI,SAASsO,KAAK1O,WAAaI,SAAS45B,gBAAgBh6B,UAChE48E,EAAW58E,GAAaN,OAAOe,YAAc9C,EAAQ8vC,cAAgB,EACzE9vC,EAAQtI,MAAM+E,IAAMV,KAAK0B,IAAI4E,EAAW48E,GAAY,IACtD,EAEA7B,gCAAiD,SAASp9E,GACxD,IAAK,IAAI7K,EAAI,EAAGA,EAAIsN,SAASy8E,YAAY5pF,SAAUH,EAAG,CACpD,IAAIgqF,EAAa18E,SAASy8E,YAAY/pF,GAClCiqF,EAAW,KAEf,IACEA,EAAWD,EAAWC,QACxB,CAAE,MAAOp0D,GAAI,CACb,GAAKo0D,EACL,IAAK,IAAIne,EAAI,EAAGA,EAAIme,EAAS9pF,SAAU2rE,EAAG,CACxC,IAAIoe,EAAOD,EAASne,GAChBqe,EAAgB,KAEpB,IACEA,EAAgB78E,SAAS88E,iBAAiBF,EAAKG,aACjD,CAAE,MAAMx0D,GAAI,CACZ,GAAKs0D,GAAkB/D,EAAW+D,EAAet/E,GAAjD,CAGA,IAAIy/E,EAASJ,EAAK3nF,MAAMgoF,iBAAiB,OACrCC,EAAYN,EAAK3nF,MAAMgoF,iBAAiB,UAC5C,GAAKD,GAAqB,SAAXA,GAAuBE,GAA2B,SAAdA,EACjD,OAAO,CAJT,CAMF,CACF,CACA,OAAO,CACT,EAEAvC,eAAgC,SAASxB,GAEvC,MAA+B,aADX75E,OAAO5B,iBAAiBy7E,GAC1B/kF,aAQQ,SAArB+kF,EAAOlkF,MAAM+E,KAAuC,KAArBm/E,EAAOlkF,MAAM+E,KACpB,SAAxBm/E,EAAOlkF,MAAMkG,QAA6C,KAAxBg+E,EAAOlkF,MAAMkG,UAG5Cw/E,EAAewC,gCAAgChE,GACzD,EAKAwB,oBAAqC,SAASp9E,GAK5C,IAJI+B,OAAO89E,mBAAqB7/E,EAAQi8E,YACtC5lF,QAAQyxD,KAAK,8EACiB9nD,GAEN,WAAtBA,EAAQo7E,UACV,MAAM,IAAI5lF,MAAM,2DAElB,IAAImmF,EAAqD,EAC3D,EAKAyB,eAAgC,SAASp9E,GAClCA,EAAQi8E,WACXmB,EAAe0C,oBAAoB9/E,EAEvC,EAKAo9E,cAA+B,WAE7BvpF,KAAKksF,mBAAqB,GAE1B,IAAIC,EAAWnsF,KAAKosF,UAAUl4E,KAAKlU,MAOnCA,KAAKqsF,QAAUz9E,SAAS0hB,cAAc,OACtCtwB,KAAKqsF,QAAQ5yC,UAAY,kBACzBz5C,KAAKqsF,QAAQl6E,iBAAiB,QAAS,SAASglB,GAC9Cn3B,KAAKssF,iBAAcnsF,EACnBg3B,EAAEtkB,kBACFs5E,EAAS,GACX,EAAEj4E,KAAKlU,OAEPA,KAAKusF,WAAavsF,KAAKusF,WAAWr4E,KAAKlU,MACvCA,KAAKwsF,aAAexsF,KAAKwsF,aAAat4E,KAAKlU,MAE3CA,KAAKysF,WAAa,IAClBzsF,KAAK0sF,YAAc,OAEnB1sF,KAAKssF,iBAAcnsF,EAEf,qBAAsB+N,SACxBlO,KAAK2sF,IAAM,IAAIhwE,kBAAiB,SAASE,GACvC,IAAI2rE,EAAU,GACd3rE,EAAQhL,SAAQ,SAAS+6E,GACvB,IAAK,IAAW14D,EAAP5yB,EAAI,EAAM4yB,EAAI04D,EAAIC,aAAavrF,KAAMA,EACtC4yB,aAAaktB,UAEQ,WAAhBltB,EAAEqzD,WACXiB,EAAQlmF,KAAK4xB,GAEfs0D,EAAUA,EAAQjkE,OAAO2P,EAAEw3D,iBAAiB,WAEhD,IACAlD,EAAQ/mF,QAAU0qF,EAAS3D,EAC7B,IAEJ,GAkKA,GA5JAe,EAAeuD,cAAcpsF,UAAUqsF,cAAgB,WACrDn+E,SAAS45B,gBAAgBr2B,iBAAiB,QAASnS,KAAKwsF,cAAc,GACtE59E,SAASuD,iBAAiB,UAAWnS,KAAKusF,YAC1CvsF,KAAK2sF,KAAO3sF,KAAK2sF,IAAI1vE,QAAQrO,SAAU,CAACuO,WAAW,EAAMC,SAAS,GACpE,EAMAmsE,EAAeuD,cAAcpsF,UAAUssF,gBAAkB,WACvDp+E,SAAS45B,gBAAgBz2B,oBAAoB,QAAS/R,KAAKwsF,cAAc,GACzE59E,SAASmD,oBAAoB,UAAW/R,KAAKusF,YAC7CvsF,KAAK2sF,KAAO3sF,KAAK2sF,IAAI3wE,YACvB,EAKAutE,EAAeuD,cAAcpsF,UAAUusF,eAAiB,WAGtD,IAFA,IAEgBC,EAFZ7D,EAASrpF,KAAK0sF,YAETprF,EAAI,EAAQ4rF,EAAMltF,KAAKksF,mBAAmB5qF,KAAMA,EACvD4rF,EAAI3C,eAAelB,IAAUA,GACnB,IAAN/nF,IACFtB,KAAKqsF,QAAQxoF,MAAMwlF,SAAWA,GAKlC,IAAI8D,EAAOntF,KAAKksF,mBAAmB,GAC/BiB,GACMA,EAAKpF,OAAOj6E,YAAcc,SAASsO,MACzCkwE,YAAYptF,KAAKqsF,SACVrsF,KAAKqsF,QAAQv+E,YACtB9N,KAAKqsF,QAAQv+E,WAAWw7E,YAAYtpF,KAAKqsF,QAE7C,EAMA9C,EAAeuD,cAAcpsF,UAAU2sF,sBAAwB,SAASC,GACtE,KAAOA,EAAYhG,EAAkBgG,IAAY,CAC/C,IAAK,IAAWJ,EAAP5rF,EAAI,EAAQ4rF,EAAMltF,KAAKksF,mBAAmB5qF,KAAMA,EACvD,GAAI4rF,EAAInF,SAAWuF,EACjB,OAAa,IAANhsF,EAGXgsF,EAAYA,EAAU9nE,aACxB,CACA,OAAO,CACT,EAEA+jE,EAAeuD,cAAcpsF,UAAU8rF,aAAe,SAAS55E,GAC7D,IAAI5S,KAAKqtF,sBAAsBz6E,EAAMjJ,UAErCiJ,EAAMD,iBACNC,EAAMC,kBACN20E,EAAiC50E,EAAY,aAEpBzS,IAArBH,KAAKssF,aAAT,CAEA,IAAIY,EAAMltF,KAAKksF,mBAAmB,GAalC,OAZagB,EAAInF,OACKwF,wBAAwB36E,EAAMjJ,QACrC6jF,KAAKC,8BACdztF,KAAKssF,YACPY,EAAI5C,SAEJ17E,SAAS45B,gBAAgBhnB,UAMtB,CAfuC,CAgBhD,EAEA+nE,EAAeuD,cAAcpsF,UAAU6rF,WAAa,SAAS35E,GAE3D,GADA5S,KAAKssF,iBAAcnsF,EACG,KAAlByS,EAAM86E,QAAgB,CACxB96E,EAAMD,iBACNC,EAAMC,kBACN,IAAI86E,EAAc,IAAIvG,EAAmB,SAAU,CACjD8B,SAAS,EACT3wE,YAAY,IAEV20E,EAAMltF,KAAKksF,mBAAmB,GAC9BgB,GAAOA,EAAInF,OAAOsC,cAAcsD,IAClCT,EAAInF,OAAOtsD,OAEf,MAA6B,IAAlB7oB,EAAM86E,UACf1tF,KAAKssF,aAAe15E,EAAMs3E,SAE9B,EAQAX,EAAeuD,cAAcpsF,UAAU0rF,UAAY,SAAS5D,GAI9CxoF,KAAKksF,mBAAmBlqF,QAC9B6P,SAAQ,SAASq7E,IACgB,IAAjC1E,EAAQ77E,QAAQugF,EAAInF,QACtBmF,EAAIzE,iBAEJyE,EAAI5E,gBAER,GACF,EAMAiB,EAAeuD,cAAcpsF,UAAUgqF,WAAa,SAASwC,GAC3D,IAAIU,GAAW5tF,KAAK0sF,YAAc1sF,KAAKysF,YAAc,EAAI,EACzD,QAAIzsF,KAAKksF,mBAAmBzqF,QAAUmsF,KAGO,IAAzC5tF,KAAKksF,mBAAmB5rB,QAAQ4sB,IAClCltF,KAAK+sF,gBAEP/sF,KAAKitF,kBACE,EACT,EAKA1D,EAAeuD,cAAcpsF,UAAU+oF,aAAe,SAASyD,GAC7D,IAAInyE,EAAQ/a,KAAKksF,mBAAmBv/E,QAAQugF,IAC7B,IAAXnyE,IAEJ/a,KAAKksF,mBAAmBjpF,OAAO8X,EAAO,GACC,IAAnC/a,KAAKksF,mBAAmBzqF,QAC1BzB,KAAKgtF,kBAEPhtF,KAAKitF,iBACP,EAEA1D,EAAeC,GAAK,IAAID,EAAeuD,cACvCvD,EAAesE,cAAgB,KAC/BtE,EAAeuE,SAAW,UAMO3tF,IAA7B+N,OAAO89E,kBAAiC,CAM1C,IAAI+B,EAAWn/E,SAAS0hB,cAAc,QAEtC,GADAy9D,EAASlgD,aAAa,SAAU,UACR,WAApBkgD,EAAS5uD,OAAqB,CAChC,IAAI6uD,EAAmBrmF,OAAOu/B,yBAAyB+mD,gBAAgBvtF,UAAW,UAClF,GAAIstF,EAAkB,CAGpB,IAAIE,EAAUF,EAAiB1kF,IAC/B0kF,EAAiB1kF,IAAM,WACrB,OAAIs+E,EAAmB5nF,MACd,SAEFkuF,EAAQpsF,KAAK9B,KACtB,EACA,IAAImuF,EAAUH,EAAiBntE,IAC/BmtE,EAAiBntE,IAAM,SAASutC,GAC9B,MAAiB,iBAANA,GAAsC,WAApBA,EAAEja,cACtBn0C,KAAK6tC,aAAa,SAAUugB,GAE9B+/B,EAAQrsF,KAAK9B,KAAMouD,EAC5B,EACAzmD,OAAO4J,eAAe08E,gBAAgBvtF,UAAW,SAAUstF,EAC7D,CACF,CAOAp/E,SAASuD,iBAAiB,SAAS,SAASw2E,GAG1C,GAFAY,EAAesE,cAAgB,KAC/BtE,EAAeuE,SAAW,MACtBnF,EAAGjgE,iBAAP,CAEA,IAAI/e,EAAiCg/E,EAAS,OAC9C,GAAKh/E,GAAWi+E,EAAmBj+E,EAAOykF,MAA1C,CAGA,KAD6B,WAAhBzkF,EAAO1I,MAAqB,CAAC,SAAU,SAAS0L,QAAQhD,EAAO49E,YAAc,GAC9E,CACV,GAA2B,UAArB59E,EAAO49E,WAAyC,UAAhB59E,EAAO1I,KAAqB,OAElEsoF,EAAeuE,SAAWnF,EAAG0F,QAAU,IAAM1F,EAAG2F,OAClD,CAEahH,EAAkB39E,KAG/B4/E,EAAesE,cAAgBlkF,EAZ4B,CAHxB,CAgBrC,IAAG,GAMH,IAAI4kF,EAAmBN,gBAAgBvtF,UAAU8tF,OAQjDP,gBAAgBvtF,UAAU8tF,OAPE,WAC1B,IAAK5G,EAAmB5nF,MACtB,OAAOuuF,EAAiBzsF,KAAK9B,MAE/B,IAAI+nF,EAAST,EAAkBtnF,MAC/B+nF,GAAUA,EAAOtsD,OACnB,EAOA7sB,SAASuD,iBAAiB,UAAU,SAASw2E,GAC3C,IAAIyF,EAAuCzF,EAAS,OACpD,GAAKf,EAAmBwG,GAAxB,CACAzF,EAAGh2E,iBAEH,IAAIo1E,EAAST,EAAkB8G,GAC/B,GAAKrG,EAAL,CAIA,IAAIryC,EAAI6zC,EAAesE,cACnBn4C,GAAKA,EAAE04C,OAASA,EAClBrG,EAAOtsD,MAAM8tD,EAAeuE,UAAYp4C,EAAE9xC,OAE1CmkF,EAAOtsD,QAET8tD,EAAesE,cAAgB,IAVR,CAJkB,CAe3C,IAAG,EACL,CAEAtE,EAAoC,oBAAIA,EAAe0C,oBACvD1C,EAA+B,eAAIA,EAAekF,eAEd,QAAS,YAEC,KAA5C,aAAoB,OAAOlF,CAAiB,gCACwB,iBAAtB/oF,EAAgB,QAE9DA,EAAgB,QAAI+oF,EAGpBr7E,OAAuB,eAAIq7E,CAE9B,CAjuBD,mCCEA/oF,EAAOC,QAAU,SAAkBsoE,GAClC,GAAIrnE,UAAUD,OAAS,EACtB,MAAM,IAAIV,UAAU,0BAErB,GAAqB,iBAAVgoE,EACV,MAAM,IAAIhoE,UAAU,qEAGrB,IAAIqM,EAAO27D,EACX,EAAG,CACF,GAAI/oE,OAASoN,EACZ,OAAO,EAEJA,IACHA,EAAOA,EAAKU,WAEd,OAASV,GAET,OAAO,CACR,sCCnBA,IAAIshF,EAAS,EAAQ,MAEjBC,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OACtBC,EAAWD,IAGXE,EAAgB,SAAkB1hF,EAAM27D,GAC3C,OAAO8lB,EAAS5sF,MAAMmL,EAAM,CAAC27D,GAC9B,EAEA2lB,EAAOI,EAAe,CACrBF,YAAaA,EACbD,eAAgBA,EAChBr7C,KATU,EAAQ,SAYnB9yC,EAAOC,QAAUquF,sCCjBjB,IAAIH,EAAiB,EAAQ,OAE7BnuF,EAAOC,QAAU,WAChB,GAAwB,oBAAbmO,SAA0B,CACpC,GAAIA,SAASoO,SACZ,OAAOpO,SAASoO,SAEjB,GAAIpO,SAASsO,MAAQtO,SAASsO,KAAKF,SAClC,IACC,GAAyD,kBAA9CpO,SAASsO,KAAKF,SAASlb,KAAK8M,SAAU,IAChD,OAAOA,SAASsO,KAAKF,QAEvB,CAAE,MAAOma,GAAU,CAErB,CACA,OAAOw3D,CACR,sCChBA,IAAID,EAAS,EAAQ,MACjBE,EAAc,EAAQ,OAE1BpuF,EAAOC,QAAU,WAChB,IAAIouF,EAAWD,IAef,MAdwB,oBAAbhgF,WACV8/E,EACC9/E,SACA,CAAEoO,SAAU6xE,GACZ,CAAE7xE,SAAU,WAAc,OAAOpO,SAASoO,WAAa6xE,CAAU,IAE3C,oBAAZztC,SACVstC,EACCttC,QAAQ1gD,UACR,CAAEsc,SAAU6xE,GACZ,CAAE7xE,SAAU,WAAc,OAAOokC,QAAQ1gD,UAAUsc,WAAa6xE,CAAU,KAItEA,CACR,qFCde,SAASE,EAAS5iF,EAASstC,GACpCttC,EAAQyuC,UAAWzuC,EAAQyuC,UAAU5oC,IAAIynC,IAAqB,OAASttC,EAASstC,KAA6C,iBAAtBttC,EAAQstC,UAAwBttC,EAAQstC,UAAYttC,EAAQstC,UAAY,IAAMA,EAAettC,EAAQ0hC,aAAa,SAAU1hC,EAAQstC,WAAattC,EAAQstC,UAAUu1C,SAAW,IAAM,IAAMv1C,GACvS,oDCRWw1C,GAAmB,EACnBC,GAAgB,EAE3B,IACE,IAAI9nF,EAAU,CACZ,WAAIwQ,GACF,OAAOq3E,GAAmB,CAC5B,EAEA,QAAItsF,GAEF,OAAOusF,EAAgBD,GAAmB,CAC5C,GAIE,MACF/gF,OAAOiE,iBAAiB,OAAQ/K,EAASA,GACzC8G,OAAO6D,oBAAoB,OAAQ3K,GAAS,GAEhD,CAAE,MAAO+vB,GAET,CA+BA,KArBA,SAA0B/pB,EAAM6E,EAAW9Q,EAASiG,GAClD,GAAIA,GAA8B,kBAAZA,IAA0B8nF,EAAe,CAC7D,IAAIvsF,EAAOyE,EAAQzE,KACfuV,EAAU9Q,EAAQ8Q,QAClBi3E,EAAiBhuF,GAEhB+tF,GAAiBvsF,IACpBwsF,EAAiBhuF,EAAQiuF,QAAU,SAASC,EAAYz8E,GACtD5S,KAAK+R,oBAAoBE,EAAWo9E,EAAan3E,GACjD/W,EAAQW,KAAK9B,KAAM4S,EACrB,EAEAzR,EAAQiuF,OAASD,GAGnB/hF,EAAK+E,iBAAiBF,EAAWk9E,EAAgBF,EAAmB7nF,EAAU8Q,EAChF,CAEA9K,EAAK+E,iBAAiBF,EAAW9Q,EAASiG,EAC5C,oCCrDA,MAAoC,oBAAX8G,SAA0BA,OAAOU,WAAYV,OAAOU,SAAS0hB,mDCQvE,SAAStT,EAASnb,EAASuL,GAGxC,OAAIvL,EAAQmb,SAAiBnb,EAAQmb,SAAS5P,GAC1CvL,EAAQ0rF,wBAAgC1rF,IAAYuL,MAAmD,GAAxCvL,EAAQ0rF,wBAAwBngF,SAAnG,CACF,oHCLe,SAASd,EAAiBc,EAAMkiF,GAC7C,OCFa,SAAqBliF,GAClC,IAAImiF,GAAM,EAAA1+D,EAAA,GAAczjB,GACxB,OAAOmiF,GAAOA,EAAIz+D,aAAe5iB,MACnC,CDDSshF,CAAYpiF,GAAMd,iBAAiBc,EAAMkiF,EAClD,CEVA,IAAIG,EAAS,WCMb,IAAIC,EAAY,OACD,SAASC,EAAmB52C,GACzC,ODPa,SAAmBA,GAChC,OAAOA,EAAO9hB,QAAQw4D,EAAQ,OAAOt7C,aACvC,CCKSy7C,CAAU72C,GAAQ9hB,QAAQy4D,EAAW,OAC9C,CCTA,IAAIG,EAAsB,8EC+B1B,MA3BA,SAAeziF,EAAMM,GACnB,IAAIkgC,EAAM,GACNkiD,EAAa,GAEjB,GAAwB,iBAAbpiF,EACT,OAAON,EAAKvJ,MAAMgoF,iBAAiB,EAAUn+E,KAAcpB,EAAiBc,GAAMy+E,iBAAiB,EAAUn+E,IAG/G/F,OAAO0J,KAAK3D,GAAUmE,SAAQ,SAAU1O,GACtC,IAAIS,EAAQ8J,EAASvK,GAEhBS,GAAmB,IAAVA,GDdH,SAAqBA,GAClC,SAAUA,IAASisF,EAAoBliF,KAAK/J,GAC9C,CCcemsF,CAAY5sF,GAGrByqC,GAAO,EAAUzqC,GAAO,KAAOS,EAAQ,IAFvCksF,GAAc3sF,EAAM,IAAMS,EAAQ,KAFlCwJ,EAAKvJ,MAAMmsF,eAAe,EAAU7sF,GAMxC,IAEI2sF,IACFliD,GAAO,cAAgBkiD,EAAa,KAGtC1iF,EAAKvJ,MAAMosF,SAAW,IAAMriD,CAC9B,sCCvBe,SAASsiD,EAAS/jF,EAASstC,GACxC,OAAIttC,EAAQyuC,YAAoBnB,GAAattC,EAAQyuC,UAAU59B,SAASy8B,IACkC,KAAlG,KAAOttC,EAAQstC,UAAUu1C,SAAW7iF,EAAQstC,WAAa,KAAK9sC,QAAQ,IAAM8sC,EAAY,IAClG,8FCCA,IAPA,SAAgBrsC,EAAM6E,EAAW9Q,EAASiG,GAExC,OADA,QAAiBgG,EAAM6E,EAAW9Q,EAASiG,GACpC,YACL,OAAoBgG,EAAM6E,EAAW9Q,EAASiG,EAChD,CACF,sCCHe,SAASypB,EAAczjB,GACpC,OAAOA,GAAQA,EAAKyjB,eAAiBjiB,QACvC,qGCPA,IAAI+P,EAAUwxE,SAASzvF,UAAUwT,KAAKpS,KAAKquF,SAASzvF,UAAUoB,KAAM,GAAGE,OAQxD,SAASouF,EAAIjkF,EAASkkF,GACnC,OAAO1xE,EAAQxS,EAAQu/E,iBAAiB2E,GAC1C,sCCVA,SAASC,EAAiBC,EAAWC,GACnC,OAAOD,EAAUt5D,QAAQ,IAAI2e,OAAO,UAAY46C,EAAgB,YAAa,KAAM,MAAMv5D,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,CASe,SAASw5D,EAAYtkF,EAASstC,GACvCttC,EAAQyuC,UACVzuC,EAAQyuC,UAAU81C,OAAOj3C,GACa,iBAAtBttC,EAAQstC,UACxBttC,EAAQstC,UAAY62C,EAAiBnkF,EAAQstC,UAAWA,GAExDttC,EAAQ0hC,aAAa,QAASyiD,EAAiBnkF,EAAQstC,WAAattC,EAAQstC,UAAUu1C,SAAW,GAAIv1C,GAEzG,mECFA,IATA,SAA6BrsC,EAAM6E,EAAW9Q,EAASiG,GACrD,IAAI8Q,EAAU9Q,GAA8B,kBAAZA,EAAwBA,EAAQ8Q,QAAU9Q,EAC1EgG,EAAK2E,oBAAoBE,EAAW9Q,EAAS+W,GAEzC/W,EAAQiuF,QACVhiF,EAAK2E,oBAAoBE,EAAW9Q,EAAQiuF,OAAQl3E,EAExD,gGCLA,SAASy4E,EAAqBxkF,EAAS8hB,EAAU5pB,QAC/B,IAAZA,IACFA,EAAU,GAGZ,IAAIusF,GAAS,EACTC,EAASr8E,YAAW,WACjBo8E,GCTM,SAAsBxjF,EAAM6E,EAAWi3E,EAAS3wE,GAS7D,QARgB,IAAZ2wE,IACFA,GAAU,QAGO,IAAf3wE,IACFA,GAAa,GAGXnL,EAAM,CACR,IAAIwF,EAAQhE,SAASo6E,YAAY,cACjCp2E,EAAMk+E,UAAU7+E,EAAWi3E,EAAS3wE,GACpCnL,EAAKi9E,cAAcz3E,EACrB,CACF,CDLiBm+E,CAAa5kF,EAAS,iBAAiB,EACtD,GAAG8hB,EAAW5pB,GACVqsF,GAAS,EAAAM,EAAA,GAAO7kF,EAAS,iBAAiB,WAC5CykF,GAAS,CACX,GAAG,CACDjuF,MAAM,IAER,OAAO,WACLqV,aAAa64E,GACbH,GACF,CACF,CAEe,SAASO,EAAc9kF,EAAShL,EAAS8sB,EAAU5pB,GA1BlE,IAAuB+I,EACjB2mB,EACAm9D,EAyBY,MAAZjjE,IA3BiB7gB,EA2B0BjB,EA1B3C4nB,GAAM,EAAA6Z,EAAA,GAAIxgC,EAAM,uBAAyB,GACzC8jF,GAA8B,IAAvBn9D,EAAIpnB,QAAQ,MAAe,IAAO,EAyBvBshB,EAxBfvhB,WAAWqnB,GAAOm9D,GAwBkC,GAC3D,IAAIC,EAAgBR,EAAqBxkF,EAAS8hB,EAAU5pB,GACxDqsF,GAAS,EAAAM,EAAA,GAAO7kF,EAAS,gBAAiBhL,GAC9C,OAAO,WACLgwF,IACAT,GACF,CACF,qBEnCiElwF,EAAOC,QAG/D,WAAe,aAEtB,MAAM,QACJslB,EAAO,eACPgW,EAAc,SACdq1D,EAAQ,eACRC,EAAc,yBACdnqD,GACEv/B,OACJ,IAAI,OACFC,EAAM,KACN0pF,EAAI,OACJp1D,GACEv0B,QACA,MACF1F,EAAK,UACLsvF,GACqB,oBAAZC,SAA2BA,QACjC5pF,IACHA,EAAS,SAAgBC,GACvB,OAAOA,CACT,GAEGypF,IACHA,EAAO,SAAczpF,GACnB,OAAOA,CACT,GAEG5F,IACHA,EAAQ,SAAewvF,EAAKC,EAAWrwF,GACrC,OAAOowF,EAAIxvF,MAAMyvF,EAAWrwF,EAC9B,GAEGkwF,IACHA,EAAY,SAAmBI,EAAMtwF,GACnC,OAAO,IAAIswF,KAAQtwF,EACrB,GAEF,MAAMuwF,EAAeC,EAAQ9vF,MAAMrB,UAAUmR,SACvCigF,EAAWD,EAAQ9vF,MAAMrB,UAAU+sE,KACnCskB,EAAYF,EAAQ9vF,MAAMrB,UAAU4B,MACpC0vF,EAAoBH,EAAQ17D,OAAOz1B,UAAUyzC,aAC7C89C,EAAiBJ,EAAQ17D,OAAOz1B,UAAU4tB,UAC1C4jE,EAAcL,EAAQ17D,OAAOz1B,UAAUy3B,OACvCg6D,EAAgBN,EAAQ17D,OAAOz1B,UAAUu2B,SACzCm7D,EAAgBP,EAAQ17D,OAAOz1B,UAAUiM,SACzC0lF,EAAaR,EAAQ17D,OAAOz1B,UAAUqzC,MACtCu+C,EAAuBT,EAAQlqF,OAAOjH,UAAU+2B,gBAChD86D,EAAaV,EAAQj8C,OAAOl1C,UAAUiN,MACtC6kF,EAAkBC,EAAY1xF,WACpC,SAAS2xF,EAAY7qF,GAEnB,MAAoB,iBAANA,GAAkB/G,MAAM+G,EACxC,CAQA,SAASgqF,EAAQr/C,GACf,OAAO,SAAUmgD,GACf,IAAK,IAAIrrF,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGnG,EAAKmG,EAAO,GAAK9F,UAAU8F,GAE7B,OAAOvF,EAAMuwC,EAAMmgD,EAAStxF,EAC9B,CACF,CAQA,SAASoxF,EAAYjgD,GACnB,OAAO,WACL,IAAK,IAAIogD,EAAQlxF,UAAUD,OAAQJ,EAAO,IAAIU,MAAM6wF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxxF,EAAKwxF,GAASnxF,UAAUmxF,GAE1B,OAAOtB,EAAU/+C,EAAMnxC,EACzB,CACF,CAUA,SAASyxF,EAASjyE,EAAKwK,GACrB,IAAI0nE,EAAoBrxF,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAKswF,EACxFj2D,GAIFA,EAAelb,EAAK,MAEtB,IAAIgoD,EAAIx9C,EAAM5pB,OACd,KAAOonE,KAAK,CACV,IAAI18D,EAAUkf,EAAMw9C,GACpB,GAAuB,iBAAZ18D,EAAsB,CAC/B,MAAM6mF,EAAYD,EAAkB5mF,GAChC6mF,IAAc7mF,IAEXilF,EAAS/lE,KACZA,EAAMw9C,GAAKmqB,GAEb7mF,EAAU6mF,EAEd,CACAnyE,EAAI1U,IAAW,CACjB,CACA,OAAO0U,CACT,CAQA,SAASoyE,EAAW5nE,GAClB,IAAK,IAAItQ,EAAQ,EAAGA,EAAQsQ,EAAM5pB,OAAQsZ,IAChBu3E,EAAqBjnE,EAAOtQ,KAElDsQ,EAAMtQ,GAAS,MAGnB,OAAOsQ,CACT,CAQA,SAASw1D,EAAMruD,GACb,MAAM0gE,EAAYh3D,EAAO,MACzB,IAAK,MAAOxuB,EAAU9J,KAAUmiB,EAAQyM,GACd8/D,EAAqB9/D,EAAQ9kB,KAE/C3L,MAAMgpB,QAAQnnB,GAChBsvF,EAAUxlF,GAAYulF,EAAWrvF,GACxBA,GAA0B,iBAAVA,GAAsBA,EAAMsN,cAAgBvJ,OACrEurF,EAAUxlF,GAAYmzE,EAAMj9E,GAE5BsvF,EAAUxlF,GAAY9J,GAI5B,OAAOsvF,CACT,CASA,SAASC,EAAa3gE,EAAQgF,GAC5B,KAAkB,OAAXhF,GAAiB,CACtB,MAAMs0D,EAAO5/C,EAAyB1U,EAAQgF,GAC9C,GAAIsvD,EAAM,CACR,GAAIA,EAAKx9E,IACP,OAAOuoF,EAAQ/K,EAAKx9E,KAEtB,GAA0B,mBAAfw9E,EAAKljF,MACd,OAAOiuF,EAAQ/K,EAAKljF,MAExB,CACA4uB,EAAS6+D,EAAe7+D,EAC1B,CACA,SAAS4gE,IACP,OAAO,IACT,CACA,OAAOA,CACT,CAEA,MAAMC,EAASzrF,EAAO,CAAC,IAAK,OAAQ,UAAW,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,MAAO,MAAO,MAAO,QAAS,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,SAAU,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,YAAa,MAAO,UAAW,MAAO,SAAU,MAAO,MAAO,KAAM,KAAM,UAAW,KAAM,WAAY,aAAc,SAAU,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,QAAS,MAAO,OAAQ,KAAM,WAAY,SAAU,SAAU,IAAK,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,SAAU,QAAS,SAAU,SAAU,OAAQ,SAAU,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,KAAM,IAAK,KAAM,MAAO,QAAS,QAGn+B0rF,EAAQ1rF,EAAO,CAAC,MAAO,IAAK,WAAY,cAAe,eAAgB,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,OAAQ,OAAQ,UAAW,SAAU,OAAQ,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,QAAS,SAAU,SAAU,OAAQ,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAC3c2rF,EAAa3rF,EAAO,CAAC,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,eAAgB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,iBAMhY4rF,EAAgB5rF,EAAO,CAAC,UAAW,gBAAiB,SAAU,UAAW,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,eAAgB,YAAa,UAAW,gBAAiB,SAAU,MAAO,aAAc,UAAW,QAChT6rF,EAAW7rF,EAAO,CAAC,OAAQ,WAAY,SAAU,UAAW,QAAS,SAAU,KAAM,aAAc,gBAAiB,KAAM,KAAM,QAAS,UAAW,WAAY,QAAS,OAAQ,KAAM,SAAU,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,MAAO,SAAU,aAAc,gBAIxS8rF,EAAmB9rF,EAAO,CAAC,UAAW,cAAe,aAAc,WAAY,YAAa,UAAW,UAAW,SAAU,SAAU,QAAS,YAAa,aAAc,iBAAkB,cAAe,SAC3M+rF,EAAO/rF,EAAO,CAAC,UAEfkvC,EAAOlvC,EAAO,CAAC,SAAU,SAAU,QAAS,MAAO,iBAAkB,eAAgB,uBAAwB,WAAY,aAAc,UAAW,SAAU,UAAW,cAAe,cAAe,UAAW,OAAQ,QAAS,QAAS,QAAS,OAAQ,UAAW,WAAY,eAAgB,SAAU,cAAe,WAAY,WAAY,UAAW,MAAO,WAAY,0BAA2B,wBAAyB,WAAY,YAAa,UAAW,eAAgB,OAAQ,MAAO,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,KAAM,YAAa,YAAa,QAAS,OAAQ,QAAS,OAAQ,OAAQ,UAAW,OAAQ,MAAO,MAAO,YAAa,QAAS,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,QAAS,UAAW,aAAc,SAAU,OAAQ,UAAW,UAAW,cAAe,cAAe,UAAW,gBAAiB,sBAAuB,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,MAAO,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAAW,QAAS,MAAO,SAAU,OAAQ,QAAS,UAAW,WAAY,QAAS,YAAa,OAAQ,SAAU,SAAU,QAAS,QAAS,OAAQ,QAAS,SAC5tCgsF,EAAMhsF,EAAO,CAAC,gBAAiB,aAAc,WAAY,qBAAsB,SAAU,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAkB,QAAS,OAAQ,KAAM,QAAS,OAAQ,gBAAiB,YAAa,YAAa,QAAS,sBAAuB,8BAA+B,gBAAiB,kBAAmB,KAAM,KAAM,IAAK,KAAM,KAAM,kBAAmB,YAAa,UAAW,UAAW,MAAO,WAAY,YAAa,MAAO,OAAQ,eAAgB,YAAa,SAAU,cAAe,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,KAAM,KAAM,KAAM,KAAM,aAAc,WAAY,gBAAiB,oBAAqB,SAAU,OAAQ,KAAM,kBAAmB,KAAM,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,UAAW,YAAa,aAAc,WAAY,OAAQ,eAAgB,iBAAkB,eAAgB,mBAAoB,iBAAkB,QAAS,aAAc,aAAc,eAAgB,eAAgB,cAAe,cAAe,mBAAoB,YAAa,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAO,OAAQ,aAAc,SAAU,WAAY,UAAW,QAAS,SAAU,cAAe,SAAU,WAAY,cAAe,OAAQ,aAAc,sBAAuB,mBAAoB,eAAgB,SAAU,gBAAiB,sBAAuB,iBAAkB,IAAK,KAAM,KAAM,SAAU,OAAQ,OAAQ,cAAe,YAAa,UAAW,SAAU,SAAU,QAAS,OAAQ,kBAAmB,mBAAoB,mBAAoB,eAAgB,cAAe,eAAgB,cAAe,aAAc,eAAgB,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,SAAU,eAAgB,QAAS,eAAgB,iBAAkB,WAAY,UAAW,UAAW,YAAa,mBAAoB,cAAe,kBAAmB,iBAAkB,aAAc,OAAQ,KAAM,KAAM,UAAW,SAAU,UAAW,aAAc,UAAW,aAAc,gBAAiB,gBAAiB,QAAS,eAAgB,OAAQ,eAAgB,mBAAoB,mBAAoB,IAAK,KAAM,KAAM,QAAS,IAAK,KAAM,KAAM,IAAK,eAC9vEisF,EAASjsF,EAAO,CAAC,SAAU,cAAe,QAAS,WAAY,QAAS,eAAgB,cAAe,aAAc,aAAc,QAAS,MAAO,UAAW,eAAgB,WAAY,QAAS,QAAS,SAAU,OAAQ,KAAM,UAAW,SAAU,gBAAiB,SAAU,SAAU,iBAAkB,YAAa,WAAY,cAAe,UAAW,UAAW,gBAAiB,WAAY,WAAY,OAAQ,WAAY,WAAY,aAAc,UAAW,SAAU,SAAU,cAAe,gBAAiB,uBAAwB,YAAa,YAAa,aAAc,WAAY,iBAAkB,iBAAkB,YAAa,UAAW,QAAS,UACrpBksF,EAAMlsF,EAAO,CAAC,aAAc,SAAU,cAAe,YAAa,gBAGlEmsF,EAAgBzC,EAAK,6BACrB0C,EAAW1C,EAAK,yBAChB2C,EAAc3C,EAAK,iBACnB4C,EAAY5C,EAAK,8BACjB6C,EAAY7C,EAAK,kBACjB8C,EAAiB9C,EAAK,6FAGtB+C,EAAoB/C,EAAK,yBACzBgD,EAAkBhD,EAAK,+DAGvBiD,EAAejD,EAAK,WACpBkD,EAAiBlD,EAAK,4BAE5B,IAAImD,EAA2B9sF,OAAOC,OAAO,CAC3C8sF,UAAW,KACXX,cAAeA,EACfC,SAAUA,EACVC,YAAaA,EACbC,UAAWA,EACXC,UAAWA,EACXC,eAAgBA,EAChBC,kBAAmBA,EACnBC,gBAAiBA,EACjBC,aAAcA,EACdC,eAAgBA,IAIlB,MAAMG,EAAY,CAChBxoF,QAAS,EACTomD,UAAW,EACXohC,KAAM,EACNiB,aAAc,EACdC,gBAAiB,EAEjBC,WAAY,EAEZC,uBAAwB,EACxBC,QAAS,EACTpmF,SAAU,EACVqmF,aAAc,GACdC,iBAAkB,GAClBC,SAAU,IAGNv9D,EAAY,WAChB,MAAyB,oBAAX1pB,OAAyB,KAAOA,MAChD,EAUMknF,EAA4B,SAAmCC,EAAcC,GACjF,GAA4B,iBAAjBD,GAAkE,mBAA9BA,EAAaE,aAC1D,OAAO,KAMT,IAAIC,EAAS,KACb,MAAMC,EAAY,wBACdH,GAAqBA,EAAkBzN,aAAa4N,KACtDD,EAASF,EAAkB7rD,aAAagsD,IAE1C,MAAMC,EAAa,aAAeF,EAAS,IAAMA,EAAS,IAC1D,IACE,OAAOH,EAAaE,aAAaG,EAAY,CAC3C,UAAAC,CAAW7+C,GACT,OAAOA,CACT,EACA,eAAA8+C,CAAgBC,GACd,OAAOA,CACT,GAEJ,CAAE,MAAOp5D,GAKP,OADAj6B,QAAQyxD,KAAK,uBAAyByhC,EAAa,0BAC5C,IACT,CACF,EACA,SAASI,KACP,IAAI5nF,EAASxM,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAKk2B,IACjF,MAAMm+D,EAAY/1B,GAAQ81B,GAAgB91B,GAa1C,GAPA+1B,EAAU7nC,QAAU,QAMpB6nC,EAAUvN,QAAU,IACft6E,IAAWA,EAAOU,UAAYV,EAAOU,SAASonF,WAAarB,EAAU/lF,SAIxE,OADAmnF,EAAUE,aAAc,EACjBF,EAET,IAAI,SACFnnF,GACEV,EACJ,MAAMgoF,EAAmBtnF,EACnBunF,EAAgBD,EAAiBC,eACjC,iBACJC,EAAgB,oBAChBC,EAAmB,KACnB7I,EAAI,QACJpsC,EAAO,WACPk1C,EAAU,aACVC,EAAeroF,EAAOqoF,cAAgBroF,EAAOsoF,gBAAe,gBAC5DvI,EAAe,UACfwI,EAAS,aACTpB,GACEnnF,EACEwoF,EAAmBt1C,EAAQ1gD,UAC3Bi2F,EAAYxD,EAAauD,EAAkB,aAC3CE,EAAiBzD,EAAauD,EAAkB,eAChDG,EAAgB1D,EAAauD,EAAkB,cAC/Ch2C,GAAgByyC,EAAauD,EAAkB,cAQrD,GAAmC,mBAAxBL,EAAoC,CAC7C,MAAM95D,EAAW3tB,EAAS0hB,cAAc,YACpCiM,EAASqU,SAAWrU,EAASqU,QAAQ/f,gBACvCjiB,EAAW2tB,EAASqU,QAAQ/f,cAEhC,CACA,IAAIimE,GACAC,GAAY,GAChB,MAAM,eACJpI,GAAc,mBACdqI,GAAkB,uBAClBC,GAAsB,qBACtBC,IACEtoF,GACE,WACJuoF,IACEjB,EACJ,IAAI1rD,GAAQ,CAAC,EAKburD,EAAUE,YAAiC,mBAAZlwE,GAAmD,mBAAlB26B,IAAgCiuC,SAAwDxuF,IAAtCwuF,GAAeyI,mBACjI,MAAM,cACJrD,GAAa,SACbC,GAAQ,YACRC,GAAW,UACXC,GAAS,UACTC,GAAS,kBACTE,GAAiB,gBACjBC,GAAe,eACfE,IACEC,EACJ,IACEL,eAAgBiD,IACd5C,EAQA6C,GAAe,KACnB,MAAMC,GAAuBzE,EAAS,CAAC,EAAG,IAAIO,KAAWC,KAAUC,KAAeE,KAAaE,IAG/F,IAAI6D,GAAe,KACnB,MAAMC,GAAuB3E,EAAS,CAAC,EAAG,IAAIh8C,KAAS88C,KAAQC,KAAWC,IAQ1E,IAAI4D,GAA0B/vF,OAAO2pF,KAAKp1D,EAAO,KAAM,CACrDy7D,aAAc,CACZ/wD,UAAU,EACVD,cAAc,EACdj1B,YAAY,EACZ9N,MAAO,MAETg0F,mBAAoB,CAClBhxD,UAAU,EACVD,cAAc,EACdj1B,YAAY,EACZ9N,MAAO,MAETi0F,+BAAgC,CAC9BjxD,UAAU,EACVD,cAAc,EACdj1B,YAAY,EACZ9N,OAAO,MAKPk0F,GAAc,KAGdC,GAAc,KAGdC,IAAkB,EAGlBC,IAAkB,EAGlBC,IAA0B,EAI1BC,IAA2B,EAK3BC,IAAqB,EAKrBC,IAAe,EAGfC,IAAiB,EAGjBC,IAAa,EAIbC,IAAa,EAMbC,IAAa,EAIbC,IAAsB,EAItBC,IAAsB,EAKtBC,IAAe,EAefC,IAAuB,EAC3B,MAAMC,GAA8B,gBAGpC,IAAIC,IAAe,EAIfC,IAAW,EAGXC,GAAe,CAAC,EAGhBC,GAAkB,KACtB,MAAMC,GAA0BrG,EAAS,CAAC,EAAG,CAAC,iBAAkB,QAAS,WAAY,OAAQ,gBAAiB,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,QAAS,UAAW,WAAY,WAAY,YAAa,SAAU,QAAS,MAAO,WAAY,QAAS,QAAS,QAAS,QAG1R,IAAIsG,GAAgB,KACpB,MAAMC,GAAwBvG,EAAS,CAAC,EAAG,CAAC,QAAS,QAAS,MAAO,SAAU,QAAS,UAGxF,IAAIwG,GAAsB,KAC1B,MAAMC,GAA8BzG,EAAS,CAAC,EAAG,CAAC,MAAO,QAAS,MAAO,KAAM,QAAS,OAAQ,UAAW,cAAe,OAAQ,UAAW,QAAS,QAAS,QAAS,UAClK0G,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAEvB,IAAIC,GAAYD,GACZE,IAAiB,EAGjBC,GAAqB,KACzB,MAAMC,GAA6BhH,EAAS,CAAC,EAAG,CAAC0G,GAAkBC,GAAeC,IAAiBzH,GAGnG,IAAI8H,GAAoB,KACxB,MAAMC,GAA+B,CAAC,wBAAyB,aACzDC,GAA4B,YAClC,IAAIlH,GAAoB,KAGpBmH,GAAS,KAGb,MAAMC,GAAoB,IAKpBC,GAAcxrF,EAAS0hB,cAAc,QACrC+pE,GAAoB,SAA2BC,GACnD,OAAOA,aAAqB1kD,QAAU0kD,aAAqBnK,QAC7D,EAQMoK,GAAe,WACnB,IAAIC,EAAM94F,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E,IAAIw4F,IAAUA,KAAWM,EAAzB,CAyIA,GApIKA,GAAsB,iBAARA,IACjBA,EAAM,CAAC,GAITA,EAAM3Z,EAAM2Z,GACZT,IAEiE,IAAjEC,GAA6BrtF,QAAQ6tF,EAAIT,mBAA4BE,GAA4BO,EAAIT,kBAGrGhH,GAA0C,0BAAtBgH,GAAgD9H,EAAiBD,EAGrFsF,GAAehF,EAAqBkI,EAAK,gBAAkB1H,EAAS,CAAC,EAAG0H,EAAIlD,aAAcvE,IAAqBwE,GAC/GC,GAAelF,EAAqBkI,EAAK,gBAAkB1H,EAAS,CAAC,EAAG0H,EAAIhD,aAAczE,IAAqB0E,GAC/GoC,GAAqBvH,EAAqBkI,EAAK,sBAAwB1H,EAAS,CAAC,EAAG0H,EAAIX,mBAAoB5H,GAAkB6H,GAC9HR,GAAsBhH,EAAqBkI,EAAK,qBAAuB1H,EAASjS,EAAM0Y,IAEtFiB,EAAIC,kBAEJ1H,IAEEwG,GACFH,GAAgB9G,EAAqBkI,EAAK,qBAAuB1H,EAASjS,EAAMwY,IAEhFmB,EAAIE,kBAEJ3H,IAEEsG,GACFH,GAAkB5G,EAAqBkI,EAAK,mBAAqB1H,EAAS,CAAC,EAAG0H,EAAItB,gBAAiBnG,IAAqBoG,GACxHrB,GAAcxF,EAAqBkI,EAAK,eAAiB1H,EAAS,CAAC,EAAG0H,EAAI1C,YAAa/E,IAAqB,CAAC,EAC7GgF,GAAczF,EAAqBkI,EAAK,eAAiB1H,EAAS,CAAC,EAAG0H,EAAIzC,YAAahF,IAAqB,CAAC,EAC7GkG,KAAe3G,EAAqBkI,EAAK,iBAAkBA,EAAIvB,aAC/DjB,IAA0C,IAAxBwC,EAAIxC,gBACtBC,IAA0C,IAAxBuC,EAAIvC,gBACtBC,GAA0BsC,EAAItC,0BAA2B,EACzDC,IAA4D,IAAjCqC,EAAIrC,yBAC/BC,GAAqBoC,EAAIpC,qBAAsB,EAC/CC,IAAoC,IAArBmC,EAAInC,aACnBC,GAAiBkC,EAAIlC,iBAAkB,EACvCG,GAAa+B,EAAI/B,aAAc,EAC/BC,GAAsB8B,EAAI9B,sBAAuB,EACjDC,GAAsB6B,EAAI7B,sBAAuB,EACjDH,GAAagC,EAAIhC,aAAc,EAC/BI,IAAoC,IAArB4B,EAAI5B,aACnBC,GAAuB2B,EAAI3B,uBAAwB,EACnDE,IAAoC,IAArByB,EAAIzB,aACnBC,GAAWwB,EAAIxB,WAAY,EAC3B3B,GAAmBmD,EAAIG,oBAAsBvG,EAC7CuF,GAAYa,EAAIb,WAAaD,GAC7BhC,GAA0B8C,EAAI9C,yBAA2B,CAAC,EACtD8C,EAAI9C,yBAA2B2C,GAAkBG,EAAI9C,wBAAwBC,gBAC/ED,GAAwBC,aAAe6C,EAAI9C,wBAAwBC,cAEjE6C,EAAI9C,yBAA2B2C,GAAkBG,EAAI9C,wBAAwBE,sBAC/EF,GAAwBE,mBAAqB4C,EAAI9C,wBAAwBE,oBAEvE4C,EAAI9C,yBAAiG,kBAA/D8C,EAAI9C,wBAAwBG,iCACpEH,GAAwBG,+BAAiC2C,EAAI9C,wBAAwBG,gCAEnFO,KACFH,IAAkB,GAEhBS,KACFD,IAAa,GAIXQ,KACF3B,GAAexE,EAAS,CAAC,EAAGa,GAC5B6D,GAAe,IACW,IAAtByB,GAAaniD,OACfg8C,EAASwE,GAAcjE,GACvBP,EAAS0E,GAAc1gD,KAEA,IAArBmiD,GAAarF,MACfd,EAASwE,GAAchE,GACvBR,EAAS0E,GAAc5D,GACvBd,EAAS0E,GAAc1D,KAEO,IAA5BmF,GAAa1F,aACfT,EAASwE,GAAc/D,GACvBT,EAAS0E,GAAc5D,GACvBd,EAAS0E,GAAc1D,KAEG,IAAxBmF,GAAapF,SACff,EAASwE,GAAc7D,GACvBX,EAAS0E,GAAc3D,GACvBf,EAAS0E,GAAc1D,KAKvB0G,EAAII,WACFtD,KAAiBC,KACnBD,GAAezW,EAAMyW,KAEvBxE,EAASwE,GAAckD,EAAII,SAAU7H,KAEnCyH,EAAIK,WACFrD,KAAiBC,KACnBD,GAAe3W,EAAM2W,KAEvB1E,EAAS0E,GAAcgD,EAAIK,SAAU9H,KAEnCyH,EAAIC,mBACN3H,EAASwG,GAAqBkB,EAAIC,kBAAmB1H,IAEnDyH,EAAItB,kBACFA,KAAoBC,KACtBD,GAAkBrY,EAAMqY,KAE1BpG,EAASoG,GAAiBsB,EAAItB,gBAAiBnG,KAI7CgG,KACFzB,GAAa,UAAW,GAItBgB,IACFxF,EAASwE,GAAc,CAAC,OAAQ,OAAQ,SAItCA,GAAawD,QACfhI,EAASwE,GAAc,CAAC,iBACjBQ,GAAYiD,OAEjBP,EAAIQ,qBAAsB,CAC5B,GAAmD,mBAAxCR,EAAIQ,qBAAqBrF,WAClC,MAAMnD,EAAgB,+EAExB,GAAwD,mBAA7CgI,EAAIQ,qBAAqBpF,gBAClC,MAAMpD,EAAgB,oFAIxBsE,GAAqB0D,EAAIQ,qBAGzBjE,GAAYD,GAAmBnB,WAAW,GAC5C,WAE6Bx1F,IAAvB22F,KACFA,GAAqB1B,EAA0BC,EAAcc,IAIpC,OAAvBW,IAAoD,iBAAdC,KACxCA,GAAYD,GAAmBnB,WAAW,KAM1C/tF,GACFA,EAAO4yF,GAETN,GAASM,CArKT,CAsKF,EACMS,GAAiCnI,EAAS,CAAC,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,UACvEoI,GAA0BpI,EAAS,CAAC,EAAG,CAAC,gBAAiB,mBAMzDqI,GAA+BrI,EAAS,CAAC,EAAG,CAAC,QAAS,QAAS,OAAQ,IAAK,WAK5EsI,GAAetI,EAAS,CAAC,EAAG,IAAIQ,KAAUC,KAAeC,IACzD6H,GAAkBvI,EAAS,CAAC,EAAG,IAAIW,KAAaC,IAQhD4H,GAAuB,SAA8BnvF,GACzD,IAAIuzC,EAASgB,GAAcv0C,GAItBuzC,GAAWA,EAAOxR,UACrBwR,EAAS,CACP67C,aAAc5B,GACdzrD,QAAS,aAGb,MAAMA,EAAU8jD,EAAkB7lF,EAAQ+hC,SACpCstD,EAAgBxJ,EAAkBtyC,EAAOxR,SAC/C,QAAK2rD,GAAmB1tF,EAAQovF,gBAG5BpvF,EAAQovF,eAAiB9B,GAIvB/5C,EAAO67C,eAAiB7B,GACP,QAAZxrD,EAMLwR,EAAO67C,eAAiB/B,GACP,QAAZtrD,IAAwC,mBAAlBstD,GAAsCP,GAA+BO,IAK7FnlF,QAAQ+kF,GAAaltD,IAE1B/hC,EAAQovF,eAAiB/B,GAIvB95C,EAAO67C,eAAiB7B,GACP,SAAZxrD,EAKLwR,EAAO67C,eAAiB9B,GACP,SAAZvrD,GAAsBgtD,GAAwBM,GAKhDnlF,QAAQglF,GAAgBntD,IAE7B/hC,EAAQovF,eAAiB7B,KAIvBh6C,EAAO67C,eAAiB9B,KAAkByB,GAAwBM,OAGlE97C,EAAO67C,eAAiB/B,KAAqByB,GAA+BO,MAMxEH,GAAgBntD,KAAaitD,GAA6BjtD,KAAaktD,GAAaltD,MAIpE,0BAAtB6rD,KAAiDF,GAAmB1tF,EAAQovF,eASlF,EAOME,GAAe,SAAsBruF,GACzC2kF,EAAUgE,EAAUvN,QAAS,CAC3Br8E,QAASiB,IAEX,IAEEA,EAAKU,WAAWw7E,YAAYl8E,EAC9B,CAAE,MAAOqvB,GACPrvB,EAAKsjF,QACP,CACF,EAQMgL,GAAmB,SAA0B/jF,EAAMvK,GACvD,IACE2kF,EAAUgE,EAAUvN,QAAS,CAC3Bj2B,UAAWnlD,EAAKuuF,iBAAiBhkF,GACjCiH,KAAMxR,GAEV,CAAE,MAAOqvB,GACPs1D,EAAUgE,EAAUvN,QAAS,CAC3Bj2B,UAAW,KACX3zC,KAAMxR,GAEV,CAIA,GAHAA,EAAKs8E,gBAAgB/xE,GAGR,OAATA,IAAkB6/E,GAAa7/E,GACjC,GAAI8gF,IAAcC,GAChB,IACE+C,GAAaruF,EACf,CAAE,MAAOqvB,GAAI,MAEb,IACErvB,EAAKygC,aAAal2B,EAAM,GAC1B,CAAE,MAAO8kB,GAAI,CAGnB,EAQMm/D,GAAgB,SAAuBC,GAE3C,IAAItM,EAAM,KACNuM,EAAoB,KACxB,GAAItD,GACFqD,EAAQ,oBAAsBA,MACzB,CAEL,MAAMjoE,EAAUs+D,EAAY2J,EAAO,eACnCC,EAAoBloE,GAAWA,EAAQ,EACzC,CAC0B,0BAAtBmmE,IAAiDJ,KAAcD,KAEjEmC,EAAQ,iEAAmEA,EAAQ,kBAErF,MAAME,EAAejF,GAAqBA,GAAmBnB,WAAWkG,GAASA,EAKjF,GAAIlC,KAAcD,GAChB,IACEnK,GAAM,IAAIkH,GAAYuF,gBAAgBD,EAAchC,GACtD,CAAE,MAAOt9D,GAAI,CAIf,IAAK8yD,IAAQA,EAAI/mD,gBAAiB,CAChC+mD,EAAMZ,GAAesN,eAAetC,GAAW,WAAY,MAC3D,IACEpK,EAAI/mD,gBAAgBsF,UAAY8rD,GAAiB7C,GAAYgF,CAC/D,CAAE,MAAOt/D,GAET,CACF,CACA,MAAMvf,EAAOqyE,EAAIryE,MAAQqyE,EAAI/mD,gBAM7B,OALIqzD,GAASC,GACX5+E,EAAKkxB,aAAax/B,EAASstF,eAAeJ,GAAoB5+E,EAAK8wB,WAAW,IAAM,MAIlF2rD,KAAcD,GACTxC,GAAqBp1F,KAAKytF,EAAK+I,GAAiB,OAAS,QAAQ,GAEnEA,GAAiB/I,EAAI/mD,gBAAkBtrB,CAChD,EAQMi/E,GAAsB,SAA6Bn8B,GACvD,OAAOg3B,GAAmBl1F,KAAKk+D,EAAKnvC,eAAiBmvC,EAAMA,EAE3Ds2B,EAAW8F,aAAe9F,EAAW+F,aAAe/F,EAAWgG,UAAYhG,EAAWiG,4BAA8BjG,EAAWkG,mBAAoB,KACrJ,EAQMC,GAAe,SAAsBC,GACzC,OAAOA,aAAezO,SAEC,IAAhByO,EAAIC,SAAkD,iBAAhBD,EAAIC,cAEnB,IAAvBD,EAAIE,gBAAgE,iBAAvBF,EAAIE,gBAAuD,iBAAjBF,EAAIp8C,UAAoD,iBAApBo8C,EAAIG,aAAuD,mBAApBH,EAAIpT,eAAgCoT,EAAI/yE,sBAAsB4sE,IAAgD,mBAAxBmG,EAAIhT,iBAA8D,mBAArBgT,EAAI7uD,cAA2D,iBAArB6uD,EAAInB,cAAyD,mBAArBmB,EAAItuD,cAA4D,mBAAtBsuD,EAAII,cAC9a,EAQMC,GAAU,SAAiBvqE,GAC/B,MAAuB,mBAATg7D,GAAuBh7D,aAAkBg7D,CACzD,EAUMwP,GAAe,SAAsBC,EAAY/8D,EAAa53B,GAC7DkiC,GAAMyyD,IAGXrL,EAAapnD,GAAMyyD,IAAaC,IAC9BA,EAAKp7F,KAAKi0F,EAAW71D,EAAa53B,EAAM4xF,GAAO,GAEnD,EAYMiD,GAAoB,SAA2Bj9D,GACnD,IAAI0Q,EAAU,KAMd,GAHAosD,GAAa,yBAA0B98D,EAAa,MAGhDu8D,GAAav8D,GAEf,OADAu7D,GAAav7D,IACN,EAIT,MAAMgO,EAAU6kD,GAAkB7yD,EAAYogB,UAS9C,GANA08C,GAAa,sBAAuB98D,EAAa,CAC/CgO,UACAkvD,YAAa9F,KAIXp3D,EAAY48D,kBAAoBC,GAAQ78D,EAAYm9D,oBAAsB9K,EAAW,UAAWryD,EAAY4N,YAAcykD,EAAW,UAAWryD,EAAY28D,aAE9J,OADApB,GAAav7D,IACN,EAIT,GAAIA,EAAY81D,WAAarB,EAAUI,uBAErC,OADA0G,GAAav7D,IACN,EAIT,GAAIm4D,IAAgBn4D,EAAY81D,WAAarB,EAAUK,SAAWzC,EAAW,UAAWryD,EAAY53B,MAElG,OADAmzF,GAAav7D,IACN,EAIT,IAAKo3D,GAAappD,IAAY4pD,GAAY5pD,GAAU,CAElD,IAAK4pD,GAAY5pD,IAAYovD,GAAsBpvD,GAAU,CAC3D,GAAIwpD,GAAwBC,wBAAwB/hD,QAAU28C,EAAWmF,GAAwBC,aAAczpD,GAC7G,OAAO,EAET,GAAIwpD,GAAwBC,wBAAwBxH,UAAYuH,GAAwBC,aAAazpD,GACnG,OAAO,CAEX,CAGA,GAAI6qD,KAAiBG,GAAgBhrD,GAAU,CAC7C,MAAMpgC,EAAa4yC,GAAcxgB,IAAgBA,EAAYpyB,WACvDkgC,EAAa6oD,EAAc32D,IAAgBA,EAAY8N,WAC7D,GAAIA,GAAclgC,EAEhB,IAAK,IAAIxM,EADU0sC,EAAWvsC,OACJ,EAAGH,GAAK,IAAKA,EAAG,CACxC,MAAMi8F,EAAa5G,EAAU3oD,EAAW1sC,IAAI,GAC5Ci8F,EAAWX,gBAAkB18D,EAAY08D,gBAAkB,GAAK,EAChE9uF,EAAWsgC,aAAamvD,EAAY3G,EAAe12D,GACrD,CAEJ,CAEA,OADAu7D,GAAav7D,IACN,CACT,CAGA,OAAIA,aAAuBkhB,IAAYk6C,GAAqBp7D,IAC1Du7D,GAAav7D,IACN,GAIQ,aAAZgO,GAAsC,YAAZA,GAAqC,aAAZA,IAA2BqkD,EAAW,8BAA+BryD,EAAY4N,YAMrIsqD,IAAsBl4D,EAAY81D,WAAarB,EAAUhB,OAE3D/iD,EAAU1Q,EAAY28D,YACtBjL,EAAa,CAACmC,GAAeC,GAAUC,KAAcuJ,IACnD5sD,EAAUuhD,EAAcvhD,EAAS4sD,EAAM,IAAI,IAEzCt9D,EAAY28D,cAAgBjsD,IAC9BmhD,EAAUgE,EAAUvN,QAAS,CAC3Br8E,QAAS+zB,EAAYy2D,cAEvBz2D,EAAY28D,YAAcjsD,IAK9BosD,GAAa,wBAAyB98D,EAAa,OAC5C,IArBLu7D,GAAav7D,IACN,EAqBX,EAWMu9D,GAAoB,SAA2BC,EAAOC,EAAQ/5F,GAElE,GAAIg1F,KAA4B,OAAX+E,GAA8B,SAAXA,KAAuB/5F,KAASgL,GAAYhL,KAASw2F,IAAyB,YAAVx2F,GAAiC,mBAAVA,GACjI,OAAO,EAOT,GAAIq0F,KAAoBF,GAAY4F,IAAWpL,EAAW2B,GAAWyJ,SAAgB,GAAI3F,IAAmBzF,EAAW4B,GAAWwJ,SAAgB,IAAKnG,GAAamG,IAAW5F,GAAY4F,IACzL,KAIAL,GAAsBI,KAAWhG,GAAwBC,wBAAwB/hD,QAAU28C,EAAWmF,GAAwBC,aAAc+F,IAAUhG,GAAwBC,wBAAwBxH,UAAYuH,GAAwBC,aAAa+F,MAAYhG,GAAwBE,8BAA8BhiD,QAAU28C,EAAWmF,GAAwBE,mBAAoB+F,IAAWjG,GAAwBE,8BAA8BzH,UAAYuH,GAAwBE,mBAAmB+F,KAGve,OAAXA,GAAmBjG,GAAwBG,iCAAmCH,GAAwBC,wBAAwB/hD,QAAU28C,EAAWmF,GAAwBC,aAAc/zF,IAAU8zF,GAAwBC,wBAAwBxH,UAAYuH,GAAwBC,aAAa/zF,KAClS,OAAO,OAGJ,GAAI01F,GAAoBqE,SAAgB,GAAIpL,EAAW8E,GAAkBlF,EAAcvuF,EAAO0wF,GAAiB,WAAa,GAAgB,QAAXqJ,GAA+B,eAAXA,GAAsC,SAAXA,GAAgC,WAAVD,GAAwD,IAAlCtL,EAAcxuF,EAAO,WAAkBw1F,GAAcsE,GAAe,GAAIxF,KAA4B3F,EAAW8B,GAAmBlC,EAAcvuF,EAAO0wF,GAAiB,WAAa,GAAI1wF,EAC1Z,OAAO,EAET,OAAO,CACT,EAUM05F,GAAwB,SAA+BpvD,GAC3D,MAAmB,mBAAZA,GAAgCgkD,EAAYhkD,EAASsmD,GAC9D,EAYMoJ,GAAsB,SAA6B19D,GAEvD88D,GAAa,2BAA4B98D,EAAa,MACtD,MAAM,WACJvW,GACEuW,EAGJ,IAAKvW,EACH,OAEF,MAAMk0E,EAAY,CAChBC,SAAU,GACVC,UAAW,GACXC,UAAU,EACVC,kBAAmBzG,IAErB,IAAI3uB,EAAIl/C,EAAWloB,OAGnB,KAAOonE,KAAK,CACV,MAAMv/B,EAAO3f,EAAWk/C,IAClB,KACJlxD,EAAI,aACJ4jF,EACA33F,MAAOm6F,GACLz0D,EACEq0D,EAAS5K,GAAkBp7E,GACjC,IAAI/T,EAAiB,UAAT+T,EAAmBomF,EAAY1L,EAAW0L,GAUtD,GAPAF,EAAUC,SAAWH,EACrBE,EAAUE,UAAYn6F,EACtBi6F,EAAUG,UAAW,EACrBH,EAAUK,mBAAgB/9F,EAC1B68F,GAAa,wBAAyB98D,EAAa29D,GACnDj6F,EAAQi6F,EAAUE,UAEdF,EAAUK,cACZ,SAOF,GAHAxC,GAAiB/jF,EAAMuoB,IAGlB29D,EAAUG,SACb,SAIF,IAAK7F,IAA4B5F,EAAW,OAAQ3uF,GAAQ,CAC1D83F,GAAiB/jF,EAAMuoB,GACvB,QACF,CAGA,GAAIm4D,IAAgB9F,EAAW,gCAAiC3uF,GAAQ,CACtE83F,GAAiB/jF,EAAMuoB,GACvB,QACF,CAGIk4D,IACFxG,EAAa,CAACmC,GAAeC,GAAUC,KAAcuJ,IACnD55F,EAAQuuF,EAAcvuF,EAAO45F,EAAM,IAAI,IAK3C,MAAME,EAAQ3K,GAAkB7yD,EAAYogB,UAC5C,GAAKm9C,GAAkBC,EAAOC,EAAQ/5F,GAAtC,CAgBA,IATIi1F,IAAoC,OAAX8E,GAA8B,SAAXA,IAE9CjC,GAAiB/jF,EAAMuoB,GAGvBt8B,EAAQk1F,GAA8Bl1F,GAIpCkzF,IAA8C,iBAAjBzB,GAAsE,mBAAlCA,EAAa8I,iBAChF,GAAI5C,QACF,OAAQlG,EAAa8I,iBAAiBT,EAAOC,IAC3C,IAAK,cAED/5F,EAAQkzF,GAAmBnB,WAAW/xF,GACtC,MAEJ,IAAK,mBAEDA,EAAQkzF,GAAmBlB,gBAAgBhyF,GAQrD,IACM23F,EACFr7D,EAAYk+D,eAAe7C,EAAc5jF,EAAM/T,GAG/Cs8B,EAAY2N,aAAal2B,EAAM/T,GAE7B64F,GAAav8D,GACfu7D,GAAav7D,GAEb4xD,EAASiE,EAAUvN,QAEvB,CAAE,MAAO/rD,GAAI,CA5Cb,CA6CF,CAGAugE,GAAa,0BAA2B98D,EAAa,KACvD,EAOMm+D,GAAqB,SAASA,EAAmBC,GACrD,IAAIC,EAAa,KACjB,MAAMC,EAAiBrC,GAAoBmC,GAI3C,IADAtB,GAAa,0BAA2BsB,EAAU,MAC3CC,EAAaC,EAAeC,YAAY,CAK7C,GAHAzB,GAAa,yBAA0BuB,EAAY,MAG/CpB,GAAkBoB,GACpB,SAEF,MAAMzwF,EAAa4yC,GAAc69C,GAG7BA,EAAWvI,WAAarB,EAAUxoF,UAChC2B,GAAcA,EAAW6uF,QAK3B4B,EAAW5B,SAAW4B,EAAW3B,gBAAkB,GAAK9uF,EAAW6uF,QAAU,EAE7E4B,EAAW5B,QAAU,IAQrB4B,EAAW5B,SAAWxC,IAAqBoE,EAAW5B,QAAU,GAAKjK,EAAY6L,EAAW5B,WAC9FlB,GAAa8C,GAIXA,EAAW3tD,mBAAmBwlD,IAChCmI,EAAW3tD,QAAQ+rD,QAAU4B,EAAW5B,QACxC0B,EAAmBE,EAAW3tD,UAIhCgtD,GAAoBW,EACtB,CAGAvB,GAAa,yBAA0BsB,EAAU,KACnD,EAiRA,OAvQAvI,EAAU2I,SAAW,SAAU7C,GAC7B,IAAIrB,EAAM94F,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3Ewb,EAAO,KACPyhF,EAAe,KACfz+D,EAAc,KACd0+D,EAAa,KAUjB,GANAhF,IAAkBiC,EACdjC,KACFiC,EAAQ,eAIW,iBAAVA,IAAuBkB,GAAQlB,GAAQ,CAChD,GAA8B,mBAAnBA,EAAMvtE,SAMf,MAAMkkE,EAAgB,8BAJtB,GAAqB,iBADrBqJ,EAAQA,EAAMvtE,YAEZ,MAAMkkE,EAAgB,kCAK5B,CAGA,IAAKuD,EAAUE,YACb,OAAO4F,EAeT,GAXKtD,IACHgC,GAAaC,GAIfzE,EAAUvN,QAAU,GAGC,iBAAVqT,IACT7C,IAAW,GAETA,IAEF,GAAI6C,EAAMv7C,SAAU,CAClB,MAAMpS,EAAU6kD,GAAkB8I,EAAMv7C,UACxC,IAAKg3C,GAAappD,IAAY4pD,GAAY5pD,GACxC,MAAMskD,EAAgB,0DAE1B,OACK,GAAIqJ,aAAiBrO,EAG1BtwE,EAAO0+E,GAAc,iBACrB+C,EAAezhF,EAAK2T,cAAcsmE,WAAW0E,GAAO,GAChD8C,EAAa3I,WAAarB,EAAUxoF,SAAqC,SAA1BwyF,EAAar+C,UAG3B,SAA1Bq+C,EAAar+C,SADtBpjC,EAAOyhF,EAKPzhF,EAAKkwE,YAAYuR,OAEd,CAEL,IAAKlG,KAAeL,KAAuBE,KAEnB,IAAxBuD,EAAMlvF,QAAQ,KACZ,OAAOmqF,IAAsB6B,GAAsB7B,GAAmBnB,WAAWkG,GAASA,EAO5F,GAHA3+E,EAAO0+E,GAAcC,IAGhB3+E,EACH,OAAOu7E,GAAa,KAAOE,GAAsB5B,GAAY,EAEjE,CAGI75E,GAAQs7E,IACViD,GAAav+E,EAAKa,YAIpB,MAAM8gF,EAAe1C,GAAoBnD,GAAW6C,EAAQ3+E,GAG5D,KAAOgjB,EAAc2+D,EAAaJ,YAAY,CAE5C,GAAItB,GAAkBj9D,GACpB,SAEF,MAAMpyB,EAAa4yC,GAAcxgB,GAG7BA,EAAY81D,WAAarB,EAAUxoF,UACjC2B,GAAcA,EAAW6uF,QAK3Bz8D,EAAYy8D,SAAWz8D,EAAY08D,gBAAkB,GAAK9uF,EAAW6uF,QAAU,EAE/Ez8D,EAAYy8D,QAAU,IAQtBz8D,EAAYy8D,SAAWxC,IAAqBj6D,EAAYy8D,QAAU,GAAKjK,EAAYxyD,EAAYy8D,WACjGlB,GAAav7D,GAIXA,EAAY0Q,mBAAmBwlD,IACjCl2D,EAAY0Q,QAAQ+rD,QAAUz8D,EAAYy8D,QAC1C0B,GAAmBn+D,EAAY0Q,UAIjCgtD,GAAoB19D,EACtB,CAGA,GAAI84D,GACF,OAAO6C,EAIT,GAAIpD,GAAY,CACd,GAAIC,GAEF,IADAkG,EAAa3H,GAAuBn1F,KAAKob,EAAK2T,eACvC3T,EAAKa,YAEV6gF,EAAWxR,YAAYlwE,EAAKa,iBAG9B6gF,EAAa1hF,EAYf,OAVIs6E,GAAasH,YAActH,GAAauH,kBAQ1CH,EAAazH,GAAWr1F,KAAKo0F,EAAkB0I,GAAY,IAEtDA,CACT,CACA,IAAII,EAAiB1G,GAAiBp7E,EAAK+hF,UAAY/hF,EAAK4wB,UAa5D,OAVIwqD,IAAkBhB,GAAa,aAAep6E,EAAK2T,eAAiB3T,EAAK2T,cAAcquE,SAAWhiF,EAAK2T,cAAcquE,QAAQvnF,MAAQ46E,EAAWgC,EAAcr3E,EAAK2T,cAAcquE,QAAQvnF,QAC3LqnF,EAAiB,aAAe9hF,EAAK2T,cAAcquE,QAAQvnF,KAAO,MAAQqnF,GAIxE5G,IACFxG,EAAa,CAACmC,GAAeC,GAAUC,KAAcuJ,IACnDwB,EAAiB7M,EAAc6M,EAAgBxB,EAAM,IAAI,IAGtD1G,IAAsB6B,GAAsB7B,GAAmBnB,WAAWqJ,GAAkBA,CACrG,EAQAjJ,EAAUoJ,UAAY,WAEpB5E,GADU74F,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAE/E62F,IAAa,CACf,EAOAxC,EAAUqJ,YAAc,WACtBlF,GAAS,KACT3B,IAAa,CACf,EAYAxC,EAAUsJ,iBAAmB,SAAUvuD,EAAKxH,EAAM1lC,GAE3Cs2F,IACHK,GAAa,CAAC,GAEhB,MAAMmD,EAAQ3K,GAAkBjiD,GAC1B6sD,EAAS5K,GAAkBzpD,GACjC,OAAOm0D,GAAkBC,EAAOC,EAAQ/5F,EAC1C,EASAmyF,EAAUuJ,QAAU,SAAUrC,EAAYsC,GACZ,mBAAjBA,IAGX/0D,GAAMyyD,GAAczyD,GAAMyyD,IAAe,GACzClL,EAAUvnD,GAAMyyD,GAAasC,GAC/B,EAUAxJ,EAAUyJ,WAAa,SAAUvC,GAC/B,GAAIzyD,GAAMyyD,GACR,OAAOnL,EAAStnD,GAAMyyD,GAE1B,EAQAlH,EAAU0J,YAAc,SAAUxC,GAC5BzyD,GAAMyyD,KACRzyD,GAAMyyD,GAAc,GAExB,EAMAlH,EAAU2J,eAAiB,WACzBl1D,GAAQ,CAAC,CACX,EACOurD,CACT,CAGA,OAFaD,IAId,CA/kDiFzV,mCCDlF,IAAIsf,EAAmB,sBAEvBn/F,EAAOC,QAAU,SAAUszB,GAC1B,GAAmB,iBAARA,EACV,MAAM,IAAIhzB,UAAU,qBAGrB,OAAOgzB,EAAIkD,QAAQ0oE,EAAkB,OACtC,yBCVA,OAOC,WACA,aAEA,IAAItvE,IACe,oBAAXniB,SACPA,OAAOU,WACPV,OAAOU,SAAS0hB,eAGbsvE,EAAuB,CAE1BvvE,UAAWA,EAEXwvE,cAAiC,oBAAXC,OAEtBC,qBACC1vE,MAAgBniB,OAAOiE,mBAAoBjE,OAAO8xF,aAEnDC,eAAgB5vE,KAAeniB,OAAOgyF,aAOrC,KAFD,aACC,OAAON,CACP,+BAOH,CAhCA,0BCPA,UAAwD,EAAO,QAAI,0BAAF,EAA8F,WAAW,aAAa,SAASp3F,EAAED,EAAEC,GAAG,YAAM,IAAoBA,EAAEA,EAAE,CAAC23F,SAAQ,GAAI,iBAAiB33F,IAAIhG,QAAQyxD,KAAK,sDAAsDzrD,EAAE,CAAC23F,SAAS33F,IAAIA,EAAE23F,SAAS,6EAA6ExyF,KAAKpF,EAAEtH,MAAM,IAAIm/F,KAAK,CAAC,SAAS73F,GAAG,CAACtH,KAAKsH,EAAEtH,OAAOsH,CAAC,CAAC,SAAS2rB,EAAE3rB,EAAEC,EAAE0rB,GAAG,IAAIue,EAAE,IAAIklC,eAAellC,EAAEnX,KAAK,MAAM/yB,GAAGkqC,EAAE4tD,aAAa,OAAO5tD,EAAEwlC,OAAO,WAAWp1E,EAAE4vC,EAAEuyB,SAASx8D,EAAE0rB,EAAE,EAAEue,EAAE7W,QAAQ,WAAWp5B,QAAQhB,MAAM,0BAA0B,EAAEixC,EAAEi8B,MAAM,CAAC,SAASj8B,EAAElqC,GAAG,IAAIC,EAAE,IAAImvE,eAAenvE,EAAE8yB,KAAK,OAAO/yB,GAAE,GAAI,IAAIC,EAAEkmE,MAAM,CAAC,MAAMnmE,GAAG,CAAC,OAAO,KAAKC,EAAEoa,QAAQ,KAAKpa,EAAEoa,MAAM,CAAC,SAASuU,EAAE5uB,GAAG,IAAIA,EAAE8hF,cAAc,IAAIiW,WAAW,SAAS,CAAC,MAAMpsE,GAAG,IAAI1rB,EAAEoG,SAASo6E,YAAY,eAAexgF,EAAEqhF,eAAe,SAAQ,GAAG,EAAG37E,OAAO,EAAE,EAAE,EAAE,GAAG,IAAG,GAAG,GAAG,GAAG,EAAG,EAAE,MAAM3F,EAAE8hF,cAAc7hF,EAAE,CAAC,CAAC,IAAIsqD,EAAE,iBAAiB5kD,QAAQA,OAAOA,SAASA,OAAOA,OAAO,iBAAiBypB,MAAMA,KAAKA,OAAOA,KAAKA,KAAK,iBAAiB,EAAA90B,GAAQ,EAAAA,EAAO09F,SAAS,EAAA19F,EAAO,EAAAA,OAAO,EAAO0F,EAAEuqD,EAAE34B,WAAW,YAAYxsB,KAAKwsB,UAAUY,YAAY,cAAcptB,KAAKwsB,UAAUY,aAAa,SAASptB,KAAKwsB,UAAUY,WAAWl4B,EAAEiwD,EAAE0tC,SAAS,iBAAiBtyF,QAAQA,SAAS4kD,EAAE,WAAW,EAAE,aAAa2tC,kBAAkB//F,YAAY6H,EAAE,SAASC,EAAE3F,EAAEgK,GAAG,IAAIvL,EAAEwxD,EAAE4tC,KAAK5tC,EAAE6tC,UAAUvzB,EAAEx+D,SAAS0hB,cAAc,KAAKztB,EAAEA,GAAG2F,EAAEmP,MAAM,WAAWy1D,EAAEwzB,SAAS/9F,EAAEuqE,EAAEyzB,IAAI,WAAW,iBAAiBr4F,GAAG4kE,EAAE0zB,KAAKt4F,EAAE4kE,EAAE2zB,SAASpjB,SAASojB,OAAO5pE,EAAEi2C,GAAG36B,EAAE26B,EAAE0zB,MAAM5sE,EAAE1rB,EAAE3F,EAAEgK,GAAGsqB,EAAEi2C,EAAEA,EAAEzjE,OAAO,YAAYyjE,EAAE0zB,KAAKx/F,EAAE0/F,gBAAgBx4F,GAAGgM,YAAW,WAAWlT,EAAE2/F,gBAAgB7zB,EAAE0zB,KAAK,GAAE,KAAKtsF,YAAW,WAAW2iB,EAAEi2C,EAAE,GAAE,GAAG,EAAE,qBAAqBjzC,UAAU,SAAS24B,EAAEjwD,EAAEgK,GAAG,GAAGhK,EAAEA,GAAGiwD,EAAEn7C,MAAM,WAAW,iBAAiBm7C,EAAE34B,UAAU+mE,iBAAiB14F,EAAEsqD,EAAEjmD,GAAGhK,QAAQ,GAAG4vC,EAAEqgB,GAAG5+B,EAAE4+B,EAAEjwD,EAAEgK,OAAO,CAAC,IAAIvL,EAAEsN,SAAS0hB,cAAc,KAAKhvB,EAAEw/F,KAAKhuC,EAAExxD,EAAEqI,OAAO,SAAS6K,YAAW,WAAW2iB,EAAE71B,EAAE,GAAE,CAAC,EAAE,SAASkH,EAAEiqC,EAAEtb,EAAEt0B,GAAG,IAAGA,EAAEA,GAAGy4B,KAAK,GAAG,aAAcz4B,EAAE+L,SAASohC,MAAMntC,EAAE+L,SAASsO,KAAKikF,UAAU,kBAAkB,iBAAiB34F,EAAE,OAAO0rB,EAAE1rB,EAAEiqC,EAAEtb,GAAG,IAAItqB,EAAE,6BAA6BrE,EAAEvH,KAAKK,EAAE,eAAeqM,KAAKmlD,EAAE/1C,cAAc+1C,EAAEsuC,OAAOh0B,EAAE,eAAez/D,KAAKwsB,UAAUY,WAAW,IAAIqyC,GAAGvgE,GAAGvL,GAAGiH,IAAI,oBAAoB84F,WAAW,CAAC,IAAIpkE,EAAE,IAAIokE,WAAWpkE,EAAEqkE,UAAU,WAAW,IAAI/4F,EAAE00B,EAAEzB,OAAOjzB,EAAE6kE,EAAE7kE,EAAEA,EAAE0uB,QAAQ,eAAe,yBAAyBp0B,EAAEA,EAAE86E,SAASmjB,KAAKv4F,EAAEo1E,SAASp1E,EAAE1F,EAAE,IAAI,EAAEo6B,EAAEskE,cAAc/4F,EAAE,KAAK,CAAC,IAAIqgE,EAAE/V,EAAE4tC,KAAK5tC,EAAE6tC,UAAUv+F,EAAEymE,EAAEm4B,gBAAgBx4F,GAAG3F,EAAEA,EAAE86E,SAASv7E,EAAEu7E,SAASmjB,KAAK1+F,EAAES,EAAE,KAAK2R,YAAW,WAAWq0D,EAAEo4B,gBAAgB7+F,EAAE,GAAE,IAAI,CAAC,GAAG0wD,EAAE0tC,OAAO39F,EAAE29F,OAAO39F,EAA+BrC,EAAOC,QAAQoC,CAAE,GAA5kF,+DCCnErC,EAAOC,QAAU,SAAUm8B,EAAK6zB,GAK/B,IAJA,IAAI+wC,EAAM,CAAC,EACPnwF,EAAO1J,OAAO0J,KAAKurB,GACnB6kE,EAAQ1/F,MAAMgpB,QAAQ0lC,GAEjBnvD,EAAI,EAAGA,EAAI+P,EAAK5P,OAAQH,IAAK,CACrC,IAAI6B,EAAMkO,EAAK/P,GACXioC,EAAM3M,EAAIz5B,IAEVs+F,GAAoC,IAA5BhxC,EAAU9jD,QAAQxJ,GAAcstD,EAAUttD,EAAKomC,EAAK3M,MAC/D4kE,EAAIr+F,GAAOomC,EAEb,CAEA,OAAOi4D,CACR,sCCdA,IAAIE,EAAa,EAAQ,OAErB1a,EAAQr/E,OAAOjH,UAAU4tB,SACzBmJ,EAAiB9vB,OAAOjH,UAAU+2B,eAwDtCj3B,EAAOC,QAnBO,SAAiBsC,EAAM0jC,EAAUksD,GAC3C,IAAK+O,EAAWj7D,GACZ,MAAM,IAAI1lC,UAAU,+BAGxB,IAAI4gG,EACAjgG,UAAUD,QAAU,IACpBkgG,EAAWhP,GAGU,mBAArB3L,EAAMllF,KAAKiB,GA7CA,SAAsBsoB,EAAOob,EAAUk7D,GACtD,IAAK,IAAIrgG,EAAI,EAAGF,EAAMiqB,EAAM5pB,OAAQH,EAAIF,EAAKE,IACrCm2B,EAAe31B,KAAKupB,EAAO/pB,KACX,MAAZqgG,EACAl7D,EAASpb,EAAM/pB,GAAIA,EAAG+pB,GAEtBob,EAAS3kC,KAAK6/F,EAAUt2E,EAAM/pB,GAAIA,EAAG+pB,GAIrD,CAoCQu2E,CAAa7+F,EAAM0jC,EAAUk7D,GACN,iBAAT5+F,EAnCF,SAAuBg2C,EAAQtS,EAAUk7D,GACzD,IAAK,IAAIrgG,EAAI,EAAGF,EAAM23C,EAAOt3C,OAAQH,EAAIF,EAAKE,IAE1B,MAAZqgG,EACAl7D,EAASsS,EAAOpiB,OAAOr1B,GAAIA,EAAGy3C,GAE9BtS,EAAS3kC,KAAK6/F,EAAU5oD,EAAOpiB,OAAOr1B,GAAIA,EAAGy3C,EAGzD,CA2BQ8oD,CAAc9+F,EAAM0jC,EAAUk7D,GAzBlB,SAAuBnvE,EAAQiU,EAAUk7D,GACzD,IAAK,IAAI1kE,KAAKzK,EACNiF,EAAe31B,KAAK0wB,EAAQyK,KACZ,MAAZ0kE,EACAl7D,EAASjU,EAAOyK,GAAIA,EAAGzK,GAEvBiU,EAAS3kC,KAAK6/F,EAAUnvE,EAAOyK,GAAIA,EAAGzK,GAItD,CAiBQsvE,CAAc/+F,EAAM0jC,EAAUk7D,EAEtC,kCCvDA,IACI3/F,EAAQD,MAAMrB,UAAUsB,MACxBglF,EAAQr/E,OAAOjH,UAAU4tB,SAG7B9tB,EAAOC,QAAU,SAAcshG,GAC3B,IAAIp4F,EAAS3J,KACb,GAAsB,mBAAX2J,GAJA,sBAIyBq9E,EAAMllF,KAAK6H,GAC3C,MAAM,IAAI5I,UARE,kDAQwB4I,GAyBxC,IAvBA,IAEIq4F,EAFA3gG,EAAOW,EAAMF,KAAKJ,UAAW,GAqB7BugG,EAAc/5F,KAAK0B,IAAI,EAAGD,EAAOlI,OAASJ,EAAKI,QAC/CygG,EAAY,GACP5gG,EAAI,EAAGA,EAAI2gG,EAAa3gG,IAC7B4gG,EAAU5/F,KAAK,IAAMhB,GAKzB,GAFA0gG,EAAQ7R,SAAS,SAAU,oBAAsB+R,EAAUzuE,KAAK,KAAO,4CAA/D08D,EAxBK,WACT,GAAInwF,gBAAgBgiG,EAAO,CACvB,IAAIxmE,EAAS7xB,EAAO1H,MAChBjC,KACAqB,EAAKkjB,OAAOviB,EAAMF,KAAKJ,aAE3B,OAAIiG,OAAO6zB,KAAYA,EACZA,EAEJx7B,IACX,CACI,OAAO2J,EAAO1H,MACV8/F,EACA1gG,EAAKkjB,OAAOviB,EAAMF,KAAKJ,YAGnC,IAUIiI,EAAOjJ,UAAW,CAClB,IAAIyhG,EAAQ,WAAkB,EAC9BA,EAAMzhG,UAAYiJ,EAAOjJ,UACzBshG,EAAMthG,UAAY,IAAIyhG,EACtBA,EAAMzhG,UAAY,IACtB,CAEA,OAAOshG,CACX,sCCjDA,IAAIrT,EAAiB,EAAQ,OAE7BnuF,EAAOC,QAAU0vF,SAASzvF,UAAUwT,MAAQy6E,oCCD5CluF,EAAQ,OAA2B,EACnC,MAMM2hG,EAAW,CAAC,QAAS,QAAS,MAAO,OAAQ,OAAQ,OAAQ,QAenE3hG,EAAQ,EAdyB,CAACs0B,EAAOstE,EAAS,YAChD,GAAc,MAAVttE,EAAe,OAAOA,EAC1B,MAAMutE,EAAmBvtE,EAAMwtE,SAAS,KACxC,MAVuB,EAACH,EAAUrtE,KAClC,IAAK,MAAMygE,KAAU4M,EACnB,GAAIrtE,EAAMwtE,SAAS/M,GAAS,OAAO,EAErC,OAAO,CAAK,EAMRgN,CAAiBJ,EAAUrtE,GACtBA,EAEM,WAAXstE,EACKC,EAAmBvtE,EAAQ,GAAGA,KAExB,UAAXstE,GACKC,EAAmBvtE,EAAM/yB,MAAM,GAAI,GAErC+yB,CAAK,sCCpBdt0B,EAAQ,GAAuBA,EAAQ,QAAgB,EACvD,IAAIgiG,EAAiB,EAAQ,OAC7BhiG,EAAQ,GAAgBgiG,EAAeC,cACvC,IAAIC,EAAwB,EAAQ,OACpCliG,EAAQ,GAAuBkiG,EAAsBC,yDCLrD,IAAIC,EAAyB,EAAQ,OACrCpiG,EAAQqiG,YAAa,EACrBriG,EAAQiiG,cAAgBjiG,EAAQsiG,mBAAgB,EAChD,IAAIC,EAA0BH,EAAuB,EAAQ,QACzDI,EAAkBJ,EAAuB,EAAQ,OACjDK,EAIJ,SAAiCtmE,EAAKumE,GAAe,IAAKA,GAAevmE,GAAOA,EAAIkmE,WAAc,OAAOlmE,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEgiD,QAAShiD,GAAS,IAAIyE,EAAQ+hE,EAAyBD,GAAc,GAAI9hE,GAASA,EAAM2b,IAAIpgB,GAAQ,OAAOyE,EAAM/3B,IAAIszB,GAAQ,IAAIymE,EAAS,CAAC,EAAOC,EAAwB37F,OAAO4J,gBAAkB5J,OAAOu/B,yBAA0B,IAAK,IAAI/jC,KAAOy5B,EAAO,GAAY,YAARz5B,GAAqBwE,OAAOjH,UAAU+2B,eAAe31B,KAAK86B,EAAKz5B,GAAM,CAAE,IAAI2jF,EAAOwc,EAAwB37F,OAAOu/B,yBAAyBtK,EAAKz5B,GAAO,KAAU2jF,IAASA,EAAKx9E,KAAOw9E,EAAKjmE,KAAQlZ,OAAO4J,eAAe8xF,EAAQlgG,EAAK2jF,GAAgBuc,EAAOlgG,GAAOy5B,EAAIz5B,EAAQ,CAAIkgG,EAAOzkB,QAAUhiD,EAASyE,GAASA,EAAMxgB,IAAI+b,EAAKymE,GAAW,OAAOA,CAAQ,CAJvxBE,CAAwB,EAAQ,QACxCC,EAAaX,EAAuB,EAAQ,QAC5CY,EAAkB,EAAQ,OAC9B,SAASL,EAAyBD,GAAe,GAAuB,mBAAZO,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQN,EAA2B,SAAkCD,GAAe,OAAOA,EAAcS,EAAmBD,CAAmB,GAAGR,EAAc,CAE9U,IAAIJ,EAA6BG,EAAMt+F,cAAc,IAAI6+F,EAAgBI,gBACzEpjG,EAAQsiG,cAAgBA,EACxBA,EAAc5nD,YAAc,sBAC5B,IAAIunD,EAA6B,SAAU7iE,GAEzC,SAAS6iE,IAEP,IADA,IAAI5iE,EACKx4B,EAAO5F,UAAUD,OAAQJ,EAAO,IAAIU,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/EnG,EAAKmG,GAAQ9F,UAAU8F,GAiCzB,OA/BAs4B,EAAQD,EAAiB/9B,KAAKG,MAAM49B,EAAkB,CAAC7/B,MAAMukB,OAAOljB,KAAUrB,MACxE8jG,cAAgB,IAAIL,EAAgBI,eAC1C/jE,EAAMikE,YAAa,EACnBjkE,EAAMkkE,oBAAsB,EAC5BlkE,EAAMmkE,eAAiB,WACrBnkE,EAAMkkE,oBAAsB91F,OAAOK,QAC9BuxB,EAAMikE,aACTjkE,EAAMikE,YAAa,EACnBziF,sBAAsBwe,EAAMokE,YAAYhwF,MAAK,EAAI8uF,EAAwBpkB,SAAS9+C,KAEtF,EACAA,EAAMqkE,aAAe,SAAUnhG,EAAUq9B,GACnCP,EAAMskE,mBAAmB/jE,EAAWP,EAAMjsB,QAC5C3F,OAAOwH,SAAS,EAAG1S,EAEvB,EACA88B,EAAMukE,aAAe,SAAUh/C,EAAMhlB,GACnC,IAAIjzB,EAAOwB,SAAS6uE,eAAep4B,EAAKrnB,UAAU,IAC9C5wB,GAAQ0yB,EAAMskE,mBAAmB/jE,EAAWP,EAAMjsB,QACpDzG,EAAKyD,gBAET,EACAivB,EAAMskE,mBAAqB,SAAUE,EAAiBC,GACpD,IAAIH,EAAqBtkE,EAAMjsB,MAAMuwF,mBACrC,OAAKA,GAKEA,EAAmBtiG,MAAK,EAAIkhG,EAAwBpkB,SAAS9+C,GAAQwkE,EAAiBC,EAC/F,EACOzkE,CACT,EAtCA,EAAImjE,EAAgBrkB,SAAS8jB,EAAe7iE,GAuC5C,IAAIG,EAAS0iE,EAAchiG,UA2D3B,OA1DAs/B,EAAOkkE,YAAc,WACnB,IAAI/gG,EAAMnD,KAAK6T,MAAM8pE,SAASx6E,KAAO,KACjCA,GACFnD,KAAK8jG,cAAcU,KAAKxkG,KAAK6T,MAAM8pE,SAAUx6E,EAAKnD,KAAKgkG,qBAEzDhkG,KAAK+jG,YAAa,CACpB,EACA/jE,EAAOC,kBAAoB,WAEzB,IAAIwkE,EADJv2F,OAAOiE,iBAAiB,SAAUnS,KAAKikG,gBAEvC,IAAIS,EAAuB1kG,KAAK6T,MAAM8pE,SACpCx6E,EAAMuhG,EAAqBvhG,IAC3BkiD,EAAOq/C,EAAqBr/C,KAC1BliD,IACFshG,EAAiBzkG,KAAK8jG,cAAch1B,KAAK9uE,KAAK6T,MAAM8pE,SAAUx6E,IAM5DkiD,EACFrlD,KAAKqkG,aAAaM,UAAUt/C,QAAOllD,GAC1BskG,GACTzkG,KAAKmkG,aAAaM,OAAgBtkG,EAEtC,EACA6/B,EAAOM,qBAAuB,WAC5BpyB,OAAO6D,oBAAoB,SAAU/R,KAAKikG,eAC5C,EACAjkE,EAAOI,mBAAqB,SAA4BC,GACtD,IAGIokE,EAHAG,EAAwB5kG,KAAK6T,MAAM8pE,SACrCt4B,EAAOu/C,EAAsBv/C,KAC7BliD,EAAMyhG,EAAsBzhG,IAE1BA,IACFshG,EAAiBzkG,KAAK8jG,cAAch1B,KAAK9uE,KAAK6T,MAAM8pE,SAAUx6E,IAY5DkiD,EACFrlD,KAAKqkG,aAAaM,UAAUt/C,GAAOhlB,GAEnCrgC,KAAKmkG,aAAaM,EAAgBpkE,EAEtC,EACAL,EAAOO,OAAS,WACd,OAAoB2iE,EAAM5yE,cAAcyyE,EAAc15E,SAAU,CAC9DzlB,MAAO5D,KAAK8jG,eACX9jG,KAAK6T,MAAMiK,SAChB,EACO4kF,CACT,CApGiC,CAoG/BQ,EAAM2B,WACRpkG,EAAQiiG,cAAgBA,EACxBA,EAActnD,UAAY,CACxBgpD,mBAAoBZ,EAAW5kB,QAAQpsC,KACvC10B,SAAU0lF,EAAW5kB,QAAQzyE,QAAQ+iD,WACrCyuB,SAAU6lB,EAAW5kB,QAAQpsD,OAAO08B,8CCtHtCzuD,EAAQqiG,YAAa,EACrBriG,EAAQojG,oBAAiB,EACzB,IACIiB,EAA6B,gCAC7BjB,EAA8B,WAChC,SAASA,IAAkB,CAC3B,IAAI7jE,EAAS6jE,EAAenjG,UAqC5B,OApCAs/B,EAAO8uC,KAAO,SAAc6O,EAAUx6E,GACpC,IAAI4hG,EAAW/kG,KAAKglG,YAAYrnB,EAAUx6E,GAC1C,IACE,IAAIS,EAAQsK,OAAO+2F,eAAex5B,QAAQs5B,GAC1C,OAAOnhG,EAAQoX,KAAKid,MAAMr0B,GAAS,CACrC,CAAE,MAAOuzB,GAIP,OAAIjpB,QAAUA,OAAO42F,IAA+B52F,OAAO42F,GAA4BC,GAC9E72F,OAAO42F,GAA4BC,GAErC,CACT,CACF,EACA/kE,EAAOwkE,KAAO,SAAc7mB,EAAUx6E,EAAKS,GACzC,IAAImhG,EAAW/kG,KAAKglG,YAAYrnB,EAAUx6E,GACtC+hG,EAAclqF,KAAKC,UAAUrX,GACjC,IACEsK,OAAO+2F,eAAev5B,QAAQq5B,EAAUG,EAC1C,CAAE,MAAO/tE,GACHjpB,QAAUA,OAAO42F,KAGnB52F,OAAO42F,GAA8B,CAAC,GAFtC52F,OAAO42F,GAA4BC,GAAY/pF,KAAKid,MAAMitE,EAQ9D,CACF,EACAllE,EAAOglE,YAAc,SAAqBrnB,EAAUx6E,GAClD,IAAIgiG,EAtCe,YAsCwBxnB,EAASynB,SACpD,OAAOjiG,QAA6CgiG,EAAeA,EAAe,IAAMhiG,CAC1F,EACO0gG,CACT,CAxCkC,GAyClCpjG,EAAQojG,eAAiBA,sCC7CzBpjG,EAAQqiG,YAAa,EACrBriG,EAAQmiG,qBAIR,SAA8ByC,GAC5B,IAAI1nB,GAAW,EAAI2nB,EAAaC,eAC5BhlF,GAAQ,EAAIilF,EAAOh/F,YAAYi8F,EAAeM,eAC9C3yE,GAAM,EAAIo1E,EAAOhrF,QAAQ,MAO7B,OANA,EAAIgrF,EAAOl0E,kBAAiB,WAC1B,GAAIlB,EAAIxb,QAAS,CACf,IAAI5R,EAAWud,EAAMuuD,KAAK6O,EAAU0nB,GACpCj1E,EAAIxb,QAAQc,SAAS,EAAG1S,GAAY,EACtC,CACF,GAAG,CAAC26E,EAASx6E,MACN,CACLitB,IAAKA,EACLq1E,SAAU,WACJr1E,EAAIxb,SACN2L,EAAMikF,KAAK7mB,EAAU0nB,EAAYj1E,EAAIxb,QAAQpG,UAEjD,EAEJ,EArBA,IAAIi0F,EAAiB,EAAQ,OACzB+C,EAAS,EAAQ,OACjBF,EAAe,EAAQ,uCCJ3B9kG,EAAOC,QAAUkH,OAAO8xB,0CCAxBh5B,EAAQqiG,YAAa,EACrBriG,EAAQilG,2BAAwB,EACZ,EAAQ,OACE,EAAQ,OAgBtCjlG,EAAQilG,sBAdsB,KAOyC,oCCZvEjlG,EAAQqiG,YAAa,EACrBriG,EAAQklG,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,sCCJAtlG,EAAQqiG,YAAa,EACrBriG,EAAQulG,uBAIR,SAAgCJ,GAC9B,IAAKA,EAAiBnkG,OACpB,OAEF,MAAMwkG,EAAkBr3F,SAASilB,cAAc,0BACzCqyE,EAAkBt3F,SAASilB,cAAc,kDAC3CoyE,GACFA,EAAgBvV,SAEdwV,GACFA,EAAgBxV,SAElB,MAAMyV,GAAW,EAAIC,EAAaT,aAAaC,GACzCS,EAAUz3F,SAAS0hB,cAAc,UACvC+1E,EAAQC,QAAQC,UAAY,GAC5BF,EAAQv4D,WAAY,EAAI04D,EAAaC,kBAAkB,CACrDV,QAASI,IAEXv3F,SAAS65B,KAAK2kD,YAAYiZ,EAC5B,EAtBA,IAAIG,EAAe,EAAQ,OACvBJ,EAAe,EAAQ,8BCL3B3lG,EAAQgkF,WAAa,CACnB,+BAAgCiiB,IAAM,yDACtC,+BAAgCC,IAAM,wDACtC,iCAAkCC,IAAM,kEACxC,iCAAkCC,IAAM,2EACxC,wCAAyCC,IAAM,iEAC/C,kDAAmDC,IAAM,wDACzD,0DAA2DC,IAAM,wDACjE,+CAAgDC,IAAM,+BACtD,0CAA2CC,IAAM,kEACjD,2CAA4CC,IAAM,gCAClD,mCAAoCC,IAAM,gCAC1C,yCAA0CC,IAAM,wDAChD,oCAAqCC,IAAM,sFAC3C,wCAAyCC,IAAM,gCAC/C,iCAAkCC,IAAM,wDACxC,6CAA8CC,IAAM,sDACpD,iCAAkCC,IAAM,wDACxC,gDAAiDC,IAAM,gCACvD,gCAAiCC,IAAM,kEACvC,sCAAuCC,IAAM,+BAC7C,uDAAwDC,IAAM,wDAC9D,iDAAkDC,IAAM,gCACxD,mCAAoCC,IAAM,uCAC1C,4CAA6CC,IAAM,uDACnD,4CAA6CC,IAAM,4EACnD,8CAA+CC,IAAM,4EACrD,4CAA6CC,IAAM,2EACnD,8CAA+CC,IAAM,0EACrD,+CAAgDC,IAAM,2EACtD,kDAAmDC,IAAM,2EACzD,0CAA2CC,IAAM,uDACjD,oCAAqCC,IAAM,kEAC3C,sCAAuCC,IAAM,kEAC7C,2CAA4CC,IAAM,wDAClD,uCAAwCC,IAAM,2EAC9C,qCAAsCC,IAAM,kEAC5C,sCAAuCC,IAAM,4EAC7C,qCAAsCC,IAAM,6GCtC9CvoG,EAAOC,QAAU,CAAC,CACZuoG,OAAQC,EAAQ,OAChB7hG,QAAS,CAAC,QAAU,KACpB,CACA4hG,OAAQC,EAAQ,OAChB7hG,QAAS,CAAC,QAAU,KACpB,CACA4hG,OAAQC,EAAQ,OAChB7hG,QAAS,CAAC,QAAU,GAAG,KAAO,YAAY,WAAa,YAAY,UAAY,IAAI,iBAAmB,UAAU,YAAc,UAAU,QAAU,aAAa,KAAO,+BAA+B,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,iBAAkB,EAAK,YAAc,qCAC1U,CACA4hG,OAAQC,EAAQ,OAChB7hG,QAAS,CAAC,QAAU,GAAG,GAAK,cAAc,sBAAuB,EAAK,iBAAmB,CAAC,KAAO,SAAS,MAAQ,CAAC,SAAW,WAAW,qBAAuB,sBAAsB,yBAA0B,EAAM,iBAAmB,qCACzO,CACA4hG,OAAQC,EAAQ,OAChB7hG,QAAS,CAAC,QAAU,KACpB,CACA4hG,OAAQC,EAAQ,MAChB7hG,QAAS,CAAC,QAAU,4BCjB1B,MAAM8hG,EAAUD,EAAS,QACnB,2BAAEE,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CJ,EAAAA,MAAAA,GAEFxoG,EAAQ,EAAY,SAAC6oG,EAAKjoG,EAAWkoG,EAAeC,QAAtB,IAAJnoG,IAAAA,EAAO,CAAC,GAYhC,IAAI8rC,EAAU+7D,EAAQ1kF,KAAIwkF,IACxB,IAAKA,EAAOA,OAAOM,GACjB,OAGFjoG,EAAK8nG,2BAA6BA,EAClC9nG,EAAK+nG,SAAWA,EAChB/nG,EAAKgoG,aAAeA,EAEpB,MAAM7tE,EAASwtE,EAAOA,OAAOM,GAAKjoG,EAAM2nG,EAAO5hG,SAI/C,OAHIo0B,GAAUguE,IACZnoG,EAAOmoG,EAAa,CAAEnoG,OAAMm6B,SAAQwtE,YAE/BxtE,CAAM,IAMf,OAFA2R,EAAUA,EAAQ1lC,QAAO+zB,QAA6B,IAAZA,IAEtC2R,EAAQ1rC,OAAS,EACZ0rC,EACEo8D,EACF,CAACA,GAED,EAEX,EAEA9oG,EAAQ,EAAiB,CAAC6oG,EAAKjoG,EAAMkoG,IACnCL,EAAQt+F,QACN,CAAC6f,EAAUoU,IACTA,EAAKmqE,OAAOM,GACR7+E,EAASmU,MAAK,IAAMC,EAAKmqE,OAAOM,GAAKjoG,EAAMw9B,EAAKz3B,WAChDqjB,GACNpC,QAAQC,gCClDZ7nB,EAAQ,EAAsB,IAAO,uECGrC,MCgBA,SAAcwsC,GAGb,OAFAA,EAAMA,GAAOtlC,OAAOu0B,OAAO,MAEpB,CAQNx5B,GAAI,SAAYzB,EAAcE,IAC5B8rC,EAAIhsC,KAAUgsC,EAAIhsC,GAAQ,KAAKqB,KAAKnB,EACtC,EASAsoG,IAAK,SAAaxoG,EAAcE,GAC3B8rC,EAAIhsC,IACPgsC,EAAIhsC,GAAMgC,OAAOgqC,EAAIhsC,GAAM0L,QAAQxL,KAAa,EAAG,EAErD,EAUAH,KAAM,SAAcC,EAAcyoG,IAChCz8D,EAAIhsC,IAAS,IAAIe,QAAQwiB,KAAI,SAAUrjB,GAAWA,EAAQuoG,EAAM,KAChEz8D,EAAI,MAAQ,IAAIjrC,QAAQwiB,KAAI,SAAUrjB,GAAWA,EAAQF,EAAMyoG,EAAM,GACvE,EAEF,CD1DgBC,0KEFhB,EAAeC,IACb,QAAsBzpG,IAAlBypG,EACF,OAAOA,EAET,IAAKx6D,EAAM8zB,EAAU,IAAK0mC,EAAc/9F,MAAO,KAK/C,OAJIq3D,IACFA,EAAU,IAAKA,GAGH,MAAV9zB,EACM,IAAK8zB,EAEuB,MAAlC9zB,EAAKzY,OAAOyY,EAAK3tC,OAAS,GACrB2tC,EAAKptC,MAAM,GAAI,GAAKkhE,EAEtB9zB,EAAO8zB,CACf,aCXD,MAAM2mC,EAAY,IAAItuF,IACtB,IAAIuuF,EAAa,GAEjB,MAAMC,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAYr9F,QAAS,KAEjB,CACrB,MAAOyiC,EAAM86D,GAAMF,EAAYn+F,MAAO,KACtCo+F,EAAkB,GAAE76D,KAAQ3R,mBAAmBysE,IACjD,CAEA,MAAM9E,EAAWznE,mBAAmBssE,GAUpC,OAPwBE,EAAAA,EAAAA,GACtB/E,EACAznE,mBAAmBysE,KAGlBv+F,MAAO,KAAI,EAEQ,EAGxB,SAASw+F,EAAWj7D,GAElB,OACEA,EAAKzjC,WAAY,MACjByjC,EAAKzjC,WAAY,aACjByjC,EAAKzjC,WAAY,WAEVyjC,EAIF,IAAIsxD,IACTtxD,EACAlhC,OAAOyvE,SAASmjB,MAAQ5yF,OAAOyvE,SAASmjB,KAAKyB,SAAU,KAAO,GAAK,MACnE6C,QACJ,CAOO,MAAMkF,EAAgB1mG,IAC3BkmG,EAAalmG,CAAK,EAWP2mG,EAAgBP,IAC3B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAWtlF,KAAI9gB,IAA0B,IAAzB,KAAE0rC,EAAI,UAAEu7D,GAAWjnG,EACnD,MAAO,CACL0rC,KAAMu7D,EACNC,aAAcx7D,EACf,IAGGA,GAAOy7D,EAAAA,EAAAA,MAAKH,EAAWF,GAE7B,OAAIp7D,EACK07D,EAAkB17D,EAAK27D,MAAMH,cAG/B,IAAI,EAYAI,EAAkBhB,IAC7B,MAAMQ,EAAkBC,EAAUT,GAE5BU,EAAYZ,EAAWtlF,KAAIrf,IAA0B,IAAzB,KAAEiqC,EAAI,UAAEu7D,GAAWxlG,EACnD,MAAO,CACLiqC,KAAMu7D,EACNC,aAAcx7D,EACf,IAGGA,GAAOy7D,EAAAA,EAAAA,MAAKH,EAAWF,GAE7B,OAAIp7D,EACKA,EAAK7R,OAGP,CAAC,CAAC,EAWE0tE,EAAWjB,IACtB,MAAMQ,EAAkBT,EAAaM,EAAWL,IAChD,GAAIH,EAAU7sD,IAAIwtD,GAChB,OAAOX,EAAUvgG,IAAIkhG,GAGvB,MAAMU,GAAWC,EAAAA,EAAAA,GAAwBnB,GACzC,GAAIkB,EACF,OAAOD,EAASC,EAASE,QAG3B,IAAIC,EAAYd,EAAcC,GAQ9B,OANKa,IACHA,EAAYZ,EAAUT,IAGxBH,EAAUhpF,IAAI2pF,EAAiBa,GAExBA,CAAS,EAULZ,EAAYT,IAGvB,IAAIqB,EAFoBtB,EAAaM,EAAWL,IAShD,MANmB,gBAAfqB,IACFA,EAAa,KAGfA,EAAYP,EAAkBO,GAEvBA,CAAS,w3BC5JH,SAASC,EAAWC,EAAQlqG,EAAMmqG,GAa/C,OATEF,ECNW,WACb,GAAuB,oBAAZ9Z,UAA4BA,QAAQD,UAAW,OAAO,EACjE,GAAIC,QAAQD,UAAUka,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAr1F,QAAQ3V,UAAUuiF,QAAQnhF,KAAK0vF,QAAQD,UAAUl7E,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAO8gB,GACP,OAAO,CACT,CACF,CDPM,GACWq6D,QAAQD,UAAUr9E,OAElB,SAAoBq3F,EAAQlqG,EAAMmqG,GAC7C,IAAIjjG,EAAI,CAAC,MACTA,EAAEjG,KAAKL,MAAMsG,EAAGlH,GAChB,IACI20C,EAAW,IADGm6C,SAASj8E,KAAKjS,MAAMspG,EAAQhjG,IAG9C,OADIijG,IAAO,EAAAzvE,EAAA,GAAeia,EAAUw1D,EAAM9qG,WACnCs1C,CACT,EAEKs1D,EAAWrpG,MAAM,KAAMP,UAChC,CEZe,SAASiqG,EAAiBH,GACvC,IAAII,EAAwB,mBAARrwF,IAAqB,IAAIA,SAAQpb,EAuBrD,OAtBAwrG,EAAmB,SAA0BH,GAC3C,GAAc,OAAVA,ICPkChsE,EDOEgsE,GCNsB,IAAzDrb,SAAS7hE,SAASxsB,KAAK09B,GAAI7yB,QAAQ,kBDMQ,OAAO6+F,ECP5C,IAA2BhsE,EDQtC,GAAqB,mBAAVgsE,EACT,MAAM,IAAIzqG,UAAU,sDAEtB,QAAsB,IAAX6qG,EAAwB,CACjC,GAAIA,EAAO5uD,IAAIwuD,GAAQ,OAAOI,EAAOtiG,IAAIkiG,GACzCI,EAAO/qF,IAAI2qF,EAAOK,EACpB,CACA,SAASA,IACP,OAAO,EAAUL,EAAO9pG,WAAW,EAAA2vF,EAAA,GAAerxF,MAAMkR,YAC1D,CASA,OARA26F,EAAQnrG,UAAYiH,OAAOu0B,OAAOsvE,EAAM9qG,UAAW,CACjDwQ,YAAa,CACXtN,MAAOioG,EACPn6F,YAAY,EACZk1B,UAAU,EACVD,cAAc,MAGX,EAAA5K,EAAA,GAAe8vE,EAASL,EACjC,EACOG,EAAiBH,EAC1B,sCE3BO,MAAMM,EAAsBpoG,IAA4B,IAA3B,QAAEqoG,EAAO,SAAEjuF,GAAUpa,EACvD,MAAMsoG,EAAW,CACf9I,EAAAA,cAAqB,cAAc,CACjCv/F,GAAK,GAAEooG,QAET7I,EAAAA,cAAqB,YAAY,CAC/Bv/F,GAAK,GAAEooG,SAkBX,OAdIjuF,IAGFkuF,EAAS1pG,KAAKwb,GACdkuF,EAAS1pG,KACP4gG,EAAAA,cAAqB,cAAc,CACjCv/F,GAAK,GAAEooG,QAET7I,EAAAA,cAAqB,YAAY,CAC/Bv/F,GAAK,GAAEooG,UAKNC,CAAQ,ECZJC,EAAcvoG,IAKpB,IALqB,UAC1BwoG,EAAS,WACTC,EAAU,SACVruF,KACGsuF,GACJ1oG,EACC,MAAM2oG,GAAY7lG,EAAAA,EAAAA,YAAW8lG,EAAAA,IACvBC,GAAc/lG,EAAAA,EAAAA,YAAWgmG,EAAAA,IACzBC,EAAoBJ,EAAUH,GAEpC,IAAKO,EAAmB,CACtB,GAAIN,EACF,OAAO,KAEP,MAAM,IAAIxqG,MACP,UAAS8qG,WAA2BP,oBAG3C,CAEA,MAAMH,EA7BWW,EAACR,EAAWE,IACxBzkG,OAAO0J,KAAK+6F,GAAY3qG,OAKrB,GAAEyqG,MADUS,EAAAA,EAAAA,GAAoBP,KAH/BF,EA2BOQ,CAAWD,EAAmBL,GAG9C,IAAIQ,EAAaL,EAAYR,GAa7B,OAZKa,EAOC9uF,IACF8uF,EAAWC,aAAc,GAP3BN,EAAYR,GAAWa,EAAa,CAClC/4F,MAAOu4F,EACPF,UAAWO,EACXI,cAAe/uF,GAQZolF,EAAAA,cAAC4I,EAAmB,CAACC,QAASA,GAAUjuF,EAA+B,EC/CnEgvF,EAAcppG,IAKpB,IALqB,UAC1BwoG,EAAS,WACTC,EAAU,SACVruF,KACGsuF,GACJ1oG,EACC,MAAM2oG,GAAY7lG,EAAAA,EAAAA,YAAW8lG,EAAAA,IACvBS,GAAmBvmG,EAAAA,EAAAA,YAAWwmG,EAAAA,IAC9BP,EAAoBJ,EAAUH,GAC9BlqG,EAAQ+qG,EAAiBzjG,IAAImjG,GAEnC,IAAKzqG,EAAO,CACV,GAAImqG,EACF,OAAO,KAEP,MAAM,IAAIxqG,MACP,UAAS8qG,WAA2BP,oBAG3C,CAEA,OACEhJ,EAAAA,cAAClhG,EAAMirG,UAAStlG,OAAA8xB,OAAA,CACdyzE,aAAclrG,EAAMkrG,aACpB5kG,KAAMtG,EAAMsG,MACR8jG,GAEHtuF,EACe,ECxBf,SAASqvF,EAAMt5F,GACW,CAE7B,MAAMu5F,EAAgB,IACjBv5F,EACHq4F,UAAWr4F,EAAMw5F,cAEZD,EAAcC,aACdD,EAAcE,qBAErB,MAAMC,GAAgB/mG,EAAAA,EAAAA,YAAWgnG,EAAAA,IAG3BC,EAAaC,EAAmB75F,GACtC,GAAIlM,OAAO0J,KAAKo8F,GAAYhsG,OAC1B,MAAM,IAAIksG,EAC6B,YAArCJ,EAAcK,kBACdR,EAAclB,UACduB,EACA55F,EAAMy5F,sBAIV,GAAyC,WAArCC,EAAcK,kBAChB,OAAO1K,EAAAA,cAAC+I,EAAgBmB,GACnB,GAAyC,YAArCG,EAAcK,kBAEvB,OAAO1K,EAAAA,cAAC4J,EAAgBM,GACnB,GACgC,YAArCG,EAAcK,mBACuB,YAArCL,EAAcK,kBAGd,OAAO1K,EAAAA,cAAC4J,EAAgBM,GACnB,GAAyC,WAArCG,EAAcK,kBAAgC,CAGvD,IAAIC,EAA4B,GAIhC,IACEA,EAA4B,wBAAuBN,EAAcO,UAAUn2F,UAAU41F,EAAcO,UAAUC,gDAAgDl6F,EAAMw5F,UACrK,CAAE,MACA,CAGF,MAAM,IAAI1rG,MACP,mCAAkCksG,8FAEvC,CACE,MAAM,IAAIlsG,MACP,kBAAiB4rG,EAAcK,uCAGtC,CAGF,CAAC,IAEKD,EAAe,SAAAK,GACnB,SAAAL,EAAYM,EAAW/B,EAAWuB,EAAYS,GAAqB,IAADpuE,EAChE,MAAMzD,EAAS10B,OAAOoe,QAAQ0nF,GAC3BjpF,KACC9gB,IAAA,IAAEP,EAAKS,GAAMF,EAAA,MACV,qBAAoBE,sBAA0BT,SAAW,IAE7DswB,KAAM,MAEH9b,EAAQ,kBACd,IAAI2qB,EAAS,GACTzG,EAAW,GAEf,GAAIoyE,EAAW,CAGb,MAIME,EAHJjL,EAAAA,mDAAyDkL,uBAAuBC,kBAGrDt6D,OAAOloC,MAAO,MAAK7J,MAAM,GACtDmsG,EAAW,GAAKA,EAAW,GAAGp6D,OAC9BzR,EAAS,KAAM6rE,EAAW16E,KAAM,MAEhCoI,EAAW,UAASqwE,kDAA0D7vE,KAChF,KAAO,CAELR,EAAW,GAAElkB,aAAgBu0F,kDAA0D7vE,MAEvFiG,EAAS,GAAEzG,OADQ,IAAIl6B,OAAQ2gC,MAAMyR,OAAOloC,MAAO,MAAK7J,MAAM,GAC5ByxB,KAAM,OAC1C,CAYC,OAVDqM,EAAAkuE,EAAAlsG,KAAA,KAAM+5B,IAAQ,MACTlkB,KAAOA,EACR2qB,EACFxC,EAAKwC,MAAQA,EAEb3gC,MAAMq6B,mBAAiBsyE,EAAAA,EAAAA,GAAAxuE,GAAO6tE,GAG5BO,IACFpuE,EAAKyuE,eAAiB,IAAKL,EAAoBM,aAAe,UAC/D1uE,CACH,CAAC,OA3CkB2uE,EAAAA,EAAAA,GAAAd,EAAAK,GA2ClBL,CAAA,CA3CkB,CA2ClBhC,EA3C2BhqG,QA8C9B,MAAM+rG,EAAqB,SACzB75F,EACAwoB,EACAqyE,EACAt/D,QAFM,IAAN/S,IAAAA,EAAS,CAAC,QACC,IAAXqyE,IAAAA,EAAc,SACV,IAAJt/D,IAAAA,EAAO,MAGP,IAAK,MAAOz3B,EAAM/T,KAAU+D,OAAOoe,QAAQlS,GAAQ,CACjD,GACEjQ,UAEEwrC,GAAkB,aAAVz3B,EAEV,SAGF,MAAMg3F,EAAWv/D,EAAQ,GAAEA,KAAQz3B,IAASA,EAEtB,mBAAX/T,EACTy4B,EAAOsyE,UAAmB/qG,EACC,iBAAXA,GAAsB8qG,EAAY/hG,QAAQ/I,IAAU,IACpE8qG,EAAYpsG,KAAKsB,GACjB8pG,EAAmB9pG,EAAOy4B,EAAQqyE,EAAaC,GAEnD,CAEA,OAAOtyE,CACT,iBC1IA,MAAMuyE,EAAmBC,EAAAA,GAAOC,QAEhC,SAASC,IACP,MAAM,IAAIptG,MACP,6UAKL,2PCXA,MAyDMqtG,EAzDU,SAAUC,GACxB,GAAyB,oBAAdrgG,SACT,OAAO,EAET,MAAMsgG,EAAWtgG,SAAS0hB,cAAe,QACzC,IACE,GAAI4+E,EAASC,SAAiD,mBAA/BD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOrtG,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkCytG,CAAS,YA1Cd,SAAUxxE,EAAKz2B,GAC1C,OAAO,IAAIihB,SAAQ,CAACC,EAASsQ,KAC3B,GAAyB,oBAAdhqB,SAET,YADAgqB,IAIF,MAAM02E,EAAO1gG,SAAS0hB,cAAe,QACrCg/E,EAAKzhE,aAAc,MAAO,YAC1ByhE,EAAKzhE,aAAc,OAAOhQ,GAE1Bl2B,OAAO0J,KAAKjK,GAASyK,SAAQ1O,IAC3BmsG,EAAKzhE,aAAa1qC,EAAKiE,EAAQjE,GAAK,IAGtCmsG,EAAKr3B,OAAS3vD,EACdgnF,EAAK1zE,QAAUhD,GAGbhqB,SAASsoF,qBAAsB,QAAO,IACtCtoF,SAAS2gG,kBAAmB,UAAS,GAAGzhG,YAC5Bs/E,YAAYkiB,EAAK,GAEnC,EAE4B,SAAUzxE,GACpC,OAAO,IAAIxV,SAAQ,CAACC,EAASsQ,KAC3B,MAAM42E,EAAM,IAAI73B,eAChB63B,EAAIl0E,KAAM,MAAMuC,GAAK,GAErB2xE,EAAIv3B,OAAS,KACQ,MAAfu3B,EAAI5sF,OACN0F,IAEAsQ,GACF,EAGF42E,EAAI9gC,KAAK,KAAK,GAElB,EAMM+gC,EAAa,CAAC,EAkBpB,MAhBiB,SAAU5xE,EAAKz2B,GAC9B,OAAO,IAAIihB,SAAQC,IACbmnF,EAAW5xE,GACbvV,IAIF0mF,EAA0BnxE,EAAKz2B,GAC5Bw3B,MAAK,KACJtW,IACAmnF,EAAW5xE,IAAO,CAAI,IAEvB9E,OAAM,QAAS,GAEtB,wBCrEO,MAAM22E,EAAqB,CAIhC/tG,MAAQ,QAIRguG,QAAU,WAWNC,EAAoBC,IACxB,MAAOzgE,EAAM0gE,GAAeD,EAAQhkG,MAAO,KAPb6pC,MAS9B,MAAQ,cADoB,MAAVtG,EAAgB,SAPlCsG,EAAc,OADgBA,EAQqCtG,GAP7D,GAAasG,EAAE1zC,MAAM,GAAK0zC,GAC1B6sD,SAAU,KAAM7sD,EAAE1zC,MAAM,GAAI,GAAK0zC,mBAQrCo6D,EAAe,IAAGA,IAAiB,IACnC,EAOEC,EAAmBF,GAAWA,EAAQlkG,WAAY,MAExD,SAASqkG,EAAQnyE,EAAKsB,GACpB,YAD0B,IAANA,IAAAA,EAAU,OACvB,IAAI9W,SAAQC,IACjB,MAAMknF,EAAM,IAAI73B,eAChB63B,EAAIl0E,KAAK6D,EAAQtB,GAAK,GACtB2xE,EAAI13B,mBAAqB,KACD,GAAlB03B,EAAI3kE,YACNviB,EAAQknF,EACV,EAEFA,EAAI9gC,KAAK,KAAK,GAElB,CAEA,MAgBMuhC,EAAY,+BAEZC,EAAkB,SAACC,EAAUlD,EAAkBxkE,GAAU,IAAD2nE,OAAlB,IAATnD,IAAAA,EAAY,MAC7C,MAAMp2C,EAAO,CACXw5C,mBAAoBF,EAASE,mBAC7BjhE,KAAM+gE,EAAS/gE,KACfkhE,uBAAwBH,EAASG,uBACjC3F,UAAWwF,EAASxF,UACpB4F,kBAAmBJ,EAASI,kBAC5BC,mBAAoBL,EAASK,mBAC7BnE,UAA6B,QAApB+D,EAAED,EAAS9D,iBAAS,IAAA+D,EAAAA,EAAI,CAAC,GAGpC,MAAO,CACLnD,YACAxkE,OACAgoE,KAAMN,EAAS30E,OACfq7B,OAEJ,EAEA,SAAS65C,EAAgB1rC,GACvB,OAAO,IAAI38C,SAAQC,IACjB,IACE,MAAMkT,EAASwpC,EAAS2rC,WACxBroF,EAAQkT,EACV,CAAE,MAAO55B,GACP,IACE+F,OAAO8vB,eAAe31B,KAAKF,EAAM,eACjC+F,OAAO8vB,eAAe31B,KAAKF,EAAM,WAMjC,MAAMA,EAJN4S,YAAW,KACTk8F,EAAgB1rC,GAAUpmC,KAAKtW,EAAQ,GACtC,IAIP,IAEJ,CAEO,IAAMsoF,EAAU,WACrB,SAAAA,EAAYC,EAAe/G,GAAa,KAgCxCgH,wBAA0B,IAAIv1F,IAhB5Bvb,KAAK+wG,OAAS,IAAIx1F,IAClBvb,KAAKgxG,WAAa,IAAIz1F,IACtBvb,KAAKixG,cAAgB,CAAC,EACtBjxG,KAAKkxG,WAAa,IAAI31F,IACtBvb,KAAKmxG,mBAAqB,IAAI51F,IAC9Bvb,KAAKoxG,aAAe,IAAI71F,IACxBvb,KAAKqxG,gBAAkB,IAAI91F,IAC3Bvb,KAAKsxG,SAAW,IAAI/1F,IACpBvb,KAAKuxG,wBAAyB,EAC9BvxG,KAAKwxG,eAAiB,GACtBxxG,KAAKyxG,kBAAoB,IAAIhvF,IAC7BziB,KAAK0xG,kBAAoB,IAAIjvF,IAC7BziB,KAAK6wG,cAAgBA,GACrBvG,EAAAA,EAAAA,IAAcR,EAChB,CAAC,IAAA9pE,EAAA4wE,EAAAlwG,UAgrBA,OAhrBAs/B,EAID2xE,YAAA,SAAY9zE,GACV,IAAI+zE,EAAkB5xG,KAAK8wG,wBAAwBxnG,IAAIu0B,GAQvD,OANK+zE,IACHA,EAAkB5B,EAAQnyE,EAAM,OAChC79B,KAAK8wG,wBAAwBjwF,IAAIgd,EAAK+zE,IAIjCA,EACJhzE,MAAKomC,IACJhlE,KAAK8wG,wBAAwB9vF,OAAO6c,GAC7BmnC,KAERjsC,OAAMn3B,IAEL,MADA5B,KAAK8wG,wBAAwB9vF,OAAO6c,GAC9Bj8B,CAAG,GAEf,EAACo+B,EAED6xE,aAAA,SAAaC,GACX9xG,KAAK8xG,UAAYA,EACjB9xG,KAAK+xG,iBAAmBD,EAAW,0BAAyBrkG,MAAKlF,GAAKA,GACxE,EAACy3B,EAEDgyE,kBAAA,SAAkBC,GAChB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5Bp0E,EAAM+xE,EAAkBsC,GAC9B,OAAOlyG,KAAK2xG,YAAY9zE,GAAKe,MAAK4wE,IAChC,MAAM,OAAE5sF,EAAM,aAAEo1D,GAAiBw3B,EAGjC,GAAe,MAAX5sF,EACF,IACE,MAAMwvF,EAAcp3F,KAAKid,MAAM+/C,GAC/B,QAAyB73E,IAArBiyG,EAAYhjE,KACd,MAAM,IAAIztC,MAAO,iCAGnB,MAAMmuG,EAAcoC,EAASrmG,MAAO,KAAI,GAKxC,OAJIikG,IAAgBsC,EAAYhjE,KAAK9hC,SAASwiG,KAC5CsC,EAAYhjE,MAAS,IAAG0gE,KAGnBnoG,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmBC,QAC3Bn2E,QAAS44E,GAEb,CAAE,MAAOxwG,GACP,CAKJ,OAAe,MAAXghB,GAA6B,MAAXA,EAEF,cAAdsvF,GAA0C,cAAdA,EACvBvqG,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmB/tG,QAMxB3B,KAAKgyG,kBACVrqG,OAAO8xB,OAAOw4E,EAAS,CAAEC,SAAW,YAAYG,UAAU,KAK/C,MAAXzvF,EACK5iB,KAAKgyG,kBACVrqG,OAAO8xB,OAAOw4E,EAAS,CACrBC,SAAW,YACXI,qBAAqB,KAMvBH,EAAU,EACLnyG,KAAKgyG,kBACVrqG,OAAO8xB,OAAOw4E,EAAS,CAAEE,QAASA,EAAU,KAKzCxqG,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmB/tG,OAC3B,GAEN,EAACq+B,EAEDuyE,0BAAA,SAA0BN,GACxB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5Bp0E,EAAM+xE,EAAkBsC,GAAUj7E,QAAS,QAAS,aAC1D,OAAOj3B,KAAK2xG,YAAY9zE,GAAKe,MAAK4wE,IAChC,MAAM,OAAE5sF,EAAM,aAAEo1D,GAAiBw3B,EAGjC,GAAe,MAAX5sF,EACF,IACE,OAAOjb,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmBC,QAC3Bn2E,QAASw+C,GAEb,CAAE,MAAOp2E,GACP,CAKJ,OAAe,MAAXghB,GAA6B,MAAXA,EAEF,cAAdsvF,GAA0C,cAAdA,EACvBvqG,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmB/tG,QAMxB3B,KAAKuyG,0BACV5qG,OAAO8xB,OAAOw4E,EAAS,CAAEC,SAAW,YAAYG,UAAU,KAK/C,MAAXzvF,EACK5iB,KAAKuyG,0BACV5qG,OAAO8xB,OAAOw4E,EAAS,CACrBC,SAAW,YACXI,qBAAqB,KAMvBH,EAAU,EACLnyG,KAAKuyG,0BACV5qG,OAAO8xB,OAAOw4E,EAAS,CAAEE,QAASA,EAAU,KAKzCxqG,OAAO8xB,OAAOw4E,EAAS,CAC5BrvF,OAAQ8sF,EAAmB/tG,OAC3B,GAEN,EAACq+B,EAEDwyE,iBAAA,SAAiB3C,GACf,MAAMqC,GAAWjH,EAAAA,EAAAA,IAAS4E,GAC1B,GAAI7vG,KAAKkxG,WAAWl0D,IAAIk1D,GAAW,CACjC,MAAM/B,EAAWnwG,KAAKkxG,WAAW5nG,IAAI4oG,GAEnC,OAAO7pF,QAAQC,QAAQ6nF,EAE3B,CAEA,OAAOnwG,KAAKgyG,kBAAkB,CAAEE,aAAYtzE,MAAKuxE,IAC/CnwG,KAAKkxG,WAAWrwF,IAAIqxF,EAAU/B,GAEvBA,IAEX,EAACnwE,EAEDyyE,yBAAA,SAAyB5C,GACvB,MAAMqC,GAAWjH,EAAAA,EAAAA,IAAS4E,GAC1B,GAAI7vG,KAAKmxG,mBAAmBn0D,IAAIk1D,GAAW,CACzC,MAAM/B,EAAWnwG,KAAKmxG,mBAAmB7nG,IAAI4oG,GAE3C,OAAO7pF,QAAQC,QAAQ6nF,EAE3B,CAEA,OAAOnwG,KAAKuyG,0BAA0B,CAAEL,aAAYtzE,MAAKuxE,IACvDnwG,KAAKmxG,mBAAmBtwF,IAAIqxF,EAAU/B,GAE/BA,IAEX,EAACnwE,EAED0yE,kBAAA,SAAkBxG,GAChB,GAAIlsG,KAAKoxG,aAAap0D,IAAIkvD,GAAY,CACpC,MAAMkG,EAAcpyG,KAAKoxG,aAAa9nG,IAAI4iG,GAC1C,OAAO7jF,QAAQC,QAAQ,CAAE4jF,YAAWkG,eACtC,CAGA,OAAOpC,EADM,eAAgC9D,SACxB,OAAMttE,MAAKqjC,IAC9B,MAAMmwC,EAAcp3F,KAAKid,MAAMgqC,EAAI+V,cAGnC,OADAh4E,KAAKoxG,aAAavwF,IAAIqrF,EAAWkG,GAC1B,CAAElG,YAAWkG,cAAa,GAErC,EAACpyE,EAEDuqE,cAAA,SAAcsF,GACZ,OAAOtF,EAAAA,EAAAA,IAAcsF,EACvB,EAEA7vE,EACAopE,SAAA,SAASyG,GACP,MAAMqC,GAAWjH,EAAAA,EAAAA,IAAS4E,GAC1B,GAAI7vG,KAAK+wG,OAAO/zD,IAAIk1D,GAAW,CAC7B,MAAMr7C,EAAO72D,KAAK+wG,OAAOznG,IAAI4oG,GAE3B,OAAIr7C,EAAKr1D,MACA6mB,QAAQC,QAAQ,CACrB9mB,MAAOq1D,EAAKr1D,MACZohB,OAAQi0C,EAAKj0C,SAIVyF,QAAQC,QAAQuuC,EAAKr9B,QAEhC,CAEA,GAAIx5B,KAAKgxG,WAAWh0D,IAAIk1D,GACtB,OAAOlyG,KAAKgxG,WAAW1nG,IAAI4oG,GAG7B,MAAMS,EAAmB,CACvB3yG,KAAK4yG,cACL5yG,KAAKwyG,iBAAiBN,IAOxB,MAAMN,EAAkBvpF,QAAQ4kB,IAAI0lE,GAAkB/zE,MAAKi0E,IACzD,MAAOC,EAAiBC,EAAkBC,GAAmBH,EAE7D,GACEE,EAAiBnwF,SAAW8sF,EAAmB/tG,QAC/CqxG,aAAe,EAAfA,EAAiBpwF,UAAW8sF,EAAmB/tG,MAE/C,MAAO,CACLihB,OAAQ8sF,EAAmB/tG,OAI/B,IAAIwuG,EAAW4C,EAAiBv5E,QAEhC,MAAM,mBACJ62E,EACAE,kBAAmB0C,EAAwB,GAAE,UAC7C5G,EAAY,CAAC,GACX8D,EAEE+C,EAAc,CAAC,EAEfC,EAAoBpxG,MAAM6c,KAAK,IAAI6D,IAAI9a,OAAOkX,OAAOwtF,KAErD+G,EAAYpxG,IAChB,GAAIhC,KAAKsxG,SAASt0D,IAAIh7C,EAAM2V,MAC1B,OAAO3X,KAAKsxG,SAAShoG,IAAItH,EAAM2V,MAC1B,GAAI3X,KAAKqxG,gBAAgBr0D,IAAIh7C,EAAM2V,MACxC,OAAO3X,KAAKqxG,gBAAgB/nG,IAAItH,EAAM2V,MAGxC,MAAM07F,EAAWrzG,KAAK6wG,cAAc7uG,EAAMquG,oBAAoBzxE,MAC5DquE,IACE,MAAO,CACLA,WAzYQ7qG,EAyYiB6qG,EAzYX7qG,GAAKA,EAAEw8E,SAAYx8E,GA0YjC8qG,aAAclrG,EAAMw5B,OAAO0xE,aAC3B5kG,KAAMtG,EAAMw5B,OAAOlzB,MA3YXlG,KA4YT,IAUL,OANApC,KAAKqxG,gBAAgBxwF,IAAI7e,EAAM2V,KAAM07F,GACrCA,EAASz0E,MAAKuO,IACZntC,KAAKsxG,SAASzwF,IAAI7e,EAAM2V,KAAMw1B,GAC9BntC,KAAKqxG,gBAAgBrwF,OAAOhf,EAAM2V,KAAK,IAGlC07F,CAAQ,EAGjB,OAAOhrF,QAAQ4kB,IACbkmE,EAAkB3uF,KAAI0nF,GAAalsG,KAAK0yG,kBAAkBxG,MAC1DttE,MAAK00E,IACL,MAAMC,EAAS,GACTC,GAAwBC,EAAAA,EAAAA,GAAOR,GAErC,IAAK,MAAM,YAAEb,EAAW,UAAElG,KAAevkG,OAAOkX,OAAOy0F,GAAa,CAClEC,EAAOjxG,KAAK,CAAEqV,KAAMu0F,KAAckG,IAClC,IAAK,MAAMsB,KAAmBtB,EAAY7B,kBACnCiD,EAAyBlmG,SAASomG,IACrCF,EAAyBlxG,KAAKoxG,EAGpC,CAEA,MAAMC,EAAoB,CACxBtrF,QAAQ4kB,IAAIsmE,EAAO/uF,IAAI4uF,IACvBpzG,KAAK6wG,cAAcR,EAAqB,SAIxCsD,EAAkBrxG,KAAKtC,KAAK6wG,cAAcR,IAS5C,MAAMuD,EAAyBvrF,QAAQ4kB,IAAI0mE,GAAmB/0E,MAC5D6lD,IACE,MAAOovB,EAAiBC,EAAeC,GAAiBtvB,EAExDyuB,EAAYc,UAAY,IAAI18E,KAE5B,IAAK,MAAM28E,KAAkBJ,IACtBI,GAAkBA,aAA0BtyG,SAC/CuxG,EAAYtwF,OAAS8sF,EAAmB/tG,MACxCuxG,EAAY1xG,MAAQyyG,GAYxB,IAAIC,EAEJ,KARIH,GAAiBA,aAAyBpyG,SAE5CuxG,EAAYtwF,OAAS8sF,EAAmB/tG,MACxCuxG,EAAY1xG,MAAQuyG,GAKlBb,EAAYtwF,SAAW8sF,EAAmB/tG,MAAO,CAcnD,GAbAuxG,EAAYtwF,OAAS8sF,EAAmBC,SAER,IAA9BoD,EAAiBV,WACa,KAA9BW,aAAe,EAAfA,EAAiBX,YAEjBa,EAAYb,UAAW,GAEzBlC,EAAWxoG,OAAO8xB,OAAO02E,EAAU,CACjCG,uBAAwBwC,EACpBA,EAAgBxC,uBACf,KAGkC,iBAA9B0C,aAAe,EAAfA,EAAiBx5E,SAAsB,CAChD06E,EAAgBhE,EAAgBC,EAAU,KAAM2D,GAEhDI,EAAcC,iBAAmBnB,EAAgBx5E,QAEjD,MAAM46E,EAAiB,IAAIC,eAAe,CACxCthG,KAAAA,CAAMuhG,GACJ,MAAMz9B,EAAK,IAAI09B,YACfD,EAAWxF,QAAQj4B,EAAG29B,OAAOxB,EAAgBx5E,SAC/C,EACAkhB,IAAAA,CAAK45D,GAEHA,EAAW74E,OACb,EACAvoB,MAAAA,GAAU,IAGZ,OAAOw9F,GACL+D,EAAAA,EAAAA,0BAAyBL,IACzBx1E,MAAKpD,IACL04E,EAAcC,iBAAmB34E,EAE1B04E,IAEX,CACEA,EAAgBhE,EACdC,EACA4D,EACAD,EAGN,CAGA,OAAOI,CAAa,IAKlBQ,EAA0BrsF,QAAQ4kB,IACtCumE,EAAyBhvF,KAAIkvF,IAE3B,GAAI1zG,KAAKixG,cAAcyC,GAAkB,CACvC,MAAMtB,EAAcpyG,KAAKixG,cAAcyC,GACvC,MAAO,CAAEA,kBAAiBtB,cAC5B,CAEA,OAAOpyG,KAAK2xG,YACT,mBAAoC+B,UAEpC90E,MAAK4wE,IACJ,MAAM4C,EAAcp3F,KAAKid,MAAMu3E,EAAIx3B,cACnC,MAAO,CAAE07B,kBAAiBtB,cAAa,IAExCr5E,OAAM,KACL,MAAM,IAAIp3B,MACP,qCAAsD+xG,UACxD,GACD,KAEN90E,MAAK+1E,IACL,MAAMC,EAAwB,CAAC,EAO/B,OALAD,EAAmB9iG,SAAQnO,IAAuC,IAAtC,gBAAEgwG,EAAe,YAAEtB,GAAa1uG,EAC1DkxG,EAAsBlB,GAAmBtB,EACzCpyG,KAAKixG,cAAcyC,GAAmBtB,CAAW,IAG5CwC,CAAqB,IAG9B,OACEvsF,QAAQ4kB,IAAI,CAAC2mE,EAAwBc,IAClC91E,MAAKz5B,IAA0C,IAC1Cq0B,GADE06E,EAAeS,GAAmBxvG,EAaxC,OAXI+uG,IACF16E,EAAU,IAAK06E,EAAeS,sBAC9BzB,EAAY15E,QAAUA,EACtBl2B,EAAAA,EAAQtC,KAAM,0BAA0B,CACtC61D,KAAMr9B,EACN06E,cAAe16E,KAInBx5B,KAAK+wG,OAAOlwF,IAAIqxF,EAAUgB,GAEtBA,EAAY1xG,MACP,CACLA,MAAO0xG,EAAY1xG,MACnBohB,OAAQswF,EAAYtwF,QAIjB4W,CAAO,IAGfT,OAAMn3B,IACE,CACLJ,MAAOI,EACPghB,OAAQ8sF,EAAmB/tG,SAE7B,GAEN,IAcJ,OAXAiwG,EACGhzE,MAAK,KACJ5+B,KAAKgxG,WAAWhwF,OAAOkxF,EAAS,IAEjCn5E,OAAMv3B,IAEL,MADAxB,KAAKgxG,WAAWhwF,OAAOkxF,GACjB1wG,CAAK,IAGfxB,KAAKgxG,WAAWnwF,IAAIqxF,EAAUN,GAEvBA,CACT,EAEA5xE,EACAqpE,aAAA,SAAawG,EAASzoG,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAM8qG,GAAWjH,EAAAA,EAAAA,IAAS4E,GAC1B,GAAI7vG,KAAK+wG,OAAO/zD,IAAIk1D,GAAW,CAAC,IAAD3yD,EAC7B,MAAM4wD,EAAWnwG,KAAK+wG,OAAOznG,IAAI4oG,GAEjC,GAAI/B,EAAS32E,QACX,OAAO22E,EAAS32E,QAGlB,GAAW,QAAX+lB,EAAIn4C,SAAO,IAAAm4C,GAAPA,EAASs1D,iBACX,MAAO,CACLrzG,MAAO2uG,EAAS3uG,MAChBohB,OAAQutF,EAASvtF,OAGvB,CAEF,EAACod,EAED80E,eAAA,SAAe5C,GAEb,QAvkBkC6C,MACpC,GACG,eAAe56E,gBACiB,IAA1BA,UAAU66E,WACjB,CACA,IAAK76E,UAAU66E,WAAWC,eAAkB,IAAG3nG,SAAU,MACvD,OAAO,EAET,GAAI6sB,UAAU66E,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EA2jBJH,OAKD56E,UAAUY,YAAak1E,EAAUtiG,KAAKwsB,UAAUY,cAKhD/6B,KAAK+wG,OAAO/zD,IAAIk1D,GAKtB,EAAClyE,EAEDm1E,SAAA,SAASjD,GACP,IAAKlyG,KAAK80G,eAAe5C,GACvB,MAAO,CACLtzE,KAAMtW,GAAWA,GAAQ,GACzBuvD,MAAOA,QAGX,GAAI73E,KAAKyxG,kBAAkBz0D,IAAIk1D,GAC7B,MAAO,CACLtzE,KAAMtW,GAAWA,GAAQ,GACzBuvD,MAAOA,QAIX,MAAMu9B,EAAQ,CACZ9sF,QAAS,KACTsQ,OAAQ,KACRC,QAAS,MAEXu8E,EAAMv8E,QAAU,IAAIxQ,SAAQ,CAACC,EAASsQ,KACpCw8E,EAAM9sF,QAAUA,EAChB8sF,EAAMx8E,OAASA,CAAM,IAEvB54B,KAAKwxG,eAAelvG,KAAK,CAAC4vG,EAAUkD,IACpC,MAAMC,EAAS,IAAIC,gBAgBnB,OAfAD,EAAOE,OAAOpjG,iBAAkB,SAAQ,KACtC,MAAM4I,EAAQ/a,KAAKwxG,eAAexzC,WAAU14D,IAAA,IAAE2uB,GAAE3uB,EAAA,OAAK2uB,IAAMi+E,CAAQ,KAEpD,IAAXn3F,GACF/a,KAAKwxG,eAAevuG,OAAO8X,EAAO,EACpC,IAGG/a,KAAKuxG,yBACRvxG,KAAKuxG,wBAAyB,EAC9B/8F,YAAW,KACTxU,KAAKw1G,2BAA2B,GAC/B,MAGE,CACL52E,KAAMA,CAACtW,EAASsQ,IAAWw8E,EAAMv8E,QAAQ+F,KAAKtW,EAASsQ,GACvDi/C,MAAOw9B,EAAOx9B,MAAM3jE,KAAKmhG,GAE7B,EAACr1E,EAEDw1E,0BAAA,YACuBtnG,OAAOunG,qBAAmB,CAAKhyC,GAAMjvD,WAAWivD,EAAI,MAE5D,KACX,MAAMiyC,EAAa11G,KAAKwxG,eAAevuG,OAAO,EAAG,GAC3C0yG,EAAattF,QAAQ4kB,IACzByoE,EAAWlxF,KAAIhf,IAA2B,IAAzB0sG,EAAU0D,GAASpwG,EASlC,OANKxF,KAAKyxG,kBAAkBz0D,IAAIk1D,KAC9BlyG,KAAK8xG,UAAW,qBAAqB,CAAE1M,SAAU8M,IACjDlyG,KAAKyxG,kBAAkBz/F,IAAIkgG,IAIzBlyG,KAAK+xG,iBACA6D,EAASttF,SAAQ,GAGnBtoB,KAAK61G,YAAW5K,EAAAA,EAAAA,IAASiH,IAAWtzE,MAAK,KACzC5+B,KAAK0xG,kBAAkB10D,IAAIk1D,KAC9BlyG,KAAK8xG,UAAW,yBAAyB,CAAE1M,SAAU8M,IACrDlyG,KAAK0xG,kBAAkB1/F,IAAIkgG,IAG7B0D,EAASttF,SAAQ,EAAK,GACtB,KAIFtoB,KAAKwxG,eAAe/vG,OACtBk0G,EAAW/2E,MAAK,KACdpqB,YAAW,KACTxU,KAAKw1G,2BAA2B,GAC/B,IAAK,IAGVx1G,KAAKuxG,wBAAyB,CAChC,GAEJ,EAACvxE,EAED61E,WAAA,SAAW3D,GACT,MAAM4D,EAAclG,EAAkBsC,GAsBpC,OAAO6D,EAAeD,EAAa,CACjCE,YAAc,YACdC,GAAK,UACJr3E,MAAK,IAGN5+B,KAAKwyG,iBAAiBN,IAG5B,EAAClyE,EAEDk2E,SAAA,SAASrG,GACP7vG,KAAKopG,SAASyG,EAChB,EAAC7vE,EAEDmpE,2BAAA,SAA2B0G,GACzB,MAAMqC,GAAWjH,EAAAA,EAAAA,IAAS4E,GACpBh5C,EAAO72D,KAAKkxG,WAAW5nG,IAAI4oG,GACjC,GAAIr7C,EAAM,CACR,MAAMq9C,EAAgBhE,EAAgBr5C,EAAKr9B,SAE3C,MAAM,GAANjV,QAAAkvF,EAAAA,EAAAA,GACK0C,EAAoBjC,EAAcr9C,KAAKw5C,qBAAmB,CAC7DT,EAAkBsC,IAEtB,CACE,OAAO,IAEX,EAAClyE,EAEDo2E,eAAA,SAAevG,GACb,MAAMqC,GAAWjH,EAAAA,EAAAA,IAAS4E,GACpBh5C,EAAO72D,KAAK+wG,OAAOznG,IAAI4oG,GAC7B,OAAQr7C,GAAQA,EAAKw7C,QACvB,EAACryE,EAED4yE,YAAA,SAAYT,GACV,YADiB,IAAPA,IAAAA,EAAU,GACbnyG,KAAK2xG,YAAa,4BAA6C/yE,MACpE4wE,IACE,MAAM,OAAE5sF,EAAM,aAAEo1D,GAAiBw3B,EAEjC,IAAI6G,EAEJ,GAAe,MAAXzzF,GAAkBuvF,EAAU,EAE9B,OAAOnyG,KAAK4yG,YAAYT,EAAU,GAIpC,GAAe,MAAXvvF,EACF,IACE,MAAMwvF,EAAcp3F,KAAKid,MAAM+/C,GAC/B,QAA2C73E,IAAvCiyG,EAAY9B,uBACd,MAAM,IAAI3uG,MAAO,iCAGnB00G,EAAUjE,CACZ,CAAE,MAAOxwG,GACP,CAIJ,OAAOy0G,CAAO,GAGpB,EAACzF,CAAA,CA/sBoB,GAktBvB,MAAMuF,EAAsB9F,IACzBniG,OAAOooG,gBAAgBjG,IAAuB,IAAI7rF,KACjD+xF,GAASC,GAAkBD,IAGxB,IAkGHvgE,EAlGSygE,EAAU,SAAAC,GACrB,SAAAD,EAAYE,EAAe7M,EAAYqG,GAAW,IAADrwE,EA2B9C,OARDA,EAAA42E,EAAA50G,KAAA,MAlBsB,SAAC80G,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAc,eAKzCF,EAHHE,EAAc,cAGeD,GAC7B,MAAM,IAAIj1G,MACP,+DAA8Di1G,MAInE,OACED,EAAcE,GAAYD,KAEvB79E,OAAMn3B,GAAOA,GAEpB,GAEqBkoG,IAAW,KAE5BqG,GACFrwE,EAAKoxE,WAAWrwF,KAAIoqF,EAAAA,EAAAA,IAASkF,EAAS/gE,MAAO,CAC3C8iE,SAAU/B,EAAS/gE,KACnB5V,QAAS22E,EACTvtF,OAAS,YAEZkd,CACH,EA7BqB2uE,EAAAA,EAAAA,GAAAgI,EAAAC,GA6BpB,IAAAI,EAAAL,EAAA/1G,UAkEA,OAlEAo2G,EAEDjB,WAAA,SAAW3D,GACT,OAAOwE,EAAAh2G,UAAMm1G,WAAU/zG,KAAC,KAAAowG,GAAUtzE,MAAKpD,IACrC,GAAIA,EAAO5Y,SAAW8sF,EAAmBC,QACvC,OAAOtnF,QAAQC,UAEjB,MAAM6nF,EAAW30E,EAAOhC,QAClBo9E,EAAYzG,EAASE,mBACrB0G,EAAgBZ,EAAoBS,GAC1C,OAAOvuF,QAAQ4kB,IAAI8pE,EAAcvyF,IAAIuxF,IAAiBn3E,MAAK,IAAMuxE,GAAS,GAE9E,EAAC2G,EAEDtE,iBAAA,SAAiB3C,GACf,OAAO6G,EAAAh2G,UAAM8xG,iBAAgB1wG,KAAC,KAAA+tG,GAASjxE,MAAKt2B,GACtCA,EAAK+pG,SACHtC,EAAiBF,GACZvnG,EAIF0nG,EAAQH,EAAU,QAAOjxE,MAAK4wE,GAChB,MAAfA,EAAI5sF,OAIC,CACLA,OAAQ8sF,EAAmB/tG,OAMxB2G,IAGJA,GAEX,EAACwuG,EAEDrE,yBAAA,SAAyB5C,GACvB,OAAO6G,EAAAh2G,UAAM+xG,yBAAwB3wG,KAAC,KAAA+tG,GAASjxE,MAAKt2B,GAC9CA,EAAK+pG,SACHtC,EAAiBF,GACZvnG,EAIF0nG,EAAQH,EAAU,QAAOjxE,MAAK4wE,GAChB,MAAfA,EAAI5sF,OAIC,CACLA,OAAQ8sF,EAAmB/tG,OAMxB2G,IAGJA,GAEX,EAACmuG,CAAA,CA/FoB,CAAS7F,GAoGzB,MAAMoG,EAAYC,IACvBjhE,EAAWihE,CAAO,EAGPC,EAAe,CAC1BpI,QAASe,GAAW75D,EAASm/D,SAAStF,GAGtC1G,2BAA4B0G,GAC1B75D,EAASmzD,2BAA2B0G,GACtCzG,SAAUyG,GAAW75D,EAASozD,SAASyG,GAEvCxG,aAAc,SAACwG,EAASzoG,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjC4uC,EAASqzD,aAAawG,EAASzoG,EAAQ,EACzC+tG,SAAUtF,GAAW75D,EAASm/D,SAAStF,GACvCuG,eAAgBvG,GAAW75D,EAASogE,eAAevG,GACnDqG,SAAUrG,GAAW75D,EAASkgE,SAASrG,GACvC+C,YAAaA,IAAM58D,EAAS48D,eAG9B,QAEO,SAASuE,IACd,OAAInhE,EACKA,EAASi7D,cAET,CAAC,CAEZ,CAEO,SAASmG,IACd,OAAIphE,EACKA,EAASs7D,SAET,CAAC,CAEZ,0KCz8BO,SAAS+F,EAAoB3zG,GAA0B,IAAzB,SAAEoa,EAAQ,SAAElC,GAAUlY,EAKzD,OAJA4C,EAAAA,EAAAA,YAAU,KACRsV,GAAU,IAGLkC,CACT,CCXO,MAAMw5F,EAAmB,CAC7B,OACA,OACA,QACA,QACA,OACA,WACA,SACA,OACA,QCgEI,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkBz6F,aAAe06F,aAAkB16F,YAAa,CAClE,MAAM26F,EAAQD,EAAOhuE,aAAc,SAGnC,GAAIiuE,IAAUF,EAAO/tE,aAAc,SAAS,CAC1C,MAAMkuE,EAAWF,EAAO9gB,WAAU,GAGlC,OAFAghB,EAAS9pE,aAAc,QAAS,IAChC8pE,EAASD,MAAQA,EACVA,IAAUF,EAAOE,OAASF,EAAOD,YAAYI,EACtD,CACF,CAEA,OAAOH,EAAOD,YAAYE,EAC5B,CAsBO,SAASG,EACdj4D,EACAk4D,QAAqB,IAArBA,IAAAA,EAAwB,CACtB/gE,KAAM,CAAC,EACP55B,KAAM,CAAC,IAGT,MAAM46F,EAAU,IAAIv8F,IACdw8F,EAAiB,GAGvB,IAAK,MAAM3qG,KAAQuyC,EAAS3R,WAAY,CAAC,IAADgqE,EAAAC,EACtC,MAAM33D,EAAWlzC,EAAKkzC,SAASnM,cACzBxwC,EAAoB,QAAlBq0G,EAAG5qG,EAAKuc,kBAAU,IAAAquF,GAAI,QAAJC,EAAfD,EAAiBr0G,UAAE,IAAAs0G,OAAJ,EAAfA,EAAqBr0G,MAEhC,GAAKs0G,EAAc9qG,GAAnB,CAEA,GAAI+qG,EAAgB73D,GAElB,GAAkB,SAAdA,GAAqC,SAAdA,EACzB,IAAK,MAAMiS,KAAanlD,EAAKuc,WAAY,CACvC,MAAMyuF,EAAuC,UAApB7lD,EAAU56C,KAYZ,IAAD0gG,EAAtB,GATAR,EAAsBv3D,GAAY,IAC7Bu3D,EAAsBv3D,IAGtB83D,IACHP,EAAsBv3D,GAAUiS,EAAU56C,MAAQ46C,EAAU3uD,OAI1Dw0G,EACFP,EAAsBv3D,GAAUz8C,MAAS,GACR,QAA/Bw0G,EAAAR,EAAsBv3D,UAAS,IAAA+3D,GAA/BA,EAAiCx0G,MAC7Bg0G,EAAsBv3D,GAAUz8C,MAC/B,KACJ0uD,EAAU3uD,QAEjB,KACK,CACL,IAAI00G,EAAalrG,EAAKupF,WAAU,GAQhC,GAPA2hB,EAAWzqE,aAAc,oBAAmB,GAGD,WAAvCyqE,EAAWh4D,SAASnM,gBACtBmkE,EAAaC,EAAcD,IAGzB30G,EACF,GAAKm0G,EAAQ96D,IAAIr5C,GAGV,CAAC,IAAD60G,EACL,MAAMC,EAAgCX,EAAQxuG,IAAI3F,GAGtC,QAFZ60G,EAAAT,EACEU,GACA3qG,kBAAU,IAAA0qG,GAFZA,EAEclvB,YACZyuB,EAAeU,IAEjBV,EAAeU,GAAiCH,CAClD,MAVEP,EAAez1G,KAAKg2G,GACpBR,EAAQj3F,IAAIld,EAAIo0G,EAAet2G,OAAS,QAW1Cs2G,EAAez1G,KAAKg2G,EAExB,CAKElrG,EAAK4gC,WAAWvsC,QAClBs2G,EAAez1G,KAAIL,MAAnB81G,GAActE,EAAAA,EAAAA,GACTmE,EAA+BxqG,EAAMyqG,GACrCE,gBA3D2B,CA8DpC,CAEA,MAAO,CAAEA,iBAAgBF,wBAC3B,CAEA,SAASU,EAAcnrG,GACrB,MAAM04F,EAASl3F,SAAS0hB,cAAe,UACvC,IAAK,MAAMgZ,KAAQl8B,EAAKuc,WACtBm8E,EAAOj4D,aAAavE,EAAK3xB,KAAM2xB,EAAK1lC,OAItC,OAFAkiG,EAAOh4D,UAAY1gC,EAAK0gC,UAEjBg4D,CACT,CAEO,SAASqS,EAAgB73D,GAC9B,OAAOg3D,EAAiBhqG,SAASgzC,EACnC,CAKO,SAAS43D,EAAc9qG,GAC5B,OAAyB,IAAlBA,EAAK4oF,QACd,CCjMA,MAAM0iB,EAAa9pG,SAAS0hB,cAAe,OACrCqoF,EAA8B,CAClC7hE,KAAM,GACN55B,KAAM,IAGF07F,EAAiBA,KAAO,IAADC,EAC3B,MAAM,eAAEd,EAAc,sBAAEF,GACtBD,EAA+Bc,GAEjCC,EAA4B7hE,KAAOnvC,OAAO0J,KAAKwmG,EAAsB/gE,MACrE6hE,EAA4Bz7F,KAAOvV,OAAO0J,KAAKwmG,EAAsB36F,MDkMhE,SAAoC26F,GACzC,IAAKA,EAAuB,OAE5B,MAAM,KAAE/gE,EAAI,KAAE55B,GAAS26F,EAEjBiB,EAAclqG,SAASilB,cAAe,QACxCilF,GACFnxG,OAAOoe,QAAQ+wB,GAAMjlC,SAAQ1M,IAAsC,IAApC2uC,EAAeilE,GAAe5zG,EAC3D2zG,EAAYjrE,aAAaiG,EAAeilE,EAAe,IAI3D,MAAMC,EAAcpqG,SAASilB,cAAe,QACxCmlF,GACFrxG,OAAOoe,QAAQ7I,GAAMrL,SAAQvM,IAAsC,IAApCwuC,EAAeilE,GAAezzG,EAC3D0zG,EAAYnrE,aAAaiG,EAAeilE,EAAe,GAG7D,CClNEE,CAA2BpB,GAM3B,MAAMqB,EAAuBtqG,SAAS88E,iBAAkB,sBAEhB,IAADytB,EAAvC,GAAoC,IAAhCD,EAAqBz3G,OAEvB,YADA03G,EAAAvqG,SAAS65B,MAAK2wE,OAAMn3G,MAAAk3G,GAAA1F,EAAAA,EAAAA,GAAIsE,IAI1B,MAAMsB,EAAe,ID8ChB,SAAkB31G,GAA0C,IAAzC,SAAE41G,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAO/1G,EAC9D,IAAK,MAAMg2G,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAASv7C,WAAU7mC,GACzCogF,EAAYpgF,EAAGuiF,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAASt2G,OAAO02G,EAAiB,EAErC,CAGA,IAAK,MAAMC,KAAWL,EACpBE,EAAMG,EAEV,CC/DEC,CAAU,CACRP,SAAUJ,EACVK,SAAUxB,EACVyB,QAASpsG,GAAQA,EAAKU,WAAWw7E,YAAYl8E,GAC7CqsG,MAAOrsG,GAAQisG,EAAa/2G,KAAK8K,MAGnCyrG,EAAAjqG,SAAS65B,MAAK2wE,OAAMn3G,MAAA42G,EAAIQ,EAAa,EAmChC,SAASS,EAAqBp2G,GAIjC,IAJkC,cACpCqwG,EAAa,mBACbY,EAAkB,mBAClBoF,GACDr2G,GACC4C,EAAAA,EAAAA,YAAU,KACR,GAAIytG,SAAAA,EAAeiG,KAAM,EDvEtB,SAA6BvxE,GAClC,GAAqB,mBAAVA,EACT,MAAM,IAAI9mC,MACP,uDAAsD8mC,MAE7D,CCmEMwxE,CAAoBlG,EAAciG,MAElC,MAAM,OAAEz5E,IAAW25E,EAAAA,EAAAA,KAEbC,EACJjX,EAAAA,cAAC6Q,EAAciG,KD3Fd,CACLr8B,SAAU,CACRynB,UAH0BrwE,EC4FgBglF,GDzF1Bp8B,SAASynB,UAE3B7nE,OAAQxI,EAAMwI,OACdj1B,KAAMysB,EAAMzsB,MAAQ,CAAC,EACrB8xG,WAAYrlF,EAAMqlF,WAClBC,YAAatlF,EAAMslF,cCuFXC,GAAkBxI,EAAAA,EAAAA,GACrB,kBACD,CAAE3lG,QAASguG,GACXA,GACAh1G,IAAiB,IAAhB,OAAEq2B,GAAQr2B,EACT,MAAO,CAAEgH,QAASqvB,EAAQ,IAE5BiyC,MAEFltC,EAIE2iE,EAAAA,cAACmU,EAAoB,CAACz7F,SAAUg9F,GAC9B1V,EAAAA,cAACqX,EAAAA,mBAAmBlxF,SAAQ,CAACzlB,MAAO+wG,GAClCzR,EAAAA,cAACsX,EAAAA,iBAAgB,KAAEF,KAGvB5B,EAEJ,CDnHG,IAAyB3jF,ECqH5B,MAAO,MD4FJ,WACL,MAAM0lF,EAAgB7rG,SAAS88E,iBAAkB,sBACjD,IAAK,MAAMt+E,KAAQqtG,EACjBrtG,EAAKU,WAAWw7E,YAAYl8E,EAEhC,CChGMstG,GDsHC,SAAqCC,GAC1C,IAAKA,EAA0B,OAE/B,MAAM,KAAE7jE,EAAI,KAAE55B,GAASy9F,EAEvB,GAAI7jE,EAAM,CACR,MAAMgiE,EAAclqG,SAASilB,cAAe,QAC5CijB,EAAKjlC,SAAQiiC,IACPglE,GACFA,EAAYpvB,gBAAgB51C,EAC9B,GAEJ,CAEA,GAAI52B,EAAM,CACR,MAAM87F,EAAcpqG,SAASilB,cAAe,QAC5C3W,EAAKrL,SAAQiiC,IACPklE,GACFA,EAAYtvB,gBAAgB51C,EAC9B,GAEJ,CACF,CC3IM8mE,CAA4BjC,EAA4B,CACzD,GAEL,CCzHA,SAASkC,EAAahnG,GACpB,MAAMkmG,EAAqB,IACtBlmG,EACH0pB,OAAQ,KACHytE,EAAAA,EAAAA,IAAgBn3F,EAAM8pE,SAASynB,aAC/BvxF,EAAMqgG,cAAczD,KAAK4J,YAAYS,WAM5C,IAAIC,EAFkB34G,MAIpB24G,EADElnG,EAAMqgG,cAAcC,iBACRtgG,EAAMqgG,cAAcC,kBAEpB7jF,EAAAA,EAAAA,gBANMluB,EAMsByR,EAAMqgG,cAAcjH,YAN/B7qG,EAAEw8E,SAAYx8E,EAM6B,IACrE23G,EACH52G,IAAK0Q,EAAMu7B,MAAQv7B,EAAMqgG,cAAcr9C,KAAKznB,OAMhD0qE,EAAsB,CACpB/F,cAHoBlgG,EAAMqgG,cAAczrE,KAIxCksE,mBAAoB9gG,EAAMqgG,cAAcS,mBACxCoF,uBAeF,OAZoBjI,EAAAA,EAAAA,GACjB,kBACD,CACE3lG,QAAS4uG,EACTlnG,MAAOkmG,GAETgB,GACAr3G,IAAiB,IAAhB,OAAE83B,GAAQ93B,EACT,MAAO,CAAEyI,QAASqvB,EAAQ3nB,MAAOkmG,EAAoB,IAEvDtsC,KAGJ,CAEAotC,EAAaz/D,UAAY,CACvBuiC,SAAUq9B,IAAAA,OAAiB9rD,WAC3BglD,cAAe8G,IAAAA,OAAiB9rD,WAChC5mD,KAAM0yG,IAAAA,OACNX,YAAaW,IAAAA,OAAiB9rD,YAGhC,4JCxDO,MAAM+rD,EAAsB,CACjCt3G,GAAK,mBACLE,MAAO,CACLb,SAAW,WACX4F,IAAK,EACL3E,MAAO,EACPC,OAAQ,EACRG,QAAS,EACTC,SAAW,SACXC,KAAO,mBACPE,WAAa,SACbL,OAAQ,GAEV,YAAc,YACd,cAAgB,uBCHlB,SAAS82G,EAAc9V,GACrB,MAAM8F,GAAWC,EAAAA,EAAAA,GAAwB/F,IACnC,KAAE//C,EAAI,OAAE6d,GAAWh1D,OAAOyvE,SAEhC,OAAgB,MAAZutB,IACFh9F,OAAOitG,WAAWjQ,EAASE,OAASloC,EAAS7d,IACtC,EAIX,CAGA,IAAI+1D,EAAa,GAEjBltG,OAAOiE,iBAAkB,sBAAqBS,IACxC,6BAA6BjF,KAAKiF,EAAMs5B,SACtCkvE,IACFltG,OAAOyvE,SAASynB,SAAWgW,EAE/B,IAGF,MAAMC,EAAmBA,CAAC19B,EAAU29B,KAC7BJ,EAAcv9B,EAASynB,YAC1BgW,EAAYz9B,EAASynB,UACrB0M,EAAAA,EAAAA,GAAW,mBAAmB,CAAEn0B,WAAU29B,iBAC5C,EAGIC,EAAgBA,CAAC59B,EAAU29B,KAC1BJ,EAAcv9B,EAASynB,YAC1B0M,EAAAA,EAAAA,GAAW,gBAAgB,CAAEn0B,WAAU29B,gBAOzC,EAGIE,EAAW,SAAClwF,EAAIlkB,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIZ,iBAARkkB,EAET,YADAmwF,EAAAA,cAAcD,SAASlwF,GAIzB,MAAM,SAAE85E,EAAQ,OAAEliC,EAAM,KAAE7d,IAASq2D,EAAAA,EAAAA,IAAUpwF,GACvC4/E,GAAWC,EAAAA,EAAAA,GAAwB/F,GAUzC,GANI8F,IACF5/E,EAAK4/E,EAASE,OAASloC,EAAS7d,GAK9Bn3C,OAAOytG,aAET,YADAztG,OAAOyvE,SAAWynB,EAAWliC,EAAS7d,GAMxC,MAAMjuC,EAAY5C,YAAW,KAC3BlR,EAAAA,EAAQtC,KAAM,6BAA6B,CAAEokG,cAC7C0M,EAAAA,EAAAA,GAAW,uBAAuB,CAChCn0B,SAAUzvE,OAAOyvE,UACjB,GACD,KAEHkxB,EAAAA,GAAOzF,SAAShE,EAAWliC,GAAQtkC,MAAKs1E,IAOtC,IAAKA,GAAiBA,EAActxF,SAAW8sF,EAAAA,GAAmB/tG,MAIhE,OAHAuM,OAAO0tG,QAAQC,aAAa,CAAC,EAAI,GAAGl+B,SAASmjB,MAC7C5yF,OAAOyvE,SAAWynB,OAClBptF,aAAaZ,GAM8B88F,GAEzCA,EAAcr9C,KAAKy5C,yBACnBpiG,OAAO4tG,4BAIJ,kBAAkB3hF,WACoB,OAAvCA,UAAU4hF,cAAczH,YACsB,cAA9Cn6E,UAAU4hF,cAAczH,WAAW/zF,OAEnC4Z,UAAU4hF,cAAczH,WAAW0H,YAAY,CAC7CC,UAAY,uBAIhB/tG,OAAOyvE,SAAWynB,EAAWliC,EAAS7d,IAG1C62D,EAAAA,EAAAA,UAAc5wF,EAAIlkB,GAClB4Q,aAAaZ,EAAU,GAE3B,EAEA,SAASgtF,EAAmBE,EAAe5gG,GAAiB,IAAf,SAAEi6E,GAAUj6E,EACvD,MAAM,SAAE0hG,EAAQ,KAAE//C,GAASs4B,EACrBxwC,GAAU2kE,EAAAA,EAAAA,GAAW,qBAAqB,CAC9CxN,kBAEAc,WACAb,YAAa,CAAE5mB,YACfw+B,uBAAwB96G,GAAQ,CAC9B,EAGArB,KAAK8jG,cAAch1B,KAAKztE,EAAMA,EAAK8B,QAGvC,GAAIgqC,EAAQ1rC,OAAS,EAGnB,OAAO0rC,EAAQA,EAAQ1rC,OAAS,GAGlC,GAAI6iG,EAAiB,CACnB,MACE3mB,UAAYynB,SAAUgX,IACpB9X,EACJ,GAAI8X,IAAgBhX,EAGlB,OAAO//C,EAAOs/C,UAAUt/C,EAAKrjD,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEKq6G,EAAc,SAAAx8E,GAClB,SAAAw8E,EAAYxoG,GAAQ,IAADisB,EAEuB,OADxCA,EAAAD,EAAA/9B,KAAA,KAAM+R,IAAM,MACPyoG,gBAAkBpZ,EAAAA,YAAiBpjE,CAC1C,EAJkB2uE,EAAAA,EAAAA,GAAA4N,EAAAx8E,GAIjB,IAAAG,EAAAq8E,EAAA37G,UAwBA,OAxBAs/B,EAEDI,mBAAA,SAAmBC,EAAWk8E,GAC5Bj7F,uBAAsB,KACpB,IAAIk7F,EAAY,eAAcx8G,KAAK6T,MAAM8pE,SAASynB,WAC9Cx2F,SAASohC,QACXwsE,EAAW5tG,SAASohC,OAEtB,MAAMysE,EAAe7tG,SAAS88E,iBAAkB,4BAC5C+wB,GAAgBA,EAAah7G,SAC/B+6G,EAAWC,EAAa,GAAG5f,aAE7B,MAAM6f,EAAmB,gBAAeF,IACxC,GAAIx8G,KAAKs8G,gBAAgB1nG,QAAS,CACR5U,KAAKs8G,gBAAgB1nG,QAAQusF,YAC7Bub,IACtB18G,KAAKs8G,gBAAgB1nG,QAAQusF,UAAYub,EAE7C,IAEJ,EAAC18E,EAEDO,OAAA,WACE,OAAO2iE,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,GAASwhF,EAAmB,CAAE7qF,IAAKpwB,KAAKs8G,kBACjD,EAACD,CAAA,CA5BiB,CAASnZ,EAAAA,WA+B7B,MAAMyZ,EAAuBA,CAACrB,EAAcsB,KAAkB,IAADC,EAAAC,EAC3D,OAAIxB,EAAaxa,OAAS8b,EAAa9b,OAInCwa,SAAmB,QAAPuB,EAAZvB,EAAc/6F,aAAK,IAAAs8F,OAAP,EAAZA,EAAqB15G,QAAQy5G,SAAmB,QAAPE,EAAZF,EAAcr8F,aAAK,IAAAu8F,OAAP,EAAZA,EAAqB35G,IAI1C,EAGd,IACM45G,EAAY,SAAAC,GAChB,SAAAD,EAAYlpG,GAAQ,IAADopG,EAEqB,OADtCA,EAAAD,EAAAl7G,KAAA,KAAM+R,IAAM,KACZwnG,EAAiBxnG,EAAM8pE,SAAU,MAAKs/B,CACxC,EAJgBxO,EAAAA,EAAAA,GAAAsO,EAAAC,GAIf,IAAAlG,EAAAiG,EAAAr8G,UA2BA,OA3BAo2G,EAED72E,kBAAA,WACEs7E,EAAcv7G,KAAK6T,MAAM8pE,SAAU,KACrC,EAACm5B,EAEDoG,sBAAA,SAAsBX,GACpB,QAAII,EAAqB38G,KAAK6T,MAAM8pE,SAAU4+B,EAAU5+B,YACtD09B,EAAiBkB,EAAU5+B,SAAU39E,KAAK6T,MAAM8pE,WACzC,EAGX,EAACm5B,EAED12E,mBAAA,SAAmBC,GACbs8E,EAAqBt8E,EAAUs9C,SAAU39E,KAAK6T,MAAM8pE,WACtD49B,EAAcv7G,KAAK6T,MAAM8pE,SAAUt9C,EAAUs9C,SAEjD,EAACm5B,EAEDv2E,OAAA,WACE,OACE2iE,EAAAA,cAACA,EAAAA,SAAc,KACZljG,KAAK6T,MAAMiK,SACZolF,EAAAA,cAACmZ,EAAc,CAAC1+B,SAAUA,WAGhC,EAACo/B,CAAA,CA/Be,CAAS7Z,EAAAA,qCCxN3B,SAASia,EAAe50G,EAAGC,GACzB,IAAK,IAAIlH,KAAKiH,EACZ,KAAMjH,KAAKkH,GAAI,OAAO,EACvB,IAAK,IAAIy8B,KAAMz8B,EACd,GAAID,EAAE08B,KAAQz8B,EAAEy8B,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAApF,GACnB,SAAAu9E,EAAYvpG,GAAQ,IAADisB,EACjBA,EAAAD,EAAA/9B,KAAA,OAAO,KACP,MAAM,SAAE67E,EAAQ,cAAEu2B,GAAkBrgG,EAQnC,OAPDisB,EAAKvf,MAAQ,CACXo9D,SAAU,IAAKA,GACfu2B,cACEA,GACArF,EAAAA,GAAOxF,aAAa1rB,EAASynB,SAAWznB,EAASza,OAAQ,CACvD2xC,kBAAkB,KAEvB/0E,CACH,EAZmB2uE,EAAAA,EAAAA,GAAA2O,EAAAv9E,GAYlBu9E,EAEMC,yBAAP,SAAA35G,EAA8C45G,GAAY,IAA1B,SAAE3/B,GAAUj6E,EAC1C,GAAI45G,EAAU3/B,SAASmjB,OAASnjB,EAASmjB,KAAM,CAQ7C,MAAO,CACLoT,cARoBrF,EAAAA,GAAOxF,aAC3B1rB,EAASynB,SAAWznB,EAASza,OAC7B,CACE2xC,kBAAkB,IAMpBl3B,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAA39C,EAAAo9E,EAAA18G,UA+EA,OA/EAs/B,EAEDu9E,cAAA,SAAc1N,GACZhB,EAAAA,GAAOzF,SAASyG,GAASjxE,MAAKs1E,IACxBA,GAAiBA,EAActxF,SAAW8sF,EAAAA,GAAmB/tG,MAC/D3B,KAAKmmE,SAAS,CACZwX,SAAU,IAAKzvE,OAAOyvE,UACtBu2B,mBAGFhmG,OAAO0tG,QAAQC,aAAa,CAAC,EAAI,GAAGl+B,SAASmjB,MAC7C5yF,OAAOyvE,SAAWkyB,EACpB,GAEJ,EAAC7vE,EAEDk9E,sBAAA,SAAsBX,EAAWiB,GAE/B,OAAKA,EAAUtJ,cAkBXl0G,KAAKugB,MAAM2zF,gBAAkBsJ,EAAUtJ,gBAIzCl0G,KAAKugB,MAAM2zF,cAAcjH,YAAcuQ,EAAUtJ,cAAcjH,YAK7DjtG,KAAKugB,MAAM2zF,cAAczD,OAAS+M,EAAUtJ,cAAczD,SAM5DzwG,KAAKugB,MAAMo9D,SAASx6E,MAAQq6G,EAAU7/B,SAASx6E,MAC/Cq6G,EAAUtJ,cAAcr9C,OACvB2mD,EAAUtJ,cAAcr9C,KAAK8zC,YAC5B6S,EAAUtJ,cAAcr9C,KAAKznB,ODhFrC,SAA0B4G,EAAUumE,EAAWiB,GAC7C,OAAOL,EAAennE,EAASniC,MAAO0oG,IAAcY,EAAennE,EAASz1B,MAAOi9F,EACpF,CCkFUC,CAAez9G,KAAMu8G,EAAWiB,OAvCrCx9G,KAAKu9G,cACHhB,EAAU5+B,SAASynB,SAAWmX,EAAU5+B,SAASza,SAE5C,EAqCX,EAACljC,EAEDO,OAAA,WAiBE,OAAOvgC,KAAK6T,MAAMiK,SAAS9d,KAAKugB,MAClC,EAAC68F,CAAA,CA/GkB,CAASla,EAAAA,+w93DC6B9B,MAAM2L,EAAS,IAAI4H,EAAAA,GAAWE,EAAe7M,EAAY57F,OAAOiiG,WAChE6G,EAAAA,EAAAA,IAAUnI,GACVA,EAAOgD,aAAaC,EAAAA,GAEpB,MAAM,OAAEvxE,EAAM,QAAEm9E,IAAYxD,EAAAA,EAAAA,KAE5BhsG,OAAOyoG,cAAgBA,EACvBzoG,OAAOyvG,WAAar6G,EAAAA,EACpB4K,OAAO0vG,UAAY1G,EAAAA,GH4HjBuE,EAAAA,cAAczqB,QAAO3vF,IACnBA,EAAKs8E,SAASn9D,OAASnf,EAAKmf,MAAM,IAGpCtS,OAAO2vG,QAAUvyF,GAAMkwF,EAASlwF,EAAI,CAAE2L,SAAS,IAC/C/oB,OAAOitG,WAAa7vF,GAAMkwF,EAASlwF,EAAI,CAAE2L,SAAS,IAClD/oB,OAAO4vG,YAAc,CAACxyF,EAAIlkB,IAAYo0G,EAASlwF,EAAIlkB,GG9HrD,MAAM22G,EAAoB,wCAE1BC,EAAAA,EAAAA,GAAgB,iBAAgBp/E,MAAK,MAG/BkzE,EAAAA,EAAAA,GAAW,yBAAwBrqG,OAAO4O,SAAS5U,OAAS,GAC9DwnG,EAAS,OAWX,MAAMgV,EAAepqG,GACnBqvF,EAAAA,cAACgb,EAAAA,YAAY70F,SAAQ,CACnBzlB,MAAO,CACLu6G,QAAU,IACVC,SAAW,MAGblb,EAAAA,cAAC2X,EAAAA,EAAiBhnG,IAIhBwqG,EAAcnb,EAAAA,cAAoB,CAAC,GAEnCqK,EAAgB,CACpBK,kBAAoB,WACrB,IAEK0Q,EAAU,SAAAz+E,GAAA,SAAAy+E,IAAA,OAAAz+E,EAAA59B,MAAA,KAAAP,YAAA,KAiCb,OAjCa+sG,EAAAA,EAAAA,GAAA6P,EAAAz+E,GAAAy+E,EAAA59G,UACd6/B,OAAA,WACE,MAAM,SAAEziB,GAAa9d,KAAK6T,MAC1B,OACEqvF,EAAAA,cAACqb,EAAAA,SAAQ,MACN76G,IAAA,IAAC,SAAEi6E,GAAUj6E,EAAA,OACZw/F,EAAAA,cAACka,EAAe,CAACz/B,SAAUA,IACxBx4E,IAAkC,IAAjC,cAAE+uG,EAAa,SAAEv2B,GAAUx4E,EAC3B,MAAMwvG,GAAqBwC,EAAAA,EAAAA,MACrBqH,GAAepH,EAAAA,EAAAA,MAErB,OACElU,EAAAA,cAACqX,EAAAA,GAAmBlxF,SAAQ,CAACzlB,MAAO+wG,GAClCzR,EAAAA,cAACsK,EAAAA,GAAcnkF,SAAQ,CAACzlB,MAAO2pG,GAC7BrK,EAAAA,cAAC8J,EAAAA,GAAqB3jF,SAAQ,CAACzlB,MAAO46G,GACpCtb,EAAAA,cAACoJ,EAAAA,GAAiBjjF,SAAQ,CACxBzlB,MAAOswG,EAAcr9C,KAAKw1C,WAE1BnJ,EAAAA,cAACmb,EAAYh1F,SAAQ,CACnBzlB,MAAO,CAAEswG,gBAAev2B,aAEvB7/D,MAKmB,GAGlB,GAI1B,EAACwgG,CAAA,CAjCa,CAASpb,EAAAA,WAoCnBub,EAAe,SAAAzB,GAAA,SAAAyB,IAAA,OAAAzB,EAAA/6G,MAAA,KAAAP,YAAA,KAsClB,OAtCkB+sG,EAAAA,EAAAA,GAAAgQ,EAAAzB,GAAAyB,EAAA/9G,UACnB6/B,OAAA,WACE,OACE2iE,EAAAA,cAACmb,EAAYK,SAAQ,MAClBp5G,IAAA,IAAC,cAAE4uG,EAAa,SAAEv2B,GAAUr4E,EAAA,OAC3B49F,EAAAA,cAAC6Z,EAAY,CAACp/B,SAAUA,GACtBulB,EAAAA,cAACH,EAAAA,GAAa,CACZplB,SAAUA,EACVymB,mBAAoBA,GAEpBlB,EAAAA,cAACyb,EAAAA,OAAM,CACLP,SAAUhU,GACVzsB,SAAUA,EACVh6E,GAAG,wBAEHu/F,EAAAA,cAAC+a,EAAYt2G,OAAA8xB,OAAA,CACX2V,KAC+B,cAA7B8kE,EAAcr9C,KAAKznB,MACU,cAA7B8kE,EAAcr9C,KAAKznB,MACf+6D,EAAAA,EAAAA,GAAYxsB,EAASynB,SAAUgF,IAC/BwU,WAEI1K,EAAcr9C,KAAK8zC,WACnBuJ,EAAcr9C,KAAKznB,MACnBvjC,MAAO,KAAI,KAGjB7L,KAAK6T,MAAK,CACd8pE,SAAUA,EACVu2B,cAAeA,GACXA,EAAczD,SAIX,GAIvB,EAACgO,CAAA,CAtCkB,CAASvb,EAAAA,WAyC9B,MAAM,SAAEgP,EAAUv0B,SAAUkhC,GAAe3wG,OAYzCgkG,GACA9H,GAAgB8H,IACd2M,EAAWzZ,UAAY8M,EAAS5kG,SAAU,KAAMuxG,EAAW37C,OAAU,OAErE2rC,EAAOtE,eAAcJ,EAAAA,EAAAA,GAAY0U,EAAWzZ,SAAUgF,MACtD8H,EAAS/5E,MAAM,6BACf+5E,EAAS/5E,MAAM,+CAGjBqjF,EAAAA,EAAAA,UACEpR,GACE8H,GACEA,EAAS5kG,SAAU,KAA2B,GAArBuxG,EAAW37C,QACtC27C,EAAWx5D,KACb,CACEpuB,SAAS,IAMf,MAAM6nF,EAAoBA,KACxB,IACE,OAAO7Z,cACT,CAAE,MACA,OAAO,IACT,GAGFiS,EAAAA,GAAa9N,SAASyV,EAAWzZ,SAAWyZ,EAAW37C,QAAQtkC,MAAKi4B,IAAS,IAADkoD,EAC1E,MAAM9Z,EAAiB6Z,IAEvB,GACEjoD,SAAU,QAANkoD,EAAJloD,EAAMA,YAAI,IAAAkoD,GAAVA,EAAYzO,wBACZz5C,EAAKA,KAAKy5C,yBAA2BpiG,OAAO4tG,4BAIzC,kBAAkB3hF,WACoB,OAAvCA,UAAU4hF,cAAczH,YACsB,cAA9Cn6E,UAAU4hF,cAAczH,WAAW/zF,OAEnC4Z,UAAU4hF,cAAczH,WAAW0H,YAAY,CAC7CC,UAAY,uBAUZhX,GAAgB,CAGlB,KAFiE,MAA9CA,EAAex5B,QAAQsyC,IAKxC,OAFA9Y,EAAev5B,QAAQqyC,EAAmB,UAC1C7vG,OAAOyvE,SAASqhC,QAAO,EAG3B,CAOF,GAJI/Z,GACFA,EAAej5B,WAAW+xC,IAGvBlnD,GAAQA,EAAKj0C,SAAW8sF,EAAAA,GAAmB/tG,MAAO,CACrD,MAAMk6B,EAAW,sBAAqBgjF,EAAWzZ,0CAIjD,GAAIvuC,GAAQA,EAAKr1D,MAEf,MADAgB,QAAQhB,MAAMq6B,GACRg7B,EAAKr1D,MAGb,MAAM,IAAIG,MAAMk6B,EAClB,CAEA,MAAMojF,GAAWnN,EAAAA,EAAAA,GACd,kBACD,CAAE3lG,QAAS+2F,EAAAA,cAACub,EAAe,OAC3Bvb,EAAAA,cAACub,EAAe,OAChBj5G,IAAiB,IAAhB,OAAEg2B,GAAQh2B,EACT,MAAO,CAAE2G,QAASqvB,EAAQ,IAE5BiyC,MAEIyxC,EAAM,WACV,MAAMC,EAAsBjc,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACTic,EAAoBvqG,UACvBuqG,EAAoBvqG,SAAU,EAC1BszB,YAAYD,MACdC,YAAYD,KAAM,0BAGpB6pE,EAAAA,EAAAA,GAAW,yBACb,GACC,IAEI5O,EAAAA,cAACob,EAAU,KAAEW,EACtB,EAEMG,EAAUxwG,SAAS6uE,eAAgB,wBAIzC,IAAI4hC,EAAkB9+E,EAClB6+E,GAAWA,EAAQthG,SAASrc,SAC9B49G,EAAkB3B,GAGpB,MAAM4B,GAAWxN,EAAAA,EAAAA,GACd,8BACD3xG,EACAk/G,GACA,GAEF,SAASE,IACP,MAAMC,EACe,oBAAZtxG,OACHU,SAAS6uE,eAAgB,aACzB,KAEN6hC,EAASpc,EAAAA,cAACgc,EAAG,MAAKM,EACpB,CAIA,MAAMjwB,EAAM3gF,SACZ,GACsB,aAApB2gF,EAAI1kD,YACiB,YAApB0kD,EAAI1kD,aAA6B0kD,EAAI/mD,gBAAgBoC,SAEtDp2B,YAAW,WACT+qG,GACF,GAAG,OACE,CACL,MAAMp+G,EAAU,WACdouF,EAAIx9E,oBAAqB,mBAAmB5Q,GAAS,GACrD+M,OAAO6D,oBAAqB,OAAO5Q,GAAS,GAE5Co+G,GACF,EAEAhwB,EAAIp9E,iBAAkB,mBAAmBhR,GAAS,GAClD+M,OAAOiE,iBAAkB,OAAOhR,GAAS,EAC3C,CAEM,GACN,mFC1SJ,UAlByBuC,IAAmB,IAAlB,SAAEi6E,GAAUj6E,EACpC,MAAMwwG,EAAgBrF,EAAAA,GAAOxF,aAAa1rB,EAASynB,UACnD,OAAK8O,EAGEhR,EAAAA,cAAoBuc,EAAAA,EAAsB,CAC/C9hC,WACAu2B,mBACGA,EAAczD,OALV,IAMP,yBCfkBruG,MAKpB5B,EAAOC,SALa2B,EAKW6mG,EAAS,SALT7mG,EAAEw8E,SAAYx8E,sECA/C,MAAMoiB,EAAM,IAAIk/E,QAET,SAASwW,IACd,MAAMwF,EAAiBzW,EAAS,OAYhC,MAAO,CAAE1oE,OAVMA,CAACskE,EAAWhxC,KACzB,IAAImM,EAAOx7C,EAAIlb,IAAIuqD,GACdmM,GACHx7C,EAAI3D,IAAIgzC,EAAKmM,EAAO0/C,EAAeC,WAAW9rD,IAEhDmM,EAAKz/B,OAAOskE,EAAU,EAKP6Y,QAFDA,CAAC7Y,EAAWhxC,IAAO6rD,EAAeE,YAAY/rD,EAAIgxC,GAGpE,ypnhJCZA,MAAMgb,EAAc,IAAItkG,IAClBukG,EAAwB,IAAIvkG,IAU3B,SAAS4vF,EAAwB/F,GACtC,IAAI8F,EAAW2U,EAAYv2G,IAAI87F,GAI/B,OAHK8F,IACHA,EAAW4U,EAAsBx2G,IAAI87F,EAASjxD,gBAEzC+2D,CACT,CAdA6U,EAAUluG,SAAQq5F,IACZA,EAAS8U,WACXF,EAAsBj/F,IAAIqqF,EAAS+U,SAAU/U,GAE7C2U,EAAYh/F,IAAIqqF,EAAS+U,SAAU/U,EACrC,6DCT8B,WAA9Bh9F,OAAOyvE,SAAS1Q,UACc,cAA9B/+D,OAAOyvE,SAASuiC,SAEhB19G,QAAQhB,MACL,gFAEO,kBAAkB24B,WAC5BA,UAAU4hF,cACPoE,SAAU,UACVvhF,MAAK,SAAUwhF,GACdA,EAAIjuG,iBAAkB,eAAc,MAClC2/F,EAAAA,EAAAA,GAAW,6BAA6B,CAAEiK,cAAeqE,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7B99G,QAAQu4C,IAAK,mBAAmBslE,GAChCA,EAAiBluG,iBAAkB,eAAc,KAC/C,OAAQkuG,EAAiB9/F,OACvB,IAAM,YACA4Z,UAAU4hF,cAAczH,YAK1BpmG,OAAOytG,cAAe,GAEtB7J,EAAAA,EAAAA,GAAW,6BAA6B,CAAEiK,cAAeqE,IAGrDlyG,OAAOqyG,qBACT/9G,QAAQu4C,IAAK,4CACb7sC,OAAOyvE,SAASqhC,YAKlBx8G,QAAQu4C,IAAK,sCAKb+2D,EAAAA,EAAAA,GAAW,2BAA2B,CAAEiK,cAAeqE,KAEzD,MAEF,IAAM,YACJ59G,QAAQhB,MAAO,oDACfswG,EAAAA,EAAAA,GAAW,2BAA2B,CAAEiK,cAAeqE,IACvD,MAEF,IAAM,aACJtO,EAAAA,EAAAA,GAAW,wBAAwB,CAAEiK,cAAeqE,IAExD,GACA,GAEN,IACCrnF,OAAM,SAAU5B,GACf30B,QAAQhB,MAAO,4CAA4C21B,EAC7D,gKC5DJ,MAAM61E,EAAuB9J,EAAAA,cAAoB,CAAC,GAC5CsK,EAAgBtK,EAAAA,cAAoB,CAAC,GACrCoJ,EAAmBpJ,EAAAA,cAAoB,CAAC,GACxCsJ,EAAqBtJ,EAAAA,cAAoB,CAAC,uICDhD,MAAMqX,GCgB+B5iG,EDhBmB,cCgBb2D,EDhB2B,CAAC,ECiBjE4nF,EAAMsd,oBAjBgB,SAAC7oG,EAAM2D,GAajC,YAb6C,IAAZA,IAAAA,EAAe,MAE3CmlG,WAAWC,mBACdD,WAAWC,iBAAmB,CAAC,GAG5BD,WAAWC,iBAAiB/oG,KAC/B8oG,WAAWC,iBAAiB/oG,GAAQurF,EAAMsd,oBACxC7oG,EACA2D,IAIGmlG,WAAWC,iBAAiB/oG,EACrC,CAIW6oG,CAAoB7oG,EAAM2D,GAG5B4nF,EAAAA,cAAoB5nF,IAL7B,IAAqC3D,EAAM2D,EDd3C,SAASqlG,EAAuBj9G,GAA4C,IAA3C,gBAAEk9G,EAAe,KAAEt4G,EAAI,MAAEouD,EAAK,OAAEn2B,GAAQ78B,EACvE,MAAMm9G,EAAYv4G,EACdA,EAAKA,KACLs4G,EAAgBlqD,IAAUkqD,EAAgBlqD,GAAOpuD,KAErD,OACE46F,EAAAA,cAACA,EAAAA,SAAc,KACZ2d,GAAatgF,EAAOsgF,IACnBA,GAAa3d,EAAAA,cAAA,WAAK,yBAG1B,CAKA,MAAM4d,EAAcjtG,IAClB,MAAM,KAAEvL,EAAI,MAAEouD,EAAK,OAAEn2B,EAAM,SAAEziB,GAAajK,EAS1C,OACEqvF,EAAAA,cAACqX,EAAmBmE,SAAQ,MACzBkC,GACC1d,EAAAA,cAACyd,EAAuB,CACtBr4G,KAAMA,EACNouD,MAAOA,EACPn2B,OAAQA,GAAUziB,EAClB8iG,gBAAiBA,KAGO,EAW5BG,EAAiBrqD,IAAU,IAADsqD,EAErB9d,EAAAA,WAUT,MAAMrhG,EAAUqhG,EAAAA,WAAiBqX,GAKjC,GAAIz5G,MAAMqJ,OAAOusD,IACf,MAAM,IAAI/0D,MAAO,iLAIK+0D,WAIxB,GAAkB,QAAlBsqD,EAAIn/G,EAAQ60D,UAAM,IAAAsqD,GAAdA,EAAgB14G,KAClB,OAAOzG,EAAQ60D,GAAOpuD,KAEtB,MAAM,IAAI3G,MACP,uMAIL,sCElFa,SAASwoG,EAAYp2E,EAAKzB,GACvC,YAD6C,IAANA,IAAAA,EAAU,IAC5CA,EAIDyB,IAAQzB,EACF,IAGNyB,EAAIpoB,WAAY,GAAE2mB,MACbyB,EAAI/xB,MAAMswB,EAAO7wB,QAGnBsyB,EAXEA,CAYX,qECZA,MAAMmvE,EAAQ+F,EAAQ,OAChBgY,EAAShY,EAAAA,OAAAA,EAEfxoG,EAAQygH,gBAAkBx9G,IAAyB,IAAxB,QAAEyI,EAAO,MAAE0H,GAAOnQ,EAC3C,MAAM,YAAE22G,GAAgBxmG,EAIxB,MAHsB,oBAAX3F,SACTA,OAAOizG,cAAgB9G,GAElBnX,EAAA5yE,cAAC2wF,EAAWptG,EAAQ1H,EAAiB,EAG9C,MAAM,UAAEuxE,GAAcurB,EAAQ,OAE9BxoG,EAAQ86G,cAAgB,KACtB79B,GAAW,EAGbj9E,EAAQ2jG,mBAAqBj/F,IAGtB,IAFLo/F,aAAa,SAAE5mB,GAAU,uBACzBw+B,GACDh3G,EACC,MAAMi8G,EAAkBjF,EAAuBx+B,GAa/C,OAAIA,EAASza,SAXW,CACtB,QACA,SACA,SACA,QACA,UACA,aACA,SACA,SAMyB51D,SAASqwE,EAASynB,SAASv5F,MAAM,KAAK,IAE/DqC,OAAOwH,SAAS,EAAG,IAGnB2rG,EAAAnzG,QAAOwH,SAAQzT,MAAAo/G,EAAA5N,EAAK2N,GAAmB,CAAC,EAAG,OANpC,EAID,IAADC,CAIK,4HCjDP,MAGMC,EAAkBlc,GAA6B,MAAjBA,EAAS,GAAaA,EAAY,IAAGA,IA8EnEmc,EAA2BA,CAACC,EAAaC,IAAkB7uG,IACtE,GAAI1E,OAAOqyG,mBAAoB,OAAO,EACtC,GAnFqC3tG,IAA0B,IAAjBA,EAAMkG,QAAgBlG,EAAMq3E,QAAUr3E,EAAMo3E,SAAWp3E,EAAMu3E,SAAWv3E,EAAMs3E,SAmFxHw3B,CAAwB9uG,GAAQ,OAAO,EAC3C,GAhF2CA,IAASA,EAAM8V,iBAgFtDi5F,CAA8B/uG,GAAQ,OAAO,EACjD,MAAMgvG,EAhFyBx0G,KAC/B,KAAOA,EAAKU,WAAYV,EAAOA,EAAKU,WAClC,GAAqC,MAAjCV,EAAKkzC,SAASnM,cAChB,OAAO/mC,EAGX,OAAO,IAAI,EA0EWy0G,CAAkBjvG,EAAMjJ,QAC9C,GAAqB,MAAjBi4G,EAAuB,OAAO,EAClC,IA5CkC,KALKE,EAiDTF,GA5CzB/5B,aAAc,cAKuB,IAnCGi6B,KACb,IAAlCA,EAAOj6B,aAAc,WAUJ,MAAjBi6B,EAAOn4G,QAKP,CAAE,QAAS,IAAG2D,SAASw0G,EAAOn4G,SAIX,YAAnBm4G,EAAOn4G,UAA0Bm4G,EAAOjxF,cAAcC,YAAY4uB,QAElEoiE,EAAOjxF,cAAcC,YAAY4uB,SAAWoiE,EAAOjxF,cAAcC,cAAmC,SAAnBgxF,EAAOn4G,UAAuBm4G,EAAOjxF,cAAcC,YAAYloB,KAEhJk5G,EAAOjxF,cAAcC,YAAYloB,MAAQk5G,EAAOjxF,cAAcC,aAW9DixF,CAAgCD,GAuCgB,OAAO,EAjDdA,MAqDvC,MAAMhxC,EAAcliE,SAAS0hB,cAAe,KAIhB,KAAxBsxF,EAAc9gB,OAChBhwB,EAAYgwB,KAAO8gB,EAAc9gB,MAE9B,sBAAsB5yF,QAAU0zG,EAAc9gB,gBAAgBkhB,oBACjElxC,EAAYgwB,KAAO8gB,EAAc9gB,KAAKmhB,SASxC,MAAMlhB,EAASnyF,SAAS0hB,cAAe,KAEvC,GADAywE,EAAOD,KAAO5yF,OAAOyvE,SAASmjB,MACmB,IA3DhBohB,EAACnhB,EAAQjwB,IAAgBiwB,EAAO9zB,WAAa6D,EAAY7D,UAC5F8zB,EAAOjhD,OAASgxB,EAAYhxB,KA0DtBoiE,CAAoBnhB,EAAQjwB,GAAwB,OAAO,EAG/D,MAAMqxC,EAAiB,IAAIvsE,OAAQ,IAAGwsE,KAAmBC,EAAAA,EAAAA,YAAY,SACrE,GA7DmCC,EAACxxC,EAAaqxC,KAagB,IAA/DA,EAAex0G,KAAK2zG,EAAgBxwC,EAAYs0B,aAKS,IAAzDt0B,EAAYs0B,SAASliC,OAjBQ,iCA4D3Bo/C,CAAsBxxC,EAAaqxC,GAAiB,OAAO,EAC/D,GAzCkCI,EAACxhB,EAAQjwB,IAAsC,KAAtBA,EAAYzrB,OAK/C,KAA1ByrB,EAAYs0B,UACZt0B,EAAYs0B,WAAarE,EAAOqE,UAmC1Bmd,CAAqBxhB,EAAQjwB,GAAc,OAAO,EACtD,GAAI2wC,EAAce,eAAgB,CAEhC,GADqB,IAAI5sE,OAAO6rE,EAAce,gBAC7B70G,KAAKmjE,EAAYs0B,UAChC,OAAO,CAEX,CACAxyF,EAAMD,iBAIN,MAAM8vG,EAAsBnB,EAAgBxwC,EAAYs0B,UAAUnuE,QAAQkrF,EAAiB,KAE3F,OADAX,EAAa,GAAEiB,IAAsB3xC,EAAY5N,SAAS4N,EAAYzrB,SAC/D,CAAK,EChIP,MAAMq9D,EAAgB,SAACjmF,EAAGglF,QAAa,IAAbA,IAAAA,EAAgB,CAAC,GDkInC,SAAUzhD,EAAMyhD,EAAeh+C,GAC5C,MAAMk/C,EAAepB,EAAyB99C,EAAIg+C,GAClDzhD,EAAK7tD,iBAAkB,QAAQwwG,EAEjC,CCrIEC,CAAW10G,OAAQuzG,GAAe3gB,KAChC0a,EAAAA,EAAAA,UAAS1a,EAAK,GAElB,oICNA,MAAM+hB,EAAoB,IAAIpgG,IAC9B,SAASqgG,EAAStjF,EAAIlV,GACpB,IAAIy4F,EAAQ,KACZ,OAAO,WACDA,GACF/qG,aAAa+qG,GACd,QAAAz7G,EAAA5F,UAAAD,OAHiBJ,EAAI,IAAAU,MAAAuF,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJnG,EAAImG,GAAA9F,UAAA8F,GAItBu7G,EAAQvuG,WAAUvS,WAAC,EAAD,CAACu9B,EAAIlV,GAAO/F,OAAKljB,GACrC,CACF,CACA,SAAS2hH,EAAcC,QAAa,IAAbA,IAAAA,EAAiB,aACtC,MAAMjiE,EAAM9yC,OACZ,SAASg1G,EAAS56G,GACZu6G,EAAkB7lE,IAAI10C,EAAKqP,QAG/BkrG,EAAkB7wG,IAAI1J,EAAKqP,MAoB/B,SAAkBxS,EAIfg+G,GAAY,IAJI,KACjBxrG,EAAI,MACJ/T,EAAK,GACLD,GACDwB,EACCg+G,EAAU7gH,KAAK,CACbsQ,MAAQ,kBACRwwG,qBAAsB,CACpBzrG,KAAMA,EAKNhU,KAIAC,MAAOsE,KAAKorB,MAAgB,QAAV3b,EAAyB,IAAR/T,EAAeA,KAGxD,CAvCIy/G,CAAU/6G,EAAM04C,EAAIiiE,IACtB,CACA,OAAO,gCAA0BrkF,MAAKl7B,IAI/B,IAJgC,OACrC4/G,EAAM,OACNC,EAAM,OACNC,GACD9/G,EACC,MAAM+/G,EAAeX,EAASI,EAAU,KAElCQ,EAAeR,EAEfS,EAAeb,EAASI,EAAU,KAGxCM,EAAOC,GAAc,GACrBF,EAAOG,GAAc,GACrBJ,EAAOK,GAAc,EAAK,GAE9B,CAsBO,SAASpI,EAAc9+E,EAAGglF,GAG7BjtG,YAAW,KACT,MAAMlM,EAAOm5G,EAAcwB,cAAgB/0G,OAAOuzG,EAAcwB,eAAiB/0G,OAAOi1G,UAClFlxG,EAAYwvG,EAAcmC,qBAAuBnC,EAAcmC,qBAAwB,sBAC7Ft7G,EAAKhG,KAAK,CACRsQ,MAAOX,GACP,GACD,GAEP,CACO,SAASyzF,EAAsBjpE,EAAGglF,GAEMA,EAAcoC,yBACzDb,EAAcvB,EAAcwB,cAEhC,2GCrEO,MAAM1H,EAAgB,SAAsB73G,EAEhD+9G,GAAgB,IAFiC,SAClD9jC,GACDj6E,CAWD,sCCdA,IAAIogH,EAAU7a,EAAQ,oICAtB,EAAevlG,IAAA,IAAC,SAAEoa,GAAUpa,EAAA,OAC1Bw/F,EAAAA,cAACqb,EAAAA,SAAQ,MACNp5G,IAAA,IAAC,SAAEw4E,GAAUx4E,EAAA,OACZ+9F,EAAAA,cAAC6gB,EAAAA,GAAkB,CAACpmC,SAAUA,EAAUqmC,aAAcvI,EAAAA,eACnD39F,EACkB,GAG1B,ECTM,MAAMmmG,EAAkBvgH,IAAA,IAAC,QAAEyI,GAASzI,EAAA,OAAKw/F,EAAAA,cAACghB,EAAI,KAAE/3G,EAAe,2ECiBtE,IAfqBzI,IAAkD,IAA/CupG,UAAWpI,EAAS,SAAElnB,KAAa98C,GAAMn9B,EAC/D,MAAM,KAACygH,EAAI,QAAEC,IAAW59G,EAAAA,EAAAA,YAAW69G,EAAAA,IAEnC,OAAKF,IAASC,GAAgC,QAArBD,aAAI,EAAJA,EAAMG,cAAwBF,IACrD5I,EAAAA,EAAAA,UAAS,QACF,MAGFtY,EAAAA,cAAC2B,EAAchkE,EAAQ,sCCXhC,MAAMwjF,WAAkBnhB,cAAoB,CAAC,GAE7C,uGCMA,MAVuB,CACrBxrB,OAAQ3/C,0CACRwsF,WAAYxsF,oBACZysF,YAAazsF,CAAAA,EAAY0sF,6BACzBvrF,UAAWnB,oBACX2sF,cAAe3sF,gCACf4sF,kBAAmB5sF,eACnBs6C,MAAOt6C,mECPT,IAGqB6sF,EAAK,WAMxB,SAAAA,EAAYC,GACV7kH,KAAK8kH,MAAQD,aAAY,EAAZA,EAAcE,MAC3B/kH,KAAKglH,eAAiBH,aAAY,EAAZA,EAAcI,cACpCjlH,KAAKklH,iBAAmBL,aAAY,EAAZA,EAAcM,gBACtCnlH,KAAKolH,oBAAsBP,aAAY,EAAZA,EAAcQ,mBACzCrlH,KAAKslH,sBAAwBT,aAAY,EAAZA,EAAcU,qBAC3CvlH,KAAKwlH,gBAAkBX,aAAY,EAAZA,EAAcY,eACrCzlH,KAAK0lH,kBAAoBb,aAAY,EAAZA,EAAcc,gBACzC,CAsEC,OApEDf,EAAAlkH,UAGA4tB,SAAA,WACE,MAAQ,GAAEtuB,KAAK2X,MACjB,GAEAiuG,EAAAA,EAAAA,GAAAhB,EAAA,EAAAzhH,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8kH,KACd,GAEA,CAAA3hH,IAAA,gBAAAmG,IAKA,WACE,OAAOtJ,KAAKglH,cACd,GAEA,CAAA7hH,IAAA,kBAAAmG,IAKA,WACE,OAAOtJ,KAAKklH,gBACd,GAEA,CAAA/hH,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAKolH,mBACd,GAEA,CAAAjiH,IAAA,uBAAAmG,IAKA,WACE,OAAOtJ,KAAKslH,qBACd,GAEA,CAAAniH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKwlH,eACd,GAEA,CAAAriH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK0lH,iBACd,KAACd,CAAA,CApFuB,GCALiB,EAAI,WAMvB,SAAAA,EAAYhB,GACV7kH,KAAK8lH,OAASjB,aAAY,EAAZA,EAAcjhH,MAC5B5D,KAAK+lH,QAAUlB,aAAY,EAAZA,EAAc90E,MAC/B,CAkBC,OAhBD61E,EAAAA,EAAAA,GAAAC,EAAA,EAAA1iH,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK8lH,MACd,GAEA,CAAA3iH,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAK+lH,OACd,KAACF,CAAA,CA3BsB,GCAJG,EAAS,WAM5B,SAAAA,EAAYC,GACVjmH,KAAKkmH,QAAUD,aAAa,EAAbA,EAAeE,UAC9BnmH,KAAKomH,gBAAkBH,aAAa,EAAbA,EAAeI,eACtCrmH,KAAKsmH,aAAeL,aAAa,EAAbA,EAAeM,UACrC,CAuDC,OArDDX,EAAAA,EAAAA,GAAAI,EAAA,EAAA7iH,IAAA,iBAAAmG,IASA,WACE,OAAOtJ,KAAKomH,eACd,GAEA,CAAAjjH,IAAA,cAAAmG,IAcA,WACE,OAAOtJ,KAAKsmH,YACd,GAEA,CAAAnjH,IAAA,SAAAmG,IAoBA,WACE,OAAOtJ,KAAKkmH,OACd,KAACF,CAAA,CAjE2B,kBCE9B,IASqBQ,EAAM,WAQzB,SAAAA,EAAYP,GACVjmH,KAAKymH,YAAcR,aAAa,EAAbA,EAAetiH,GAClC3D,KAAK8kH,MAAQmB,aAAa,EAAbA,EAAetuG,KAC5B3X,KAAK0mH,WAAaT,aAAa,EAAbA,EAAeU,UACjC3mH,KAAK6rC,OAASo6E,aAAa,EAAbA,EAAe1lG,MAC7BvgB,KAAK4mH,SAAWX,aAAa,EAAbA,EAAeY,QAC/B7mH,KAAK8mH,MAAQb,aAAa,EAAbA,EAAec,KAC5B/mH,KAAKgnH,SAAWf,aAAa,EAAbA,EAAegB,QAC/BjnH,KAAKknH,OAASjB,aAAa,EAAbA,EAAekB,MAC7BnnH,KAAKonH,aAAenB,aAAa,EAAbA,EAAeoB,YACnCrnH,KAAKsnH,qBAAuBrB,aAAa,EAAbA,EAAesB,oBAC3CvnH,KAAKwnH,yBAA2BvB,aAAa,EAAbA,EAAewB,wBAC/CznH,KAAK0nH,mBAAqBzB,aAAa,EAAbA,EAAe0B,kBAGzC3nH,KAAK4nH,cAAgB3B,aAAa,EAAbA,EAAe4B,aACpC7nH,KAAK8nH,gBAAkB7B,aAAa,EAAbA,EAAe8B,eACtC/nH,KAAKgoH,gBAAkB/B,aAAa,EAAbA,EAAegC,eACtCjoH,KAAKkoH,gBAAkBjC,aAAa,EAAbA,EAAekC,eACtCnoH,KAAKooH,qBAAuBnC,aAAa,EAAbA,EAAeoC,oBAG3CroH,KAAKsoH,YAAcrC,aAAa,EAAbA,EAAesC,WAClCvoH,KAAKwoH,uBAAyBvC,aAAa,EAAbA,EAAewC,sBAC7CzoH,KAAK0oH,kBAAoBzC,aAAa,EAAbA,EAAe0C,iBACxC3oH,KAAK4oH,yBAA2B3C,aAAa,EAAbA,EAAe4C,wBAC/C7oH,KAAK8oH,YAAc7C,aAAa,EAAbA,EAAe8C,WAGlC/oH,KAAKgpH,cAAgB/C,aAAa,EAAbA,EAAegD,aACpCjpH,KAAKkpH,eAAiBjD,aAAa,EAAbA,EAAekD,cACrCnpH,KAAKopH,eAAiBnD,aAAa,EAAbA,EAAeoD,cACrCrpH,KAAKspH,mBAAqBrD,aAAa,EAAbA,EAAesD,kBACzCvpH,KAAKwpH,uBAAyBvD,aAAa,EAAbA,EAAewD,sBAC7CzpH,KAAK0pH,uBAAyBzD,aAAa,EAAbA,EAAe0D,sBAC7C3pH,KAAK4pH,gBAAkB3D,aAAa,EAAbA,EAAe4D,eACtC7pH,KAAK8pH,oBAAsB7D,aAAa,EAAbA,EAAe8D,mBAC1C/pH,KAAKgqH,oBAAsB/D,aAAa,EAAbA,EAAegE,mBAC1CjqH,KAAKkqH,gBAAkBjE,aAAa,EAAbA,EAAekE,eACtCnqH,KAAKoqH,mBAAqBnE,aAAa,EAAbA,EAAeoE,kBACzCrqH,KAAKsqH,uBAAyBrE,aAAa,EAAbA,EAAesE,sBAC7CvqH,KAAKwqH,uBAAyBvE,aAAa,EAAbA,EAAewE,sBAC7CzqH,KAAK0qH,sBAAwBzE,aAAa,EAAbA,EAAe0E,qBAC5C3qH,KAAK4qH,gBAAkB3E,SAAAA,EAAe4E,eAAiB,IAAIhF,EAAKI,aAAa,EAAbA,EAAe4E,gBAAkB,KACjG7qH,KAAK8qH,yBAA2B7E,aAAa,EAAbA,EAAe8E,wBAG/C/qH,KAAKgrH,6BAA+B/E,SAAAA,EAAegF,4BAA8B,IAAIC,EAAAA,EAAoBjF,EAAcgF,6BAA+B,KACtJjrH,KAAKmrH,0BAA4BlF,SAAAA,EAAemF,yBAA2B,IAAIF,EAAAA,EAAoBjF,EAAcmF,0BAA4B,KAC7IprH,KAAKqrH,6BAA+BpF,SAAAA,EAAeqF,4BAA8B,IAAIJ,EAAAA,EAAoBjF,EAAcqF,6BAA+B,KACtJtrH,KAAKurH,0BAA4BtF,SAAAA,EAAeuF,yBAA2B,IAAIN,EAAAA,EAAoBjF,EAAcuF,0BAA4B,KAC7IxrH,KAAKyrH,+BAAiCxF,SAAAA,EAAeyF,8BAAgC,IAAIR,EAAAA,EAAoBjF,EAAcyF,+BAAiC,KAG5J1rH,KAAK2rH,0BAA4B1F,SAAAA,EAAe2F,yBAA2B,IAAI/F,EAAKI,aAAa,EAAbA,EAAe2F,0BAA4B,KAC/H5rH,KAAK6rH,kBAAoB5F,SAAAA,EAAe6F,iBAAmB,IAAIjG,EAAKI,aAAa,EAAbA,EAAe6F,kBAAoB,KACvG9rH,KAAK+rH,cAAgB9F,SAAAA,EAAe+F,aAAe,IAAInG,EAAKI,aAAa,EAAbA,EAAe+F,cAAgB,KAC3FhsH,KAAKisH,gBAAkBhG,SAAAA,EAAeiG,eAAiB,IAAIrG,EAAKI,aAAa,EAAbA,EAAeiG,gBAAkB,KACjGlsH,KAAKmsH,gBAAkBlG,SAAAA,EAAemG,eAAiB,IAAIvG,EAAKI,aAAa,EAAbA,EAAemG,gBAAkB,KACjGpsH,KAAKqsH,mBAAqBpG,SAAAA,EAAeqG,kBAAoB,IAAIzG,EAAKI,aAAa,EAAbA,EAAeqG,mBAAqB,KAC1GtsH,KAAKusH,qBAAuBtG,SAAAA,EAAeuG,oBAAsB,IAAI3G,EAAKI,aAAa,EAAbA,EAAeuG,qBAAuB,KAChHxsH,KAAKysH,yBAA2BxG,SAAAA,EAAeyG,wBAA0B,IAAI7G,EAAKI,aAAa,EAAbA,EAAeyG,yBAA2B,KAC5H1sH,KAAK2sH,oBAAsB1G,SAAAA,EAAe2G,mBAAqB,IAAI/G,EAAKI,aAAa,EAAbA,EAAe2G,oBAAsB,KAC7G5sH,KAAK6sH,6BAA+B5G,aAAa,EAAbA,EAAe6G,4BACnD9sH,KAAK+sH,wBAA0B9G,aAAa,EAAbA,EAAe+G,uBAG9ChtH,KAAKitH,wBAA0BhH,aAAa,EAAbA,EAAeiH,uBAC9CltH,KAAKmtH,cAAgBlH,aAAa,EAAbA,EAAemH,aACpCptH,KAAKqtH,wBAA0BpH,aAAa,EAAbA,EAAeqH,uBAC9CttH,KAAKutH,2BAA6BtH,aAAa,EAAbA,EAAeuH,0BACjDxtH,KAAKytH,8BAAgCxH,aAAa,EAAbA,EAAeyH,6BACpD1tH,KAAK2tH,uBAAyB1H,aAAa,EAAbA,EAAe2H,sBAC7C5tH,KAAK6tH,qBAAuB5H,aAAa,EAAbA,EAAe6H,oBAC3C9tH,KAAK+tH,2BAA6B9H,aAAa,EAAbA,EAAe+H,0BACjDhuH,KAAKiuH,kBAAoBhI,aAAa,EAAbA,EAAeiI,iBACxCluH,KAAKmuH,kBAAoBlI,aAAa,EAAbA,EAAemI,iBACxCpuH,KAAKquH,kBAAoBpI,aAAa,EAAbA,EAAeqI,iBACxCtuH,KAAKuuH,4BAA8BtI,aAAa,EAAbA,EAAeuI,2BAClDxuH,KAAKyuH,kBAAoBxI,aAAa,EAAbA,EAAeyI,iBACxC1uH,KAAK2uH,kBAAoB1I,aAAa,EAAbA,EAAe2I,iBACxC5uH,KAAK6uH,kBAAoB5I,aAAa,EAAbA,EAAe6I,iBAGpC/sH,MAAMgpB,QAAQk7F,EAAc8I,YAAc9I,EAAc8I,UAAUttH,OAAS,GAC7EzB,KAAKgvH,WAAa,GAClB/I,EAAc8I,UAAUl9G,SAASo9G,IAC/B,MAAMC,EAAQ,IAAItK,EAAMqK,GACxBjvH,KAAKgvH,WAAW1sH,KAAK4sH,EAAM,KAG7BlvH,KAAKgvH,WAAa,KAIpBhvH,KAAKmvH,MAAQlJ,aAAa,EAAbA,EAAemJ,KAC5BpvH,KAAKqvH,UAAYpJ,aAAa,EAAbA,EAAeqJ,SAGhCtvH,KAAKkmH,QAAUD,SAAAA,EAAesJ,OAAS,IAAIvJ,EAAUC,aAAa,EAAbA,EAAesJ,QAAU,KAG9EvvH,KAAKwvH,wBAA0BvJ,aAAa,EAAbA,EAAewJ,uBAC9CzvH,KAAK0vH,mBAAqBzJ,aAAa,EAAbA,EAAe0J,iBAC3C,CAutBC,OArtBDnJ,EAAA9lH,UA4tBAkvH,iBAAA,WACE,OAAO5vH,KAAK+nH,iBAAmB/nH,KAAK6nH,eAAiB7nH,KAAKioH,cAC5D,GAACrC,EAAAA,EAAAA,GAAAY,EAAA,EAAArjH,IAAA,oBAAAmG,IA/sBD,WACE,OAAOtJ,KAAK0vH,kBACd,GAEA,CAAAvsH,IAAA,yBAAAmG,IAmBA,WACE,OAAOtJ,KAAKwvH,uBACd,GAEA,CAAArsH,IAAA,gCAAAmG,IAKA,WACE,OAAOtJ,KAAKyrH,8BACd,GAEA,CAAAtoH,IAAA,2BAAAmG,IAKA,WACE,OAAOtJ,KAAKurH,yBACd,GAEA,CAAApoH,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKooH,oBACd,GAEA,CAAAjlH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKkoH,eACd,GAEA,CAAA/kH,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAKgvH,UACd,GAEA,CAAA7rH,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKsnH,oBACd,GAEA,CAAAnkH,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAKmtH,aACd,GAEA,CAAAhqH,IAAA,iBAAAmG,IAQA,WACE,OAAOtJ,KAAKisH,eACd,GAEA,CAAA9oH,IAAA,8BAAAmG,IAKA,WACE,OAAOtJ,KAAKgrH,4BACd,GAEA,CAAA7nH,IAAA,2BAAAmG,IAKA,WACE,OAAOtJ,KAAKmrH,yBACd,GAEA,CAAAhoH,IAAA,8BAAAmG,IAKA,WACE,OAAOtJ,KAAKqrH,4BACd,GAEA,CAAAloH,IAAA,QAAAmG,IASA,WACE,OAAOtJ,KAAKknH,MACd,GAEA,CAAA/jH,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAKkmH,OACd,GAEA,CAAA/iH,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAKmvH,KACd,GAEA,CAAAhsH,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAKqvH,SACd,GAEA,CAAAlsH,IAAA,KAAAmG,IAOA,WACE,OAAOtJ,KAAKymH,WACd,GAEA,CAAAtjH,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKymH,WACd,GAEA,CAAAtjH,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8kH,KACd,GAEA,CAAA3hH,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAK0mH,UACd,GAEA,CAAAvjH,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK6rC,MACd,GAEA,CAAA1oC,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAK4mH,QACd,GAEA,CAAAzjH,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8mH,KACd,GAEA,CAAA3jH,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAKgnH,QACd,GAEA,CAAA7jH,IAAA,cAAAmG,IAOA,WACE,OAAOtJ,KAAKonH,YACd,GAEA,CAAAjkH,IAAA,0BAAAmG,IAKA,WACE,OAAOtJ,KAAKwnH,wBACd,GAEA,CAAArkH,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAK0nH,kBACd,GAEA,CAAAvkH,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKsoH,WACd,GAEA,CAAAnlH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAKwoH,sBACd,GAEA,CAAArlH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK0oH,iBACd,GAEA,CAAAvlH,IAAA,0BAAAmG,IAKA,WACE,OAAOtJ,KAAK4oH,wBACd,GAEA,CAAAzlH,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAK8oH,WACd,GAEA,CAAA3lH,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAKgpH,aACd,GAEA,CAAA7lH,IAAA,gBAAAmG,IAKA,WACE,OAAOtJ,KAAKkpH,cACd,GAEA,CAAA/lH,IAAA,gBAAAmG,IAQA,WACE,OAAOtJ,KAAKopH,cACd,GAEA,CAAAjmH,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAKspH,kBACd,GAEA,CAAAnmH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAKwpH,sBACd,GAEA,CAAArmH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAK0pH,sBACd,GAEA,CAAAvmH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAK4pH,eACd,GAEA,CAAAzmH,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAK8pH,mBACd,GAEA,CAAA3mH,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAKgqH,mBACd,GAEA,CAAA7mH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKkqH,eACd,GAEA,CAAA/mH,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAKoqH,kBACd,GAEA,CAAAjnH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAKsqH,sBACd,GAEA,CAAAnnH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAKwqH,sBACd,GAEA,CAAArnH,IAAA,uBAAAmG,IAKA,WACE,OAAOtJ,KAAK0qH,qBACd,GAEA,CAAAvnH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAK4qH,eACd,GAEA,CAAAznH,IAAA,0BAAAmG,IAKA,WACE,OAAOtJ,KAAK8qH,wBACd,GAEA,CAAA3nH,IAAA,2BAAAmG,IAKA,WACE,OAAOtJ,KAAK2rH,yBACd,GAEA,CAAAxoH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK6rH,iBACd,GAEA,CAAA1oH,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAK+rH,aACd,GAEA,CAAA5oH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKmsH,eACd,GAEA,CAAAhpH,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAKqsH,kBACd,GAEA,CAAAlpH,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKusH,oBACd,GAEA,CAAAppH,IAAA,0BAAAmG,IAKA,WACE,OAAOtJ,KAAKysH,wBACd,GAEA,CAAAtpH,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAK2sH,mBACd,GAEA,CAAAxpH,IAAA,8BAAAmG,IAUA,WACE,OAAOtJ,KAAK6sH,4BACd,GAEA,CAAA1pH,IAAA,yBAAAmG,IAKA,WACE,OAAOtJ,KAAK+sH,uBACd,GAEA,CAAA5pH,IAAA,yBAAAmG,IAKA,WACE,OAAOtJ,KAAKitH,uBACd,GAEA,CAAA9pH,IAAA,yBAAAmG,IAKA,WACE,OAAOtJ,KAAKqtH,uBACd,GAEA,CAAAlqH,IAAA,4BAAAmG,IAKA,WACE,OAAOtJ,KAAKutH,0BACd,GAEA,CAAApqH,IAAA,+BAAAmG,IAKA,WACE,OAAOtJ,KAAKytH,6BACd,GAEA,CAAAtqH,IAAA,wBAAAmG,IAKA,WACE,OAAOtJ,KAAK2tH,sBACd,GAEA,CAAAxqH,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAK6tH,oBACd,GAEA,CAAA1qH,IAAA,4BAAAmG,IAKA,WACE,OAAOtJ,KAAK+tH,0BACd,GAEA,CAAA5qH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKiuH,iBACd,GAEA,CAAA9qH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKmuH,iBACd,GAEA,CAAAhrH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKquH,iBACd,GAEA,CAAAlrH,IAAA,6BAAAmG,IAKA,WACE,OAAOtJ,KAAKuuH,2BACd,GAEA,CAAAprH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKyuH,iBACd,GAEA,CAAAtrH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK2uH,iBACd,GAEA,CAAAxrH,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK6uH,iBACd,GAEA,CAAA1rH,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAK4nH,aACd,GAEA,CAAAzkH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAK8nH,eACd,GAEA,CAAA3kH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKgoH,eACd,KAACxB,CAAA,CAv0BwB,GCXNqJ,EAAU,WAQ7B,SAAAA,EAAY5J,GAAgB,IAAD6J,EAAAC,EACzB/vH,KAAKgwH,SAAoC,QAA5BF,EAAG7J,aAAa,EAAbA,EAAegK,kBAAU,IAAAH,EAAAA,EAAI,GAC7C9vH,KAAKkwH,WAAqC,QAA3BH,EAAG9J,aAAa,EAAbA,EAAekK,iBAAS,IAAAJ,EAAAA,EAAI,EAChD,CAmCC,OAjCDF,EAAAnvH,UA4CA0vH,cAAA,SAAcC,GACZ,IAAKrwH,KAAKmwH,UAAU7iH,SAAS+iH,GAC3B,OAAO,KAET,MAAM1yC,EAAW39E,KAAKmwH,UAAUxjH,QAAQ0jH,GACxC,OAAOrwH,KAAKswH,QAAQ3yC,EACtB,GAACioC,EAAAA,EAAAA,GAAAiK,EAAA,EAAA1sH,IAAA,UAAAmG,IA5BD,WACE,OAAOtJ,KAAKgwH,QACd,GAEA,CAAA7sH,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAKkwH,UACd,KAACL,CAAA,CA9C4B,GCEVU,EAAK,WAuHxB,SAAAA,EAAYtK,GACVjmH,KAAK8kH,MAAQmB,aAAa,EAAbA,EAAetuG,KAC5B3X,KAAKwwH,UAAYvK,aAAa,EAAbA,EAAewK,SAChCzwH,KAAK0wH,WAAazK,aAAa,EAAbA,EAAe0K,UACjC3wH,KAAK4wH,IAAM3K,aAAa,EAAbA,EAAetiH,GAC1B3D,KAAK6wH,UAAY5K,aAAa,EAAbA,EAAe6K,SAChC9wH,KAAK+wH,QAAU9K,aAAa,EAAbA,EAAe+K,OAC9BhxH,KAAKixH,WAAahL,aAAa,EAAbA,EAAeiL,UACjClxH,KAAKmxH,WAAalL,aAAa,EAAbA,EAAemL,UACjCpxH,KAAKqxH,gBAAkBpL,aAAa,EAAbA,EAAeqL,eACtCtxH,KAAKuxH,UAAYtL,aAAa,EAAbA,EAAeuL,SAChCxxH,KAAKyxH,cAAgBxL,aAAa,EAAbA,EAAeyL,aACpC1xH,KAAKgwH,SAAW/J,SAAAA,EAAeqK,QAAU,IAAIT,EAAW5J,aAAa,EAAbA,EAAeqK,SAAW,IACpF,CArBC,OAqBA1K,EAAAA,EAAAA,GAAA2K,EAAA,EAAAptH,IAAA,YAAAmG,IA7HD,WACE,OAAOtJ,KAAKixH,UACd,GAEA,CAAA9tH,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAK+wH,OACd,GAEA,CAAA5tH,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAKyxH,aACd,GAEA,CAAAtuH,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAKuxH,SACd,GAEA,CAAApuH,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAKqxH,eACd,GAEA,CAAAluH,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAKmxH,UACd,GAEA,CAAAhuH,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAK6wH,SACd,GAEA,CAAA1tH,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAKwwH,SACd,GAEA,CAAArtH,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAK0wH,UACd,GAEA,CAAAvtH,IAAA,KAAAmG,IAKA,WACE,OAAOtJ,KAAK4wH,GACd,GAEA,CAAAztH,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8kH,KACd,GAEA,CAAA3hH,IAAA,UAAAmG,IAQA,WACE,OAAOtJ,KAAKgwH,QACd,KAACO,CAAA,CA/GuB,gFCmB1B,SAASoB,EAAmBC,EAAYxqH,GACpC,QAAgBjH,IAAZiH,EACA,MAAO,CACHosD,OAAO,GAGf,QAA4BrzD,IAAxBiH,EAAQyqH,kBAA+C1xH,IAAlBiH,EAAQosD,MAC7C,MAAM,IAAI,KAAe,mBAAoB,sCAAsCo+D,2DAGvF,OAAOxqH,CACX,CAmBA,SAAS0qH,IACL,GAA0B,oBAAfC,WACP,MAAM,IAAI,KAAe,gBAAiB,qDAElD,CAEA,SAASC,IACL,KAAK,UACD,MAAM,IAAI,KAAe,gBAAiB,0DAElD,CAEA,MAAM,EACF,WAAA9gH,CAAYyuB,GACR3/B,KAAK2/B,UAAYA,CACrB,CACA,uBAAOsyF,CAAiB79F,GAEpB,OADA49F,IACO,IAAI,EAAK,KAAMC,iBAAiB79F,GAC3C,CACA,qBAAO89F,CAAe7mG,GAElB,OADAymG,IACO,IAAI,EAAK,KAAMI,eAAe7mG,GACzC,CACA,QAAA8mG,GAEI,OADAH,IACOhyH,KAAK2/B,UAAUwyF,UAC1B,CACA,YAAAC,GAEI,OADAN,IACO9xH,KAAK2/B,UAAUyyF,cAC1B,CACA,OAAAC,CAAQtpD,GACJ,OAAO/oE,KAAK2/B,UAAU0yF,QAAQtpD,EAAMppC,UACxC,CACA,QAAArR,GACI,MAAO,gBAAkBtuB,KAAKmyH,WAAa,GAC/C,EAmBJ,SAASG,EAAkB11F,GACvB,OAMJ,SAA8BA,EAAKsC,GAC/B,GAAmB,iBAARtC,GAA4B,OAARA,EAC3B,OAAO,EAEX,MAAMpK,EAASoK,EACf,IAAK,MAAMuC,KAAUD,EACjB,GAAIC,KAAU3M,GAAoC,mBAAnBA,EAAO2M,GAClC,OAAO,EAGf,OAAO,CACX,CAjBWC,CAAqBxC,EAAK,CAAC,OAAQ,QAAS,YACvD,CAqCA,MAAM21F,EACF,0BAAAC,CAA2BC,EAAWC,GAClC,OAAO,QAA2BD,EAAU9yF,UAAW,CAAE+yF,kBAC7D,CACA,kCAAAC,CAAmCF,GAC/B,OAAO,QAAmCA,EAAU9yF,UACxD,CACA,yBAAAizF,CAA0BH,GACtB,OAAO,QAA0BA,EAAU9yF,UAC/C,EAMJ,MAAMkzF,EACF,WAAA3hH,CAAY4hH,EAAiBnzF,EAAWozF,GACpC/yH,KAAK2/B,UAAYA,EACjB3/B,KAAK+yH,qBAAuBA,EAC5B/yH,KAAKgzH,SAAW,CACZhyG,OAAQ,IAAMhhB,KAAKizH,aAEjBH,aAA2B,OAC7B9yH,KAAKkzH,WAAaJ,EAE1B,CACA,eAAIK,GACA,OAAOnzH,KAAK2/B,UAAUwzF,WAC1B,CACA,QAAAC,CAASC,GACL,MAAMC,EAAkBtzH,KAAK2/B,UAAU4zF,eAClCF,EAAgB7/D,OACjB8/D,EAAgBxzE,OAASuzE,EAAgBvzE,OACzC,QAAS,6GAGTuzE,EAAgB7/D,cAChB6/D,EAAkB1rH,OAAO8xB,OAAO9xB,OAAO8xB,OAAO,CAAC,EAAG65F,GAAkBD,IAE7C7/D,MAE3BxzD,KAAK2/B,UAAU6zF,aAAaH,EAChC,CACA,WAAAI,CAAY3zE,EAAM4zE,EAAMtsH,EAAU,CAAC,IAC/B,QAAyBpH,KAAK2/B,UAAWmgB,EAAM4zE,EAAMtsH,EACzD,CACA,aAAAusH,GACI,OAAO,QAAc3zH,KAAK2/B,UAC9B,CACA,cAAAi0F,GACI,OAAO,QAAe5zH,KAAK2/B,UAC/B,CACA,iBAAAk0F,CAAkBT,GACd,IAAIU,GAAkB,EAClBC,GAA6B,EAMjC,OALIX,IACAU,IAAoBV,EAASU,gBAC7BC,IAA+BX,EAASW,4BACxC,QAA2B,kBAAmBD,EAAiB,6BAA8BC,IAE1FD,EACD9zH,KAAK+yH,qBAAqBJ,mCAAmC3yH,MAC7DA,KAAK+yH,qBAAqBP,2BAA2BxyH,KAAM+zH,EACrE,CACA,gBAAAC,GACI,OAAOh0H,KAAK+yH,qBAAqBH,0BAA0B5yH,KAC/D,CACA,SAAAizH,GAKI,OAJIjzH,KAAKkzH,aACLlzH,KAAKkzH,WAAWe,uBAAuB,oBACvCj0H,KAAKkzH,WAAWe,uBAAuB,cAEpCj0H,KAAK2/B,UAAUu0F,SAC1B,CACA,oBAAAC,GACI,OAAO,QAAqBn0H,KAAK2/B,UACrC,CACA,iBAAAy0F,CAAkB/zH,GACd,OAAO,QAAkBL,KAAK2/B,UAAWt/B,EAC7C,CACA,OAAIg0H,GACA,IAAKr0H,KAAKkzH,WACN,MAAM,IAAI,KAAe,sBAAuB,gFAGpD,OAAOlzH,KAAKkzH,UAChB,CACA,UAAA9pD,CAAWkrD,GACP,IACI,OAAO,IAAIC,EAAoBv0H,MAAM,QAAWA,KAAK2/B,UAAW20F,GACpE,CACA,MAAOn9F,GACH,MAAMq9F,EAAoBr9F,EAAG,eAAgB,yBACjD,CACJ,CACA,GAAAo4D,CAAI+kC,GACA,IACI,OAAO,IAAIG,EAAkBz0H,MAAM,QAAIA,KAAK2/B,UAAW20F,GAC3D,CACA,MAAOn9F,GACH,MAAMq9F,EAAoBr9F,EAAG,QAAS,kBAC1C,CACJ,CACA,eAAAu9F,CAAgBC,GACZ,IACI,OAAO,IAAIC,EAAM50H,MAAM,QAAgBA,KAAK2/B,UAAWg1F,GAC3D,CACA,MAAOx9F,GACH,MAAMq9F,EAAoBr9F,EAAG,oBAAqB,8BACtD,CACJ,CACA,cAAA09F,CAAeC,GACX,OAAO,QAAe90H,KAAK2/B,WAAWo1F,GAAeD,EAAe,IAAIE,EAAYh1H,KAAM+0H,KAC9F,CACA,KAAAnlD,GAEI,OADA,QAA0B5vE,KAAK2/B,WACxB,IAAIs1F,EAAW,IAAI,KAAaj1H,KAAK2/B,WAAWu1F,IAAa,QAAal1H,KAAK2/B,UAAWu1F,KACrG,CACA,UAAAC,CAAWC,GACP,OAAO,QAAWp1H,KAAK2/B,UAAWy1F,EACtC,CACA,UAAAC,CAAW19G,GACP,OAAO,QAAW3X,KAAK2/B,UAAWhoB,GAAMinB,MAAK02F,GACpCA,EAGE,IAAIV,EAAM50H,KAGjBs1H,GALW,MAOnB,EAEJ,MAAMC,UAAuB,KACzB,WAAArkH,CAAYuhH,GACR75G,QACA5Y,KAAKyyH,UAAYA,CACrB,CACA,YAAA+C,CAAax/F,GACT,OAAO,IAAI,EAAK,IAAI,KAAMA,GAC9B,CACA,gBAAAy/F,CAAiB99G,GACb,MAAMxU,EAAMnD,KAAK01H,mBAAmB/9G,EAAM3X,KAAKyyH,UAAUU,aACzD,OAAOsB,EAAkBkB,OAAOxyH,EAAKnD,KAAKyyH,UAA4B,KAC1E,EAQJ,MAAMuC,EACF,WAAA9jH,CAAY0kH,EAAYj2F,GACpB3/B,KAAK41H,WAAaA,EAClB51H,KAAK2/B,UAAYA,EACjB3/B,KAAK61H,gBAAkB,IAAIN,EAAeK,EAC9C,CACA,GAAAtsH,CAAIwsH,GACA,MAAM1lG,EAAM2lG,EAAcD,GAC1B,OAAO91H,KAAK2/B,UACPr2B,IAAI8mB,GACJwO,MAAKpD,GAAU,IAAIw6F,EAAiBh2H,KAAK41H,WAAY,IAAI,KAAmB51H,KAAK41H,WAAWj2F,UAAW3/B,KAAK61H,gBAAiBr6F,EAAOh0B,KAAMg0B,EAAOy6F,UAAWz6F,EAAO06F,SAAU9lG,EAAI+lG,aAC1L,CACA,GAAAt1G,CAAIi1G,EAAaxtH,EAAMlB,GACnB,MAAMgpB,EAAM2lG,EAAcD,GAQ1B,OAPI1uH,GACAuqH,EAAmB,kBAAmBvqH,GACtCpH,KAAK2/B,UAAU9e,IAAIuP,EAAK9nB,EAAMlB,IAG9BpH,KAAK2/B,UAAU9e,IAAIuP,EAAK9nB,GAErBtI,IACX,CACA,MAAA++C,CAAO+2E,EAAaM,EAAaxyH,KAAUyyH,GACvC,MAAMjmG,EAAM2lG,EAAcD,GAO1B,OANyB,IAArBp0H,UAAUD,OACVzB,KAAK2/B,UAAUof,OAAO3uB,EAAKgmG,GAG3Bp2H,KAAK2/B,UAAUof,OAAO3uB,EAAKgmG,EAAaxyH,KAAUyyH,GAE/Cr2H,IACX,CACA,OAAO81H,GACH,MAAM1lG,EAAM2lG,EAAcD,GAE1B,OADA91H,KAAK2/B,UAAU3e,OAAOoP,GACfpwB,IACX,EAEJ,MAAMi1H,EACF,WAAA/jH,CAAYyuB,GACR3/B,KAAK2/B,UAAYA,CACrB,CACA,GAAA9e,CAAIi1G,EAAaxtH,EAAMlB,GACnB,MAAMgpB,EAAM2lG,EAAcD,GAQ1B,OAPI1uH,GACAuqH,EAAmB,iBAAkBvqH,GACrCpH,KAAK2/B,UAAU9e,IAAIuP,EAAK9nB,EAAMlB,IAG9BpH,KAAK2/B,UAAU9e,IAAIuP,EAAK9nB,GAErBtI,IACX,CACA,MAAA++C,CAAO+2E,EAAaM,EAAaxyH,KAAUyyH,GACvC,MAAMjmG,EAAM2lG,EAAcD,GAO1B,OANyB,IAArBp0H,UAAUD,OACVzB,KAAK2/B,UAAUof,OAAO3uB,EAAKgmG,GAG3Bp2H,KAAK2/B,UAAUof,OAAO3uB,EAAKgmG,EAAaxyH,KAAUyyH,GAE/Cr2H,IACX,CACA,OAAO81H,GACH,MAAM1lG,EAAM2lG,EAAcD,GAE1B,OADA91H,KAAK2/B,UAAU3e,OAAOoP,GACfpwB,IACX,CACA,MAAAs2H,GACI,OAAOt2H,KAAK2/B,UAAU22F,QAC1B,EAOJ,MAAMC,EACF,WAAArlH,CAAY0kH,EAAYC,EAAiBl2F,GACrC3/B,KAAK41H,WAAaA,EAClB51H,KAAK61H,gBAAkBA,EACvB71H,KAAK2/B,UAAYA,CACrB,CACA,aAAA62F,CAAcC,EAAUrvH,GACpB,MAAMsvH,EAAc,IAAI,KAAwB12H,KAAK41H,WAAWj2F,UAAW3/B,KAAK61H,gBAAiBY,EAASjvH,KAAMivH,EAASR,UAAWQ,EAASP,SAC5H,MACjB,OAAOl2H,KAAK2/B,UAAU62F,cAAc,IAAIG,EAAsB32H,KAAK41H,WAAYc,GAActvH,QAAyCA,EAAU,CAAC,EACrJ,CACA,WAAAwvH,CAAYC,EAAazvH,GACrB,OAAKA,EAIMpH,KAAK2/B,UAAUi3F,YAAYC,EAAazvH,GAHxCpH,KAAK2/B,UAAUi3F,YAAYC,EAK1C,CAIA,kBAAOC,CAAYrE,EAAW0D,GAC1B,MAAMY,EAA0BR,EAAuBS,UACvD,IAAIC,EAA8BF,EAAwBztH,IAAImpH,GACzDwE,IACDA,EAA8B,IAAIvzB,QAClCqzB,EAAwBl2G,IAAI4xG,EAAWwE,IAE3C,IAAIjhF,EAAWihF,EAA4B3tH,IAAI6sH,GAK/C,OAJKngF,IACDA,EAAW,IAAIugF,EAAuB9D,EAAW,IAAI8C,EAAe9C,GAAY0D,GAChFc,EAA4Bp2G,IAAIs1G,EAAWngF,IAExCA,CACX,EAEJugF,EAAuBS,UAAY,IAAItzB,QAIvC,MAAM+wB,EACF,WAAAvjH,CAAYuhH,EAAW9yF,GACnB3/B,KAAKyyH,UAAYA,EACjBzyH,KAAK2/B,UAAYA,EACjB3/B,KAAK61H,gBAAkB,IAAIN,EAAe9C,EAC9C,CACA,cAAOyE,CAAQ9nF,EAAMqjF,EAAW0D,GAC5B,GAAI/mF,EAAK3tC,OAAS,GAAM,EACpB,MAAM,IAAI,KAAe,mBAErB,6FAAG2tC,EAAK+nF,yBAAyB/nF,EAAK3tC,UAE9C,OAAO,IAAIgzH,EAAkBhC,EAAW,IAAI,KAAoBA,EAAU9yF,UAAWw2F,EAAW,IAAI,KAAa/mF,IACrH,CACA,aAAOumF,CAAOxyH,EAAKsvH,EAAW0D,GAC1B,OAAO,IAAI1B,EAAkBhC,EAAW,IAAI,KAAoBA,EAAU9yF,UAAWw2F,EAAWhzH,GACpG,CACA,MAAIQ,GACA,OAAO3D,KAAK2/B,UAAUh8B,EAC1B,CACA,UAAI+7C,GACA,OAAO,IAAI60E,EAAoBv0H,KAAKyyH,UAAWzyH,KAAK2/B,UAAU+f,OAClE,CACA,QAAItQ,GACA,OAAOpvC,KAAK2/B,UAAUyP,IAC1B,CACA,UAAAg6B,CAAWkrD,GACP,IACI,OAAO,IAAIC,EAAoBv0H,KAAKyyH,WAAW,QAAWzyH,KAAK2/B,UAAW20F,GAC9E,CACA,MAAOn9F,GACH,MAAMq9F,EAAoBr9F,EAAG,eAAgB,iCACjD,CACJ,CACA,OAAAk7F,CAAQtpD,GAEJ,OADAA,GAAQ,QAAmBA,cACJ,OAGhB,QAAS/oE,KAAK2/B,UAAWopC,EACpC,CACA,GAAAloD,CAAIjd,EAAOwD,GACPA,EAAUuqH,EAAmB,wBAAyBvqH,GACtD,IACI,OAAIA,GACO,QAAOpH,KAAK2/B,UAAW/7B,EAAOwD,IAG9B,QAAOpH,KAAK2/B,UAAW/7B,EAEtC,CACA,MAAOuzB,GACH,MAAMq9F,EAAoBr9F,EAAG,WAAY,0BAC7C,CACJ,CACA,MAAA4nB,CAAOq4E,EAAmBxzH,KAAUyyH,GAChC,IACI,OAAyB,IAArB30H,UAAUD,QACH,QAAUzB,KAAK2/B,UAAWy3F,IAG1B,QAAUp3H,KAAK2/B,UAAWy3F,EAAmBxzH,KAAUyyH,EAEtE,CACA,MAAOl/F,GACH,MAAMq9F,EAAoBr9F,EAAG,cAAe,6BAChD,CACJ,CACA,SACI,OAAO,QAAUn3B,KAAK2/B,UAC1B,CACA,UAAA03F,IAAch2H,GACV,MAAM+F,EAAUkwH,EAAuBj2H,GACjC09B,EAAWw4F,EAAal2H,GAAMm6B,GAAU,IAAIw6F,EAAiBh2H,KAAKyyH,UAAW,IAAI,KAAmBzyH,KAAKyyH,UAAU9yF,UAAW3/B,KAAK61H,gBAAiBr6F,EAAOh0B,KAAMg0B,EAAOy6F,UAAWz6F,EAAO06F,SAAUl2H,KAAK2/B,UAAUw2F,cACzN,OAAO,QAAWn2H,KAAK2/B,UAAWv4B,EAAS23B,EAC/C,CACA,GAAAz1B,CAAIlC,GACA,IAAIowH,EAUJ,OARIA,EADuE,WAAtEpwH,aAAyC,EAASA,EAAQiwB,SACpD,QAAgBr3B,KAAK2/B,WAEgD,YAAtEv4B,aAAyC,EAASA,EAAQiwB,SACzD,QAAiBr3B,KAAK2/B,YAGtB,QAAO3/B,KAAK2/B,WAEhB63F,EAAK54F,MAAKpD,GAAU,IAAIw6F,EAAiBh2H,KAAKyyH,UAAW,IAAI,KAAmBzyH,KAAKyyH,UAAU9yF,UAAW3/B,KAAK61H,gBAAiBr6F,EAAOh0B,KAAMg0B,EAAOy6F,UAAWz6F,EAAO06F,SAAUl2H,KAAK2/B,UAAUw2F,aAC1M,CACA,aAAAsB,CAActB,GACV,OAAO,IAAI1B,EAAkBz0H,KAAKyyH,UAAW0D,EACvCn2H,KAAK2/B,UAAU83F,cAAclB,EAAuBO,YAAY92H,KAAKyyH,UAAW0D,IAChFn2H,KAAK2/B,UAAU83F,cAAc,MACvC,EAMJ,SAASjD,EAAoBr9F,EAAGugG,EAAUC,GAEtC,OADAxgG,EAAE0E,QAAU1E,EAAE0E,QAAQ5E,QAAQygG,EAAUC,GACjCxgG,CACX,CAMA,SAASmgG,EAAuBj2H,GAC5B,IAAK,MAAMhB,KAAOgB,EACd,GAAmB,iBAARhB,IAAqBiyH,EAAkBjyH,GAC9C,OAAOA,EAGf,MAAO,CAAC,CACZ,CAUA,SAASk3H,EAAal2H,EAAMu2H,GACxB,IAAIn/F,EAAIo/F,EACR,IAAIC,EAqBJ,OAnBIA,EADAxF,EAAkBjxH,EAAK,IACRA,EAAK,GAEfixH,EAAkBjxH,EAAK,IACbA,EAAK,GAEI,mBAAZA,EAAK,GACF,CACXw9B,KAAMx9B,EAAK,GACXG,MAAOH,EAAK,GACZ29B,SAAU39B,EAAK,IAIJ,CACXw9B,KAAMx9B,EAAK,GACXG,MAAOH,EAAK,GACZ29B,SAAU39B,EAAK,IAGhB,CACHw9B,KAAM0K,IACEuuF,EAAaj5F,MACbi5F,EAAaj5F,KAAK+4F,EAAQruF,GAC9B,EAEJ/nC,MAAqC,QAA7Bi3B,EAAKq/F,EAAat2H,aAA0B,IAAPi3B,OAAgB,EAASA,EAAGvkB,KAAK4jH,GAC9E94F,SAA2C,QAAhC64F,EAAKC,EAAa94F,gBAA6B,IAAP64F,OAAgB,EAASA,EAAG3jH,KAAK4jH,GAE5F,CACA,MAAM9B,EACF,WAAA9kH,CAAY0kH,EAAYj2F,GACpB3/B,KAAK41H,WAAaA,EAClB51H,KAAK2/B,UAAYA,CACrB,CACA,OAAIvP,GACA,OAAO,IAAIqkG,EAAkBz0H,KAAK41H,WAAY51H,KAAK2/B,UAAUvP,IACjE,CACA,MAAIzsB,GACA,OAAO3D,KAAK2/B,UAAUh8B,EAC1B,CACA,YAAIuyH,GACA,OAAOl2H,KAAK2/B,UAAUu2F,QAC1B,CACA,UAAIx6C,GACA,OAAO17E,KAAK2/B,UAAU+7C,QAC1B,CACA,IAAApzE,CAAKlB,GACD,OAAOpH,KAAK2/B,UAAUr3B,KAAKlB,EAC/B,CACA,GAAAkC,CAAIyuH,EAAW3wH,GAIX,OAAOpH,KAAK2/B,UAAUr2B,IAAIyuH,EAAW3wH,EACzC,CACA,OAAAirH,CAAQtpD,GACJ,OAAO,QAAc/oE,KAAK2/B,UAAWopC,EAAMppC,UAC/C,EAEJ,MAAMg3F,UAA8BX,EAChC,IAAA1tH,CAAKlB,GACD,MAAMkB,EAAOtI,KAAK2/B,UAAUr3B,KAAKlB,GAEjC,OADA,aAAsBjH,IAATmI,EAAoB,oDAC1BA,CACX,EAEJ,MAAMssH,EACF,WAAA1jH,CAAYuhH,EAAW9yF,GACnB3/B,KAAKyyH,UAAYA,EACjBzyH,KAAK2/B,UAAYA,EACjB3/B,KAAK61H,gBAAkB,IAAIN,EAAe9C,EAC9C,CACA,KAAAuF,CAAMD,EAAWE,EAAOr0H,GACpB,IAII,OAAO,IAAIgxH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,QAAMo4F,EAAWE,EAAOr0H,IACnF,CACA,MAAOuzB,GACH,MAAMq9F,EAAoBr9F,EAAG,sBAAuB,aACxD,CACJ,CACA,OAAAomC,CAAQw6D,EAAWG,GACf,IAII,OAAO,IAAItD,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,QAAQo4F,EAAWG,IAC9E,CACA,MAAO/gG,GACH,MAAMq9F,EAAoBr9F,EAAG,sBAAuB,aACxD,CACJ,CACA,KAAAlqB,CAAMpM,GACF,IACI,OAAO,IAAI+zH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,QAAM9+B,IACjE,CACA,MAAOs2B,GACH,MAAMq9F,EAAoBr9F,EAAG,UAAW,gBAC5C,CACJ,CACA,WAAAghG,CAAYt3H,GACR,IACI,OAAO,IAAI+zH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,QAAY9+B,IACvE,CACA,MAAOs2B,GACH,MAAMq9F,EAAoBr9F,EAAG,gBAAiB,sBAClD,CACJ,CACA,OAAAihG,IAAW/2H,GACP,IACI,OAAO,IAAIuzH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,WAAWt+B,IACtE,CACA,MAAO81B,GACH,MAAMq9F,EAAoBr9F,EAAG,YAAa,kBAC9C,CACJ,CACA,UAAAkhG,IAAch3H,GACV,IACI,OAAO,IAAIuzH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,WAAct+B,IACzE,CACA,MAAO81B,GACH,MAAMq9F,EAAoBr9F,EAAG,eAAgB,qBACjD,CACJ,CACA,SAAAmhG,IAAaj3H,GACT,IACI,OAAO,IAAIuzH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,WAAat+B,IACxE,CACA,MAAO81B,GACH,MAAMq9F,EAAoBr9F,EAAG,cAAe,oBAChD,CACJ,CACA,KAAAohG,IAASl3H,GACL,IACI,OAAO,IAAIuzH,EAAM50H,KAAKyyH,WAAW,QAAMzyH,KAAK2/B,WAAW,WAASt+B,IACpE,CACA,MAAO81B,GACH,MAAMq9F,EAAoBr9F,EAAG,UAAW,gBAC5C,CACJ,CACA,OAAAk7F,CAAQtpD,GACJ,OAAO,QAAW/oE,KAAK2/B,UAAWopC,EAAMppC,UAC5C,CACA,GAAAr2B,CAAIlC,GACA,IAAIsvD,EAUJ,OARIA,EADuE,WAAtEtvD,aAAyC,EAASA,EAAQiwB,SACnD,QAAiBr3B,KAAK2/B,WAE8C,YAAtEv4B,aAAyC,EAASA,EAAQiwB,SACxD,QAAkBr3B,KAAK2/B,YAGvB,QAAQ3/B,KAAK2/B,WAElB+2B,EAAM93B,MAAKpD,GAAU,IAAIg9F,EAAcx4H,KAAKyyH,UAAW,IAAI,IAAgBzyH,KAAKyyH,UAAU9yF,UAAW3/B,KAAK61H,gBAAiB71H,KAAK2/B,UAAWnE,EAAOi9F,aAC7J,CACA,UAAApB,IAAch2H,GACV,MAAM+F,EAAUkwH,EAAuBj2H,GACjC09B,EAAWw4F,EAAal2H,GAAMm2H,GAAQ,IAAIgB,EAAcx4H,KAAKyyH,UAAW,IAAI,IAAgBzyH,KAAKyyH,UAAU9yF,UAAW3/B,KAAK61H,gBAAiB71H,KAAK2/B,UAAW63F,EAAKiB,cACvK,OAAO,QAAWz4H,KAAK2/B,UAAWv4B,EAAS23B,EAC/C,CACA,aAAA04F,CAActB,GACV,OAAO,IAAIvB,EAAM50H,KAAKyyH,UAAW0D,EAC3Bn2H,KAAK2/B,UAAU83F,cAAclB,EAAuBO,YAAY92H,KAAKyyH,UAAW0D,IAChFn2H,KAAK2/B,UAAU83F,cAAc,MACvC,EAEJ,MAAMiB,EACF,WAAAxnH,CAAY0kH,EAAYj2F,GACpB3/B,KAAK41H,WAAaA,EAClB51H,KAAK2/B,UAAYA,CACrB,CACA,QAAI1+B,GACA,OAAOjB,KAAK2/B,UAAU1+B,IAC1B,CACA,OAAIsuF,GACA,OAAO,IAAIonC,EAAsB32H,KAAK41H,WAAY51H,KAAK2/B,UAAU4vD,IACrE,CACA,YAAIopC,GACA,OAAO34H,KAAK2/B,UAAUg5F,QAC1B,CACA,YAAI/qG,GACA,OAAO5tB,KAAK2/B,UAAU/R,QAC1B,EAEJ,MAAM4qG,EACF,WAAAtnH,CAAY0kH,EAAYj2F,GACpB3/B,KAAK41H,WAAaA,EAClB51H,KAAK2/B,UAAYA,CACrB,CACA,SAAI+2B,GACA,OAAO,IAAIk+D,EAAM50H,KAAK41H,WAAY51H,KAAK2/B,UAAU+2B,MACrD,CACA,YAAIw/D,GACA,OAAOl2H,KAAK2/B,UAAUu2F,QAC1B,CACA,QAAI3oF,GACA,OAAOvtC,KAAK2/B,UAAU4N,IAC1B,CACA,SAAIsiB,GACA,OAAO7vD,KAAK2/B,UAAUkwB,KAC1B,CACA,QAAI+oE,GACA,OAAO54H,KAAK2/B,UAAUi5F,KAAKp0G,KAAI+qE,GAAO,IAAIonC,EAAsB32H,KAAK41H,WAAYrmC,IACrF,CACA,UAAAspC,CAAWzxH,GACP,OAAOpH,KAAK2/B,UACPk5F,WAAWzxH,GACXod,KAAIs0G,GAAa,IAAIJ,EAAe14H,KAAK41H,WAAYkD,IAC9D,CACA,OAAAjnH,CAAQ+J,EAAU+2E,GACd3yF,KAAK2/B,UAAU9tB,SAAQ4kH,IACnB76G,EAAS9Z,KAAK6wF,EAAS,IAAIgkC,EAAsB32H,KAAK41H,WAAYa,GAAU,GAEpF,CACA,OAAApE,CAAQtpD,GACJ,OAAO,QAAc/oE,KAAK2/B,UAAWopC,EAAMppC,UAC/C,EAEJ,MAAM40F,UAA4BK,EAC9B,WAAA1jH,CAAYuhH,EAAW9yF,GACnB/mB,MAAM65G,EAAW9yF,GACjB3/B,KAAKyyH,UAAYA,EACjBzyH,KAAK2/B,UAAYA,CACrB,CACA,MAAIh8B,GACA,OAAO3D,KAAK2/B,UAAUh8B,EAC1B,CACA,QAAIyrC,GACA,OAAOpvC,KAAK2/B,UAAUyP,IAC1B,CACA,UAAIsQ,GACA,MAAMq5E,EAAS/4H,KAAK2/B,UAAU+f,OAC9B,OAAOq5E,EAAS,IAAItE,EAAkBz0H,KAAKyyH,UAAWsG,GAAU,IACpE,CACA,GAAAxpC,CAAIypC,GACA,IACI,OAIW,IAAIvE,EAAkBz0H,KAAKyyH,eAJjBtyH,IAAjB64H,GAI6C,QAAIh5H,KAAK2/B,YAGT,QAAI3/B,KAAK2/B,UAAWq5F,GAEzE,CACA,MAAO7hG,GACH,MAAMq9F,EAAoBr9F,EAAG,QAAS,4BAC1C,CACJ,CACA,GAAAnlB,CAAI1J,GACA,OAAO,QAAOtI,KAAK2/B,UAAWr3B,GAAMs2B,MAAKm6F,GAAU,IAAItE,EAAkBz0H,KAAKyyH,UAAWsG,IAC7F,CACA,OAAA1G,CAAQtpD,GACJ,OAAO,QAAS/oE,KAAK2/B,UAAWopC,EAAMppC,UAC1C,CACA,aAAA83F,CAActB,GACV,OAAO,IAAI5B,EAAoBv0H,KAAKyyH,UAAW0D,EACzCn2H,KAAK2/B,UAAU83F,cAAclB,EAAuBO,YAAY92H,KAAKyyH,UAAW0D,IAChFn2H,KAAK2/B,UAAU83F,cAAc,MACvC,EAEJ,SAAS1B,EAAcD,GACnB,OAAO,QAAMA,EAAa,KAC9B,CA0BA,MAAMmD,EAOF,WAAA/nH,IAAegoH,GACXl5H,KAAK2/B,UAAY,IAAI,QAAeu5F,EACxC,CACA,iBAAOC,GAOH,OAAO,IAAIF,EAAU,KAAWG,WAAWjC,kBAC/C,CACA,OAAA9E,CAAQtpD,GAEJ,OADAA,GAAQ,QAAmBA,cACJ,MAGhB/oE,KAAK2/B,UAAU05F,cAAchH,QAAQtpD,EAAMswD,cACtD,EAmBJ,MAAMC,EACF,WAAApoH,CAAYyuB,GACR3/B,KAAK2/B,UAAYA,CACrB,CACA,sBAAO45F,GACH,MAAMC,GAAW,UAEjB,OADAA,EAASC,YAAc,6BAChB,IAAIH,EAAWE,EAC1B,CACA,aAAO,GACH,MAAMA,GAAW,UAEjB,OADAA,EAASC,YAAc,oBAChB,IAAIH,EAAWE,EAC1B,CACA,iBAAOE,IAAcnzG,GACjB,MAAMizG,GAAW,WAAcjzG,GAE/B,OADAizG,EAASC,YAAc,wBAChB,IAAIH,EAAWE,EAC1B,CACA,kBAAOG,IAAepzG,GAClB,MAAMizG,GAAW,WAAejzG,GAEhC,OADAizG,EAASC,YAAc,yBAChB,IAAIH,EAAWE,EAC1B,CACA,gBAAOI,CAAU/4H,GACb,MAAM24H,GAAW,QAAU34H,GAE3B,OADA24H,EAASC,YAAc,uBAChB,IAAIH,EAAWE,EAC1B,CACA,OAAAnH,CAAQtpD,GACJ,OAAO/oE,KAAK2/B,UAAU0yF,QAAQtpD,EAAMppC,UACxC,EAmBJ,MAAMk6F,EAAqB,CACvBhH,YACAiH,SAAQ,KACRC,UAAS,KACT35B,KAAI,EACJ40B,cACAC,aACAR,oBACAuB,mBACApB,QACA+B,wBACA6B,gBACAjE,sBACA0E,YACAK,aACAU,YAhpBJ,SAAqB/8D,IACjB,QAAcA,EAClB,EA+oBIg9D,qBAAoB,MAqCxB,IAA2BjkF,EA5BakkF,EA4BblkF,EAIT,IAhCsBkkF,EA6BL,CAAC7F,EAAK8F,IAAiB,IAAItH,EAAUwB,EAAK8F,EAAc,IAAI5H,GAAtEv8E,EA5BZg9E,SAASoH,kBAAkB,IAAI,KAAU,oBAAoBz0H,IAClE,MAAM0uH,EAAM1uH,EAAU00H,YAAY,cAAcC,eAC1CH,EAAex0H,EAAU00H,YAAY,aAAaC,eACxD,OAAOJ,EAAiB7F,EAAK8F,EAAa,GAC3C,UAAUI,gBAAgB5yH,OAAO8xB,OAAO,CAAC,EAAGogG,KAyB/C7jF,EAASwkF,gBA19BA,6BACG,yBCchB,MAAMC,EAAY,iDACZC,EAAqB,kDAC3B,SAASC,EAGTznF,EAAG4f,GACC,MAAMt3B,EAAS,CAAC,EAChB,IAAK,MAAMr4B,KAAO+vC,EACVA,EAAEzb,eAAet0B,KACjBq4B,EAAOr4B,GAAO2vD,EAAE5f,EAAE/vC,KAG1B,OAAOq4B,CACX,CAOA,SAASg5E,EAAOlsG,GACZ,GAAY,MAARA,EACA,OAAO,KAKX,GAHIA,aAAgB6B,SAChB7B,EAAOA,EAAK26E,WAEI,iBAAT36E,GAAqBsyH,SAAStyH,GAGrC,OAAOA,EAEX,IAAa,IAATA,IAA0B,IAATA,EACjB,OAAOA,EAEX,GAA6C,oBAAzCX,OAAOjH,UAAU4tB,SAASxsB,KAAKwG,GAC/B,OAAOA,EAEX,GAAIA,aAAgBgvB,KAChB,OAAOhvB,EAAKy7E,cAEhB,GAAIhiF,MAAMgpB,QAAQziB,GACd,OAAOA,EAAKkc,KAAI3c,GAAK2sG,EAAO3sG,KAEhC,GAAoB,mBAATS,GAAuC,iBAATA,EACrC,OAAOqyH,EAAUryH,GAAMT,GAAK2sG,EAAO3sG,KAGvC,MAAM,IAAIlG,MAAM,mCAAqC2G,EACzD,CAOA,SAASo8E,EAAO+rB,GACZ,GAAY,MAARA,EACA,OAAOA,EAEX,GAAIA,EAAK,SACL,OAAQA,EAAK,UACT,KAAKgqB,EAEL,KAAKC,EAAoB,CAIrB,MAAM92H,EAAQuG,OAAOsmG,EAAY,OACjC,GAAI3vG,MAAM8C,GACN,MAAM,IAAIjC,MAAM,qCAAuC8uG,GAE3D,OAAO7sG,CACX,CACA,QACI,MAAM,IAAIjC,MAAM,qCAAuC8uG,GAInE,OAAI1uG,MAAMgpB,QAAQ0lF,GACPA,EAAKjsF,KAAI3c,GAAK68E,EAAO78E,KAEZ,mBAAT4oG,GAAuC,iBAATA,EAC9BkqB,EAAUlqB,GAAM5oG,GAAK68E,EAAO78E,KAGhC4oG,CACX,CAqBA,MAAMoqB,EAAiB,YAyBjBC,EAAe,CACjBC,GAAI,KACJC,UAAW,YACXC,QAAS,UACTC,iBAAkB,mBAClBC,kBAAmB,oBACnBC,UAAW,YACXC,eAAgB,iBAChBC,kBAAmB,oBACnBC,gBAAiB,kBACjBC,mBAAoB,qBACpBC,oBAAqB,sBACrBC,QAAS,UACTC,aAAc,eACdC,cAAe,gBACf5I,SAAU,WACV6I,YAAa,cACbC,UAAW,aAMf,MAAMC,WAAuB,KACzB,WAAA7qH,CAKAqC,EAAMsoB,EAINmgG,GACIpjH,MAAM,GAAGiiH,KAAkBtnH,IAAQsoB,GAAW,IAC9C77B,KAAKg8H,QAAUA,CACnB,EA6GJ,MAAMC,GACF,WAAA/qH,CAAYgrH,EAAcC,EAAmBC,GACzCp8H,KAAKq8H,KAAO,KACZr8H,KAAKs8H,UAAY,KACjBt8H,KAAKu8H,SAAW,KAChBv8H,KAAKq8H,KAAOH,EAAa5B,aAAa,CAAEkC,UAAU,IAClDx8H,KAAKs8H,UAAYH,EAAkB7B,aAAa,CAC5CkC,UAAU,IAETx8H,KAAKq8H,MACNH,EAAa5yH,MAAMs1B,MAAKy9F,GAASr8H,KAAKq8H,KAAOA,IAAO,SAInDr8H,KAAKs8H,WACNH,EAAkB7yH,MAAMs1B,MAAK09F,GAAct8H,KAAKs8H,UAAYA,IAAY,SAIvEt8H,KAAKu8H,UACNH,EAAiB9yH,MAAMs1B,MAAK29F,GAAav8H,KAAKu8H,SAAWA,IAAW,QAI5E,CACA,kBAAME,GACF,GAAKz8H,KAAKq8H,KAGV,IACI,MAAMpjG,QAAcj5B,KAAKq8H,KAAKK,WAC9B,OAAOzjG,aAAqC,EAASA,EAAM0jG,WAC/D,CACA,MAAOxlG,GAEH,MACJ,CACJ,CACA,uBAAMylG,GACF,GAAK58H,KAAKs8H,WACJ,iBAAkB3kG,MACQ,YAA5BklG,aAAaC,WAGjB,IACI,aAAa98H,KAAKs8H,UAAUI,UAChC,CACA,MAAOvlG,GAIH,MACJ,CACJ,CACA,sBAAM4lG,CAAiBC,GACnB,GAAIh9H,KAAKu8H,SAAU,CACf,MAAM/gG,EAASwhG,QACHh9H,KAAKu8H,SAASU,2BACdj9H,KAAKu8H,SAASG,WAC1B,OAAIlhG,EAAOh6B,MAIA,KAEJg6B,EAAOvC,KAClB,CACA,OAAO,IACX,CACA,gBAAMikG,CAAWF,GAIb,MAAO,CAAEG,gBAHen9H,KAAKy8H,eAGTW,qBAFSp9H,KAAK48H,oBAEES,oBADRr9H,KAAK+8H,iBAAiBC,GAEtD,EAmBJ,MAAMM,GAAiB,cA6BvB,MAAMC,GAKF,WAAArsH,CAAYmjH,EAAK6H,EAAcC,EAAmBC,EAAkBoB,EAAuBF,GAAgBG,GACvGz9H,KAAKq0H,IAAMA,EACXr0H,KAAKy9H,UAAYA,EACjBz9H,KAAK09H,eAAiB,KACtB19H,KAAK29H,gBAAkB,IAAI1B,GAAgBC,EAAcC,EAAmBC,GAE5Ep8H,KAAK49H,kBAAoB,IAAIv1G,SAAQC,IACjCtoB,KAAK69H,cAAgB,IACVx1G,QAAQC,QAAQA,IAC1B,IAGL,IACI,MAAMuV,EAAM,IAAI6iE,IAAI88B,GACpBx9H,KAAK89H,aAAejgG,EAAIkjE,OACxB/gG,KAAKm4E,OAASmlD,EAClB,CACA,MAAOnmG,GACHn3B,KAAK89H,aAAe,KACpB99H,KAAKm4E,OAASqlD,CAClB,CACJ,CACA,OAAAtJ,GACI,OAAOl0H,KAAK69H,eAChB,CAMA,IAAAE,CAAKpmH,GACD,MAAMuhB,EAAYl5B,KAAKq0H,IAAIjtH,QAAQ8xB,UACnC,GAA4B,OAAxBl5B,KAAK09H,eAAyB,CAE9B,MAAO,GADQ19H,KAAK09H,kBACAxkG,KAAal5B,KAAKm4E,UAAUxgE,GACpD,CACA,OAA0B,OAAtB3X,KAAK89H,aACE,GAAG99H,KAAK89H,gBAAgBnmH,IAE5B,WAAW3X,KAAKm4E,UAAUj/C,wBAAgCvhB,GACrE,EAmBJ,SAASqmH,GAAgBC,EAAmBtmH,EAAMvQ,GAC9C,OAAQkB,GA0DZ,SAAc21H,EAAmBtmH,EAAMrP,EAAMlB,GACzC,MAAMy2B,EAAMogG,EAAkBF,KAAKpmH,GACnC,OAAOumH,GAAUD,EAAmBpgG,EAAKv1B,EAAMlB,EACnD,CA5DetF,CAAKm8H,EAAmBtmH,EAAMrP,EAAMlB,GAAW,CAAC,EAE/D,CAkBA+gB,eAAeg2G,GAAStgG,EAAK3gB,EAAMkvD,EAASqxD,GAExC,IAAIz4D,EADJoH,EAAQ,gBAAkB,mBAE1B,IACIpH,QAAiBy4D,EAAU5/F,EAAK,CAC5BsB,OAAQ,OACRjiB,KAAMlC,KAAKC,UAAUiC,GACrBkvD,WAER,CACA,MAAOj1C,GAKH,MAAO,CACHvU,OAAQ,EACR6tF,KAAM,KAEd,CACA,IAAIA,EAAO,KACX,IACIA,QAAazrC,EAASyrC,MAC1B,CACA,MAAOt5E,GAEP,CACA,MAAO,CACHvU,OAAQoiD,EAASpiD,OACjB6tF,OAER,CAeAtoF,eAAe+1G,GAAUD,EAAmBpgG,EAAKv1B,EAAMlB,GAGnD,MAAM8V,EAAO,CAAE5U,KADfA,EAAOksG,EAAOlsG,IAGR8jE,EAAU,CAAC,EACXvqE,QAAgBo8H,EAAkBN,gBAAgBT,WAAW91H,EAAQ41H,0BACvEn7H,EAAQs7H,YACR/wD,EAAuB,cAAI,UAAYvqE,EAAQs7H,WAE/Ct7H,EAAQu7H,iBACRhxD,EAAQ,8BAAgCvqE,EAAQu7H,gBAEtB,OAA1Bv7H,EAAQw7H,gBACRjxD,EAAQ,uBAAyBvqE,EAAQw7H,eAG7C,MACMe,EA5KV,SAAmBC,GAIf,IAAItb,EAAQ,KACZ,MAAO,CACHlqF,QAAS,IAAIxQ,SAAQ,CAACoU,EAAG7D,KACrBmqF,EAAQvuG,YAAW,KACfokB,EAAO,IAAImjG,GAAe,oBAAqB,qBAAqB,GACrEsC,EAAO,IAEdnrH,OAAQ,KACA6vG,GACA/qG,aAAa+qG,EACjB,EAGZ,CA2J4Bub,CADRl3H,EAAQkjB,SAAW,KAE7B06C,QAAiB38C,QAAQglB,KAAK,CAChC8wF,GAAStgG,EAAK3gB,EAAMkvD,EAAS6xD,EAAkBR,WAC/CW,EAAgBvlG,QAChBolG,EAAkBL,oBAKtB,GAFAQ,EAAgBlrH,UAEX8xD,EACD,MAAM,IAAI+2D,GAAe,YAAa,4CAG1C,MAAMv6H,EA3VV,SAA2BohB,EAAQ27G,GAC/B,IAGIvC,EAHAzoH,EAtCR,SAA2BqP,GAEvB,GAAIA,GAAU,KAAOA,EAAS,IAC1B,MAAO,KAEX,OAAQA,GACJ,KAAK,EAiBL,KAAK,IACD,MAAO,WAfX,KAAK,IACD,MAAO,mBACX,KAAK,IACD,MAAO,kBACX,KAAK,IACD,MAAO,oBACX,KAAK,IACD,MAAO,YACX,KAAK,IACD,MAAO,UACX,KAAK,IACD,MAAO,qBACX,KAAK,IACD,MAAO,YAGX,KAAK,IACD,MAAO,gBACX,KAAK,IACD,MAAO,cACX,KAAK,IACD,MAAO,oBAEf,MAAO,SACX,CAKe47G,CAAkB57G,GAEzBugB,EAAc5vB,EAGlB,IACI,MAAMkrH,EAAYF,GAAYA,EAAS/8H,MACvC,GAAIi9H,EAAW,CACX,MAAM77G,EAAS67G,EAAU77G,OACzB,GAAsB,iBAAXA,EAAqB,CAC5B,IAAKk4G,EAAal4G,GAEd,OAAO,IAAIm5G,GAAe,WAAY,YAE1CxoH,EAAOunH,EAAal4G,GAGpBugB,EAAcvgB,CAClB,CACA,MAAMiZ,EAAU4iG,EAAU5iG,QACH,iBAAZA,IACPsH,EAActH,GAElBmgG,EAAUyC,EAAUzC,aACJ77H,IAAZ67H,IACAA,EAAUt3C,EAAOs3C,GAEzB,CACJ,CACA,MAAO7kG,GAEP,CACA,MAAa,OAAT5jB,EAIO,KAEJ,IAAIwoH,GAAexoH,EAAM4vB,EAAa64F,EACjD,CAmTkB0C,CAAkB15D,EAASpiD,OAAQoiD,EAASyrC,MAC1D,GAAIjvG,EACA,MAAMA,EAEV,IAAKwjE,EAASyrC,KACV,MAAM,IAAIsrB,GAAe,WAAY,sCAEzC,IAAI4C,EAAe35D,EAASyrC,KAAKnoG,KAMjC,QAH4B,IAAjBq2H,IACPA,EAAe35D,EAASyrC,KAAKj1E,aAEL,IAAjBmjG,EAEP,MAAM,IAAI5C,GAAe,WAAY,mCAIzC,MAAO,CAAEzzH,KADWo8E,EAAOi6C,GAE/B,CAEA,MAAM,GAAO,sBACP,GAAU,SAkFhB,SAASC,GAAyBX,EAAmBn+E,EAAM4zE,IApN3D,SAAoCuK,EAAmBn+E,EAAM4zE,GACzDuK,EAAkBP,eAAiB,UAAU59E,KAAQ4zE,GACzD,CAmNImL,EAA2B,QAAmBZ,GAAoBn+E,EAAM4zE,EAC5E,CAcA,SAASoL,GAAqBb,EAAmBpgG,EAAKz2B,GAClD,OAnNJ,SAAgC62H,EAAmBpgG,EAAKz2B,GACpD,OAAQkB,GACG41H,GAAUD,EAAmBpgG,EAAKv1B,EAAMlB,GAAW,CAAC,EAEnE,CA+MW23H,EAAuB,QAAmBd,GAAoBpgG,EAAKz2B,EAC9E,CA/EA,IAA2Bq2H,GAAWuB,GAAXvB,GAsFTwB,MAAM/qH,KAAKyjB,OA5EzB,IAAAunG,oBAAmB,IAAI,KAAUrE,GATjB,CAACl1H,GAAaw5H,mBAAoB3B,MAE9C,MAAMnJ,EAAM1uH,EAAU00H,YAAY,OAAOC,eACnC4B,EAAev2H,EAAU00H,YAPZ,iBAQb8B,EAAoBx2H,EAAU00H,YANZ,sBAOlB+B,EAAmBz2H,EAAU00H,YARX,sBAUxB,OAAO,IAAIkD,GAAiBlJ,EAAK6H,EAAcC,EAAmBC,EAAkBoB,EAAsBC,GAAU,GAE9D,UAAqC2B,sBAAqB,KACpH,IAAA5E,iBAAgB,GAAM,GAASwE,KAE/B,IAAAxE,iBAAgB,GAAM,GAAS,WCxmBnC,MAAM,GACF,WAAAtpH,CAAYmjH,EAAK10F,GACb3/B,KAAKq0H,IAAMA,EACXr0H,KAAK2/B,UAAYA,EACjB3/B,KAAKq/H,QAAUr/H,KAAK2/B,UAAUw4C,OAC9Bn4E,KAAKs/H,cAAgBt/H,KAAK2/B,UAAUm+F,YACxC,CACA,aAAAyB,CAAc5nH,EAAMvQ,GAChB,ODwpBR,SAAuB62H,EAAmBtmH,EAAMvQ,GAC5C,OAAO42H,IAAgB,QAAmBC,GAAoBtmH,EAAMvQ,EACxE,CC1pBem4H,CAAcv/H,KAAK2/B,UAAWhoB,EAAMvQ,EAC/C,CACA,oBAAA03H,CAAqBjhG,EAAKz2B,GACtB,OAAO03H,GAAqB9+H,KAAK2/B,UAAW9B,EAAKz2B,EACrD,CAOA,oBAAAo4H,CAAqBz+B,GACjB,MAAM5oE,EAAQ4oE,EAAO5oE,MAAM,8CAC3B,GAAa,MAATA,EACA,MAAM,IAAI,KAAc,YAAa,gDAEzC,GAAgB,MAAZA,EAAM,GACN,MAAM,IAAI,KAAc,YAAa,6DAEzC,OAAOymG,GAAyB5+H,KAAK2/B,UAAWxH,EAAM,GAAIhuB,OAAOguB,EAAM,IAC3E,CACA,WAAAs7F,CAAY3zE,EAAM4zE,GACd,OAAOkL,GAAyB5+H,KAAK2/B,UAAWmgB,EAAM4zE,EAC1D,EAmBJ,MACMrzC,GAAU,CAAC16E,GAAaw5H,mBAAoB3B,MAE9C,MAAMnJ,EAAM1uH,EAAU00H,YAAY,cAAcC,eAC1CmF,EAAsB95H,EAAU00H,YAAY,aAAaC,aAAa,CACxEj1B,WAAYm4B,QAAmEA,EALhE,gBAOnB,OAAO,IAAI,GAAiBnJ,EAAKoL,EAAoB,GAEzD,WACI,MAAMC,EAAmB,CACrBC,UAAW,IAEf,IAAS3M,SAASoH,kBAAkB,IAAI,KAAU,mBAAoB/5C,GAAS,UAC1Ek6C,gBAAgBmF,GAChBN,sBAAqB,GAC9B,CAkBA,GACA,IAAS5E,gBAxGI,6BACG,SCoBhB,MAAMoF,GAAe,iCAIfC,GAA4B,gBAsClC,MAAMC,WAAqB,KAOvB,WAAA5uH,CAAYqC,EAAMsoB,EAASkkG,EAAU,GACjCnnH,MAAMonH,GAAYzsH,GAAO,qBAAqBsoB,MAAYmkG,GAAYzsH,OACtEvT,KAAK+/H,QAAUA,EAIf//H,KAAK4uB,WAAa,CAAEqxG,eAAgB,MACpCjgI,KAAKkgI,aAAelgI,KAAK67B,QAGzBl0B,OAAOo0B,eAAe/7B,KAAM8/H,GAAap/H,UAC7C,CACA,UAAIkiB,GACA,OAAO5iB,KAAK+/H,OAChB,CACA,UAAIn9G,CAAOA,GACP5iB,KAAK+/H,QAAUn9G,CACnB,CAIA,WAAAu9G,CAAY5sH,GACR,OAAOysH,GAAYzsH,KAAUvT,KAAKuT,IACtC,CAIA,kBAAI0sH,GACA,OAAOjgI,KAAK4uB,WAAWqxG,cAC3B,CACA,kBAAIA,CAAeA,GACfjgI,KAAK4uB,WAAWqxG,eAAiBA,EAC7BjgI,KAAK4uB,WAAWqxG,eAChBjgI,KAAK67B,QAAU,GAAG77B,KAAKkgI,iBAAiBlgI,KAAK4uB,WAAWqxG,iBAGxDjgI,KAAK67B,QAAU77B,KAAKkgI,YAE5B,EAMJ,IAAIE,GAyeAC,GA3cJ,SAASL,GAAYzsH,GACjB,MAAO,WAAaA,CACxB,CACA,SAAS+sH,KAGL,OAAO,IAAIR,GAAaM,GAAiBnF,QAFzB,iFAGpB,CAqBA,SAASsF,KACL,OAAO,IAAIT,GAAaM,GAAiBI,qBAAsB,2DACnE,CACA,SAASC,KACL,OAAO,IAAIX,GAAaM,GAAiBM,SAAU,qCACvD,CAaA,SAASC,KACL,OAAO,IAAIb,GAAaM,GAAiBQ,kBAAmB,yDAChE,CAaA,SAASC,GAAgBhlG,GACrB,OAAO,IAAIikG,GAAaM,GAAiBlF,iBAAkBr/F,EAC/D,CACA,SAASilG,KACL,OAAO,IAAIhB,GAAaM,GAAiBW,YAAa,gCAC1D,CAMA,SAASC,GAAqBrpH,GAC1B,OAAO,IAAImoH,GAAaM,GAAiBa,uBAAwB,kBAC7DtpH,EAD6D,kHAIrE,CAKA,SAASupH,GAAcl7F,EAAQnK,GAC3B,OAAO,IAAIikG,GAAaM,GAAiBe,eAAgB,iCAAmCn7F,EAAS,MAAQnK,EACjH,CAIA,SAASulG,GAAcvlG,GACnB,MAAM,IAAIikG,GAAaM,GAAiBiB,eAAgB,mBAAqBxlG,EACjF,EAvHA,SAAWukG,GAEPA,EAA0B,QAAI,UAC9BA,EAAmC,iBAAI,mBACvCA,EAAmC,iBAAI,mBACvCA,EAAoC,kBAAI,oBACxCA,EAAiC,eAAI,iBACrCA,EAAkC,gBAAI,kBACtCA,EAA+B,aAAI,eACnCA,EAAmC,iBAAI,mBACvCA,EAAuC,qBAAI,uBAC3CA,EAAmC,iBAAI,mBACvCA,EAA2B,SAAI,WAE/BA,EAAqC,mBAAI,qBACzCA,EAA8B,YAAI,cAClCA,EAAyC,uBAAI,yBAC7CA,EAAoC,kBAAI,oBACxCA,EAAoC,kBAAI,oBACxCA,EAAyC,uBAAI,yBAC7CA,EAAkC,gBAAI,kBACtCA,EAAmC,iBAAI,mBACvCA,EAAyC,uBAAI,yBAC7CA,EAA8B,YAAI,cAClCA,EAAyC,uBAAI,yBAC7CA,EAAiC,eAAI,iBACrCA,EAAiC,eAAI,iBACrCA,EAA0C,wBAAI,yBACjD,CA5BD,CA4BGA,KAAqBA,GAAmB,CAAC,IAkH5C,MAAM7hB,GACF,WAAArtG,CAAYowH,EAAQlyF,GAChBpvC,KAAKshI,OAASA,EACdthI,KAAKuhI,MAAQnyF,CACjB,CACA,QAAIA,GACA,OAAOpvC,KAAKuhI,KAChB,CACA,UAAIC,GACA,OAA4B,IAArBxhI,KAAKovC,KAAK3tC,MACrB,CACA,aAAAggI,GACI,MAAMjtB,EAAS/2E,mBACf,MAAO,MAAQ+2E,EAAOx0G,KAAKshI,QAAU,MAAQ9sB,EAAOx0G,KAAKovC,KAC7D,CACA,mBAAAsyF,GAEI,MAAO,MADQjkG,mBACOz9B,KAAKshI,QAAU,IACzC,CACA,yBAAOK,CAAmBC,EAAc9hF,GACpC,IAAI+hF,EACJ,IACIA,EAAiBtjB,GAASujB,YAAYF,EAAc9hF,EACxD,CACA,MAAO3oB,GAGH,OAAO,IAAIonF,GAASqjB,EAAc,GACtC,CACA,GAA4B,KAAxBC,EAAezyF,KACf,OAAOyyF,EAGP,MA7GkBP,EA6GSM,EA5G5B,IAAI9B,GAAaM,GAAiB2B,uBAAwB,2BAA6BT,EAAS,MAD3G,IAA8BA,CA+G1B,CACA,kBAAOQ,CAAYjkG,EAAKiiB,GACpB,IAAI69B,EAAW,KACf,MAAMqkD,EAAe,sBAMrB,MACMC,EAAU,IAAIrsF,OAAO,SAAWosF,EADvB,YAC8C,KAE7D,SAASE,EAAWC,GAChBA,EAAIZ,MAAQ5jG,mBAAmBwkG,EAAI/yF,KACvC,CACA,MACMgzF,EAAsBtiF,EAAK7oB,QAAQ,OAAQ,OAU3CorG,EAAS,CACX,CAAEC,MAAOL,EAAS9jE,QAhBJ,CAAEmjE,OAAQ,EAAGlyF,KAAM,GAgBKmzF,WAvB1C,SAAkBJ,GAC+B,MAAzCA,EAAI/yF,KAAKzY,OAAOwrG,EAAI/yF,KAAK3tC,OAAS,KAClC0gI,EAAIZ,MAAQY,EAAIZ,MAAMv/H,MAAM,GAAI,GAExC,GAoBI,CACIsgI,MAXsB,IAAI1sF,OAAO,aAAawsF,sBAAoCJ,qBAAwC,KAY1H7jE,QAXuB,CAAEmjE,OAAQ,EAAGlyF,KAAM,GAY1CmzF,WAAYL,GAEhB,CACII,MAVmB,IAAI1sF,OAAO,aAJbkK,IAAS8/E,GAC5B,sDACA9/E,KAEiEkiF,aAAoC,KAWnG7jE,QAVoB,CAAEmjE,OAAQ,EAAGlyF,KAAM,GAWvCmzF,WAAYL,IAGpB,IAAK,IAAI5gI,EAAI,EAAGA,EAAI+gI,EAAO5gI,OAAQH,IAAK,CACpC,MAAMkhI,EAAQH,EAAO/gI,GACfmhI,EAAWD,EAAMF,MAAMx9C,KAAKjnD,GAClC,GAAI4kG,EAAU,CACV,MAAMC,EAAcD,EAASD,EAAMrkE,QAAQmjE,QAC3C,IAAIqB,EAAYF,EAASD,EAAMrkE,QAAQ/uB,MAClCuzF,IACDA,EAAY,IAEhBhlD,EAAW,IAAI4gC,GAASmkB,EAAaC,GACrCH,EAAMD,WAAW5kD,GACjB,KACJ,CACJ,CACA,GAAgB,MAAZA,EACA,MAxKZ,SAAoB9/C,GAChB,OAAO,IAAIiiG,GAAaM,GAAiBwC,YAAa,gBAAkB/kG,EAAM,KAClF,CAsKkBglG,CAAWhlG,GAErB,OAAO8/C,CACX,EAMJ,MAAMmlD,GACF,WAAA5xH,CAAY1P,GACRxB,KAAK+iI,SAAW16G,QAAQuQ,OAAOp3B,EACnC,CAEA,UAAAwhI,GACI,OAAOhjI,KAAK+iI,QAChB,CAEA,MAAA7vH,CAAO+vH,GAAa,GAAS,EAmKjC,SAASC,GAASjvG,GACd,MAAoB,iBAANA,GAAkBA,aAAakC,MACjD,CACA,SAASgtG,GAAalvG,GAClB,OAAOmvG,MAAyBnvG,aAAamsE,IACjD,CACA,SAASgjC,KAGL,MAAuB,oBAAThjC,QAAyB,SAC3C,CACA,SAASijC,GAAeC,EAAUC,EAAUC,EAAU5/H,GAClD,GAAIA,EAAQ2/H,EACR,MAAM1C,GAAgB,sBAAsByC,gBAAuBC,iBAEvE,GAAI3/H,EAAQ4/H,EACR,MAAM3C,GAAgB,sBAAsByC,gBAAuBE,aAE3E,CAkBA,SAASC,GAAQC,EAAS5jF,EAAMmtB,GAC5B,IAAI8zB,EAASjhD,EAIb,OAHgB,MAAZmtB,IACA8zB,EAAS,WAAWjhD,KAEjB,GAAGmtB,OAAc8zB,OAAY2iC,GACxC,CACA,SAASC,GAAgBpmG,GACrB,MAAMi3E,EAAS/2E,mBACf,IAAImmG,EAAY,IAChB,IAAK,MAAMzgI,KAAOo6B,EACd,GAAIA,EAAO9F,eAAet0B,GAAM,CAE5BygI,EAAYA,GADKpvB,EAAOrxG,GAAO,IAAMqxG,EAAOj3E,EAAOp6B,KAChB,GACvC,CAIJ,OADAygI,EAAYA,EAAU5hI,MAAM,GAAI,GACzB4hI,CACX,CAkDA,SAASC,GAAkBjhH,EAAQkhH,GAG/B,MAAMC,EAAoBnhH,GAAU,KAAOA,EAAS,IAO9CohH,GAAwD,IANtC,CAEpB,IAEA,KAEqCr3H,QAAQiW,GAC3CqhH,GAAkE,IAA1CH,EAAqBn3H,QAAQiW,GAC3D,OAAOmhH,GAAqBC,GAAoBC,CACpD,EAzCA,SAAW5D,GACPA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAyB,cAAI,GAAK,gBAC5CA,EAAUA,EAAiB,MAAI,GAAK,OACvC,CAJD,CAIGA,KAAcA,GAAY,CAAC,IA+D9B,MAAM6D,GACF,WAAAhzH,CAAYizH,EAAMC,EAASC,EAAUC,EAAOC,EAAeC,EAAuBC,EAAWC,EAAgBC,EAAUC,EAAmBC,EAAoBC,GAAQ,GAClK9kI,KAAKmkI,KAAOA,EACZnkI,KAAKokI,QAAUA,EACfpkI,KAAKqkI,SAAWA,EAChBrkI,KAAKskI,MAAQA,EACbtkI,KAAKukI,cAAgBA,EACrBvkI,KAAKwkI,sBAAwBA,EAC7BxkI,KAAKykI,UAAYA,EACjBzkI,KAAK0kI,eAAiBA,EACtB1kI,KAAK2kI,SAAWA,EAChB3kI,KAAK4kI,kBAAoBA,EACzB5kI,KAAK6kI,mBAAqBA,EAC1B7kI,KAAK8kI,MAAQA,EACb9kI,KAAK+kI,mBAAqB,KAC1B/kI,KAAKglI,WAAa,KAClBhlI,KAAKilI,WAAY,EACjBjlI,KAAKklI,YAAa,EAClBllI,KAAK+iI,SAAW,IAAI16G,SAAQ,CAACC,EAASsQ,KAClC54B,KAAKmlI,SAAW78G,EAChBtoB,KAAKolI,QAAUxsG,EACf54B,KAAKqlI,QAAQ,GAErB,CAIA,MAAAA,GACI,MAAMC,EAAe,CAACC,EAAiB9E,KACnC,GAAIA,EAEA,YADA8E,GAAgB,EAAO,IAAIC,IAAiB,EAAO,MAAM,IAG7D,MAAMxwB,EAAah1G,KAAK6kI,qBACxB7kI,KAAK+kI,mBAAqB/vB,EAC1B,MAAMywB,EAAmBC,IACrB,MAAMC,EAASD,EAAcC,OACvBC,EAAQF,EAAcG,iBAAmBH,EAAcE,OAAS,EACvC,OAA3B5lI,KAAK4kI,mBACL5kI,KAAK4kI,kBAAkBe,EAAQC,EACnC,EAE2B,OAA3B5lI,KAAK4kI,mBACL5vB,EAAW8wB,0BAA0BL,GAIzCzwB,EACKtmC,KAAK1uE,KAAKmkI,KAAMnkI,KAAKokI,QAASpkI,KAAKskI,MAAOtkI,KAAKqkI,UAC/CzlG,MAAK,KACyB,OAA3B5+B,KAAK4kI,mBACL5vB,EAAW+wB,6BAA6BN,GAE5CzlI,KAAK+kI,mBAAqB,KAC1B,MAAMiB,EAAYhxB,EAAWixB,iBAAmB5F,GAAU6F,SACpDtjH,EAASoyF,EAAWmxB,YAC1B,IAAKH,GACAnC,GAAkBjhH,EAAQ5iB,KAAKwkI,wBAC5BxkI,KAAK8kI,MAAQ,CACjB,MAAMsB,EAAcpxB,EAAWixB,iBAAmB5F,GAAUgG,MAE5D,YADAd,GAAgB,EAAO,IAAIC,IAAiB,EAAO,KAAMY,GAE7D,CACA,MAAME,GAAsD,IAAxCtmI,KAAKukI,cAAc53H,QAAQiW,GAC/C2iH,GAAgB,EAAM,IAAIC,GAAiBc,EAAatxB,GAAY,GACtE,EAMAuxB,EAAc,CAACC,EAAoB5jH,KACrC,MAAM0F,EAAUtoB,KAAKmlI,SACfvsG,EAAS54B,KAAKolI,QACdpwB,EAAapyF,EAAOoyF,WAC1B,GAAIpyF,EAAO6jH,eACP,IACI,MAAMjrG,EAASx7B,KAAKykI,UAAUzvB,EAAYA,EAAW0xB,oBAtOxD,IAuOiBlrG,EACVlT,EAAQkT,GAGRlT,GAER,CACA,MAAO6O,GACHyB,EAAOzB,EACX,MAGA,GAAmB,OAAf69E,EAAqB,CACrB,MAAMpzG,EAAM0+H,KACZ1+H,EAAIq+H,eAAiBjrB,EAAW2xB,eAC5B3mI,KAAK0kI,eACL9rG,EAAO54B,KAAK0kI,eAAe1vB,EAAYpzG,IAGvCg3B,EAAOh3B,EAEf,MAEI,GAAIghB,EAAO69G,SAAU,CAEjB7nG,EADY54B,KAAKklI,WAAapE,KAAeL,KAEjD,KACK,CAED7nG,EADY2nG,KAEhB,CAER,EAEAvgI,KAAKilI,UACLsB,EAAY,EAAO,IAAIf,IAAiB,EAAO,MAAM,IAGrDxlI,KAAKglI,WAxYjB,SAAe4B,EAEfC,EAAmBv8G,GAGf,IAAIw8G,EAAc,EAIdC,EAAiB,KAEjBC,EAAkB,KAClBC,GAAa,EACbC,EAAc,EAClB,SAASzG,IACL,OAAuB,IAAhByG,CACX,CACA,IAAIC,GAAoB,EACxB,SAASC,KAAmB/lI,GACnB8lI,IACDA,GAAoB,EACpBN,EAAkB5kI,MAAM,KAAMZ,GAEtC,CACA,SAASgmI,EAAchJ,GACnB0I,EAAiBvyH,YAAW,KACxBuyH,EAAiB,KACjBH,EAAUU,EAAiB7G,IAAW,GACvCpC,EACP,CACA,SAASkJ,IACDP,GACAhvH,aAAagvH,EAErB,CACA,SAASM,EAAgBE,KAAYnmI,GACjC,GAAI8lI,EAEA,YADAI,IAGJ,GAAIC,EAGA,OAFAD,SACAH,EAAgBtlI,KAAK,KAAM0lI,KAAYnmI,GAI3C,GADiBo/H,KAAcwG,EAI3B,OAFAM,SACAH,EAAgBtlI,KAAK,KAAM0lI,KAAYnmI,GAO3C,IAAIomI,EAJAX,EAAc,KAEdA,GAAe,GAGC,IAAhBI,GACAA,EAAc,EACdO,EAAa,GAGbA,EAA6C,KAA/BX,EAAc5+H,KAAKqmC,UAErC84F,EAAcI,EAClB,CACA,IAAIC,GAAU,EACd,SAASC,EAAKC,GACNF,IAGJA,GAAU,EACVH,IACIJ,IAGmB,OAAnBJ,GACKa,IACDV,EAAc,GAElBlvH,aAAa+uH,GACbM,EAAc,IAGTO,IACDV,EAAc,IAG1B,CAMA,OALAG,EAAc,GACdL,EAAkBxyH,YAAW,KACzByyH,GAAa,EACbU,GAAK,EAAK,GACXr9G,GACIq9G,CACX,CA0S8B50H,CAAMuyH,EAAciB,EAAavmI,KAAK2kI,SAEhE,CAEA,UAAA3B,GACI,OAAOhjI,KAAK+iI,QAChB,CAEA,MAAA7vH,CAAO20H,GACH7nI,KAAKilI,WAAY,EACjBjlI,KAAKklI,WAAa2C,IAAa,EACP,OAApB7nI,KAAKglI,aACL2C,EAAK3nI,KAAKglI,aA7Sf,GA+SiC,OAA5BhlI,KAAK+kI,oBACL/kI,KAAK+kI,mBAAmBltD,OAEhC,EAMJ,MAAM2tD,GACF,WAAAt0H,CAAYu1H,EAAgBzxB,EAAYyrB,GACpCzgI,KAAKymI,eAAiBA,EACtBzmI,KAAKg1G,WAAaA,EAClBh1G,KAAKygI,WAAaA,CACtB,EAgDJ,SAASqH,KACL,MAA2B,oBAAhBC,YACAA,YAE2B,oBAAtBC,kBACLA,uBAGP,CAER,CAOA,SAASC,MAAa5mI,GAClB,MAAM0mI,EAAcD,KACpB,QAAoB3nI,IAAhB4nI,EAA2B,CAC3B,MAAMG,EAAK,IAAIH,EACf,IAAK,IAAIzmI,EAAI,EAAGA,EAAID,EAAKI,OAAQH,IAC7B4mI,EAAG9uB,OAAO/3G,EAAKC,IAEnB,OAAO4mI,EAAGC,SACd,CAEI,GAAI/E,KACA,OAAO,IAAIhjC,KAAK/+F,GAGhB,MAAM,IAAIy+H,GAAaM,GAAiBgI,wBAAyB,sDAG7E,CAwCA,SAASC,GAAaC,GAClB,GAAoB,oBAATzzG,KACP,MApuBiB0zG,EAouBK,UAnuBnB,IAAIzI,GAAaM,GAAiBgI,wBAAyB,GAAGG,2JADzE,IAAyBA,EAsuBrB,OAAO1zG,KAAKyzG,EAChB,CAsBA,MAAME,GAAe,CAQjBC,IAAK,MAOLC,OAAQ,SAORC,UAAW,YAUXC,SAAU,YAEd,MAAMC,GACF,WAAA33H,CAAY5I,EAAMwgI,GACd9oI,KAAKsI,KAAOA,EACZtI,KAAK8oI,YAAcA,GAAe,IACtC,EAKJ,SAASC,GAAe/iG,EAAQgjG,GAC5B,OAAQhjG,GACJ,KAAKwiG,GAAaC,IACd,OAAO,IAAII,GAAWI,GAAWD,IACrC,KAAKR,GAAaE,OAClB,KAAKF,GAAaG,UACd,OAAO,IAAIE,GAAWK,GAAaljG,EAAQgjG,IAC/C,KAAKR,GAAaI,SACd,OAAO,IAAIC,GAmHvB,SAAuBM,GACnB,MAAM/0F,EAAQ,IAAIg1F,GAAaD,GAC/B,OAAI/0F,EAAMhgB,OACC80G,GAAaV,GAAaE,OAAQt0F,EAAMvT,MAxEvD,SAA8Bj9B,GAC1B,IAAIy0B,EACJ,IACIA,EAAUsF,mBAAmB/5B,EACjC,CACA,MAAOuzB,GACH,MAAM+pG,GAAcsH,GAAaI,SAAU,sBAC/C,CACA,OAAOK,GAAW5wG,EACtB,CAkEegxG,CAAqBj1F,EAAMvT,KAE1C,CA3HkCyoG,CAAcN,GA6H9B,IAAII,GA7H2DJ,GA8HhEF,aA1Hb,MAAMxI,IACV,CACA,SAAS2I,GAAWrlI,GAChB,MAAM4E,EAAI,GACV,IAAK,IAAIlH,EAAI,EAAGA,EAAIsC,EAAMnC,OAAQH,IAAK,CACnC,IAAI4yB,EAAItwB,EAAMuwB,WAAW7yB,GACzB,GAAI4yB,GAAK,IACL1rB,EAAElG,KAAK4xB,QAGP,GAAIA,GAAK,KACL1rB,EAAElG,KAAK,IAAO4xB,GAAK,EAAI,IAAW,GAAJA,QAG9B,GAAoB,QAAX,MAAJA,GAAsB,CAGvB,GADc5yB,EAAIsC,EAAMnC,OAAS,GAA2C,QAAX,MAA1BmC,EAAMuwB,WAAW7yB,EAAI,IAKvD,CAGD4yB,EAAI,OAAe,KAFRA,IAEiB,GAAY,KAD7BtwB,EAAMuwB,aAAa7yB,GAE9BkH,EAAElG,KAAK,IAAO4xB,GAAK,GAAK,IAAQA,GAAK,GAAM,GAAK,IAAQA,GAAK,EAAK,GAAK,IAAW,GAAJA,EAClF,MAPI1rB,EAAElG,KAAK,IAAK,IAAK,IAQzB,MAEwB,QAAX,MAAJ4xB,GAED1rB,EAAElG,KAAK,IAAK,IAAK,KAGjBkG,EAAElG,KAAK,IAAO4xB,GAAK,GAAK,IAAQA,GAAK,EAAK,GAAK,IAAW,GAAJA,EAK1E,CACA,OAAO,IAAI69F,WAAWvpH,EAC1B,CAWA,SAAS0gI,GAAaljG,EAAQpiC,GAC1B,OAAQoiC,GACJ,KAAKwiG,GAAaE,OAAQ,CACtB,MAAMa,GAAmC,IAAxB3lI,EAAM+I,QAAQ,KACzB68H,GAAmC,IAAxB5lI,EAAM+I,QAAQ,KAC/B,GAAI48H,GAAYC,EAAU,CAEtB,MAAMtI,GAAcl7F,EAAQ,uBADRujG,EAAW,IAAM,KAGjC,oCACR,CACA,KACJ,CACA,KAAKf,GAAaG,UAAW,CACzB,MAAMc,GAAkC,IAAxB7lI,EAAM+I,QAAQ,KACxB+8H,GAAmC,IAAxB9lI,EAAM+I,QAAQ,KAC/B,GAAI88H,GAAWC,EAAU,CAErB,MAAMxI,GAAcl7F,EAAQ,uBADRyjG,EAAU,IAAM,KAC8B,iCACtE,CACA7lI,EAAQA,EAAMqzB,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC/C,KACJ,EAGJ,IAAIjB,EACJ,IACIA,EAAQqyG,GAAazkI,EACzB,CACA,MAAOuzB,GACH,GAAIA,EAAE0E,QAAQvuB,SAAS,YACnB,MAAM6pB,EAEV,MAAM+pG,GAAcl7F,EAAQ,0BAChC,CACA,MAAM3a,EAAQ,IAAI0mG,WAAW/7F,EAAMv0B,QACnC,IAAK,IAAIH,EAAI,EAAGA,EAAI00B,EAAMv0B,OAAQH,IAC9B+pB,EAAM/pB,GAAK00B,EAAM7B,WAAW7yB,GAEhC,OAAO+pB,CACX,CACA,MAAM+9G,GACF,WAAAl4H,CAAYy4H,GACR3pI,KAAKo0B,QAAS,EACdp0B,KAAK8oI,YAAc,KACnB,MAAMl1G,EAAU+1G,EAAQxxG,MAAM,mBAC9B,GAAgB,OAAZvE,EACA,MAAMstG,GAAcsH,GAAaI,SAAU,yDAE/C,MAAMgB,EAASh2G,EAAQ,IAAM,KACf,MAAVg2G,IACA5pI,KAAKo0B,OAqBjB,SAAkBshB,EAAGtiC,GAEjB,KADmBsiC,EAAEj0C,QAAU2R,EAAI3R,QAE/B,OAAO,EAEX,OAAOi0C,EAAE1X,UAAU0X,EAAEj0C,OAAS2R,EAAI3R,UAAY2R,CAClD,CA3B0BmvF,CAASqnC,EAAQ,WAC/B5pI,KAAK8oI,YAAc9oI,KAAKo0B,OAClBw1G,EAAO5rG,UAAU,EAAG4rG,EAAOnoI,OAAS,GACpCmoI,GAEV5pI,KAAK6gC,KAAO8oG,EAAQ3rG,UAAU2rG,EAAQh9H,QAAQ,KAAO,EACzD,EA8CJ,MAAMk9H,GACF,WAAA34H,CAAY5I,EAAMwhI,GACd,IAAIv8F,EAAO,EACPw8F,EAAW,GACX5G,GAAa76H,IACbtI,KAAKgqI,MAAQ1hI,EACbilC,EAAOjlC,EAAKilC,KACZw8F,EAAWzhI,EAAKrH,MAEXqH,aAAgB2hI,aACjBH,EACA9pI,KAAKgqI,MAAQ,IAAIjY,WAAWzpH,IAG5BtI,KAAKgqI,MAAQ,IAAIjY,WAAWzpH,EAAK4hI,YACjClqI,KAAKgqI,MAAMnpH,IAAI,IAAIkxG,WAAWzpH,KAElCilC,EAAOvtC,KAAKgqI,MAAMvoI,QAEb6G,aAAgBypH,aACjB+X,EACA9pI,KAAKgqI,MAAQ1hI,GAGbtI,KAAKgqI,MAAQ,IAAIjY,WAAWzpH,EAAK7G,QACjCzB,KAAKgqI,MAAMnpH,IAAIvY,IAEnBilC,EAAOjlC,EAAK7G,QAEhBzB,KAAKmqI,MAAQ58F,EACbvtC,KAAKoqI,MAAQL,CACjB,CACA,IAAAx8F,GACI,OAAOvtC,KAAKmqI,KAChB,CACA,IAAAlpI,GACI,OAAOjB,KAAKoqI,KAChB,CACA,KAAApoI,CAAMqoI,EAAWC,GACb,GAAInH,GAAanjI,KAAKgqI,OAAQ,CAC1B,MACMO,EApTlB,SAAmBC,EAAMz3H,EAAOK,GAC5B,OAAIo3H,EAAKC,YACED,EAAKC,YAAY13H,EAAOK,GAE1Bo3H,EAAKE,SACHF,EAAKE,SAAS33H,EAAOK,GAEvBo3H,EAAKxoI,MACHwoI,EAAKxoI,MAAM+Q,EAAOK,GAEtB,IACX,CAyS2Bu3H,CADE3qI,KAAKgqI,MACaK,EAAWC,GAC9C,OAAe,OAAXC,EACO,KAEJ,IAAIV,GAAQU,EACvB,CACK,CACD,MAAMvoI,EAAQ,IAAI+vH,WAAW/xH,KAAKgqI,MAAMY,OAAQP,EAAWC,EAAUD,GACrE,OAAO,IAAIR,GAAQ7nI,GAAO,EAC9B,CACJ,CACA,cAAOmmI,IAAW9mI,GACd,GAAI+hI,KAAuB,CACvB,MAAMyH,EAASxpI,EAAKmjB,KAAK+kB,GACjBA,aAAesgG,GACRtgG,EAAIygG,MAGJzgG,IAGf,OAAO,IAAIsgG,GAAQ5B,GAAUhmI,MAAM,KAAM4oI,GAC7C,CACK,CACD,MAAMC,EAAczpI,EAAKmjB,KAAK+kB,GACtB25F,GAAS35F,GACFw/F,GAAeP,GAAaC,IAAKl/F,GAAKjhC,KAItCihC,EAAIygG,QAGnB,IAAIe,EAAc,EAClBD,EAAYj5H,SAASwZ,IACjB0/G,GAAe1/G,EAAM6+G,UAAU,IAEnC,MAAM3rF,EAAS,IAAIwzE,WAAWgZ,GAC9B,IAAIhwH,EAAQ,EAMZ,OALA+vH,EAAYj5H,SAASwZ,IACjB,IAAK,IAAI/pB,EAAI,EAAGA,EAAI+pB,EAAM5pB,OAAQH,IAC9Bi9C,EAAOxjC,KAAWsQ,EAAM/pB,EAC5B,IAEG,IAAIuoI,GAAQtrF,GAAQ,EAC/B,CACJ,CACA,UAAAysF,GACI,OAAOhrI,KAAKgqI,KAChB,EAuBJ,SAASiB,GAAiBv1F,GACtB,IAAI9Y,EACJ,IACIA,EAAM5hB,KAAKid,MAAMyd,EACrB,CACA,MAAOve,GACH,OAAO,IACX,CACA,MAlwBoB,iBADElD,EAmwBD2I,IAlwBY76B,MAAMgpB,QAAQkJ,GAswBpC,KAHA2I,EApwBf,IAA0B3I,CAywB1B,CAqDA,SAASi3G,GAAc97F,GACnB,MAAMr0B,EAAQq0B,EAAK0qB,YAAY,IAAK1qB,EAAK3tC,OAAS,GAClD,OAAe,IAAXsZ,EACOq0B,EAGAA,EAAKptC,MAAM+Y,EAAQ,EAElC,CAkBA,SAASowH,GAASjV,EAAUtyH,GACxB,OAAOA,CACX,CACA,MAAMwnI,GACF,WAAAl6H,CAAYm6H,EAAQC,EAAO1kG,EAAU2kG,GACjCvrI,KAAKqrI,OAASA,EACdrrI,KAAKsrI,MAAQA,GAASD,EACtBrrI,KAAK4mC,WAAaA,EAClB5mC,KAAKurI,MAAQA,GAASJ,EAC1B,EAEJ,IAAIK,GAAY,KAShB,SAASC,KACL,GAAID,GACA,OAAOA,GAEX,MAAME,EAAW,GACjBA,EAASppI,KAAK,IAAI8oI,GAAQ,WAC1BM,EAASppI,KAAK,IAAI8oI,GAAQ,eAC1BM,EAASppI,KAAK,IAAI8oI,GAAQ,mBAC1BM,EAASppI,KAAK,IAAI8oI,GAAQ,OAAQ,YAAY,IAI9C,MAAMO,EAAc,IAAIP,GAAQ,QAChCO,EAAYJ,MAJZ,SAA2BK,EAAWC,GAClC,OAlBR,SAAmBA,GACf,OAAK3I,GAAS2I,IAAaA,EAASpqI,OAAS,EAClCoqI,EAGAX,GAAcW,EAE7B,CAWeC,CAAUD,EACrB,EAGAH,EAASppI,KAAKqpI,GAYd,MAAMI,EAAc,IAAIX,GAAQ,QAahC,OAZAW,EAAYR,MATZ,SAAmBK,EAAWr+F,GAC1B,YAAaptC,IAATotC,EACOpjC,OAAOojC,GAGPA,CAEf,EAGAm+F,EAASppI,KAAKypI,GACdL,EAASppI,KAAK,IAAI8oI,GAAQ,gBAC1BM,EAASppI,KAAK,IAAI8oI,GAAQ,YAC1BM,EAASppI,KAAK,IAAI8oI,GAAQ,UAAW,MAAM,IAC3CM,EAASppI,KAAK,IAAI8oI,GAAQ,eAAgB,MAAM,IAChDM,EAASppI,KAAK,IAAI8oI,GAAQ,qBAAsB,MAAM,IACtDM,EAASppI,KAAK,IAAI8oI,GAAQ,kBAAmB,MAAM,IACnDM,EAASppI,KAAK,IAAI8oI,GAAQ,kBAAmB,MAAM,IACnDM,EAASppI,KAAK,IAAI8oI,GAAQ,cAAe,MAAM,IAC/CM,EAASppI,KAAK,IAAI8oI,GAAQ,WAAY,kBAAkB,IACxDI,GAAYE,EACLF,EACX,CAUA,SAASQ,GAAa7vG,EAAS8vG,EAAUP,GACrC,MAAMxV,EAAW,CACjBA,KAAmB,QACb90H,EAAMsqI,EAASjqI,OACrB,IAAK,IAAIH,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC1B,MAAMmyC,EAAUi4F,EAASpqI,GACzB40H,EAASziF,EAAQ63F,OAAS73F,EAAQ83F,MAAMrV,EAAU+V,EAASx4F,EAAQ43F,QACvE,CAEA,OAlBJ,SAAgBnV,EAAU/5F,GAOtBx0B,OAAO4J,eAAe2kH,EAAU,MAAO,CAAE5sH,IANzC,WACI,MAAMg4H,EAASpL,EAAiB,OAC1B9mF,EAAO8mF,EAAmB,SAC1BiM,EAAM,IAAI5jB,GAAS+iB,EAAQlyF,GACjC,OAAOjT,EAAQ+vG,sBAAsB/J,EACzC,GAEJ,CASIgK,CAAOjW,EAAU/5F,GACV+5F,CACX,CACA,SAASkW,GAAmBjwG,EAASkwG,EAAgBX,GACjD,MAAM9uG,EAAMquG,GAAiBoB,GAC7B,GAAY,OAARzvG,EACA,OAAO,KAGX,OAAOovG,GAAa7vG,EADHS,EACsB8uG,EAC3C,CA8BA,SAASY,GAAiBpW,EAAUwV,GAChC,MAAMO,EAAW,CAAC,EACZ7qI,EAAMsqI,EAASjqI,OACrB,IAAK,IAAIH,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC1B,MAAMmyC,EAAUi4F,EAASpqI,GACrBmyC,EAAQ7M,WACRqlG,EAASx4F,EAAQ43F,QAAUnV,EAASziF,EAAQ63F,OAEpD,CACA,OAAOtwH,KAAKC,UAAUgxH,EAC1B,CAkBA,MAAMM,GAAe,WACfC,GAAY,QAsBlB,SAASC,GAAmBtwG,EAASmlG,EAAQ+K,GACzC,MAAMzvG,EAAMquG,GAAiBoB,GAC7B,GAAY,OAARzvG,EACA,OAAO,KAGX,OA3BJ,SAA6BT,EAASmlG,EAAQ2K,GAC1C,MAAMS,EAAa,CACfC,SAAU,GACVlhH,MAAO,GACPmhH,cAAeX,EAAwB,eAE3C,GAAIA,EAASM,IACT,IAAK,MAAMn9F,KAAQ68F,EAASM,IAAe,CACvC,MAAMM,EAA2Bz9F,EAAKnY,QAAQ,MAAO,IAC/C0mB,EAAYxhB,EAAQ+vG,sBAAsB,IAAI3tB,GAAS+iB,EAAQuL,IACrEH,EAAWC,SAASrqI,KAAKq7C,EAC7B,CAEJ,GAAIsuF,EAASO,IACT,IAAK,MAAMt/G,KAAQ++G,EAASO,IAAY,CACpC,MAAM7uF,EAAYxhB,EAAQ+vG,sBAAsB,IAAI3tB,GAAS+iB,EAAQp0G,EAAW,OAChFw/G,EAAWjhH,MAAMnpB,KAAKq7C,EAC1B,CAEJ,OAAO+uF,CACX,CAOWI,CAAoB3wG,EAASmlG,EADnB1kG,EAErB,CAQA,MAAMmwG,GACF,WAAA77H,CAAY2sB,EAAKsB,EAQjBh+B,EAASmpB,GACLtqB,KAAK69B,IAAMA,EACX79B,KAAKm/B,OAASA,EACdn/B,KAAKmB,QAAUA,EACfnB,KAAKsqB,QAAUA,EACftqB,KAAKgtI,UAAY,CAAC,EAClBhtI,KAAKosE,QAAU,CAAC,EAChBpsE,KAAKkd,KAAO,KACZld,KAAKitI,aAAe,KAKpBjtI,KAAKktI,iBAAmB,KACxBltI,KAAKmtI,aAAe,CAAC,KACrBntI,KAAK8jI,qBAAuB,EAChC,EAsBJ,SAASsJ,GAAaC,GAClB,IAAKA,EACD,MAAM/M,IAEd,CACA,SAASgN,GAAgBnxG,EAASuvG,GAM9B,OALA,SAAiB6B,EAAK55C,GAClB,MAAMuiC,EAAWkW,GAAmBjwG,EAASw3D,EAAM+3C,GAEnD,OADA0B,GAA0B,OAAblX,GACNA,CACX,CAEJ,CASA,SAASsX,GAAmBrxG,EAASuvG,GAMjC,OALA,SAAiB6B,EAAK55C,GAClB,MAAMuiC,EAAWkW,GAAmBjwG,EAASw3D,EAAM+3C,GAEnD,OADA0B,GAA0B,OAAblX,GAtKrB,SAAuCA,EAAUmW,EAAgBvsF,EAAMmtB,GACnE,MAAMrwC,EAAMquG,GAAiBoB,GAC7B,GAAY,OAARzvG,EACA,OAAO,KAEX,IAAKsmG,GAAStmG,EAAoB,gBAG9B,OAAO,KAEX,MAAM+nD,EAAS/nD,EAAoB,eACnC,GAAsB,IAAlB+nD,EAAOljF,OACP,OAAO,KAEX,MAAM+yG,EAAS/2E,mBAaf,OAZmBknD,EAAO94E,MAAM,KACR2Y,KAAKyU,IACzB,MAAMqoG,EAASpL,EAAiB,OAC1B9mF,EAAO8mF,EAAmB,SAOhC,OALauN,GADG,MAAQjvB,EAAO8sB,GAAU,MAAQ9sB,EAAOplE,GAC1B0Q,EAAMmtB,GAChB02D,GAAgB,CAChC8J,IAAK,QACLx0G,SAEqB,IAEjB,EAChB,CA2Iey0G,CAA8BxX,EAAUviC,EAAMx3D,EAAQ2jB,KAAM3jB,EAAQwxG,UAC/E,CAEJ,CACA,SAASC,GAAmBjwD,GA+BxB,OA9BA,SAAsB4vD,EAAK3rI,GACvB,IAAIisI,EAj8CZ,IAAsBz+F,EAdCkyF,EA0+Cf,OA1BwB,MAApBiM,EAAIpH,YAKA0H,EADJN,EAAI5G,eAAer5H,SAAS,uCAx8C7B,IAAIwyH,GAAaM,GAAiB0N,iBAAkB,iFAHpD,IAAIhO,GAAaM,GAAiB7E,gBAFzB,+FAq9CgB,MAApBgS,EAAIpH,aA59CG7E,EA69CgB3jD,EAAS2jD,OAAhCuM,EA59CL,IAAI/N,GAAaM,GAAiB2N,eAAgB,qBACrDzM,EADqD,2EA+9CrB,MAApBiM,EAAIpH,aAl9CF/2F,EAm9CoBuuC,EAASvuC,KAA/By+F,EAl9CT,IAAI/N,GAAaM,GAAiB4N,aAAc,4CAA8C5+F,EAAO,OAq9C5Fy+F,EAASjsI,EAIrBisI,EAAOjrH,OAAS2qH,EAAIpH,YACpB0H,EAAO5N,eAAiBr+H,EAAIq+H,eACrB4N,CACX,CAEJ,CACA,SAASI,GAAmBtwD,GACxB,MAAMuwD,EAASN,GAAmBjwD,GASlC,OARA,SAAsB4vD,EAAK3rI,GACvB,IAAIisI,EAASK,EAAOX,EAAK3rI,GAp/CjC,IAAwBwtC,EAy/ChB,OAJwB,MAApBm+F,EAAIpH,cAr/CQ/2F,EAs/CYuuC,EAASvuC,KAAjCy+F,EAr/CD,IAAI/N,GAAaM,GAAiB+N,iBAAkB,WAAa/+F,EAAO,sBAu/C3Ey+F,EAAO5N,eAAiBr+H,EAAIq+H,eACrB4N,CACX,CAEJ,CACA,SAASO,GAAcjyG,EAASwhD,EAAU+tD,GACtC,MACM7tG,EAAM4lG,GADI9lD,EAAS8jD,gBACItlG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CrjH,EAAU6R,EAAQkyG,sBAClBC,EAAc,IAAIvB,GAAYlvG,EAFrB,MAEkCyvG,GAAgBnxG,EAASuvG,GAAWphH,GAErF,OADAgkH,EAAYrB,aAAegB,GAAmBtwD,GACvC2wD,CACX,CACA,SAASC,GAAOpyG,EAASwhD,EAAU6wD,EAAWC,EAAWC,GACrD,MAAM1B,EAAY,CAAC,EACfrvD,EAAS6jD,OACTwL,EAAkB,OAAI,GAGtBA,EAAkB,OAAIrvD,EAASvuC,KAAO,IAEtCo/F,GAAaA,EAAU/sI,OAAS,IAChCurI,EAAqB,UAAIwB,GAEzBC,IACAzB,EAAqB,UAAIyB,GAEzBC,IACA1B,EAAsB,WAAI0B,GAE9B,MACM7wG,EAAM4lG,GADI9lD,EAAS+jD,sBACIvlG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CrjH,EAAU6R,EAAQkyG,sBAClBC,EAAc,IAAIvB,GAAYlvG,EAFrB,MAzFnB,SAAqB1B,EAASmlG,GAM1B,OALA,SAAiBiM,EAAK55C,GAClB,MAAM+4C,EAAaD,GAAmBtwG,EAASmlG,EAAQ3tC,GAEvD,OADAy5C,GAA4B,OAAfV,GACNA,CACX,CAEJ,CAoFqDiC,CAAYxyG,EAASwhD,EAAS2jD,QAASh3G,GAGxF,OAFAgkH,EAAYtB,UAAYA,EACxBsB,EAAYrB,aAAeW,GAAmBjwD,GACvC2wD,CACX,CAoDA,SAASM,GAAmBjxD,EAAU6sD,EAAMtU,GACxC,MAAM2Y,EAAgBlnI,OAAO8xB,OAAO,CAAC,EAAGy8F,GAMxC,OALA2Y,EAAwB,SAAIlxD,EAASvuC,KACrCy/F,EAAoB,KAAIrE,EAAKj9F,OACxBshG,EAA2B,cAC5BA,EAA2B,YAVnC,SAA+B3Y,EAAUsU,GACrC,OAAStU,GAAYA,EAAsB,aACtCsU,GAAQA,EAAKvpI,QACd,0BACR,CAMuC6tI,CAAsB,KAAMtE,IAExDqE,CACX,CAIA,SAASE,GAAgB5yG,EAASwhD,EAAU+tD,EAAUlB,EAAMtU,GACxD,MAAMwN,EAAU/lD,EAAS+jD,sBACnBt1D,EAAU,CACZ,yBAA0B,aAS9B,MAAMlmB,EAPN,WACI,IAAInyB,EAAM,GACV,IAAK,IAAIzyB,EAAI,EAAGA,EAAI,EAAGA,IACnByyB,GAAY7rB,KAAKqmC,SAASjgB,WAAWtsB,MAAM,GAE/C,OAAO+xB,CACX,CACiBi7G,GACjB5iE,EAAQ,gBAAkB,+BAAiClmB,EAC3D,MAAM+oF,EAAYL,GAAmBjxD,EAAU6sD,EAAMtU,GAE/CgZ,EAAc,KAChBhpF,EADgB,4DADGomF,GAAiB2C,EAAWvD,GAM/C,SACAxlF,EANgB,qBAShB+oF,EAAuB,YACvB,WACEE,EAAe,SAAWjpF,EAAW,KACrChpC,EAAO2sH,GAAQ1B,QAAQ+G,EAAa1E,EAAM2E,GAChD,GAAa,OAATjyH,EACA,MAAMyjH,KAEV,MAAMqM,EAAY,CAAEr1H,KAAMs3H,EAAoB,UACxCpxG,EAAM4lG,GAAQC,EAASvnG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CrjH,EAAU6R,EAAQizG,mBAClBd,EAAc,IAAIvB,GAAYlvG,EAFrB,OAEkCyvG,GAAgBnxG,EAASuvG,GAAWphH,GAKrF,OAJAgkH,EAAYtB,UAAYA,EACxBsB,EAAYliE,QAAUA,EACtBkiE,EAAYpxH,KAAOA,EAAK8tH,aACxBsD,EAAYrB,aAAeW,GAAmBjwD,GACvC2wD,CACX,CAQA,MAAMe,GACF,WAAAn+H,CAAY0D,EAASgxH,EAAOjnG,EAAWu3F,GACnCl2H,KAAK4U,QAAUA,EACf5U,KAAK4lI,MAAQA,EACb5lI,KAAK2+B,YAAcA,EACnB3+B,KAAKk2H,SAAWA,GAAY,IAChC,EAEJ,SAASoZ,GAAmB/B,EAAK3/C,GAC7B,IAAIhrE,EAAS,KACb,IACIA,EAAS2qH,EAAIgC,kBAAkB,uBACnC,CACA,MAAOp4G,GACHi2G,IAAa,EACjB,CAGA,OADAA,KAAexqH,IAA6C,KADtCgrE,GAAW,CAAC,WACKjhF,QAAQiW,IACxCA,CACX,CAoEA,MAAM4sH,GAA8B,OAUpC,SAASC,GAAwB9xD,EAAUxhD,EAAS0B,EAAK2sG,EAAMkF,EAAWhE,EAAU9oH,EAAQsqH,GAGxF,MAAMnN,EAAU,IAAIsP,GAAsB,EAAG,GAS7C,GARIzsH,GACAm9G,EAAQnrH,QAAUgO,EAAOhO,QACzBmrH,EAAQ6F,MAAQhjH,EAAOgjH,QAGvB7F,EAAQnrH,QAAU,EAClBmrH,EAAQ6F,MAAQ4E,EAAKj9F,QAErBi9F,EAAKj9F,SAAWwyF,EAAQ6F,MACxB,MArtDG,IAAI9F,GAAaM,GAAiBuP,uBAAwB,wEAutDjE,MAAMC,EAAY7P,EAAQ6F,MAAQ7F,EAAQnrH,QAC1C,IAAIi7H,EAAgBD,EAChBF,EAAY,IACZG,EAAgB3nI,KAAK4B,IAAI+lI,EAAeH,IAE5C,MAAMrF,EAAYtK,EAAQnrH,QACpB01H,EAAUD,EAAYwF,EAC5B,IAAIC,EAAgB,GAEhBA,EADkB,IAAlBD,EACgB,WAEXD,IAAcC,EACH,mBAGA,SAEpB,MAAMzjE,EAAU,CACZ,wBAAyB0jE,EACzB,uBAAwB,GAAG/P,EAAQnrH,WAEjCsI,EAAOstH,EAAKxoI,MAAMqoI,EAAWC,GACnC,GAAa,OAATptH,EACA,MAAMyjH,KAmBV,MACMr2G,EAAU6R,EAAQizG,mBAClBd,EAAc,IAAIvB,GAAYlvG,EAFrB,QAjBf,SAAiB0vG,EAAK55C,GAKlB,MAAMo8C,EAAeT,GAAmB/B,EAAK,CAAC,SAAU,UAClDyC,EAAajQ,EAAQnrH,QAAUi7H,EAC/BtiG,EAAOi9F,EAAKj9F,OAClB,IAAI2oF,EAOJ,OALIA,EADiB,UAAjB6Z,EACWzC,GAAgBnxG,EAASuvG,EAAzB4B,CAAmCC,EAAK55C,GAGxC,KAER,IAAI07C,GAAsBW,EAAYziG,EAAuB,UAAjBwiG,EAA0B7Z,EACjF,GAG0D5rG,GAK1D,OAJAgkH,EAAYliE,QAAUA,EACtBkiE,EAAYpxH,KAAOA,EAAK8tH,aACxBsD,EAAYpB,iBAAmBA,GAAoB,KACnDoB,EAAYrB,aAAeW,GAAmBjwD,GACvC2wD,CACX,CAsBA,MAAM2B,GAAY,CAadC,cAAe,iBAObC,GAAY,CAEdC,QAAS,UAETC,OAAQ,SAERC,QAAS,UAET5P,SAAU,WAEV6P,MAAO,SAEX,SAASC,GAA+BjwH,GACpC,OAAQA,GACJ,IAAK,UACL,IAAK,UACL,IAAK,YACD,OAAO4vH,GAAUC,QACrB,IAAK,SACD,OAAOD,GAAUE,OACrB,IAAK,UACD,OAAOF,GAAUG,QACrB,IAAK,WACD,OAAOH,GAAUzP,SAGrB,QAEI,OAAOyP,GAAUI,MAE7B,CAkBA,MAAME,GACF,WAAAv/H,CAAY+tB,EAAgBz9B,EAAOw9B,GAE/B,GA9hDgB,mBA6hDeC,GAA4B,MAATz9B,GAA6B,MAAZw9B,EAE/Dh/B,KAAK6+B,KAAOI,EACZj/B,KAAKwB,MAAQA,QAAqCA,OAAQrB,EAC1DH,KAAKg/B,SAAWA,QAA2CA,OAAW7+B,MAErE,CACD,MAAM4+B,EAAWE,EACjBj/B,KAAK6+B,KAAOE,EAASF,KACrB7+B,KAAKwB,MAAQu9B,EAASv9B,MACtBxB,KAAKg/B,SAAWD,EAASC,QAC7B,CACJ,EAyBJ,SAAS,GAAM8zB,GACX,MAAO,IAAI49E,KAEProH,QAAQC,UAAUsW,MAAK,IAAMk0B,KAAK49E,IAAe,CAEzD,CAmBA,IAAIC,GAAsB,KAK1B,MAAMC,GACF,WAAA1/H,GACIlR,KAAK6wI,OAAQ,EACb7wI,KAAK8wI,KAAO,IAAIn5D,eAChB33E,KAAK+wI,UACL/wI,KAAKgxI,WAAa3Q,GAAU6F,SAC5BlmI,KAAKixI,aAAe,IAAI5oH,SAAQC,IAC5BtoB,KAAK8wI,KAAK3+H,iBAAiB,SAAS,KAChCnS,KAAKgxI,WAAa3Q,GAAUgG,MAC5B/9G,GAAS,IAEbtoB,KAAK8wI,KAAK3+H,iBAAiB,SAAS,KAChCnS,KAAKgxI,WAAa3Q,GAAU6Q,cAC5B5oH,GAAS,IAEbtoB,KAAK8wI,KAAK3+H,iBAAiB,QAAQ,KAC/BmW,GAAS,GACX,GAEV,CACA,IAAAomD,CAAK7wC,EAAKsB,EAAQjiB,EAAMkvD,GACpB,GAAIpsE,KAAK6wI,MACL,MAAMzP,GAAc,iCAIxB,GAFAphI,KAAK6wI,OAAQ,EACb7wI,KAAK8wI,KAAKx1G,KAAK6D,EAAQtB,GAAK,QACZ19B,IAAZisE,EACA,IAAK,MAAMjpE,KAAOipE,EACVA,EAAQ30C,eAAet0B,IACvBnD,KAAK8wI,KAAKl5D,iBAAiBz0E,EAAKipE,EAAQjpE,GAAKmrB,YAUzD,YANanuB,IAAT+c,EACAld,KAAK8wI,KAAKpiE,KAAKxxD,GAGfld,KAAK8wI,KAAKpiE,OAEP1uE,KAAKixI,YAChB,CACA,YAAAhL,GACI,IAAKjmI,KAAK6wI,MACN,MAAMzP,GAAc,yCAExB,OAAOphI,KAAKgxI,UAChB,CACA,SAAA7K,GACI,IAAKnmI,KAAK6wI,MACN,MAAMzP,GAAc,sCAExB,IACI,OAAOphI,KAAK8wI,KAAKluH,MACrB,CACA,MAAOuU,GACH,OAAQ,CACZ,CACJ,CACA,WAAAuvG,GACI,IAAK1mI,KAAK6wI,MACN,MAAMzP,GAAc,wCAExB,OAAOphI,KAAK8wI,KAAK9rE,QACrB,CACA,YAAA2hE,GACI,IAAK3mI,KAAK6wI,MACN,MAAMzP,GAAc,yCAExB,OAAOphI,KAAK8wI,KAAKK,UACrB,CAEA,KAAAt5D,GACI73E,KAAK8wI,KAAKj5D,OACd,CACA,iBAAA03D,CAAkB6B,GACd,OAAOpxI,KAAK8wI,KAAKvB,kBAAkB6B,EACvC,CACA,yBAAAtL,CAA0B3jI,GACE,MAApBnC,KAAK8wI,KAAKO,QACVrxI,KAAK8wI,KAAKO,OAAOl/H,iBAAiB,WAAYhQ,EAEtD,CACA,4BAAA4jI,CAA6B5jI,GACD,MAApBnC,KAAK8wI,KAAKO,QACVrxI,KAAK8wI,KAAKO,OAAOt/H,oBAAoB,WAAY5P,EAEzD,EAEJ,MAAMmvI,WAA0BV,GAC5B,OAAAG,GACI/wI,KAAK8wI,KAAKzwC,aAAe,MAC7B,EAEJ,SAASkxC,KACL,OAAOZ,GAAsBA,KAAwB,IAAIW,EAC7D,CAuCA,MAAME,GAMF,WAAAtgI,CAAYkf,EAAKo6G,EAAMtU,EAAW,MAI9Bl2H,KAAKyxI,aAAe,EACpBzxI,KAAK0xI,oBAAqB,EAC1B1xI,KAAK2xI,sBAAuB,EAC5B3xI,KAAK4xI,WAAa,GAClB5xI,KAAK6xI,YAAS1xI,EACdH,KAAK8xI,gBAAa3xI,EAClBH,KAAK+xI,cAAW5xI,EAChBH,KAAKgyI,iBAAmB,EACxBhyI,KAAKiyI,cAAW9xI,EAChBH,KAAKkyI,aAAU/xI,EACfH,KAAK0D,KAAO0sB,EACZpwB,KAAKmyI,MAAQ3H,EACbxqI,KAAK4rI,UAAY1V,EACjBl2H,KAAKoyI,UAAY3G,KACjBzrI,KAAKqyI,WAAaryI,KAAKsyI,mBAAmBtyI,KAAKmyI,OAC/CnyI,KAAK6rC,OAAS,UACd7rC,KAAKuyI,cAAgB/wI,IAGjB,GAFAxB,KAAK+xI,cAAW5xI,EAChBH,KAAKgyI,iBAAmB,EACpBxwI,EAAM2+H,YAAYC,GAAiBM,UACnC1gI,KAAK0xI,oBAAqB,EAC1B1xI,KAAKwyI,2BAEJ,CACD,MAAMC,EAAiBzyI,KAAK0yI,8BAC5B,GAAI7O,GAAkBriI,EAAMohB,OAAQ,IAAK,CACrC,IAAI6vH,EAOA,OAHAzyI,KAAK2yI,UAAYzqI,KAAK0B,IAAqB,EAAjB5J,KAAK2yI,UA9uEjB,KA+uEd3yI,KAAK0xI,oBAAqB,OAC1B1xI,KAAKwyI,uBALLhxI,EAAQ++H,IAQhB,CACAvgI,KAAK6xI,OAASrwI,EACdxB,KAAK4yI,YAAY,QACrB,GAEJ5yI,KAAK6yI,sBAAwBrxI,IACzBxB,KAAK+xI,cAAW5xI,EACZqB,EAAM2+H,YAAYC,GAAiBM,UACnC1gI,KAAKwyI,wBAGLxyI,KAAK6xI,OAASrwI,EACdxB,KAAK4yI,YAAY,SACrB,EAEJ5yI,KAAK2yI,UAAY,EACjB3yI,KAAK8yI,aAAe9yI,KAAK0D,KAAKqvI,QAAQ3D,mBACtCpvI,KAAKgzI,SAAW,IAAI3qH,SAAQ,CAACC,EAASsQ,KAClC54B,KAAKiyI,SAAW3pH,EAChBtoB,KAAKkyI,QAAUt5G,EACf54B,KAAKizI,QAAQ,IAIjBjzI,KAAKgzI,SAASp0G,KAAK,MAAM,QAC7B,CACA,2BAAA8zG,GACI,OAAO1yI,KAAK2yI,UAAY3yI,KAAK8yI,YACjC,CACA,qBAAAI,GACI,MAAMC,EAAanzI,KAAKyxI,aACxB,OAAO9L,GAAU3lI,KAAKozI,gBAAgBD,EAAaxN,EACvD,CACA,kBAAA2M,CAAmB9H,GACf,OAAOA,EAAKj9F,OAAS,MACzB,CACA,MAAA0lG,GACwB,YAAhBjzI,KAAK6rC,aAIa1rC,IAAlBH,KAAK+xI,WAGL/xI,KAAKqyI,gBACmBlyI,IAApBH,KAAK8xI,WACL9xI,KAAKqzI,mBAGDrzI,KAAK0xI,mBACL1xI,KAAKszI,eAGDtzI,KAAK2xI,qBAEL3xI,KAAKuzI,iBAGLvzI,KAAKwzI,eAAiBh/H,YAAW,KAC7BxU,KAAKwzI,oBAAiBrzI,EACtBH,KAAKyzI,iBAAiB,GACvBzzI,KAAK2yI,WAMpB3yI,KAAK0zI,iBAEb,CACA,aAAAC,CAAc/3H,GAEVyM,QAAQ4kB,IAAI,CACRjtC,KAAK0D,KAAKqvI,QAAQa,gBAClB5zI,KAAK0D,KAAKqvI,QAAQc,sBACnBj1G,MAAK,EAAEu+F,EAAWE,MACjB,OAAQr9H,KAAK6rC,QACT,IAAK,UACDjwB,EAASuhH,EAAWE,GACpB,MACJ,IAAK,YACDr9H,KAAK4yI,YAAY,YACjB,MACJ,IAAK,UACD5yI,KAAK4yI,YAAY,UAEzB,GAER,CAEA,gBAAAS,GACIrzI,KAAK2zI,eAAc,CAACxW,EAAWE,KAC3B,MAAMiR,EA3jBlB,SAA+BnyG,EAASwhD,EAAU+tD,EAAUlB,EAAMtU,GAC9D,MAAMwN,EAAU/lD,EAAS+jD,sBACnBoS,EAAoBlF,GAAmBjxD,EAAU6sD,EAAMtU,GACvD8W,EAAY,CAAEr1H,KAAMm8H,EAA4B,UAChDj2G,EAAM4lG,GAAQC,EAASvnG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CvhE,EAAU,CACZ,yBAA0B,YAC1B,wBAAyB,QACzB,sCAAuC,GAAGo+D,EAAKj9F,SAC/C,oCAAqCumG,EAA+B,YACpE,eAAgB,mCAEd52H,EAAOovH,GAAiBwH,EAAmBpI,GAC3CphH,EAAU6R,EAAQizG,mBAalBd,EAAc,IAAIvB,GAAYlvG,EAtBrB,QAUf,SAAiB0vG,GAEb,IAAI1vG,EADJyxG,GAAmB/B,GAEnB,IACI1vG,EAAM0vG,EAAIgC,kBAAkB,oBAChC,CACA,MAAOp4G,GACHi2G,IAAa,EACjB,CAEA,OADAA,GAAalK,GAASrlG,IACfA,CACX,GAC0DvT,GAK1D,OAJAgkH,EAAYtB,UAAYA,EACxBsB,EAAYliE,QAAUA,EACtBkiE,EAAYpxH,KAAOA,EACnBoxH,EAAYrB,aAAeW,GAAmBjwD,GACvC2wD,CACX,CA0hBgCyF,CAAsB/zI,KAAK0D,KAAKqvI,QAAS/yI,KAAK0D,KAAKswI,UAAWh0I,KAAKoyI,UAAWpyI,KAAKmyI,MAAOnyI,KAAK4rI,WAC7GqI,EAAgBj0I,KAAK0D,KAAKqvI,QAAQmB,aAAa5F,EAAaiD,GAAmBpU,EAAWE,GAChGr9H,KAAK+xI,SAAWkC,EAChBA,EAAcjR,aAAapkG,MAAMf,IAC7B79B,KAAK+xI,cAAW5xI,EAChBH,KAAK8xI,WAAaj0G,EAClB79B,KAAK0xI,oBAAqB,EAC1B1xI,KAAKwyI,sBAAsB,GAC5BxyI,KAAKuyI,cAAc,GAE9B,CACA,YAAAe,GAEI,MAAMz1G,EAAM79B,KAAK8xI,WACjB9xI,KAAK2zI,eAAc,CAACxW,EAAWE,KAC3B,MAAMiR,EAriBlB,SAAkCnyG,EAASwhD,EAAU9/C,EAAK2sG,GAmBtD,MACMlgH,EAAU6R,EAAQizG,mBAClBd,EAAc,IAAIvB,GAAYlvG,EAFrB,QAjBf,SAAiB0vG,GACb,MAAM3qH,EAAS0sH,GAAmB/B,EAAK,CAAC,SAAU,UAClD,IAAI4G,EAAa,KACjB,IACIA,EAAa5G,EAAIgC,kBAAkB,8BACvC,CACA,MAAOp4G,GACHi2G,IAAa,EACjB,CACK+G,GAED/G,IAAa,GAEjB,MAAM7/F,EAAOpjC,OAAOgqI,GAEpB,OADA/G,IAActsI,MAAMysC,IACb,IAAI8hG,GAAsB9hG,EAAMi9F,EAAKj9F,OAAmB,UAAX3qB,EACxD,GAG0D0H,GAG1D,OAFAgkH,EAAYliE,QArBI,CAAE,wBAAyB,SAsB3CkiE,EAAYrB,aAAeW,GAAmBjwD,GACvC2wD,CACX,CA4gBgC8F,CAAyBp0I,KAAK0D,KAAKqvI,QAAS/yI,KAAK0D,KAAKswI,UAAWn2G,EAAK79B,KAAKmyI,OACzFkC,EAAgBr0I,KAAK0D,KAAKqvI,QAAQmB,aAAa5F,EAAaiD,GAAmBpU,EAAWE,GAChGr9H,KAAK+xI,SAAWsC,EAChBA,EAAcrR,aAAapkG,MAAKhc,IAE5B5iB,KAAK+xI,cAAW5xI,EAChBH,KAAKozI,gBAAgBxwH,EAAOhO,SAC5B5U,KAAK0xI,oBAAqB,EACtB9uH,EAAO+b,YACP3+B,KAAK2xI,sBAAuB,GAEhC3xI,KAAKwyI,sBAAsB,GAC5BxyI,KAAKuyI,cAAc,GAE9B,CACA,eAAAkB,GACI,MAAM/D,EAAYF,GAA8BxvI,KAAKgyI,iBAC/CpvH,EAAS,IAAIysH,GAAsBrvI,KAAKyxI,aAAczxI,KAAKmyI,MAAM5kG,QAEjE1P,EAAM79B,KAAK8xI,WACjB9xI,KAAK2zI,eAAc,CAACxW,EAAWE,KAC3B,IAAIiR,EACJ,IACIA,EAAcmB,GAAwBzvI,KAAK0D,KAAKswI,UAAWh0I,KAAK0D,KAAKqvI,QAASl1G,EAAK79B,KAAKmyI,MAAOzC,EAAW1vI,KAAKoyI,UAAWxvH,EAAQ5iB,KAAKkzI,wBAC3I,CACA,MAAO/7G,GAGH,OAFAn3B,KAAK6xI,OAAS16G,OACdn3B,KAAK4yI,YAAY,QAErB,CACA,MAAM0B,EAAgBt0I,KAAK0D,KAAKqvI,QAAQmB,aAAa5F,EAAaiD,GAAmBpU,EAAWE,GACrF,GAEXr9H,KAAK+xI,SAAWuC,EAChBA,EAActR,aAAapkG,MAAM21G,IAC7Bv0I,KAAKw0I,sBACLx0I,KAAK+xI,cAAW5xI,EAChBH,KAAKozI,gBAAgBmB,EAAU3/H,SAC3B2/H,EAAU51G,WACV3+B,KAAK4rI,UAAY2I,EAAUre,SAC3Bl2H,KAAK4yI,YAAY,YAGjB5yI,KAAKwyI,sBACT,GACDxyI,KAAKuyI,cAAc,GAE9B,CACA,mBAAAiC,GAGsB,GAFEhF,GAA8BxvI,KAAKgyI,kBAEjC,WAClBhyI,KAAKgyI,kBAAoB,EAEjC,CACA,cAAAuB,GACIvzI,KAAK2zI,eAAc,CAACxW,EAAWE,KAC3B,MAAMiR,EAAcF,GAAcpuI,KAAK0D,KAAKqvI,QAAS/yI,KAAK0D,KAAKswI,UAAWh0I,KAAKoyI,WACzEqC,EAAkBz0I,KAAK0D,KAAKqvI,QAAQmB,aAAa5F,EAAaiD,GAAmBpU,EAAWE,GAClGr9H,KAAK+xI,SAAW0C,EAChBA,EAAgBzR,aAAapkG,MAAKs3F,IAC9Bl2H,KAAK+xI,cAAW5xI,EAChBH,KAAK4rI,UAAY1V,EACjBl2H,KAAK4yI,YAAY,UAA0C,GAC5D5yI,KAAK6yI,sBAAsB,GAEtC,CACA,cAAAa,GACI1zI,KAAK2zI,eAAc,CAACxW,EAAWE,KAC3B,MAAMiR,EAAcS,GAAgB/uI,KAAK0D,KAAKqvI,QAAS/yI,KAAK0D,KAAKswI,UAAWh0I,KAAKoyI,UAAWpyI,KAAKmyI,MAAOnyI,KAAK4rI,WACvG8I,EAAmB10I,KAAK0D,KAAKqvI,QAAQmB,aAAa5F,EAAaiD,GAAmBpU,EAAWE,GACnGr9H,KAAK+xI,SAAW2C,EAChBA,EAAiB1R,aAAapkG,MAAKs3F,IAC/Bl2H,KAAK+xI,cAAW5xI,EAChBH,KAAK4rI,UAAY1V,EACjBl2H,KAAKozI,gBAAgBpzI,KAAKmyI,MAAM5kG,QAChCvtC,KAAK4yI,YAAY,UAA0C,GAC5D5yI,KAAKuyI,cAAc,GAE9B,CACA,eAAAa,CAAgBuB,GACZ,MAAMC,EAAM50I,KAAKyxI,aACjBzxI,KAAKyxI,aAAekD,EAIhB30I,KAAKyxI,eAAiBmD,GACtB50I,KAAK60I,kBAEb,CACA,WAAAjC,CAAYryH,GACR,GAAIvgB,KAAK6rC,SAAWtrB,EAGpB,OAAQA,GACJ,IAAK,YACL,IAAK,UAIDvgB,KAAK6rC,OAAStrB,OACQpgB,IAAlBH,KAAK+xI,SACL/xI,KAAK+xI,SAAS7+H,SAETlT,KAAKwzI,iBACVx7H,aAAahY,KAAKwzI,gBAClBxzI,KAAKwzI,oBAAiBrzI,EACtBH,KAAKwyI,wBAET,MACJ,IAAK,UAID,MAAMsC,EAA4B,WAAhB90I,KAAK6rC,OACvB7rC,KAAK6rC,OAAStrB,EACVu0H,IACA90I,KAAK60I,mBACL70I,KAAKizI,UAET,MACJ,IAAK,SAcL,IAAK,QAQL,IAAK,UAKDjzI,KAAK6rC,OAAStrB,EACdvgB,KAAK60I,mBACL,MAvBJ,IAAK,WAID70I,KAAK6xI,OAASpR,KACdzgI,KAAK6rC,OAAStrB,EACdvgB,KAAK60I,mBAmBjB,CACA,oBAAArC,GACI,OAAQxyI,KAAK6rC,QACT,IAAK,UACD7rC,KAAK4yI,YAAY,UACjB,MACJ,IAAK,YACD5yI,KAAK4yI,YAAY,YACjB,MACJ,IAAK,UACD5yI,KAAKizI,SAGjB,CAIA,YAAIxc,GACA,MAAMse,EAAgBvE,GAA+BxwI,KAAK6rC,QAC1D,MAAO,CACHmpG,iBAAkBh1I,KAAKyxI,aACvBwD,WAAYj1I,KAAKmyI,MAAM5kG,OACvBhtB,MAAOw0H,EACP7e,SAAUl2H,KAAK4rI,UACfltG,KAAM1+B,KACNowB,IAAKpwB,KAAK0D,KAElB,CAkBA,EAAAhB,CAAGzB,EAAMg+B,EAAgBz9B,EAAO0zI,GAE5B,MAAMn2G,EAAW,IAAI0xG,GAASxxG,QAAkB9+B,EAAWqB,QAASrB,EAAW+0I,QAAa/0I,GAE5F,OADAH,KAAKm1I,aAAap2G,GACX,KACH/+B,KAAKo1I,gBAAgBr2G,EAAS,CAEtC,CAOA,IAAAH,CAAKy2G,EAAaC,GAGd,OAAOt1I,KAAKgzI,SAASp0G,KAAKy2G,EAAaC,EAC3C,CAIA,MAAMA,GACF,OAAOt1I,KAAK4+B,KAAK,KAAM02G,EAC3B,CAIA,YAAAH,CAAap2G,GACT/+B,KAAK4xI,WAAWtvI,KAAKy8B,GACrB/+B,KAAKu1I,gBAAgBx2G,EACzB,CAIA,eAAAq2G,CAAgBr2G,GACZ,MAAMz9B,EAAItB,KAAK4xI,WAAWjlI,QAAQoyB,IACvB,IAAPz9B,GACAtB,KAAK4xI,WAAW3uI,OAAO3B,EAAG,EAElC,CACA,gBAAAuzI,GACI70I,KAAKw1I,iBACax1I,KAAK4xI,WAAW5vI,QACxB6P,SAAQktB,IACd/+B,KAAKu1I,gBAAgBx2G,EAAS,GAEtC,CACA,cAAAy2G,GACI,QAAsBr1I,IAAlBH,KAAKiyI,SAAwB,CAC7B,IAAIwD,GAAY,EAChB,OAAQjF,GAA+BxwI,KAAK6rC,SACxC,KAAKskG,GAAUG,QACX,GAAMtwI,KAAKiyI,SAAS/9H,KAAK,KAAMlU,KAAKy2H,UAApC,GACA,MACJ,KAAK0Z,GAAUzP,SACf,KAAKyP,GAAUI,MAEX,GADevwI,KAAKkyI,QACPh+H,KAAK,KAAMlU,KAAK6xI,QAA7B,GACA,MACJ,QACI4D,GAAY,EAGhBA,IACAz1I,KAAKiyI,cAAW9xI,EAChBH,KAAKkyI,aAAU/xI,EAEvB,CACJ,CACA,eAAAo1I,CAAgBx2G,GAEZ,OADsByxG,GAA+BxwI,KAAK6rC,SAEtD,KAAKskG,GAAUC,QACf,KAAKD,GAAUE,OACPtxG,EAASF,MACT,GAAME,EAASF,KAAK3qB,KAAK6qB,EAAU/+B,KAAKy2H,UAAxC,GAEJ,MACJ,KAAK0Z,GAAUG,QACPvxG,EAASC,UACT,GAAMD,EAASC,SAAS9qB,KAAK6qB,GAA7B,GAEJ,MAOJ,QAEQA,EAASv9B,OACT,GAAMu9B,EAASv9B,MAAM0S,KAAK6qB,EAAU/+B,KAAK6xI,QAAzC,GAGhB,CAKA,MAAA6D,GACI,MAAMC,EAAwB,WAAhB31I,KAAK6rC,QACC,YAAhB7rC,KAAK6rC,OAIT,OAHI8pG,GACA31I,KAAK4yI,YAAY,WAEd+C,CACX,CAKA,KAAAC,GACI,MAAMD,EAAwB,YAAhB31I,KAAK6rC,OAInB,OAHI8pG,GACA31I,KAAK4yI,YAAY,WAEd+C,CACX,CAMA,MAAAziI,GACI,MAAMyiI,EAAwB,YAAhB31I,KAAK6rC,QACC,YAAhB7rC,KAAK6rC,OAIT,OAHI8pG,GACA31I,KAAK4yI,YAAY,aAEd+C,CACX,EA+BJ,MAAME,GACF,WAAA3kI,CAAY4kI,EAAUn4D,GAClB39E,KAAK81I,SAAWA,EAEZ91I,KAAKg0I,UADLr2D,aAAoB4gC,GACH5gC,EAGA4gC,GAASujB,YAAYnkD,EAAUm4D,EAASh2F,KAEjE,CAMA,QAAAxxB,GACI,MAAO,QAAUtuB,KAAKg0I,UAAU1S,OAAS,IAAMthI,KAAKg0I,UAAU5kG,IAClE,CACA,OAAA2mG,CAAQ55G,EAASwhD,GACb,OAAO,IAAIk4D,GAAU15G,EAASwhD,EAClC,CAIA,QAAI3d,GACA,MAAM2d,EAAW,IAAI4gC,GAASv+G,KAAKg0I,UAAU1S,OAAQ,IACrD,OAAOthI,KAAK+1I,QAAQ/1I,KAAK81I,SAAUn4D,EACvC,CAIA,UAAI2jD,GACA,OAAOthI,KAAKg0I,UAAU1S,MAC1B,CAIA,YAAIuK,GACA,OAAO7rI,KAAKg0I,UAAU5kG,IAC1B,CAKA,QAAIz3B,GACA,OAAOuzH,GAAclrI,KAAKg0I,UAAU5kG,KACxC,CAIA,WAAI2jG,GACA,OAAO/yI,KAAK81I,QAChB,CAKA,UAAIp2F,GACA,MAAMs2F,EA5/Cd,SAAgB5mG,GACZ,GAAoB,IAAhBA,EAAK3tC,OACL,OAAO,KAEX,MAAMsZ,EAAQq0B,EAAK0qB,YAAY,KAC/B,OAAe,IAAX/+C,EACO,GAEKq0B,EAAKptC,MAAM,EAAG+Y,EAElC,CAk/CwB,CAAO/a,KAAKg0I,UAAU5kG,MACtC,GAAgB,OAAZ4mG,EACA,OAAO,KAEX,MAAMr4D,EAAW,IAAI4gC,GAASv+G,KAAKg0I,UAAU1S,OAAQ0U,GACrD,OAAO,IAAIH,GAAU71I,KAAK81I,SAAUn4D,EACxC,CAIA,YAAAs4D,CAAat+H,GACT,GAA4B,KAAxB3X,KAAKg0I,UAAU5kG,KACf,MAAM4xF,GAAqBrpH,EAEnC,EAsGJ,SAASu+H,GAAU9lH,GACf,MAAMvlB,EAAc,CAChB8hI,SAAU,GACVlhH,MAAO,IAEX,OAAO0qH,GAAc/lH,EAAKvlB,GAAa+zB,MAAK,IAAM/zB,GACtD,CAOAsd,eAAeguH,GAAc/lH,EAAKvlB,EAAa4jI,GAC3C,MAAM2H,EAAM,CAER3H,aAEExoE,QAAiBowE,GAAOjmH,EAAKgmH,GACnCvrI,EAAY8hI,SAASrqI,QAAQ2jE,EAAS0mE,UACtC9hI,EAAY4gB,MAAMnpB,QAAQ2jE,EAASx6C,OACL,MAA1Bw6C,EAAS2mE,qBACHuJ,GAAc/lH,EAAKvlB,EAAao7D,EAAS2mE,cAEvD,CAuBA,SAASyJ,GAAOjmH,EAAKhpB,GACF,MAAXA,GACkC,iBAAvBA,EAAQsnI,YACfrL,GAAe,qBACC,EACA,IAAMj8H,EAAQsnI,YAGtC,MAAM52E,EAAK1wD,GAAW,CAAC,EACjBknI,EAAcC,GAAOn+G,EAAI2iH,QAAS3iH,EAAI4jH,UAC5B,IAAKl8E,EAAG22E,UAAW32E,EAAG42E,YACtC,OAAOt+G,EAAI2iH,QAAQuD,sBAAsBhI,EAAaiD,GAC1D,CAwBA,SAASgF,GAAiBnmH,EAAK8lG,GAC3B9lG,EAAI6lH,aAAa,kBACjB,MAAM3H,EApyCV,SAA0BnyG,EAASwhD,EAAUu4C,EAAUwV,GACnD,MACM7tG,EAAM4lG,GADI9lD,EAAS8jD,gBACItlG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CzwH,EAAOovH,GAAiBpW,EAAUwV,GAElCphH,EAAU6R,EAAQkyG,sBAClBC,EAAc,IAAIvB,GAAYlvG,EAJrB,QAIkCyvG,GAAgBnxG,EAASuvG,GAAWphH,GAIrF,OAHAgkH,EAAYliE,QAHI,CAAE,eAAgB,mCAIlCkiE,EAAYpxH,KAAOA,EACnBoxH,EAAYrB,aAAegB,GAAmBtwD,GACvC2wD,CACX,CAwxCwBkI,CAAiBpmH,EAAI2iH,QAAS3iH,EAAI4jH,UAAW9d,EAAUuV,MAC3E,OAAOr7G,EAAI2iH,QAAQuD,sBAAsBhI,EAAaiD,GAC1D,CAOA,SAASkF,GAAiBrmH,GACtBA,EAAI6lH,aAAa,kBACjB,MAAM3H,EAxzCV,SAAwBnyG,EAASwhD,EAAU+tD,GACvC,MACM7tG,EAAM4lG,GADI9lD,EAAS8jD,gBACItlG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CrjH,EAAU6R,EAAQkyG,sBAClBC,EAAc,IAAIvB,GAAYlvG,EAFrB,MAEkC2vG,GAAmBrxG,EAASuvG,GAAWphH,GAExF,OADAgkH,EAAYrB,aAAegB,GAAmBtwD,GACvC2wD,CACX,CAgzCwBoI,CAAetmH,EAAI2iH,QAAS3iH,EAAI4jH,UAAWvI,MAC/D,OAAOr7G,EAAI2iH,QACNuD,sBAAsBhI,EAAaiD,IACnC3yG,MAAKf,IACN,GAAY,OAARA,EACA,MA7zFD,IAAIiiG,GAAaM,GAAiBuW,gBAAiB,mDA+zFtD,OAAO94G,CAAG,GAElB,CAOA,SAAS+4G,GAAexmH,GACpBA,EAAI6lH,aAAa,gBACjB,MAAM3H,EApzCV,SAAwBnyG,EAASwhD,GAC7B,MACM9/C,EAAM4lG,GADI9lD,EAAS8jD,gBACItlG,EAAQ2jB,KAAM3jB,EAAQwxG,WAE7CrjH,EAAU6R,EAAQkyG,sBAElBC,EAAc,IAAIvB,GAAYlvG,EAHrB,UAEf,SAAiBg5G,EAAMC,GAAS,GAC0BxsH,GAG1D,OAFAgkH,EAAYnB,aAAe,CAAC,IAAK,KACjCmB,EAAYrB,aAAegB,GAAmBtwD,GACvC2wD,CACX,CA0yCwByI,CAAe3mH,EAAI2iH,QAAS3iH,EAAI4jH,WACpD,OAAO5jH,EAAI2iH,QAAQuD,sBAAsBhI,EAAaiD,GAC1D,CAWA,SAASyF,GAAY5mH,EAAK6mH,GACtB,MAAMjB,EAruDV,SAAe5mG,EAAM6nG,GACjB,MAAMC,EAAqBD,EACtBprI,MAAM,KACNpE,QAAOwlG,GAAaA,EAAUxrG,OAAS,IACvCgyB,KAAK,KACV,OAAoB,IAAhB2b,EAAK3tC,OACEy1I,EAGA9nG,EAAO,IAAM8nG,CAE5B,CA0tDoBp2G,CAAM1Q,EAAI4jH,UAAU5kG,KAAM6nG,GACpCt5D,EAAW,IAAI4gC,GAASnuF,EAAI4jH,UAAU1S,OAAQ0U,GACpD,OAAO,IAAIH,GAAUzlH,EAAI2iH,QAASp1D,EACtC,CA+BA,SAASw5D,GAAY/mH,EAAKgf,GACtB,GAAIhf,aAAegnH,GAAqB,CACpC,MAAMj7G,EAAU/L,EAChB,GAAuB,MAAnB+L,EAAQk7G,QACR,MA14FD,IAAIvX,GAAaM,GAAiBkX,kBAAmB,6CAExDzX,GACA,yCAy4FA,MAAMliF,EAAY,IAAIk4F,GAAU15G,EAASA,EAAQk7G,SACjD,OAAY,MAARjoG,EACO+nG,GAAYx5F,EAAWvO,GAGvBuO,CAEf,CAGI,YAAax9C,IAATivC,EACO4nG,GAAY5mH,EAAKgf,GAGjBhf,CAGnB,CACA,SAASmnH,GAAMC,EAAcC,GACzB,GAAIA,GArCG,kBAAkB9pI,KAqCF8pI,GAAY,CAC/B,GAAID,aAAwBJ,GACxB,OAjCD,IAAIvB,GAiCe2B,EAAcC,GAGhC,MAAM5W,GAAgB,2EAE9B,CAEI,OAAOsW,GAAYK,EAAcC,EAEzC,CACA,SAASC,GAAc53F,EAAMj8B,GACzB,MAAM+9G,EAAe/9G,aAAuC,EAASA,EAAOg8G,IAC5E,OAAoB,MAAhB+B,EACO,KAEJrjB,GAASojB,mBAAmBC,EAAc9hF,EACrD,CAkBA,MAAMs3F,GACF,WAAAlmI,CAIAmjH,EAAKsjB,EAILC,EAIA7Z,EAAM8Z,GACF73I,KAAKq0H,IAAMA,EACXr0H,KAAK23I,cAAgBA,EACrB33I,KAAK43I,kBAAoBA,EACzB53I,KAAK+9H,KAAOA,EACZ/9H,KAAK63I,iBAAmBA,EACxB73I,KAAKq3I,QAAU,KAMfr3I,KAAK83I,MAAQlY,GACb5/H,KAAK2tI,UAAY,QACjB3tI,KAAK+3I,OAAS,KACd/3I,KAAKg4I,UAAW,EAChBh4I,KAAKi4I,uBA1nG4B,KA2nGjCj4I,KAAKk4I,oBArnGyB,IAsnG9Bl4I,KAAKm4I,UAAY,IAAI11H,IAEjBziB,KAAKq3I,QADG,MAARtZ,EACexf,GAASojB,mBAAmB5D,EAAM/9H,KAAK83I,OAGvCJ,GAAc13I,KAAK83I,MAAO93I,KAAKq0H,IAAIjtH,QAE1D,CAKA,QAAI04C,GACA,OAAO9/C,KAAK83I,KAChB,CACA,QAAIh4F,CAAKA,GACL9/C,KAAK83I,MAAQh4F,EACI,MAAb9/C,KAAK+9H,KACL/9H,KAAKq3I,QAAU94B,GAASojB,mBAAmB3hI,KAAK+9H,KAAMj+E,GAGtD9/C,KAAKq3I,QAAUK,GAAc53F,EAAM9/C,KAAKq0H,IAAIjtH,QAEpD,CAIA,sBAAIgoI,GACA,OAAOpvI,KAAKk4I,mBAChB,CACA,sBAAI9I,CAAmBgJ,GACnB/U,GAAe,OACA,EACCl5H,OAAOkuI,kBAAmBD,GAC1Cp4I,KAAKk4I,oBAAsBE,CAC/B,CAKA,yBAAI/J,GACA,OAAOruI,KAAKi4I,sBAChB,CACA,yBAAI5J,CAAsB+J,GACtB/U,GAAe,OACA,EACCl5H,OAAOkuI,kBAAmBD,GAC1Cp4I,KAAKi4I,uBAAyBG,CAClC,CACA,mBAAMxE,GACF,GAAI5zI,KAAKs4I,mBACL,OAAOt4I,KAAKs4I,mBAEhB,MAAMjc,EAAOr8H,KAAK23I,cAAcrd,aAAa,CAAEkC,UAAU,IACzD,GAAIH,EAAM,CACN,MAAMkc,QAAkBlc,EAAKK,WAC7B,GAAkB,OAAd6b,EACA,OAAOA,EAAU5b,WAEzB,CACA,OAAO,IACX,CACA,uBAAMkX,GACF,MAAMtX,EAAWv8H,KAAK43I,kBAAkBtd,aAAa,CAAEkC,UAAU,IACjE,GAAID,EAAU,CAMV,aALqBA,EAASG,YAKhBzjG,KAClB,CACA,OAAO,IACX,CAIA,OAAAi7F,GAMI,OALKl0H,KAAKg4I,WACNh4I,KAAKg4I,UAAW,EAChBh4I,KAAKm4I,UAAUtmI,SAAQwpB,GAAWA,EAAQnoB,WAC1ClT,KAAKm4I,UAAUpsE,SAEZ1jD,QAAQC,SACnB,CAKA,qBAAA4jH,CAAsB/J,GAClB,OAAO,IAAI0T,GAAU71I,KAAMmiI,EAC/B,CAKA,YAAA+R,CAAa5F,EAAakK,EAAgBrb,EAAWE,EAAeyH,GAAQ,GACxE,GAAK9kI,KAAKg4I,SAQN,OAAO,IAAIlV,GAAYhC,MARP,CAChB,MAAMzlG,EAz7ElB,SAAqBizG,EAAaj8D,EAAO8qD,EAAWE,EAAemb,EAAgBC,EAAiB3T,GAAQ,GACxG,MAAMlB,EAAYD,GAAgB2K,EAAYtB,WACxCnvG,EAAMywG,EAAYzwG,IAAM+lG,EACxBx3D,EAAUzkE,OAAO8xB,OAAO,CAAC,EAAG60G,EAAYliE,SAK9C,OAlBJ,SAAyBA,EAASiG,GAC1BA,IACAjG,EAAQ,oBAAsBiG,EAEtC,CAUIqmE,CAAgBtsE,EAASiG,GAvB7B,SAAwBjG,EAAS+wD,GACX,OAAdA,GAAsBA,EAAU17H,OAAS,IACzC2qE,EAAuB,cAAI,YAAc+wD,EAEjD,CAoBIwb,CAAevsE,EAAS+wD,GAnB5B,SAA2B/wD,EAASqsE,GAChCrsE,EAAQ,8BACJ,UAAYqsE,QAAyDA,EAAkB,aAC/F,CAiBIG,CAAkBxsE,EAASqsE,GAX/B,SAA4BrsE,EAASixD,GACX,OAAlBA,IACAjxD,EAAQ,uBAAyBixD,EAEzC,CAQIwb,CAAmBzsE,EAASixD,GACrB,IAAI6G,GAAermG,EAAKywG,EAAYnvG,OAAQitC,EAASkiE,EAAYpxH,KAAMoxH,EAAYnB,aAAcmB,EAAYxK,qBAAsBwK,EAAYntI,QAASmtI,EAAYrB,aAAcqB,EAAYhkH,QAASgkH,EAAYpB,iBAAkBsL,EAAgB1T,EAChQ,CAg7E4BgU,CAAYxK,EAAatuI,KAAK+3I,OAAQ5a,EAAWE,EAAemb,EAAgBx4I,KAAK63I,iBAAkB/S,GAIvH,OAHA9kI,KAAKm4I,UAAUnmI,IAAIqpB,GAEnBA,EAAQ2nG,aAAapkG,MAAK,IAAM5+B,KAAKm4I,UAAUn3H,OAAOqa,KAAU,IAAMr7B,KAAKm4I,UAAUn3H,OAAOqa,KACrFA,CACX,CAIJ,CACA,2BAAMi7G,CAAsBhI,EAAakK,GACrC,MAAOrb,EAAWE,SAAuBh1G,QAAQ4kB,IAAI,CACjDjtC,KAAK4zI,gBACL5zI,KAAK6zI,sBAET,OAAO7zI,KAAKk0I,aAAa5F,EAAakK,EAAgBrb,EAAWE,GAAe2F,YACpF,EAGJ,MAAM,GAAO,oBACP,GAAU,SAqBV+V,GAAe,UAwErB,SAASC,GAAqB5oH,EAAK9nB,EAAM4tH,GAErC,OA7fJ,SAAgC9lG,EAAK9nB,EAAM4tH,GAEvC,OADA9lG,EAAI6lH,aAAa,wBACV,IAAIzE,GAAWphH,EAAK,IAAIy5G,GAAQvhI,GAAO4tH,EAClD,CA0fW+iB,CADP7oH,GAAM,QAAmBA,GACU9nB,EAAM4tH,EAC7C,CAQA,SAASgjB,GAAY9oH,GAEjB,OA3ZJ,SAAuBA,GACnBA,EAAI6lH,aAAa,eACjB,MAAM3H,EAAcF,GAAch+G,EAAI2iH,QAAS3iH,EAAI4jH,UAAWvI,MAC9D,OAAOr7G,EAAI2iH,QAAQuD,sBAAsBhI,EAAaiD,GAC1D,CAuZW4H,CADP/oH,GAAM,QAAmBA,GAE7B,CAoFA,SAASA,GAAIonH,EAAcC,GAEvB,OAAOF,GADPC,GAAe,QAAmBA,GACPC,EAC/B,CAqCA,SAAS2B,GAAuBrG,EAASjzF,EAAM4zE,EAAMtsH,EAAU,CAAC,IA7YhE,SAAkC2rI,EAASjzF,EAAM4zE,EAAMtsH,EAAU,CAAC,GAC9D2rI,EAAQjzF,KAAO,GAAGA,KAAQ4zE,IAC1Bqf,EAAQpF,UAAY,OACpB,MAAM,cAAE0L,GAAkBjyI,EACtBiyI,IACAtG,EAAQuF,mBACqB,iBAAlBe,EACDA,GACA,QAAoBA,EAAetG,EAAQ1e,IAAIjtH,QAAQ8xB,WAEzE,CAoYIogH,CAAyBvG,EAASjzF,EAAM4zE,EAAMtsH,EAClD,CA2DA,SAAS,GAAQzB,GAAaw5H,mBAAoBthG,IAC9C,MAAMw2F,EAAM1uH,EAAU00H,YAAY,OAAOC,eACnC4B,EAAev2H,EAAU00H,YAAY,iBACrC+B,EAAmBz2H,EAAU00H,YAAY,sBAC/C,OAAO,IAAI+c,GAAoB/iB,EAAK6H,EAAcE,EAAkBv+F,EAAK,EAAA07G,YAC7E,EAEI,IAAAra,oBAAmB,IAAI,KAAU6Z,GAAc,GAAS,UAAqC3Z,sBAAqB,KAElH,IAAA5E,iBAAgB,GAAM,GAAS,KAE/B,IAAAA,iBAAgB,GAAM,GAAS,WCjjHnC,MAAMgf,GACF,WAAAtoI,CAAYyuB,EAAWjB,EAAMtO,GACzBpwB,KAAK2/B,UAAYA,EACjB3/B,KAAK0+B,KAAOA,EACZ1+B,KAAKowB,IAAMA,CACf,CACA,oBAAI4kH,GACA,OAAOh1I,KAAK2/B,UAAUq1G,gBAC1B,CACA,YAAI9e,GACA,OAAOl2H,KAAK2/B,UAAUu2F,QAC1B,CACA,SAAI31G,GACA,OAAOvgB,KAAK2/B,UAAUpf,KAC1B,CACA,cAAI00H,GACA,OAAOj1I,KAAK2/B,UAAUs1G,UAC1B,EAmBJ,MAAMwE,GACF,WAAAvoI,CAAYyuB,EAAWj8B,GACnB1D,KAAK2/B,UAAYA,EACjB3/B,KAAK0D,KAAOA,EACZ1D,KAAKkT,OAASlT,KAAK2/B,UAAUzsB,OAAOgB,KAAKlU,KAAK2/B,WAC9C3/B,KAAK+4B,MAAQ/4B,KAAK2/B,UAAU5G,MAAM7kB,KAAKlU,KAAK2/B,WAC5C3/B,KAAK41I,MAAQ51I,KAAK2/B,UAAUi2G,MAAM1hI,KAAKlU,KAAK2/B,WAC5C3/B,KAAK01I,OAAS11I,KAAK2/B,UAAU+1G,OAAOxhI,KAAKlU,KAAK2/B,UAClD,CACA,YAAI82F,GACA,OAAO,IAAI+iB,GAAyBx5I,KAAK2/B,UAAU82F,SAAUz2H,KAAMA,KAAK0D,KAC5E,CACA,IAAAk7B,CAAKy2G,EAAaC,GACd,OAAOt1I,KAAK2/B,UAAUf,MAAK63F,IACvB,GAAI4e,EACA,OAAOA,EAAY,IAAImE,GAAyB/iB,EAAUz2H,KAAMA,KAAK0D,MACzE,GACD4xI,EACP,CACA,EAAA5yI,CAAGzB,EAAMg+B,EAAgBz9B,EAAO0zI,GAC5B,IAAIwE,EAeJ,OAdMz6G,IAEEy6G,EAD0B,mBAAnBz6G,EACkB06G,GAAiB16G,EAAe,IAAIu6G,GAAyBG,EAAc35I,KAAMA,KAAK0D,OAGvF,CACpBm7B,KAAQI,EAAeJ,KAChB86G,GAAiB16G,EAAeJ,KAAK,IAAI26G,GAAyBG,EAAc35I,KAAMA,KAAK0D,YAC5FvD,EACN6+B,SAAUC,EAAeD,eAAY7+B,EACrCqB,MAAOy9B,EAAez9B,YAASrB,IAIpCH,KAAK2/B,UAAUj9B,GAAGzB,EAAMy4I,EAAuBl4I,QAASrB,EAAW+0I,QAAa/0I,EAC3F,EAGJ,MAAMy5I,GACF,WAAA1oI,CAAYyuB,EAAWm2G,GACnB91I,KAAK2/B,UAAYA,EACjB3/B,KAAK81I,SAAWA,CACpB,CACA,YAAInJ,GACA,OAAO3sI,KAAK2/B,UAAUgtG,SAASnoH,KAAI4L,GAAO,IAAIypH,GAAgBzpH,EAAKpwB,KAAK81I,WAC5E,CACA,SAAIrqH,GACA,OAAOzrB,KAAK2/B,UAAUlU,MAAMjH,KAAI4L,GAAO,IAAIypH,GAAgBzpH,EAAKpwB,KAAK81I,WACzE,CACA,iBAAIlJ,GACA,OAAO5sI,KAAK2/B,UAAUitG,eAAiB,IAC3C,EAmBJ,MAAMiN,GACF,WAAA3oI,CAAYyuB,EAAWozG,GACnB/yI,KAAK2/B,UAAYA,EACjB3/B,KAAK+yI,QAAUA,CACnB,CACA,QAAIp7H,GACA,OAAO3X,KAAK2/B,UAAUhoB,IAC1B,CACA,UAAI2pH,GACA,OAAOthI,KAAK2/B,UAAU2hG,MAC1B,CACA,YAAIuK,GACA,OAAO7rI,KAAK2/B,UAAUksG,QAC1B,CACA,QAAAv9G,GACI,OAAOtuB,KAAK2/B,UAAUrR,UAC1B,CAMA,KAAAwS,CAAMm2G,GACF,MAAMt5F,EDs0Gd,SAAmBvtB,EAAK6mH,GACpB,OAAOD,GAAY5mH,EAAK6mH,EAC5B,CCx0G0B6C,CAAU95I,KAAK2/B,UAAWs3G,GAC5C,OAAO,IAAI4C,GAAgBl8F,EAAW39C,KAAK+yI,QAC/C,CACA,QAAI/yE,GACA,OAAO,IAAI65E,GAAgB75I,KAAK2/B,UAAUqgC,KAAMhgE,KAAK+yI,QACzD,CAKA,UAAIrzF,GACA,MAAM/B,EAAY39C,KAAK2/B,UAAU+f,OACjC,OAAiB,MAAb/B,EACO,KAEJ,IAAIk8F,GAAgBl8F,EAAW39C,KAAK+yI,QAC/C,CAOA,GAAAgH,CAAIzxI,EAAM4tH,GAEN,OADAl2H,KAAKi2I,aAAa,OACX,IAAIwD,GAAiBT,GAAqBh5I,KAAK2/B,UAAWr3B,EAAM4tH,GAAWl2H,KACtF,CAQA,SAAAg6I,CAAUp2I,EAAOoiC,EAASwiG,GAAaC,IAAKvS,GACxCl2H,KAAKi2I,aAAa,aAClB,MAAM3tI,EAAO,GAAgB09B,EAAQpiC,GAC/BirI,EAAgBlnI,OAAO8xB,OAAO,CAAC,EAAGy8F,GAIxC,OAHoC,MAAhC2Y,EAA2B,aAAiC,MAApBvmI,EAAKwgI,cAC7C+F,EAA2B,YAAIvmI,EAAKwgI,aAEjC,IAAI2Q,GAAiB,IAAI,GAAYz5I,KAAK2/B,UAAW,IAAI,GAASr3B,EAAKA,MAAM,GAAOumI,GAAgB7uI,KAC/G,CAkBA,OAAAi6I,GACI,ODyuGR,SAAiB7pH,GAEb,OAAO8lH,GADP9lH,GAAM,QAAmBA,GAE7B,CC5uGe6pH,CAAQj6I,KAAK2/B,WAAWf,MAAKoW,GAAK,IAAI4kG,GAAiB5kG,EAAGh1C,KAAK+yI,UAC1E,CAoBA,IAAAhwI,CAAKqE,GACD,OD4rGR,SAAcgpB,EAAKhpB,GAEf,OAAOivI,GADPjmH,GAAM,QAAmBA,GACNhpB,EACvB,CC/rGerE,CAAK/C,KAAK2/B,UAAWv4B,QAAWjH,GAAWy+B,MAAKoW,GAAK,IAAI4kG,GAAiB5kG,EAAGh1C,KAAK+yI,UAC7F,CAMA,WAAAmG,GACI,OAAOA,GAAYl5I,KAAK2/B,UAC5B,CAUA,cAAAu6G,CAAehkB,GACX,OD8oGR,SAAwB9lG,EAAK8lG,GAEzB,OAAOqgB,GADPnmH,GAAM,QAAmBA,GACI8lG,EACjC,CCjpGegkB,CAAel6I,KAAK2/B,UAAWu2F,EAC1C,CAKA,cAAAikB,GACI,ODmsGR,SAAwB/pH,GAEpB,OAAOqmH,GADPrmH,GAAM,QAAmBA,GAE7B,CCtsGe+pH,CAAen6I,KAAK2/B,UAC/B,CAKA,SAEI,OADA3/B,KAAKi2I,aAAa,UDssG1B,SAAsB7lH,GAElB,OAAOwmH,GADPxmH,GAAM,QAAmBA,GAE7B,CCxsGe+qD,CAAan7E,KAAK2/B,UAC7B,CACA,YAAAs2G,CAAat+H,GACT,GAAsC,KAAlC3X,KAAK2/B,UAAUq0G,UAAU5kG,KACzB,MAAM,GAAsBz3B,EAEpC,EAuBJ,MAAMyiI,GACF,WAAAlpI,CAAYmjH,EAAK10F,GACb3/B,KAAKq0H,IAAMA,EACXr0H,KAAK2/B,UAAYA,CACrB,CACA,yBAAI0uG,GACA,OAAOruI,KAAK2/B,UAAU0uG,qBAC1B,CACA,sBAAIe,GACA,OAAOpvI,KAAK2/B,UAAUyvG,kBAC1B,CAKA,GAAAh/G,CAAIgf,GACA,GAAI,GAAMA,GACN,MAAM,GAAiB,sEAE3B,OAAO,IAAIyqG,GAAgBzpH,GAAIpwB,KAAK2/B,UAAWyP,GAAOpvC,KAC1D,CAKA,UAAAq6I,CAAWx8G,GACP,IAAK,GAAMA,GACP,MAAM,GAAiB,6EAE3B,IACI,GAAUikG,YAAYjkG,EAAK79B,KAAK2/B,UAAUmgB,KAC9C,CACA,MAAO3oB,GACH,MAAM,GAAiB,iEAC3B,CACA,OAAO,IAAI0iH,GAAgBzpH,GAAIpwB,KAAK2/B,UAAW9B,GAAM79B,KACzD,CACA,qBAAAs6I,CAAsBlC,GAClBp4I,KAAK2/B,UAAUyvG,mBAAqBgJ,CACxC,CACA,wBAAAmC,CAAyBnC,GACrBp4I,KAAK2/B,UAAU0uG,sBAAwB+J,CAC3C,CACA,WAAA3kB,CAAY3zE,EAAM4zE,EAAMtsH,EAAU,CAAC,GAC/BgyI,GAAuBp5I,KAAK2/B,UAAWmgB,EAAM4zE,EAAMtsH,EACvD,EAEJ,SAAS,GAAMgoC,GACX,MAAO,kBAAkBzhC,KAAKyhC,EAClC,CAyBA,SAAS,GAAQzpC,GAAaw5H,mBAAoBthG,IAE9C,MAAMw2F,EAAM1uH,EAAU00H,YAAY,cAAcC,eAC1CkgB,EAAa70I,EACd00H,YAAY,WACZC,aAAa,CAAEj1B,WAAYxnE,IAEhC,OAD6B,IAAIu8G,GAAqB/lB,EAAKmmB,EAE/D,EACA,SAAyBxkG,GACrB,MAAM0pF,EAAmB,CAErByQ,UAAW,GACXF,UAAW,GACXzH,aAAY,GACZiS,QAASL,GACTvE,UAAWgE,IAEf7jG,EAASg9E,SAASoH,kBAAkB,IAAI,KAnBvB,iBAmB+C,GAAS,UACpEG,gBAAgBmF,GAChBN,sBAAqB,IAC1BppF,EAASwkF,gBA5CA,2BACG,QA4ChB,CACA,CAAgB,qBCzXhB,MAAMkgB,GAA2B,OAOK,IA0gElCC,GAxgEEC,GAAQ,WACZ,SAAAA,IACOD,KACH7gH,EAAAA,EAAS+gH,cAAcC,GACvB96I,KAAKq0H,IAAMv6F,EAAAA,EACX95B,KAAKq8H,KAAOr8H,KAAKq0H,IAAIgI,OACrBr8H,KAAK+6I,GAAK/6I,KAAKq0H,IAAI5B,YACnBzyH,KAAK2qC,UAAY3qC,KAAKq0H,IAAI1pF,YAC1B3qC,KAAK+yI,QAAU/yI,KAAKq0H,IAAI0e,UAE5B,CAEA,IAAA/yG,EAAA46G,EAAAl6I,UAy/DC,OAz/DDs/B,EAKMg7G,oBAAN7yH,eAAAzkB,GAA2C,IAAjB,WAAE2zH,GAAY3zH,EAEtC,OADa1D,KAAKq8H,KAAK4e,YAEdj7I,KAAK+6I,GAAG3xE,WAAW,oBAAoBmmB,IAAI,UAAU8nC,WAAWA,GAEhE,IAEX,EAEAr3F,EAKMk7G,0BAAN/yH,eAAAhjB,GAAiD,IAAjB,WAAEkyH,GAAYlyH,EAC5C,MAAMg/G,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAI92B,EACKnkH,KAAK+6I,GAAG3xE,WAAW,kBAAkBmmB,IAAI40B,EAAKhrF,KAAKk+F,WAAWA,GAE9D,IAEX,EAEAr3F,EAEMm7G,kBAANhzH,eAAwBizH,GACtB,IACE,MAAMC,QAAar7I,KAAK+6I,GAAG3xE,WAAW,kBAAkBmmB,IAAI6rD,GAAQ9xI,MACpE,OAAI+xI,EAAK3/D,OACA2/D,EAAK/yI,OAEL,IAEX,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAEAw+B,EAKMs7G,6BAANnzH,eAAA7iB,GAAoD,IAAjB,WAAE+xH,GAAY/xH,EAC/C,MAAM6+G,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAI92B,EACKnkH,KAAK+6I,GAAG3xE,WAAW,qBAAqBmmB,IAAI40B,EAAKhrF,KAAKk+F,WAAWA,GAEjE,IAEX,EAEAr3F,EAKMu7G,0BAANpzH,eAAA3iB,GAAiD,IAAjB,WAAE6xH,GAAY7xH,EAC5C,MAAM2+G,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAI92B,EACKnkH,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAKk+F,WAAWA,GAE3D,IAEX,EAEAr3F,EAKMw7G,kBAANrzH,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAK7vB,MAClE,OAAIimF,EAAI7T,OACC6T,EAAIjnF,OAEJ,IAEX,EAEA03B,EAKMy7G,cAANtzH,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAK7vB,MAClE,GAAIimF,EAAI7T,OAAQ,CAEd,OADa6T,EAAIjnF,OACLozI,cACd,CACE,OAAO,IAEX,EAEA17G,EAKM27G,oBAANxzH,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAK7vB,MAClE,OAAIimF,EAAI7T,OACC6T,EAAIjnF,OAEJ,IAEX,EAEA03B,EAKM47G,kBAANzzH,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAET,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,kBAAkBmmB,IAAI40B,EAAKhrF,KAAK7vB,MACrE,OAAIimF,EAAI7T,OACC6T,EAAIjnF,OAEJ,EAEX,EAEA03B,EAKM67G,oBAAN1zH,eAA0B2zH,GACxB,MAAM33B,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAET,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,cAAcmmB,IAAK,GAAEusD,KAAW33B,EAAKhrF,OAAO7vB,MACjF,OAAIimF,EAAI7T,OACC6T,EAAIjnF,OAEJ,IAEX,EAEA03B,EAGM+7G,iCAAN5zH,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAET,MAAM63B,EAAc,IAAI1kH,KAClB2kH,EAAc,IAAI3kH,KACxB2kH,EAAYC,QAAQF,EAAYn6D,UAAY,GAE5C,MAAM+2C,QAAa54H,KAAK+6I,GAAG3xE,WAAW,cAAc4uD,MAAM,cAAe,KAAMikB,GAAajkB,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAEtH6yI,EAAe,GAMrB,OAJAvjB,EAAK/mH,SAAS09E,IACZ4sD,EAAa75I,KAAK,CAAEqB,GAAI4rF,EAAI5rF,MAAO4rF,EAAIjnF,QAAS,IAG3C6zI,EAAa16I,MACtB,EAEAu+B,EAGMo8G,qBAANj0H,eAAAvhB,GAAoD,IAAzB,OAAEw0I,EAAM,WAAE/jB,GAAYzwH,EAC/C,MAAMy1I,EAA6Br8I,KAAK2qC,UAAU40F,cAAc,sBAEhE,aAD6B8c,KACP/zI,IACxB,EAEA03B,EAKAs8G,eAAA,SAAAz1I,GAAwC,IAAzB,OAAEu0I,EAAM,WAAE/jB,GAAYxwH,EACnC,MAAMs9G,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAI92B,EACKnkH,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAKk+F,WAAWA,GAErD,IAEX,EAEAr3F,EAMMu8G,WAANp0H,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IACE,MAAMxkB,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK7vB,MAEjE,OAAKmtH,EAAS/6C,OAGL+6C,EAASnuH,OAFT,IAIX,CAAE,MAAO6uB,GACP,OAAO,IACT,CACF,EAAC6I,EAEKw8G,cAANr0H,eAAoB6nB,EAAOlN,GACzB,IACE,MAAM2zF,QAAiBz2H,KAAK+6I,GACzB3xE,WAAsB,UAAXtmC,EAAqB,QAAU,WAC1Ck1F,MAAM,QAAS,KAAMhoF,GACrB1mC,MACH,GAAImtH,EAAS5mE,MACX,OAAO,KACF,CACL,MAAM4sF,EAAS,GAMf,OALAhmB,EAAS5kH,SAAS09E,IAChBktD,EAAOn6I,KAAK,IACPitF,EAAIjnF,QACP,IAEGm0I,EAAO,EAChB,CACF,CAAE,MAAOtlH,GACP,OAAO,IACT,CACF,EAAC6I,EAEK08G,gBAANv0H,eAAsBw0H,EAAa75G,GACjC,IACE,MAAMx6B,EAAO,CACXs0I,WAAY,GACZC,WAAY,GACZC,WAAY,GACZ9sG,MAAO2sG,EACPI,MAAOJ,EAAYxoG,eAEf6wB,EAAW,CACfwiE,SAAS,EACT3rG,QAAS,SAELmhH,QAAuBh9I,KAAKw8I,cAAcG,EAAa75G,GAC7D,OAAIk6G,GAAkBA,EAAehtG,QAAU2sG,GAC7C33E,EAASnpC,QAAW,oBAAmB8gH,kBACvC33E,EAASwiE,SAAU,EACZxiE,UAEHhlE,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAIotD,GAAa97H,IAAIvY,GAChD08D,EACT,CAAE,MAAO7tC,GACP,OAAOA,CACT,CACF,EAAC6I,EAEKi9G,cAAN90H,eAAoB+0H,GAClB,IACE,MAAMzmB,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,cAAcmmB,IAAI2tD,GAAW5zI,MAEvE,OAAKmtH,EAAS/6C,OAGL+6C,EAASnuH,OAFT,IAIX,CAAE,MAAO6uB,GACP,OAAO,IACT,CACF,EAAC6I,EAEKm9G,uBAANh1H,eAA6B+0H,GAC3B,MAAMC,EAAyBn9I,KAAK2qC,UAAU40F,cAAc,0BAE5D,IACE,MAAMt9D,QAAYk7E,EAAuB,CAAE/B,OAAQ8B,IACnD,OAAOj7E,aAAG,EAAHA,EAAK35D,IACd,CAAE,MAAO6uB,GACP,OAAO,CACT,CACF,EAAC6I,EAEKo9G,cAANj1H,eAAoBk1H,GAClB,MAAMC,EAAct9I,KAAK2qC,UAAU40F,cAAc,2BACjD,IACE,MAAM8b,QAAaiC,EAAY,CAAEC,SAAUF,IAC3C,OAAOhC,aAAI,EAAJA,EAAM/yI,IACf,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKw9G,kBAANr1H,eAAwBk1H,GACtB,MAAMI,EAAkBz9I,KAAK2qC,UAAU40F,cAAc,+BACrD,IACE,MAAM8b,QAAaoC,EAAgB,CAAEF,SAAUF,IAC/C,OAAOhC,aAAI,EAAJA,EAAM/yI,IACf,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK09G,wBAANv1H,eAA8BlnB,GAC5B,MAAM08I,EAAY39I,KAAK2qC,UAAU40F,cAAc,qBAC/C,IAEE,aADmBoe,EAAU,CAAE18I,QAEjC,CAAE,MAAOO,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK49G,YAANz1H,eAAkB7f,GAChB,MAAMu1I,EAAW79I,KAAK2qC,UAAU40F,cAAc,eAC9C,IAEE,aADmBse,EAASv1I,EAE9B,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK89G,wBAAN31H,eAA8BqR,GAC5B,MAAMukH,EAAiB/9I,KAAK2qC,UAAU40F,cAAc,qBACpD,IAEE,aADmBwe,EAAevkH,EAEpC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKg+G,kBAAN71H,eAAwB7f,GACtB,MAAM21I,EAAkBj+I,KAAK2qC,UAAU40F,cAAc,iBACrD,IAEE,aADmB0e,EAAgB31I,EAErC,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKk+G,oBAAN/1H,eAA0B7f,GACxB,MAAM61I,EAA2Bn+I,KAAK2qC,UAAU40F,cAAc,uBAC9D,IAEE,aADmB4e,EAAyB71I,EAE9C,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKo+G,0BAANj2H,eAAgClnB,GAC9B,MAAMm9I,EAA4Bp+I,KAAK2qC,UAAU40F,cAAc,+BAC/D,IAEE,aADmB6e,EAA0B,CAAEn9I,QAEjD,CAAE,MAAOO,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKq+G,cAANl2H,eAAoB7f,GAClB,MAAMg2I,EAAYt+I,KAAK2qC,UAAU40F,cAAc,0BAC/C,IAEE,aADmB+e,EAAUh2I,EAE/B,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKu+G,YAANp2H,eAAkB7f,GAChB,MAAMk2I,EAAcx+I,KAAK2qC,UAAU40F,cAAc,kBACjD,IAEE,aADmBif,EAAYl2I,EAEjC,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKy+G,oBAANt2H,iBACE,MAAMu2H,EAAgB1+I,KAAK2qC,UAAU40F,cAAc,eACnD,IAEE,aADmBmf,GAErB,CAAE,MAAOl9I,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK2+G,+BAANx2H,eAAqC6nB,EAAO1nC,GAC1C,MAAMs2I,EAAY5+I,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAIv/C,GAC5C6uG,EAAgB7+I,KAAK2qC,UAAU40F,cAAc,qBACnD,IAGE,aAFMqf,EAAU7/F,OAAOz2C,SACjBu2I,EAAcv2I,IACb,CACT,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK8+G,+BAAN32H,iBACE,IACE,MAAMsuG,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,SAAS9/D,MAC7CmpC,EAAI,GAIV,OAHAgkF,EAAS5kH,SAAS09E,IAChB98C,EAAEnwC,KAAKitF,EAAIjnF,OAAO,IAEbmqC,CACT,CAAE,MAAOtb,GACP,OAAO,IACT,CACF,EAAC6I,EAEK++G,yBAAN52H,eAA+BizH,GAC7B,MAAM7rD,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,cAAc4uD,MAAM,SAAU,KAAMojB,GAAQ9xI,MACjF,IACE,GAAIimF,EAAI1/B,MACN,MAAO,GACF,CACL,MAAMmvF,EAAQ,GAMd,OALAzvD,EAAI19E,SAAS09E,IACXyvD,EAAM18I,KAAK,IACNitF,EAAIjnF,QACP,IAEG02I,CACT,CACF,CAAE,MAAOx9I,GACP,OAAOA,CACT,CACF,EAACw+B,EACKi/G,wBAAN92H,eAA8BizH,GAE5B,MAAM6D,EAA0Bj/I,KAAK2qC,UAAU40F,cAAc,2BAE7D,IACE,MAAMt9D,QAAYg9E,EAAwB,CAAE7D,OAAQA,IACpD,OAAOn5E,aAAG,EAAHA,EAAK35D,IACd,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKk/G,kBAAN/2H,eAAwBqR,GACtB,MAAM2lH,EAAiBn/I,KAAK2qC,UAAU40F,cAAc,mBACpD,IAEE,aADmB4f,EAAe3lH,EAEpC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKo/G,kBAANj3H,eAAwBqR,GACtB,MAAM6lH,EAAiBr/I,KAAK2qC,UAAU40F,cAAc,mBACpD,IAEE,aADmB8f,EAAe7lH,EAEpC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKs/G,kBAANn3H,eAAwBizH,GACtB,MAAMmE,EAAiBv/I,KAAK2qC,UAAU40F,cAAc,qBACpD,IACE,aAAaggB,EAAe,CAAEnE,OAAQA,GACxC,CAAE,MAAO55I,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKw/G,QAANr3H,eAAcqR,GACZ,MAAMgmH,EAAUx/I,KAAK2qC,UAAU40F,cAAc,aAC7C,IAEE,aADmBigB,EAAQhmH,EAE7B,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EACKy/G,SAANt3H,eAAeqR,GACb,MAAMimH,EAAWz/I,KAAK2qC,UAAU40F,cAAc,cAC9C,IAEE,aADmBkgB,EAASjmH,EAE9B,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EACK0/G,aAANv3H,eAAmBqR,GACjB,MAAMkmH,EAAe1/I,KAAK2qC,UAAU40F,cAAc,gBAClD,IAEE,aADmBmgB,EAAalmH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK2/G,wBAANx3H,eAA8BqR,GAC5B,MAAMomH,EAAqB5/I,KAAK2qC,UAAU40F,cAAc,kBACxD,IAEE,aADmBqgB,EAAmBpmH,EAExC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK6/G,wBAAN13H,eAA8BqR,GAC5B,MAAMsmH,EAAe9/I,KAAK2qC,UAAU40F,cAAc,sBAClD,IAEE,aADmBugB,EAAatmH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK+/G,wBAAN53H,eAA8BqR,GAC5B,MAAMwmH,EAAehgJ,KAAK2qC,UAAU40F,cAAc,sBAClD,IAEE,aADmBygB,EAAaxmH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKigH,cAAN93H,eAAoBqR,GAClB,MAAM0mH,EAAUlgJ,KAAK2qC,UAAU40F,cAAc,mBAC7C,IAEE,aADmB2gB,EAAQ1mH,EAE7B,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKmgH,YAANh4H,eAAkBqR,GAChB,MAAM2mH,EAAcngJ,KAAK2qC,UAAU40F,cAAc,gBACjD,IAEE,aADmB4gB,EAAY3mH,EAEjC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKogH,aAANj4H,eAAmBqR,GACjB,MAAM4mH,EAAepgJ,KAAK2qC,UAAU40F,cAAc,mBAClD,IAEE,aADmB6gB,EAAa5mH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKqgH,aAANl4H,eAAmBqR,GACjB,MAAM6mH,EAAergJ,KAAK2qC,UAAU40F,cAAc,mBAClD,IAEE,aADmB8gB,EAAa7mH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKsgH,iBAANn4H,eAAuBqR,GACrB,MAAM+mH,EAAevgJ,KAAK2qC,UAAU40F,cAAc,sBAClD,IAEE,aADmBghB,EAAa/mH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEKwgH,WAANr4H,eAAiBqR,GACf,MAAMinH,EAAezgJ,KAAK2qC,UAAU40F,cAAc,mBAClD,IAEE,aADmBkhB,EAAajnH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK0gH,aAANv4H,eAAmBqR,GACjB,MAAMknH,EAAe1gJ,KAAK2qC,UAAU40F,cAAc,sBAClD,IAEE,aADmBmhB,EAAalnH,EAElC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK2gH,eAANx4H,eAAqBqR,GACnB,MAAMmnH,EAAiB3gJ,KAAK2qC,UAAU40F,cAAc,yBACpD,IAEE,aADmBohB,EAAennH,EAEpC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK4gH,cAANz4H,eAAoBqR,GAClB,MAAMqnH,EAAa7gJ,KAAK2qC,UAAU40F,cAAc,mBAChD,IAEE,aADmBshB,EAAWrnH,EAEhC,CAAE,MAAOh4B,GACP,OAAOA,CACT,CACF,EAACw+B,EAEK8gH,YAAN34H,eAAkB44H,EAAUC,EAAU//I,EAAMggJ,GAC1C,MAAMC,EAAWlhJ,KAAK2qC,UAAU40F,cAAc,gBAC9C,IACE,MAAMv6D,QAAiBk8E,EAAS,CAAEH,WAAUC,WAAU//I,OAAMggJ,oBAC5D,OAAO,IAAIE,GAAAA,GAAsBn8E,EAAS18D,KAC5C,CAAE,MAAO6uB,GACP,MAAe,qBAAXA,EAAE5jB,KACG,IAAI6tI,GAAAA,GAAsBjqH,EAAE0E,SAE9B1E,CACT,CACF,EAEA6I,EAKMqhH,kBAANl5H,iBACE,IAEE,aADMnoB,KAAKshJ,cAAc,CAAEh5I,KAAM,CAAEi5I,iBAAiB,MAC7C,CACT,CAAE,MAAOpqH,GACP,OAAO,CACT,CACF,EAEA6I,EAKMwhH,yBAANr5H,eAA+Bs5H,GAC7B,IAIE,aAHMzhJ,KAAKshJ,cAAc,CACvBh5I,KAAM,CAAE,CAAE,yBAAwBm5I,MAAY,MAEzC,CACT,CAAE,MAAOtqH,GACP,OAAO,CACT,CACF,EAEA6I,EAKM0hH,mBAANv5H,iBACE,IAEE,aADMnoB,KAAKshJ,cAAc,CAAEh5I,KAAM,CAAEi5I,iBAAiB,MAC7C,CACT,CAAE,MAAOpqH,GACP,OAAO,CACT,CACF,EAEA6I,EAKM2hH,0BAANx5H,eAAgCs5H,GAC9B,IAIE,aAHMzhJ,KAAKshJ,cAAc,CACvBh5I,KAAM,CAAE,CAAE,yBAAwBm5I,MAAY,MAEzC,CACT,CAAE,MAAOtqH,GACP,OAAO,CACT,CACF,EAEA6I,EAMM4hH,kBAANz5H,eAAwBizH,GACtB,MAAMyG,EAA4B7hJ,KAAK2qC,UAAU40F,cAAc,qBAE/D,aAD6BsiB,EAA0B,CAAEzG,OAAQA,KAC3C9yI,IACxB,EAAC03B,EAEK8hH,WAAN35H,eAAiBgR,GACf,MAAM2oH,EAAa9hJ,KAAK2qC,UAAU40F,cAAc,cAChD,aAAauiB,EAAW,CAAE1G,OAAQjiH,GACpC,EAAC6G,EAEK+hH,eAAN55H,eAAqBg8F,GAKnBnkH,KAAKgiJ,oBAAoB79B,EAC3B,EAEAnkF,EAQMiiH,cAAN95H,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,IACE,MAAMztD,QAAc12D,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAK7vB,MACpE,OAAIotD,EAAMglB,OACDhlB,EAAMpuD,OAEN,IAEX,CAAE,MACA,OAAO,IACT,CACF,EAAC03B,EAEKkiH,yBAAN/5H,eAA+BizH,GAC7B,IAAKA,EACH,OAAO,KAGT,IACE,MAAM1kF,QAAc12D,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI6rD,GAAQ9xI,MAClE,OAAIotD,EAAMglB,OACDhlB,EAAMpuD,OAEN,IAEX,CAAE,MACA,OAAO,IACT,CACF,EAEA03B,EAOMmiH,qBAANh6H,eAA2Bi6H,GACzB,MAAMC,EAA+BriJ,KAAK2qC,UAAU40F,cAAc,+BACrC8iB,EAA6B,CACxDD,WAAYA,KAEgB95I,IAOhC,EAEA03B,EAOMsiH,uBAANn6H,eAA6Bi6H,GAC3B,MAAMG,GAAOC,EAAAA,EAAAA,KACPC,EAAiCziJ,KAAK2qC,UAAU40F,cAAc,iCACvCkjB,EAA+B,CAC1DL,WAAY,CAAEz+I,GAAI4+I,KAASH,MAEC95I,IAMhC,EAEA03B,EAOM0iH,uBAANv6H,eAA6Bw6H,GAC3B,MAAMC,EAAiC5iJ,KAAK2qC,UAAU40F,cAAc,iCACvCqjB,EAA+B,CAC1Dj/I,GAAIg/I,KAEwBr6I,IAOhC,EAEA03B,EAOM6iH,aAAN16H,eAAmBwrE,EAAM1yF,GACvB,MAAM6hJ,EAAyB9iJ,KAAK2qC,UAAU40F,cAAc,gBAO5D,aAN6BujB,EAAuB,CAClDnvD,KAAMA,EACN1yF,KAAMA,KAGsBqH,IAEhC,EAEA03B,EAQM+iH,mBAAN56H,eAAyB66H,GACvB,IACE,MAAMtsF,QAAc12D,KAAK+6I,GAAG3xE,WAAW,mBAAmBmmB,IAAIyzD,GAAQ15I,MACtE,OAAIotD,EAAMglB,OACDhlB,EAAMpuD,OAEN,IAEX,CAAE,MACA,OAAO,IACT,CACF,EAEA03B,EAQMijH,gBAAN96H,eAAsBizH,GACpB,MAAM8H,EAAU,GAChB,IACE,MAAMC,QAA2BnjJ,KAAK+6I,GAAG3xE,WAAW,mBAAmB4uD,MAAM,SAAU,KAAMojB,GAAQ9xI,MACrG,OAAI65I,EAAmBtzF,MACd,MAETszF,EAAmBtxI,SAAS09E,IAC1B2zD,EAAQ5gJ,KAAK,IAAI8gJ,EAAAA,EAAW7zD,EAAI5rF,GAAI4rF,EAAIjnF,QAAQ,IAE3C46I,EACT,CAAE,MACA,OAAO,IACT,CACF,EAEAljH,EAMMqjH,sBAANl7H,eAA4BizH,GAC1B,MAAMkI,EAAsBtjJ,KAAK2qC,UAAU40F,cAAc,yBACnDgkB,QAAcD,EAAoBlI,GACxC,GAAIr5I,MAAMgpB,QAAQw4H,EAAMj7I,OAASi7I,EAAMj7I,KAAK7G,OAAS,EAAG,CACtD,IAAI+hJ,EAAc,GAOlB,OANAD,EAAMj7I,KAAKuJ,SAAS4xI,IAEdA,EAAKC,YAAcD,EAAKC,WAAWjiJ,OAAS,GAC9C+hJ,EAAYlhJ,KAAK,IAAI8gJ,EAAAA,EAAW,KAAMK,GACxC,IAEKD,CACT,CACA,OAAO,IACT,EAEAxjH,EAQM2jH,iBAANx7H,eAAuB66H,GACrB,MAAMY,EAAuB5jJ,KAAK2qC,UAAU40F,cAAc,oBAE1D,aADMqkB,EAAqBZ,IACpB,CACT,EAEAhjH,EAOM6jH,eAAN17H,eAAqB27H,GACnB,MAAMC,EAAqB/jJ,KAAK2qC,UAAU40F,cAAc,kBAElD/jG,SADuBuoH,EAAmBD,EAAWE,YAC7B17I,KAC9Bw7I,EAAWngJ,GAAK63B,EAAO73B,GACvBmgJ,EAAWnsB,QAAUn8F,EAAOm8F,QACxBn8F,EAAOyoH,UACTH,EAAWG,QAAUzoH,EAAOyoH,QAEhC,EAEAjkH,EASMkkH,WAAN/7H,eAAiBxkB,EAAIm/B,GACnB,IACE,MAAMqhH,EAAsB,UAAXrhH,EAAsB,GAAEn/B,IAAQ,GAAEA,OAC7C+yD,QAAc12D,KAAK+6I,GAAG3xE,WAAW,WAAWmmB,IAAI40D,GAAU76I,MAChE,OAAIotD,EAAMglB,OACD,IAAI8qC,EAAO9vD,EAAMpuD,QAEjB,IAEX,CAAE,MAAO6uB,GACP,OAAO,IACT,CACF,EAEA6I,EASMokH,UAANj8H,eAAgBk8H,GACd,IACE,MAAM3tF,QAAc12D,KAAK+6I,GAAG3xE,WAAW,UAAUmmB,IAAK,GAAE80D,KAAO/6I,MAC/D,OAAIotD,EAAMglB,OACD,IAAI60C,EAAM75D,EAAMpuD,QAEhB,IAEX,CAAE,MAAO6uB,GACP,OAAO,IACT,CACF,EAAC6I,EAEDskH,gBAAA,SAAgBC,GAEd,OADavkJ,KAAKq8H,KAAK4e,YACXuJ,YAAYD,EAC1B,EAACvkH,EAEDykH,mBAAA,SAAmBC,GAEjB,OADa1kJ,KAAKq8H,KAAK4e,YACX0J,eAAeD,EAC7B,EAAC1kH,EAEDshH,cAAA,SAAcxkI,GACZ,MAAMqnG,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAOj7I,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK4lB,OAAOjiC,EAAOxU,KACjE,EAEA03B,EAKA4kH,0BAAA,WACE,MAAMzgC,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAOj7I,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK4lB,OAAO,CACtD,gCAAiC/+C,KAAKq0H,IAAI5B,UAAU6G,WAAWC,mBAEnE,EAEAv5F,EAKA6kH,+BAAA,WACE,MAAM1gC,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAOj7I,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK4lB,OAAO,CACtD,qCAAsC/+C,KAAKq0H,IAAI5B,UAAU6G,WAAWC,mBAExE,EAEAv5F,EAKA8kH,+BAAA,WACE,MAAM3gC,EAAOnkH,KAAKq8H,KAAK4e,YACvB,OAAOj7I,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK4lB,OAAO,CACtD,qCAAsC/+C,KAAKq0H,IAAI5B,UAAU6G,WAAWC,mBAExE,EAACv5F,EAED+kH,8BAAA,SAA8BC,EAAaC,GAAe,IAADC,EAAAC,EACvD,MAAMhhC,EAAOnkH,KAAKq8H,KAAK4e,YACvB,GAAK+J,SAAmC,QAAxBE,EAAXF,EAAaI,8BAAsB,IAAAF,IAAnCA,EAAqCG,YAAyE,KAA3DL,SAAmC,QAAxBG,EAAXH,EAAaI,8BAAsB,IAAAD,OAAxB,EAAXA,EAAqCE,WAAW5jJ,QACtG,OAAOzB,KAAK+6I,GACT3xE,WAAW,SACXmmB,IAAI40B,EAAKhrF,KACT4lB,OAAO,CACN,oCAAqC,CAACkmG,KAG5C,IAAIK,EAAaN,EAAYI,uBAAuBC,WAIpD,OAFAC,EAAaA,EAAW79I,QAAQ89I,GAA0BjuH,KAAK01C,MAAQu4E,EAAsBC,YAAYC,YAAc/K,KACvH4K,EAAWhjJ,KAAK2iJ,GACTjlJ,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI40B,EAAKhrF,KAAK4lB,OAAO,CACtD,oCAAqCumG,GAEzC,EAEAtlH,EAMM0lH,kBAANv9H,eAAwBw9H,GAEtB,MAAMxhC,EAAOnkH,KAAKq8H,KAAK4e,YACjB2K,EAAYD,EAAK1kJ,KAAK4K,MAAM,KAAK,GAEvC,IAAK+5I,EACH,OAAO,KAGT,MACMC,EADa7lJ,KAAK+yI,QAAQ3iH,MACG0Q,MAAO,kBAAiBqjF,EAAKhrF,eAAeysH,WAEzEC,EAAgB9L,IAAI4L,GAAM5sH,OAAM,IAC7B,OAGT,MAAM+sH,QAAgBD,EAAgB1L,iBACtC,OAAI2L,GAGK,IAEX,EAEA9lH,EAMM+lH,oBAAN59H,eAA0Bw9H,GAExB,MAAMxhC,EAAOnkH,KAAKq8H,KAAK4e,YACjB2K,EAAYD,EAAK1kJ,KAAK4K,MAAM,KAAK,GAEvC,IAAK+5I,EACH,OAAO,KAGT,MACMI,EADahmJ,KAAK+yI,QAAQ3iH,MACK0Q,MAAO,kBAAiBqjF,EAAKhrF,iBAAiBysH,WAE7EI,EAAkBjM,IAAI4L,GAAM5sH,OAAM,IAC/B,OAGT,MAAM+sH,QAAgBE,EAAkB7L,iBACxC,OAAI2L,GAGK,IAEX,EAQA9lH,EACMmgF,SAANh4F,eAAeg8F,SACPnkH,KAAKq8H,KAAK4pB,+BAA+B9hC,EAAKogC,MAAOpgC,EAAKugC,gBAE1D1kJ,KAAK+hJ,eAAe59B,EAM5B,EAGAnkF,EAIMkmH,iBAAN/9H,eAAuBg+H,EAAUrjH,EAAQsjH,EAA4BC,GACnE,QAD4D,IAArBD,IAAAA,EAAwB,SAAkB,IAAdC,IAAAA,GAAiB,GAC9D,oBAAXn4I,OAAwB,CACjC,MAAMgyG,EAAWhyG,OAAOyvE,SAASuiC,SAC3BomC,EAA2BtmJ,KAAK2qC,UAAU40F,cAC9C,oBAGF,aAD6B+mB,EAAyB,CAAEH,WAAUrjH,SAAQsjH,wBAAuBC,iBAAgBnmC,cAC3F53G,IACxB,CACF,EAQA03B,EAEMumH,OAANp+H,iBAAgB,IAADq+H,EACY,QAAzBA,EAAIxmJ,KAAKq8H,KAAK4e,mBAAW,IAAAuL,GAArBA,EAAuBrtH,KACzBqyC,aAAaQ,WAAY,iBAAgBhsE,KAAKq8H,KAAK4e,YAAY9hH,aAE3Dn5B,KAAKq8H,KAAKoqB,SAClB,EAEAzmH,EAcM0mH,WAANv+H,eAAiBgR,GACf,MAAMwtH,EAAmB,iBAAgB3mJ,KAAKq8H,KAAK4e,YAAY9hH,MACzDytH,EAAoBp7E,aAAaC,QAAQk7E,GAC/C,KAAIC,GAAqBtvH,KAAK01C,MAAQ45E,GAAtC,CAGAp7E,aAAaE,QAAQi7E,EAAiBrvH,KAAK01C,MA1sCjB,OA4sC1B,IAEEx4D,YAAW2T,gBACJnoB,KAAK+6I,GACT3xE,WAAW,SACXmmB,IAAIp2D,GACJ4lB,OAAO,CACN2nG,WAAY1mJ,KAAKq0H,IAAI5B,UAAU6G,WAAWM,UAAU,GACpDitB,cAAe7mJ,KAAKq0H,IAAI5B,UAAU6G,WAAWC,mBAC7C,GACD,IAEL,CAAE,MAAOpiG,GACP30B,QAAQhB,MAAM21B,EAChB,CAjBA,CAkBF,EAEA6I,EAMM8mH,2BAAN3+H,eAAiC4+H,GAE/B,OADwB/mJ,KAAK2qC,UAAU40F,cAAc,6BAC9CynB,CAAgBD,EACzB,EAEA/mH,EAMMinH,iCAAN9+H,eAAuC4+H,GAErC,OADwB/mJ,KAAK2qC,UAAU40F,cAAc,mCAC9CynB,CAAgBD,EACzB,EAEA/mH,EAMMknH,kCAAN/+H,eAAwC4+H,GAEtC,OADwB/mJ,KAAK2qC,UAAU40F,cAAc,oCAC9CynB,CAAgBD,EACzB,EAEA/mH,EAMMmnH,UAANh/H,eAAgB4+H,GACd,MAAMI,EAAYnnJ,KAAK2qC,UAAU40F,cAAc,aAC/C,OAAO4nB,EAAUJ,EACnB,EAAC/mH,EAEKonH,0BAANj/H,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAET,MAAMkjC,EAAgB,GAEtB,IACE,MAAM5wB,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,iBAAiB4uD,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAEtFmtH,EAAS5mE,OACZ4mE,EAAS5kH,SAAS09E,IAChB83D,EAAc/kJ,KAAK,IACditF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IACX,IAKN,MAAM2jJ,EAAY,IAAIhwH,KAAKA,KAAK01C,MAAQ0tE,IAGlC6M,EAAY,IAAIjwH,KAAKA,KAAK01C,MAAQ,MAElCw6E,QAAwBxnJ,KAAK+6I,GAAG3xE,WAAW,wBAAwB4uD,MAAM,cAAe,IAAKsvB,GAAWh+I,MAa9G,OAXKk+I,EAAgB33F,OACnB23F,EAAgB31I,SAAS09E,KACnBA,EAAIjnF,OAAOk9I,YAAYtiE,SAAWqkE,GAAiC,eAApBh4D,EAAIjnF,OAAOrH,OAC5DomJ,EAAc/kJ,KAAK,IACditF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IAEf,IAIG0jJ,EAAc5lJ,OAAS,EAAI4lJ,EAAgB,IACpD,CAAE,MAAOlwH,GAEP,OADA30B,QAAQhB,MAAM,KAAM21B,GACb,IACT,CACF,EAAC6I,EAEKynH,6BAANt/H,eAAmC7f,GAEjC,IAAKA,EAAKy0I,MACR,OAIF,IADa/8I,KAAKq8H,KAAK4e,YAErB,OAAO,EAGT,IAEE,aADMj7I,KAAK+6I,GAAG3xE,WAAW,iBAAiBmmB,IAAIjnF,EAAKy0I,OAAO/7H,UACnD,CACT,CAAE,MAAOmW,GAEP,OADA30B,QAAQhB,MAAM,qCAAsC21B,IAC7C,CACT,CACF,EAAC6I,EAEK0nH,4BAANv/H,eAAkC7f,GAChC,MAAMo/I,EAA8B1nJ,KAAK2qC,UAAU40F,cAAc,+BACjE,OAAOmoB,EAA4Bp/I,EACrC,EAAC03B,EAED2nH,6BAAA,SAA6Br/I,GAC3B,MAAMq/I,EAA+B3nJ,KAAK2qC,UAAU40F,cAAc,mCAClE,OAAOooB,EAA6B,IAAKr/I,EAAMs/I,WAAW,GAC5D,EAAC5nH,EAEK6nH,gCAAN1/H,eAAsC7f,GACpC,MAAMu/I,EAAkC7nJ,KAAK2qC,UAAU40F,cAAc,mCACrE,OAAOsoB,EAAgC,IAAKv/I,EAAMs/I,WAAW,GAC/D,EAAC5nH,EAEK8nH,eAAN3/H,eAAqB7f,GACnB,MAAMw/I,EAAiB9nJ,KAAK2qC,UAAU40F,cAAc,kBACpD,OAAOuoB,EAAex/I,EACxB,EAAC03B,EAEK+nH,wBAAN5/H,eAA8B7f,GAC5B,MAAMy/I,EAA0B/nJ,KAAK2qC,UAAU40F,cAAc,2BAC7D,OAAOwoB,EAAwBz/I,EACjC,EAAC03B,EAEKgoH,gBAAN7/H,eAAsB7f,GACpB,MAAM0/I,EAAkBhoJ,KAAK2qC,UAAU40F,cAAc,mBACrD,OAAOyoB,EAAgB1/I,EACzB,EAAC03B,EAEKioH,iBAAN9/H,eAAuB7f,GACrB,MAAM2/I,EAAmBjoJ,KAAK2qC,UAAU40F,cAAc,oBACtD,OAAO0oB,EAAiB3/I,EAC1B,EAAC03B,EAEKkoH,mBAAN//H,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,IACE,MAAMsS,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,kBAAkB4uD,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAE5F,GAAImtH,EAAS5mE,MACX,OAAO,KACF,CACL,MAAMs4F,EAAU,GAQhB,OAPA1xB,EAAS5kH,SAAS09E,IAChB44D,EAAQ7lJ,KAAK,IACRitF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IACX,IAGGwkJ,CACT,CACF,CAAE,MAAOhxH,GAEP,OADA30B,QAAQhB,MAAM,KAAM21B,GACb,IACT,CACF,EAAC6I,EAEKooH,gBAANjgI,eAAsB7f,GACpB,MAAM8/I,EAAkBpoJ,KAAK2qC,UAAU40F,cAAc,mBACrD,OAAO6oB,EAAgB9/I,EACzB,EAAC03B,EAEKqoH,iBAANlgI,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,IACE,MAAMsS,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,gBAAgB4uD,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAE1F,GAAImtH,EAAS5mE,MACX,OAAO,KACF,CACL,MAAMy4F,EAAQ,GAQd,OAPA7xB,EAAS5kH,SAAS09E,IAChB+4D,EAAMhmJ,KAAK,IACNitF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IACX,IAGG2kJ,CACT,CACF,CAAE,MAAOnxH,GAEP,OADA30B,QAAQhB,MAAM,KAAM21B,GACb,IACT,CACF,EAAC6I,EAEKuoH,kBAANpgI,eAAwB7f,GACtB,MAAMigJ,EAAoBvoJ,KAAK2qC,UAAU40F,cAAc,qBACvD,OAAOgpB,EAAkBjgJ,EAC3B,EAAC03B,EAEKwoH,mBAANrgI,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,IACE,MAAMsS,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,kBAAkB4uD,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAE5F,GAAImtH,EAAS5mE,MACX,OAAO,KACF,CACL,MAAMygE,EAAU,GAOhB,OANAmG,EAAS5kH,SAAS09E,IAChB+gC,EAAQhuH,KAAK,IACRitF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IACX,IAEG2sH,CACT,CACF,CAAE,MAAOn5F,GAEP,OADA30B,QAAQhB,MAAM,KAAM21B,GACb,IACT,CACF,EAEA6I,EAMMyoH,cAANtgI,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IACE,MAAMxkB,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI40B,EAAKhrF,KAAK7vB,MAEvE,OAAKmtH,EAAS/6C,OAGL+6C,EAASnuH,OAFT,IAIX,CAAE,MAAO6uB,GACP,OAAO,IACT,CACF,EAAC6I,EAEK0oH,gBAANvgI,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,IACE,MAAMsS,QAAiBz2H,KAAK+6I,GAAG3xE,WAAW,eAAe4uD,MAAM,SAAU,KAAM7T,EAAKhrF,KAAK7vB,MAEzF,GAAImtH,EAAS5mE,MACX,OAAO,KACF,CACL,MAAM84F,EAAc,GAQpB,OAPAlyB,EAAS5kH,SAAS09E,IAChBo5D,EAAYrmJ,KAAK,IACZitF,EAAIjnF,OACPy0I,MAAOxtD,EAAI5rF,IACX,IAGGglJ,CACT,CACF,CAAE,MAAOxxH,GAEP,OADA30B,QAAQhB,MAAM,KAAM21B,GACb,IACT,CACF,EAEA6I,EAOM4oH,oBAANzgI,eAA0B0gI,EAASC,GACjC,MAAMC,EAA8B/oJ,KAAK2qC,UAAU40F,cAAc,uBAMjE,aAL6BwpB,EAA4B,CACvDF,UACAC,eAE4BxgJ,IAEhC,EAAC03B,EAEKgpH,oBAAN7gI,iBACE,MAAMg8F,EAAOnkH,KAAKq8H,KAAK4e,YACvB,IAAK92B,EACH,OAAO,KAGT,MAAM50B,QAAYvvF,KAAK+6I,GAAG3xE,WAAW,oBAAoBmmB,IAAI40B,EAAKhrF,KAAK7vB,MACvE,OAAIimF,EAAI7T,OACC6T,EAAIjnF,OAEJ,IAEX,EAEA03B,EACMipH,oBAAN9gI,eAA0B7f,GACxB,MAAM2gJ,EAAsBjpJ,KAAK2qC,UAAU40F,cAAc,uBACzD,OAAO0pB,EAAoB3gJ,EAC7B,EAEA03B,EACMkpH,0BAAN/gI,eAAgC7f,GAC9B,MAAM4gJ,EAA4BlpJ,KAAK2qC,UAAU40F,cAAc,6BAC/D,OAAO2pB,EAA0B5gJ,EACnC,EAEA03B,EACMmpH,mBAANhhI,iBACE,MAAMghI,EAAqBnpJ,KAAK2qC,UAAU40F,cAAc,sBACxD,OAAO4pB,GACT,EAEAnpH,EACMopH,sBAANjhI,eAA4B7f,GAC1B,MAAM8gJ,EAAwBppJ,KAAK2qC,UAAU40F,cAAc,yBAC3D,OAAO6pB,EAAsB9gJ,EAC/B,EAEA03B,EACMqpH,wBAANlhI,eAA8B7f,GAC5B,MAAM+gJ,EAA0BrpJ,KAAK2qC,UAAU40F,cAAc,2BAC7D,OAAO8pB,EAAwB/gJ,EACjC,EAEA03B,EACMspH,cAANnhI,eAAoB7f,GAClB,MAAMghJ,EAAgBtpJ,KAAK2qC,UAAU40F,cAAc,iBACnD,OAAO+pB,EAAchhJ,EACvB,EAEA03B,EAGMupH,oBAANphI,eAA0B7f,GACxB,MAAMkhJ,EAA8BxpJ,KAAK2qC,UAAU40F,cAAc,uBAEjE,aAD6BiqB,EAA4BlhJ,IACnCA,IACxB,EAEA03B,EAGMypH,0BAANthI,eAAgC7f,GAC9B,MAAMohJ,EAAoC1pJ,KAAK2qC,UAAU40F,cAAc,mCACjEmqB,EAAkCphJ,EAC1C,EAEA03B,EAMM2pH,mBAANxhI,eAAyB0T,EAAS+tH,QAAQ,IAARA,IAAAA,EAAW,QAC3C,MAAMthJ,EAAO,CACXuzB,UACA+tH,YAEID,EAAqB3pJ,KAAK2qC,UAAU40F,cAAc,sBACxD,OAAOoqB,EAAmBrhJ,EAC5B,EAEA03B,EAKM6pH,uBAAN1hI,eAA6B7f,GAC3B,MAAMuhJ,EAAyB7pJ,KAAK2qC,UAAU40F,cAAc,0BAC5D,OAAOsqB,EAAuB,CAAEC,iBAAkBxhJ,GACpD,EAEA03B,EAKM+pH,2BAAN5hI,eAAiC7f,GAC/B,MAAMyhJ,EAA6B/pJ,KAAK2qC,UAAU40F,cAAc,8BAChE,OAAOwqB,EAA2B,CAAED,iBAAkBxhJ,GACxD,EAEA03B,EAGMgqH,yBAAN7hI,eAA+B7f,GAC7B,MAAM0hJ,EAA2BhqJ,KAAK2qC,UAAU40F,cAAc,4BAC9D,OAAOyqB,EAAyB1hJ,EAClC,EAEA03B,EAGMiqH,yBAAN9hI,eAA+B7f,GAC7B,MAAM2hJ,EAA2BjqJ,KAAK2qC,UAAU40F,cAAc,6BAC9D,OAAO0qB,EAAyB3hJ,EAClC,EAEA03B,EAGMkqH,4BAAN/hI,iBACE,MAAM+hI,EAA8BlqJ,KAAK2qC,UAAU40F,cAAc,+BACjE,OAAO2qB,GACT,EAEAlqH,EAKMmqH,uBAANhiI,eAA6B7f,GAC3B,MAAM6hJ,EAAyBnqJ,KAAK2qC,UAAU40F,cAAc,0BAC5D,OAAO4qB,EAAuB7hJ,EAChC,EAEA03B,EAKMoqH,iCAANjiI,eAAuC7f,GACrC,MAAM8hJ,EAAmCpqJ,KAAK2qC,UAAU40F,cAAc,oCACtE,OAAO6qB,EAAiC9hJ,EAC1C,EAAC03B,EAEKqqH,iBAANliI,eAAuB7f,GACrB,MAAM+hJ,EAAmBrqJ,KAAK2qC,UAAU40F,cAAc,oBACtD,OAAO8qB,EAAiB,CAAEC,cAAehiJ,GAC3C,EAAC03B,EAEKuqH,uBAANpiI,iBACE,MAAMoiI,EAAyBvqJ,KAAK2qC,UAAU40F,cAAc,0BAC5D,OAAOgrB,GACT,EAACvqH,EAEKwqH,uBAANriI,eAA6BsiI,GAC3B,MAAMD,EAAyBxqJ,KAAK2qC,UAAU40F,cAAc,0BAC5D,OAAOirB,EAAuB,CAACC,cAAeA,GAChD,EAACzqH,EAEK0qH,6BAANviI,eAAmCwiI,GACjC,MAAMD,EAA+B1qJ,KAAK2qC,UAAU40F,cAAc,gCAClE,OAAOmrB,EAA6B,CAACC,QAASA,GAChD,EAGA3qH,EAQA4qH,6BAAA,SAA6BxP,EAAQyP,GASnC,OAHKzP,IACHA,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,KAE1Bn5B,KAAK+6I,GAAG3xE,WAAW,mBAAmBmmB,IAAI6rD,GAAQ/jB,YAAY0B,GARnDA,KACZA,EAAOr9C,QACTmvE,EAAiB9xB,EAAOzwH,OAAOwiJ,aAAe,GAChD,EAK8E54H,CAAS6mG,IAC3F,EAEA/4F,EAYA+qH,wBAAA,SAAwB3P,EAAQ4P,EAASC,EAAaC,EAAmBC,EAAaC,EAAYC,GAahG,OAHKjQ,IACHA,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,KAE1Bn5B,KAAK+6I,GAAG3xE,WAAW,mBAAmBmmB,IAAI6rD,GAAQhyE,WAAW,UAAUmmB,IAAIy7D,GAAS3zB,YAAY0B,GAZrFA,KACZA,EAAOr9C,SACTuvE,EAAYlyB,EAAOzwH,OAAO0nC,OAAS,IACnCk7G,EAAkBnyB,EAAOzwH,OAAO66B,aAAe,IAC/CgoH,EAAYpyB,EAAOzwH,OAAOgjJ,cAAgB,IAC1CF,EAAWryB,EAAOzwH,OAAOijJ,aAAe,IACxCF,EAAYtyB,EAAOzwH,OAAOkjJ,YAAc,IAC1C,EAKgHt5H,CAAS6mG,IAC7H,EAEA/4F,EASMyrH,kBAANtjI,eAAwBujI,EAASC,EAAaC,GAC5C,MAAMxQ,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,IAC/B0yH,EAAmB7rJ,KAAK+6I,GAAG3xE,WAAW,mBAAmBmmB,IAAI6rD,GAC7D0Q,QAAsBD,EAAiBviJ,MAE7C,GAAIoiJ,EAAS,CACX,IAAIK,EAAiB,GAIrB,GAHID,EAAcpwE,QAAUowE,EAAcxjJ,OAAOwiJ,cAC/CiB,EAAiBD,EAAcxjJ,OAAOwiJ,aAEpCa,EAAa,CACf,MAAMK,EAAaD,EAAe/tF,WAAUr6D,GAAMA,IAAO+nJ,IAEzDK,EAAe9oJ,OAAO+oJ,EAAY,EACpC,MACED,EAAezpJ,KAAKopJ,GAEtBE,EAAiBG,CACnB,OAEMF,EAAiBhrI,IAAI,CAACiqI,YAAac,GAC3C,EAEA5rH,EASMisH,SAAN9jI,eAAe6nB,EAAO7M,EAAay9C,EAAOD,EAAM6qE,GAC9C,MAAMU,GAAa1J,EAAAA,EAAAA,WACbxiJ,KAAKyrJ,kBAAkBS,GAAY,OAAO/rJ,SAC1CH,KAAKmsJ,UAAUD,GAAY,EAAOl8G,EAAO7M,EAAay9C,EAAOD,EAAM6qE,EAC3E,EAEAxrH,EAWMmsH,UAANhkI,eAAgBujI,EAASU,EAAap8G,EAAO7M,EAAay9C,EAAOD,EAAM6qE,GACrE,MAAMa,EAASrsJ,KAAKq8H,KAAK4e,YAAY9hH,IAC/B4/F,EAAS/4H,KAAK+6I,GAAG3xE,WAAW,mBAAmBmmB,IAAI88D,GAAQjjF,WAAW,UAAUmmB,IAAIm8D,GAE1F,GAAIU,QACIrzB,EAAO/3G,aACR,CACL,MAAMsrI,EAAW,CACft8G,MAAOA,GAAS,GAChB7M,YAAaA,GAAe,GAC5BmoH,aAAc1qE,GAAS,GACvB2qE,YAAa5qE,GAAQ,GACrB6qE,WAAYA,GAAc,UAEtBzyB,EAAOl4G,IAAIyrI,EACnB,CACF,EAEAtsH,EAIMosH,YAANjkI,eAAkBujI,SACV1rJ,KAAKyrJ,kBAAkBC,GAAS,OAAMvrJ,SACtCH,KAAKmsJ,UAAUT,GAAS,OAAMvrJ,OAAWA,OAAWA,OAAWA,OAAWA,EAClF,EAEA6/B,EAQMusH,eAANpkI,eAAqBqkI,EAASC,EAAQ9G,EAAM+G,GACrCD,IACHA,GAASjK,EAAAA,EAAAA,MAEX,MAAM6J,EAASrsJ,KAAKq8H,KAAK4e,YAAY9hH,IAC/BwzH,EAAU3sJ,KAAK+yI,QAAQ3iH,IAAK,cAAai8H,KAAUG,KAAWC,KAAU9G,EAAKhuI,QAEnF,SADMg1I,EAAQ5S,IAAI4L,GACd+G,EAAW,CACb,MAAME,EAAe5sJ,KAAK+yI,QAAQ3iH,IAAK,cAAai8H,KAAUG,gBAAsBC,WAC9EG,EAAa7S,IAAI2S,EACzB,CACF,EAEA1sH,EAOM6sH,gBAAN1kI,eAAsBizH,EAAQoR,EAASC,GAChCrR,IACHA,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,KAEjC,MAAM2zH,EAAmB9sJ,KAAK+yI,QAAQ3iH,IAAK,cAAagrH,KAAUoR,KAAWC,KAC7E,IACE,MAAMM,QAA0BD,EAAiB7S,UACjD,GAAI8S,EAAkBthI,OAASshI,EAAkBthI,MAAMhqB,OAAS,EAAG,CACjE,MAAMkrJ,EAAUI,EAAkBthI,MAAM,GAExC,aADuBkhI,EAAQzT,eACfpQ,WAClB,CACF,CAAE,MAAO3xG,GAEP,OADA30B,QAAQu4C,IAAI5jB,GACL,EACT,CACF,EAEA6I,EAOMgtH,eAAN7kI,eAAqBizH,EAAQoR,EAASC,GAC/BrR,IACHA,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,KAEjC,IACE,MAAM2zH,EAAmB9sJ,KAAK+yI,QAAQ3iH,IAAK,cAAagrH,KAAUoR,KAAWC,KACvEM,QAA0BD,EAAiB7S,UACjD,GAAI8S,EAAkBthI,OAASshI,EAAkBthI,MAAMhqB,OAAS,EAAG,CACjE,MAAMkrJ,EAAUI,EAAkBthI,MAAM,GAExC,aADkBkhI,EAAQxS,gBAE5B,CACF,CAAE,MAAOhjH,GAEP,OADA30B,QAAQu4C,IAAI5jB,GACL,EACT,CACF,EAEA6I,EAOMitH,wBAAN9kI,eAA8BizH,EAAQoR,EAASC,GACxCrR,IACHA,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,KAEjC,IACE,MAAMwzH,EAAU3sJ,KAAK+yI,QAAQ3iH,IAAK,cAAagrH,KAAUoR,gBAAsBC,KAE/E,aADkBE,EAAQxS,gBAE5B,CAAE,MAAOhjH,GAEP,OADA30B,QAAQu4C,IAAI5jB,GACL,EACT,CACF,EAEA6I,EAKMktH,eAAN/kI,eAAqBqkI,EAASC,GAC5B,MAAMrR,EAASp7I,KAAKq8H,KAAK4e,YAAY9hH,IAE/B2zH,EAAmB9sJ,KAAK+yI,QAAQ3iH,IAAK,cAAagrH,KAAUoR,KAAWC,KAC7E,IACE,MAAMM,QAA0BD,EAAiB7S,UACjD,GAAI8S,EAAkBthI,OAASshI,EAAkBthI,MAAMhqB,OAAS,EAAG,CACjE,MAAMkrJ,EAAUI,EAAkBthI,MAAM,SAClCkhI,EAAQ3rI,QAChB,CACF,CAAE,MAAOmW,GACP30B,QAAQu4C,IAAI,wBAAyB5jB,EACvC,CAEA,MAAMy1H,EAAe5sJ,KAAK+yI,QAAQ3iH,IAAK,cAAagrH,KAAUoR,gBAAsBC,KACpF,UACQG,EAAa5rI,QACrB,CAAE,MAAOmW,GAET,CACF,EAEA6I,EAQAmtH,8BAAA,SAA8Bd,EAAQe,EAAcC,GAQlD,OAAOrtJ,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI88D,GAAQjjF,WAAW,gBAAgBmmB,IAAI69D,GAAc/1B,YAAY0B,GAP5FA,KACZA,EAAOr9C,QAAUq9C,EAAOzwH,OAAOqR,MACjC0zI,EAAYt0B,EAAOzwH,OAAOqR,OAE1B0zI,EAAY,GACd,EAEuHn7H,CAAS6mG,IACpI,EAEA/4F,EAKMstH,wBAANnlI,eAA8BilI,EAAcG,GAC1C,MAAMlB,EAASrsJ,KAAKq8H,KAAK4e,YAAY9hH,UAC/Bn5B,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI88D,GAAQjjF,WAAW,gBAAgBmmB,IAAI69D,GAAcvsI,IAAI,CAAClH,MAAO4zI,GAC/G,EAEAvtH,EAOAwtH,mCAAA,SAAmCnB,EAAQoB,GAMzC,OAAOztJ,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI88D,GAAQh1B,YAAY0B,GAL/CA,KACZA,EAAOr9C,QAAUq9C,EAAOzwH,OAAOolJ,aACjCD,EAAkB10B,EAAOzwH,OAAOolJ,YAClC,EAE0Ex7H,CAAS6mG,IACvF,EAEA/4F,EAOA2tH,kCAAA,SAAkCtB,EAAQuB,EAAcC,GAStD,OAAO7tJ,KAAK+6I,GAAG3xE,WAAW,SAASmmB,IAAI88D,GAAQh1B,YAAY0B,GARzCA,KACZA,EAAOr9C,QACTkyE,EAAa70B,EAAOzwH,OAAOwlJ,QAAU,IAEnC/0B,EAAOr9C,QACTmyE,EAAgB90B,EAAOzwH,OAAOylJ,WAAa,GAC7C,EAEoE77H,CAAS6mG,IACjF,EAEA/4F,EAQMguH,qBAAN7lI,eAA2BilI,GAAe,IAADa,EAAAC,EACvC,MAAM9S,EAAkB,QAAZ6S,EAAGjuJ,KAAKq8H,YAAI,IAAA4xB,GAAa,QAAbC,EAATD,EAAWhT,mBAAW,IAAAiT,OAAb,EAATA,EAAwB/0H,IACvC,IAAKiiH,IAAWgS,EACd,OAAO,KAGT,IAAIzzI,EAAQ,KACZ,IACE,MAAMw0I,QAAiBnuJ,KAAK+6I,GAAG3xE,WAAW,eAAemmB,IAAI6rD,GAAQhyE,WAAW,gBAAgBmmB,IAAI69D,GAAc9jJ,MAC9G6kJ,EAASzyE,QAAUyyE,EAAS7lJ,OAAOqR,QACrCA,EAAQw0I,EAAS7lJ,OAAOqR,MAE5B,CAAE,MAAOwd,GACP30B,QAAQu4C,IAAI5jB,EACd,CACA,OAAOxd,CACT,EAACihI,CAAA,CArgEW,GAqhEd,OAXA,WACE,OAAKD,GAGMA,IAGF,MALPA,GAAmB,IAAIC,GAChBD,GAMX,gKC/hEA,MA0BMyT,GAAmB1qJ,IAAqC,IAApC,aAAEuhJ,EAAY,aAAEoJ,GAAc3qJ,EAEtD,MAAM,QAAEm4B,EAAO,UAAEyyH,EAAS,KAAErtJ,EAAI,gBAAEstJ,EAAe,eAAEC,EAAc,OAAEC,EAAM,SAAEC,EAAQ,QAAEC,EAAO,UAAEC,GAAc3J,GACtG,OAAEniH,IAAW+rH,EAAAA,GAAAA,MAEb,EAACC,EAAU,EAACC,IAAgB/oJ,EAAAA,GAAAA,WAAS,GAErCgpJ,IAAmBN,EAUzB,SAASO,EAAS9pJ,GAAiB,IAAhB,UAAE+pJ,GAAW/pJ,EAC9B,IAAK+pJ,EAAW,MAAO,GAGvB,MAAMC,EAAgBp5D,KAAAA,SAAmBm5D,GAmBzC,OAAOhsD,GAAAA,cAAA,OAAKksD,wBAAyB,CAAEC,OAAQF,IACjD,CAEA,MAQMv/G,EAAQ,CACZy1G,WAAYniD,GAAAA,cAAC7pD,GAAAA,EAAe,CAACjT,KAAMkpH,GAAAA,IAAWC,MAAM,UAAUhiH,KAAK,OACnEiiH,aAActsD,GAAAA,cAAC7pD,GAAAA,EAAe,CAACjT,KAAMqpH,GAAAA,IAAgBF,MAAM,UAAUhiH,KAAK,OAC1EmiH,eAAgBxsD,GAAAA,cAAC7pD,GAAAA,EAAe,CAACjT,KAAMupH,GAAAA,GAAYJ,MAAM,UAAUhiH,KAAK,OACxEpqB,QAAS+/E,GAAAA,cAAC7pD,GAAAA,EAAe,CAACjT,KAAMwpH,GAAAA,IAAiBL,MAAM,UAAUhiH,KAAK,QAGxE,OACE21D,GAAAA,cAAAA,GAAAA,SAAA,KACEA,GAAAA,cAAA,OACEzpD,UAAY,4BAA2Bx4C,KAAQ+tJ,EAAiB,OAAS,KACzEa,aArDmBC,KACvBf,GAAa,EAAK,EAqDdgB,aAlDmBC,KACvBjB,GAAa,EAAM,EAkDfrqJ,KAAO,IAAEsqJ,EAAiB,OAAS,IACnCiB,QAASA,IAtBWzB,KACpBQ,KACFxzC,EAAAA,GAAAA,UAAU,GAAEkzC,KACZwB,GAAAA,EAAMC,QAAQ3B,GAChB,EAkBmB4B,CAAiB5B,IAEhCtrD,GAAAA,cAAA,OAAKzpD,UAAY,mCAAkCx4C,KACjDiiG,GAAAA,cAAA,SAAItzD,EAAM3uC,KAEZiiG,GAAAA,cAAA,OAAKzpD,UAAU,oCACbypD,GAAAA,cAAA,aAAmB,UAAXpgE,EAAqB8rH,EAAYD,GACzCzrD,GAAAA,cAAA,YACEA,GAAAA,cAAC+rD,EAAS,CAACC,UAAsB,UAAXpsH,EAAqBwrH,EAAYzyH,KAGzDqnE,GAAAA,cAAA,QAAMr/F,MAAO4qJ,EAAS,CAAE4B,UAAW,SAAUd,MAAO,WAAc,CAAEe,WAAY,UAC/EtB,GACC9rD,GAAAA,cAAA,OAAKr/F,MAAO,CAAE0sJ,MAAO,UACnBrtD,GAAAA,cAAC7pD,GAAAA,EAAe,CAACjT,KAAMoqH,GAAAA,IAAcjjH,KAAK,UAKjD,EAIP,OAlHmC03G,IAEjC,MAAMwL,EAAmB,SAAQxL,EAAauJ,iBAC9C,IAAIkC,GAAe,EAEnB,GAAsB,oBAAXxiJ,OAAwB,CACjC,MAAM/B,EAAUyC,SAASilB,cAAe,IAAG48H,KAE3C,GADAC,EAAexiJ,OAAOgB,WAAa,KAC/B/C,EAAS,MACf,CAEA+jJ,GAAAA,EAAMC,QAAQM,IAEdP,EAAAA,GAAAA,GAAMhtD,GAAAA,cAACkrD,GAAgB,CAACnJ,aAAcA,EAAcoJ,aAAcA,IAAM6B,GAAAA,EAAMC,QAAQM,KAAsB,CAC1GztJ,SAAU0tJ,EAAe,YAAc,eACvCC,aAAa,EACb1iI,SAAU,KACVtqB,GAAIshJ,EAAauJ,eACjB/0G,UAAWg3G,EACX5sJ,MAAO,CACL+sJ,UAAW,OACXvsJ,QAAS,MAEX,EC6YJ,OAxa0By1B,IAAa,IAAD+2H,EAAAC,EAAAC,EAEpC,MAAM,EAACC,EAAiB,EAACC,IAAuBjrJ,EAAAA,GAAAA,UAAS,KACnD,EAACkrJ,EAAe,EAACC,IAAqBnrJ,EAAAA,GAAAA,UAAS,OAC/C,EAACorJ,EAAmB,EAACC,IAAyBrrJ,EAAAA,GAAAA,UAAS,KACvD,EAACsrJ,EAAmB,EAACC,IAAyBvrJ,EAAAA,GAAAA,UAAS,KACvD,EAACwrJ,EAAoB,EAACC,IAA0BzrJ,EAAAA,GAAAA,UAAS,KACzD,EAAC0rJ,EAA4B,EAACC,IAAkC3rJ,EAAAA,GAAAA,UAAS,KACzE,EAAC4rJ,EAAsB,EAACC,IAA4B7rJ,EAAAA,GAAAA,UAAS,KAC7D,EAAC8rJ,EAA6B,EAACC,IAAmC/rJ,EAAAA,GAAAA,UAAS,KAC3E,EAACgsJ,EAAiB,EAACC,IAAuBjsJ,EAAAA,GAAAA,UAAS,KACnD,EAACksJ,EAAW,EAAC5I,IAAiBtjJ,EAAAA,GAAAA,UAAS,KACvC,EAACmsJ,EAAa,EAACC,IAAmBpsJ,EAAAA,GAAAA,UAAS,OAC3C,EAAC+c,EAAc,EAACsvI,IAAoBrsJ,EAAAA,GAAAA,WAAS,IAC7C,EAACssJ,EAAiB,EAACC,IAAuBvsJ,EAAAA,GAAAA,UAAS,OACnD,EAACi3D,EAAM,EAACu1F,IAAYxsJ,EAAAA,GAAAA,UAAS,OAG7B,EAACysJ,EAAe,EAACC,IAAqB1sJ,EAAAA,GAAAA,WAAS,GAG/C2sJ,EC7BqBC,MAC3B,MAAM,sBAAEC,IAA0B9xC,EAAAA,GAAAA,gBAAe,cAgDjD,OAAO8xC,EAAsB1yI,KAAK,EDpBVyyI,IAExBtsJ,EAAAA,GAAAA,YAAU,KAKR,MAmBMwsJ,EAA8B3qI,UAClCuqI,GAAkB,GAClB,IAAK,IAADK,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACF,MAAM,kBAAEC,EAAiB,aAAEC,IAAyE,QAAxDV,EAAAJ,EAAgB3qG,MAAKtkD,IAAA,IAAC,OAAEo/B,GAAQp/B,EAAA,MAAgB,UAAXo/B,CAAkB,WAAC,IAAAiwH,OAAA,EAAxDA,EAA0D78B,WAAY,CAAC,EAC7Gw9B,EAAgBF,aAAiB,EAAjBA,EAAoBC,GAAc9vJ,GAClDgwJ,EAAwBH,SAAiC,QAAhBR,EAAjBQ,EAAoBC,UAAa,IAAAT,GAAU,QAAVC,EAAjCD,EAAmC98B,gBAAQ,IAAA+8B,GAAmB,QAAnBC,EAA3CD,EAA6CW,yBAAiB,IAAAV,GAAU,QAAVC,EAA9DD,EAAgEh9B,gBAAQ,IAAAi9B,GAAsB,QAAtBC,EAAxED,EAA0EU,4BAAoB,IAAAT,OAA7E,EAAjBA,EAAgGU,UACxHC,EAAuBP,SAAiC,QAAhBH,EAAjBG,EAAoBC,UAAa,IAAAJ,GAAU,QAAVC,EAAjCD,EAAmCn9B,gBAAQ,IAAAo9B,GAAmB,QAAnBC,EAA3CD,EAA6CM,yBAAiB,IAAAL,OAA7C,EAAjBA,EAAgEnkC,KAGvF4kC,QAAkCl6H,EAAS+hH,oBAAoB6X,IAAmB,GAGlFO,EAAoBT,EAAkBC,GAAcv9B,SAASg+B,sBAAsB1vI,KAAI2vI,IAAa,IAADC,EACvG,MAAMC,GAA0BL,SAAwC,QAAhBI,EAAxBJ,EAA0BM,sBAAc,IAAAF,OAAhB,EAAxBA,EAA0CpsG,MAAKgd,GAAYA,EAASuvF,WAAaJ,EAASxwJ,OAAO,KAEjI,MAAO,IACFwwJ,EAASj+B,SACZq+B,SAAUJ,EAASxwJ,GACnBqhE,UAAUqvF,aAAuB,EAAvBA,EAAyBrvF,WAAY,KAC/CwvF,WAAYb,EACZc,UAAWV,EACZ,IAEH3B,EAAgBsB,GAChBgB,EAAoBT,EACtB,CAAE,MAAO98H,GACP30B,QAAQhB,MAAM21B,EAChB,CACAu7H,GAAkB,EAAM,EA/CbvqI,WAAa,IAADwsI,EAAAC,EAAAC,EAAAC,EAAAC,EACvB,MAAM3Z,GAASthH,SAAc,QAAN66H,EAAR76H,EAAUuiG,YAAI,IAAAs4B,GAAW,QAAXC,EAAdD,EAAgBh1H,iBAAS,IAAAi1H,GAAa,QAAbC,EAAzBD,EAA2B3Z,mBAAW,IAAA4Z,OAA9B,EAARA,EAAwC17H,MAAO,KAE9D,GAAIpW,EAAe,OACnB,IAAKq4H,EAAQ,OAEb0X,IAEA,MAAMkC,QAA8Bl7H,EAASovH,0BAA0B9N,GACjE6Z,QAA8Bn7H,EAASqvH,qBACvC+L,QAA4Bp7H,EAAS6hH,oBAAoBP,GAE/DiW,GAAsB4D,SAA2B,QAANH,EAArBG,EAAuB3sJ,YAAI,IAAAwsJ,OAAN,EAArBA,EAA6BK,eAAgB,IACnE5D,GAAsByD,SAA2B,QAAND,EAArBC,EAAuB1sJ,YAAI,IAAAysJ,OAAN,EAArBA,EAA6BK,eAAgB,IACnEnE,EAAoBiE,GAAuB,IAE3C7C,GAAiB,EAAK,EAkCxB9wE,EAAM,GACL,CAACznD,SAAc,QAAN+2H,EAAR/2H,EAAUuiG,YAAI,IAAAw0B,GAAW,QAAXC,EAAdD,EAAgBlxH,iBAAS,IAAAmxH,GAAa,QAAbC,EAAzBD,EAA2B7V,mBAAW,IAAA8V,OAA9B,EAARA,EAAwC53H,IAAKpW,IAMjD,MAmBM2xI,EAAsBW,IAC1B/L,EAAc+L,EAAc,GA6J9B/uJ,EAAAA,GAAAA,YAAU,KACR,MAsBMgvJ,EAA6BntI,MAAOu4D,EAAM8tE,KAjBtB+G,cAkBA70E,EAjBjB,IAAIr4D,SAAQC,IACjB,MAAM0kD,GAAM,IAAI11C,MAAOC,UAEjBxf,EADS,IAAIuf,KAAKi+H,GAAgBh+H,UACjBy1C,EAEnBj1D,GAAS,EAEXuQ,IAGA9T,WAAW8T,EAASvQ,EACtB,WASI+hB,EAASswH,iCAAiC,CAAEoE,kBAAiB,EAIrE,IAAI1gF,EAAW,GAmBf,OAjBAgkF,EAA6BjgJ,SAAQ2jJ,IACnC,MAAMC,EAAaD,EAAwBjH,gBACrCC,EAAiBgH,EAAwBhH,eAGzCkH,EAAextJ,KAAKukE,MAAMgpF,EAAWE,YAAc,KAGnDj1E,EAAO,IAAIppD,KAA0B,IAArBm+H,EAAWG,QAAiBF,GAElD,IA1CsBh1E,IAEfA,EADK,IAAIppD,KAyCXu+H,CAAgBn1E,GAAO,CAC1B,MAAMtpE,EAAY5C,YAAW,IAAM8gJ,EAA2B50E,EAAM8tE,IAAiB9tE,EAAKnpD,WAAY,IAAID,MAAOC,WACjHu2C,EAASxrE,KAAK8U,EAChB,KAIK,KACL02D,EAASj8D,SAAQuF,GAAaY,aAAaZ,IAAW,CACvD,GACA,CAAC06I,IA0EJ,OAvBAxrJ,EAAAA,GAAAA,YAAU,KACR,GAAyB,OAArBgsJ,EAA2B,CAC7B,MAAMwD,EAAYC,GAAAA,EAAO/3F,WAAUf,GAASq1F,GAAoBr1F,EAAM+4F,OAAO,IAAM1D,EAAmBr1F,EAAM+4F,OAAO,KACnHxD,EAASsD,EACX,IACC,CAACxD,KAEJhsJ,EAAAA,GAAAA,YAAU,KACW6hB,gBACE2R,aAAQ,EAARA,EAAUskH,0BAA0B,YAGzD6X,GACGr3H,MAAMomC,IACDA,GACF6sF,EAAyB7sF,aAAQ,EAARA,EAAU18D,KACrC,IAEDywB,OAAOv3B,IACNgB,QAAQhB,MAAM,+BAAgCA,EAAM,GACpD,GACH,CAACkwJ,IAEG,CACLV,mBACAE,iBACAE,qBACAE,qBACAE,sBACAE,8BACAE,wBACAI,mBACAE,aACAC,eACApvI,gBACA0vI,iBACAH,mBACAr1F,QACA80F,kCACAJ,iCACAuE,YAjUkB/tI,UAClBgpI,GAAkBgF,GAAkB,GAAA5xI,QAAAkvF,EAAAA,GAAAA,GAAQ0iD,GAAkB,CAAEC,YAC1Dt8H,EAASsvH,sBAAsBgN,EAAS,EAgU9CC,eAzTqBluI,UAAqB,IAAd,KAAEinG,GAAMjqH,EACpC,MAAMmxJ,EAAwBpF,EAAezpJ,QAAO2uJ,GAAYA,EAAShnC,OAASA,IAClF+hC,EAAkBmF,SACZx8H,EAASuvH,wBAAwB,CAAEj6B,QAAO,EAuThDqiC,yBACAvH,4BArKkC/hI,UAClC,MAAMk/H,EAAgBmK,EAAoBhtI,KAAIygI,IACrC,IACFA,EACHwJ,QAAQ,MAGZgD,EAAuBpK,SACjBvtH,EAASowH,6BAA6B,EA8J5CC,uBA3J6BhiI,UAC7BspI,GAAuB8E,GAA2BA,EAAwB9uJ,QAAOw9I,GAAgBA,EAAauJ,iBAAmBA,YAC3H10H,EAASqwH,uBAAuB,CAAEqE,kBAAiB,EA0JzD2C,oBACAc,sBACAyC,sBACAtC,kBACAoE,sBA/S4BruI,UAAmC,IAA5B,SAAE68C,EAAQ,SAAEuvF,GAAUjvJ,EACzD,MAAMmxJ,EAAgBvE,EAAWl0F,WAAUm2F,GAAYA,EAASI,WAAaA,IAE7EjL,GAAcoN,IACZ,MAAMC,GAAYljD,EAAAA,GAAAA,GAAOijD,GAEzB,OADAC,EAAaF,GAAezxF,SAAWA,EAChC2xF,CAAY,UAGf78H,EAASwvH,cAAc,CAC3BxN,QAASqW,EACToC,WACAvvF,YACA,EAmSF4xF,qBA5R2BA,KAC3B,IAAIC,EAAe,EAEnB3E,EAAWrgJ,SAAQsiJ,IACjB,OAAQA,EAAS2C,cAAclzJ,OAC7B,IAAK,kBACCuwJ,EAASnvF,WAAamvF,EAAS4C,wBACjCF,IAEF,MACF,IAAK,WACL,IAAK,gBACG1C,EAASnvF,UACb6xF,IAKN,IAGF,IAAIb,EAASa,EAEb,MAAO,CACLA,eACAG,eAAgB9E,EAAWzwJ,OAC3Bw1J,cAAejB,EAChB,EAkQDkB,8BA3PoCA,KACpC,MAAMC,EAAuBjF,EAAWl0F,WAAUo5F,GAA8B,OAApBA,EAAOpyF,WAEnE,OAA8B,IAA1BmyF,EACK,CACLE,sBAAuB,WACvBF,qBAAsBjF,EAAWzwJ,OAAS,GAGrC,CACL41J,sBAAuB,SACvBF,uBAEJ,EA+OAG,yBAvO+BnvI,UAAwC,IAAjC,UAAEssI,EAAS,OAAE8C,EAAM,KAAE5/I,GAAMnS,EACjE,MAAM2vJ,EAAe/D,EAAmBppG,MAAKhT,GAAKA,EAAEy/G,YAAcA,IAC5D+C,EAAoBpG,EAAmBpzF,WAAUhpB,GAAKA,EAAEy/G,YAAcA,IACtEgD,EAAkBnG,EAAmBtpG,MAAKhT,GAAKA,EAAEy/G,YAAcA,IAC/DiD,EAAuBpG,EAAmBtzF,WAAUhpB,GAAKA,EAAEy/G,YAAcA,IAE/E,IAAIkD,EACAC,EA4CJ,OA1CKzC,GAAiBsC,EAGXtC,IAAiBsC,GAC1BE,EAAcxC,EAAawC,YAAc,EACzCC,GAAiBzC,EAAayC,cAAgBzC,EAAawC,YAAcJ,GAAUI,IACzExC,GAAgBsC,GAC1BE,EAAc,EACdC,EAAgBL,GACPpC,GAAgBsC,IACzBE,EAAcxC,EAAawC,YAC3BC,GAAiBzC,EAAayC,cAAgBzC,EAAawC,YAAcF,EAAgBF,OAASA,GAAUI,IAV5GA,EAAc,EACdC,EAAgBL,GAchBlG,EAFE8D,EAEoB/uE,IACpB,MAAMyxE,GAAcpkD,EAAAA,GAAAA,GAAOrtB,GAM3B,OALAyxE,EAAeL,GAAqB,CAClC/C,YACAmD,gBACAD,eAEKE,CAAc,EAIDzxE,GAAI,GAAA7hE,QAAAkvF,EAAAA,GAAAA,GAAQrtB,GAAI,CAAE,CAAEquE,YAAWmD,gBAAeD,kBAKpEpG,EAFEkG,EAEoBrxE,IACpB,MAAM0xE,GAAcrkD,EAAAA,GAAAA,GAAOrtB,GAE3B,OADA0xE,EAAeJ,GAAwB,CAAEjD,YAAW8C,SAAQ5/I,QACrDmgJ,CAAc,EAID1xE,GAAI,GAAA7hE,QAAAkvF,EAAAA,GAAAA,GAAQrtB,GAAI,CAAE,CAAEquE,YAAW8C,SAAQ5/I,WAGxD,CAAEggJ,cAAaC,gBAAe,EAqLrCrF,sBACAwF,uBAjG6BC,IAE7BvG,GAAuB0E,IAEQ8B,EAACzvF,EAAM3vB,KAElC,MAAMq/G,EAAQ,CAAC,EAMf,OALA1vF,EAAK32D,SAAQ+qB,IACXs7H,EAAMt7H,EAAI4xH,iBAAkB,CAAI,IAI3B31G,EAAKpxC,QAAOm1B,IAAQs7H,EAAMt7H,EAAI4xH,iBAAgB,EAIxByJ,CAAqB9B,EAAoB6B,GAGjDnmJ,SAAQozI,IAC7B,MAAMwQ,EAAaxQ,EAAasJ,gBAG1BmH,EAAextJ,KAAKukE,MAAMgpF,EAAWE,YAAc,KAK7Bj1E,KAC1B,MAAM1T,EAAM,IAAI11C,KAEhB,OADmBpvB,KAAKoI,IAAI08D,EAAIz1C,UAAYmpD,EAAKnpD,YAC5B,IAAK,EAGxB4gI,CARS,IAAI7gI,KAA0B,IAArBm+H,EAAWG,QAAiBF,KAShD0C,GAA0BnT,EAC5B,KAGFxxC,EAAAA,GAAAA,GAAWukD,KACX,EA0DH,cElUH,OA1GwBl+H,IAAc,IAAD+2H,EAAAC,EAAAC,EACnC,MAAM,EAAChuI,EAAc,EAACsvI,IAAoBrsJ,EAAAA,GAAAA,WAAS,IAEnDM,EAAAA,GAAAA,YAAU,KAIK6hB,WAAa,IAADwsI,EAAAC,EAAAC,EACvB,MAAMzZ,GAASthH,SAAc,QAAN66H,EAAR76H,EAAUuiG,YAAI,IAAAs4B,GAAW,QAAXC,EAAdD,EAAgBh1H,iBAAS,IAAAi1H,GAAa,QAAbC,EAAzBD,EAA2B3Z,mBAAW,IAAA4Z,OAA9B,EAARA,EAAwC17H,MAAO,KAE1DpW,GACCq4H,IACLiP,IACAgI,GAAiB,GAAK,EAGxB9wE,EAAM,GACL,CAACznD,SAAc,QAAN+2H,EAAR/2H,EAAUuiG,YAAI,IAAAw0B,GAAW,QAAXC,EAAdD,EAAgBlxH,iBAAS,IAAAmxH,GAAa,QAAbC,EAAzBD,EAA2B7V,mBAAW,IAAA8V,OAA9B,EAARA,EAAwC53H,IAAKpW,IAEjD,MAAMsnI,EAAmBliI,UACvB,MAoEMkwI,EApEoBC,MACxB,MAAMv9H,EAAYZ,UAAUY,UAE5B,OAAIA,EAAUztB,SAAS,YAAcytB,EAAUztB,SAAS,OAC/C,SACEytB,EAAUztB,SAAS,YAAcytB,EAAUztB,SAAS,UACtD,SACEytB,EAAUztB,SAAS,WACrB,UACEytB,EAAUztB,SAAS,SAAWytB,EAAUztB,SAAS,WACnD,oBACEytB,EAAUztB,SAAS,OACrB,OAEA,SACT,EAqDkBgrJ,GACdC,EArBuBC,MAC3B,MAAMz9H,EAAYZ,UAAUY,UAC5B,IAAI5C,EAGJ,OAAKA,EAAQ4C,EAAU5C,MAAM,wBAEjBA,EAAQ4C,EAAU5C,MAAM,yBAExBA,EAAQ4C,EAAU5C,MAAM,yBAExBA,EAAQ4C,EAAU5C,MAAM,sBAExBA,EAAQ4C,EAAU5C,MAAM,0BAP3BA,EAAM,GAWR,SAAS,EAIKqgI,GACjBC,EApDmBC,MACvB,MAAM39H,EAAYZ,UAAUY,UAE5B,MAAI,gBAAgBptB,KAAKotB,GAChB,SACE,eAAeptB,KAAKotB,GACtB,SAEA,SACT,EA2CiB29H,GAGbC,EAAgB,CACpBC,GA5C4BC,MAC5B,MAAM99H,EAAYZ,UAAUY,UAAUoZ,cAEtC,OAAIpZ,EAAUztB,SAAS,OACd,UACEytB,EAAUztB,SAAS,OACrB,QACEytB,EAAUztB,SAAS,SACrB,QACEytB,EAAUztB,SAAS,WACrB,UACEytB,EAAUztB,SAAS,WAAaytB,EAAUztB,SAAS,QACrD,MAEA,SACT,EA0BsBurJ,GAItBn+H,QAAS29H,EACTE,eAAgBA,EAChBO,OAAQL,SAGJ3+H,EAASuwH,iBAAiBsO,EAAc,EAGhD,MAAO,CAAC,CAAC,cCmFX,OAtLA,WACE,MAAM,EAACx0C,EAAK,EAAC40C,IAAW/yJ,EAAAA,GAAAA,UAAS,OAC3B,EAAC8zB,EAAS,EAACk/H,IAAehzJ,EAAAA,GAAAA,UAAS,OACnC,EAACo+G,EAAQ,EAAC60C,IAAcjzJ,EAAAA,GAAAA,WAAS,IACjC,EAACkzJ,EAAQ,EAACC,IAAcnzJ,EAAAA,GAAAA,UAAS,OACjC,EAACozJ,EAAiB,EAACC,IAAuBrzJ,EAAAA,GAAAA,UAAS,MAEnDszJ,EAAiBC,GAAkBz/H,GACnC0/H,GAAWC,EAAAA,GAAAA,GAAiB3/H,GAkKlC,OAjKoB4/H,GAAe5/H,IAUnCxzB,EAAAA,GAAAA,YAAU,KACR,GAAM4yJ,EAAS,CACbS,GAAAA,OAAOC,WAAW,UAAW,KAE7B,MAAM,OAAExe,GAAW8d,EACf9d,GACFue,GAAAA,OAAOE,SAASze,EAEpB,IACC,CAAC8d,KAEJ5yJ,EAAAA,GAAAA,YAAU,KACR,IAAIwzJ,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,MAAMxf,EAAmByf,KAwHzB,OAvHApB,EAAYre,GAEZmf,EAAcnf,EAAiBte,KAAKg+B,oBAAoBC,IAClDA,GACF3f,EAAiB+L,WAAW4T,EAAWnhI,KACvC4gI,EAAqBpf,EAAiB2B,eAAe,CACnDlB,OAAQkf,EAAWnhI,IACnBk+F,WAAYlvG,UACV,MAAMoyI,QAAuB5f,EAAiBa,kBAAkB8e,EAAWnhI,KACrE63H,QAAyBrW,EAAiBgB,oBAAoB2e,EAAWnhI,KAE/E4/H,EAAQ,IACHuB,EACH/V,MAAO+V,EAAW36H,UAAU4kH,MAC5BiW,WAAYF,EAAW36H,UAAU66H,WACjCl2C,WAAYi2C,IAGdpB,EAAWnkH,EAAE6a,MAAQ,KAAO,IAAK7a,EAAE1sC,OAAQ0oJ,qBAE3CiI,GAAW,EAAM,IAIrBe,EAA8Brf,EAAiBK,oBAAoB,CACjE3jB,WAAYlvG,UACV,MAAMixI,EAAmBpkH,EAAE1sC,OAC3B+wJ,EAAoBD,EAAiB,IAIzCa,EAA4Btf,EAAiBO,0BAA0B,CACrE7jB,WAAYlvG,UACV,MAAMqK,EAASwiB,EAAE1sC,OACjBgxJ,EAAenI,mBAAkB3+H,aAAM,EAANA,EAAQioI,sBAAuB,GAAG,IAIvEP,EAA+Bvf,EAAiBW,6BAA6B,CAC3EjkB,WAAYlvG,UAAc,IAADuyI,EAAAC,EACvB,MAAMnoI,EAASwiB,EAAE1sC,OAEX++I,GAAgB70H,SAAqB,QAAfkoI,EAANloI,EAAQ60H,qBAAa,IAAAqT,OAAf,EAANA,EAAuBjzJ,QAAQw9I,IAA2C,IAA1BA,EAAa2V,aAAsB,GACnGC,GAAwBroI,SAA6B,QAAvBmoI,EAANnoI,EAAQqoI,6BAAqB,IAAAF,OAAvB,EAANA,EAA+BlzJ,QAAQw9I,IAA2C,IAA1BA,EAAa2V,aAAsB,GAEnHE,GAAyBtoI,aAAM,EAANA,EAAQsoI,yBAA0B,GAG3DC,EAAc,IAAIzjI,KAGxB,SAAS0jI,EAAqBnvF,GAC5B,IAAKA,EAAW,OAAO,KACvB,MAAM,QAAE+pF,EAAO,YAAED,GAAgB9pF,EAEjC,OAAO,IAAIv0C,KADoB,IAAVs+H,EAAiBD,EAAc,IAEtD,CAEA,MAAMsF,EAAsB5T,EACzB79I,MAAK,CAACjB,EAAGC,IACDA,EAAE+lJ,gBAAkBhmJ,EAAEgmJ,kBAE9B9mJ,QAAQylB,IACP,MAAMguI,EAAUF,EAAqB9tI,EAAKiuI,gBAC1C,OAAQD,GAAWA,EAAUH,CAAW,IAGtCK,EAA8BP,EACjCrxJ,MAAK,CAACjB,EAAGC,IACDA,EAAE+lJ,gBAAkBhmJ,EAAEgmJ,kBAE9B9mJ,QAAQylB,IACP,MAAMguI,EAAUF,EAAqB9tI,EAAKiuI,gBAC1C,OAAQD,GAAWA,EAAUH,CAAW,IAG5CzB,EAAevB,uBAAuBkD,GAAuB,IAC7D3B,EAAevH,gCAAgC+I,GAA0B,IACzExB,EAAe3H,+BAA+ByJ,GAA+B,IAC7E5B,EAAS6B,kCAAiC7oI,aAAM,EAANA,EAAQ60H,gBAAiB,IACnEmS,EAAS8B,0CAAyC9oI,aAAM,EAANA,EAAQqoI,wBAAyB,GAAG,IAI1FV,EAA4Bxf,EAAiBY,0BAA0B,CACrElkB,WAAYlvG,UACV,MAAMqK,EAASwiB,EAAE1sC,OACXizJ,GAAa/oI,aAAM,EAANA,EAAQ+oI,aAAc,KACzCjC,EAAe/G,oBAAoBgJ,EAAW,MAM9CxB,GACFA,IAEEC,GACFA,IAGEC,GACFA,IAGEC,GACFA,IAGEC,GACFA,IAGFpB,EAAQ,MACRE,GAAW,GACXE,EAAW,MACb,IAGK,KAEDW,GACFA,IAGEC,GACFA,GACF,CACD,GACA,IAEI,CACL51C,OACArqF,WACAsqF,UACA80C,UACAE,mBACAoC,iBArKuBrzI,UACvB,MAAM6oI,QAAyBl3H,aAAQ,EAARA,EAAU6hH,oBAAoBx3B,EAAKhrF,MAE9D63H,GACFmI,EAAW,IAAKD,EAASlI,oBAC3B,EAiKAsI,iBACAE,WAEJ,kJC3LW,ECAAiC,EAwCAC,yBDvCX,SAAWC,GAEPA,EAAUA,EAAyC,8BAAI,GAAK,gCAE5DA,EAAUA,EAA0B,eAAI,GAAK,iBAE7CA,EAAUA,EAA8B,mBAAI,GAAK,qBAEjDA,EAAUA,EAAgC,qBAAI,GAAK,uBAEnDA,EAAUA,EAAiC,sBAAI,GAAK,wBAEpDA,EAAUA,EAAiC,sBAAI,GAAK,wBAEpDA,EAAUA,EAAmC,wBAAI,GAAK,0BAEtDA,EAAUA,EAAsC,2BAAI,GAAK,6BAEzDA,EAAUA,EAAkC,uBAAI,GAAK,yBAErDA,EAAUA,EAAqC,0BAAI,IAAM,4BAEzDA,EAAUA,EAA4C,iCAAI,IAAM,mCAEhEA,EAAUA,EAA0C,+BAAI,IAAM,iCAE9DA,EAAUA,EAA+C,oCAAI,IAAM,sCAEnEA,EAAUA,EAAgD,qCAAI,IAAM,uCAEpEA,EAAUA,EAA2C,gCAAI,IAAM,kCAE/DA,EAAUA,EAA2C,gCAAI,IAAM,kCAE/DA,EAAUA,EAAoD,yCAAI,IAAM,2CAKxEA,EAAUA,EAAoD,yCAAI,IAAM,2CAExEA,EAAUA,EAA4C,iCAAI,IAAM,mCAKhEA,EAAUA,EAA8C,mCAAI,IAAM,qCAIlEA,EAAUA,EAA8C,mCAAI,IAAM,qCAElEA,EAAUA,EAAgC,qBAAI,IAAM,uBAEpDA,EAAUA,EAAuB,YAAI,IAAM,cAE3CA,EAAUA,EAA4B,iBAAI,IAAM,mBAEhDA,EAAUA,EAAiC,sBAAI,IAAM,wBAErDA,EAAUA,EAAwB,aAAI,IAAM,cAC/C,CA7DD,CA6DG,IAAc,EAAY,CAAC,IC7D9B,SAAWF,GAIPA,EAAKA,EAAc,QAAI,GAAK,UAI5BA,EAAKA,EAAe,SAAI,GAAK,WAI7BA,EAAKA,EAAa,OAAI,GAAK,SAI3BA,EAAKA,EAAW,KAAI,GAAK,OAIzBA,EAAKA,EAAW,KAAI,GAAK,OAIzBA,EAAKA,EAAa,OAAI,GAAK,SAI3BA,EAAKA,EAAa,OAAI,GAAK,SAK3BA,EAAKA,EAAY,MAAI,GAAK,QAI1BA,EAAKA,EAAU,IAAI,GAAK,KAC3B,CAtCD,CAsCGA,IAASA,EAAO,CAAC,IAEpB,SAAWC,GACPA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAwB,SAAI,GAAK,UAClD,CAHD,CAGGA,IAAkBA,EAAgB,CAAC,IC3C/B,IAAIE,EAAwB,+CCI/BC,EAAkB,4KAOf,SAASC,EAAsBC,GAClC,IAAIvgI,EAAS,CAAC,EA0Gd,OAzGAugI,EAAS9kI,QAAQ4kI,GAAiB,SAAU1jI,GACxC,IAAI/2B,EAAM+2B,EAAM12B,OAChB,OAAQ02B,EAAM,IAEV,IAAK,IACDqD,EAAOwgI,IAAc,IAAR56J,EAAY,OAAiB,IAARA,EAAY,SAAW,QACzD,MAEJ,IAAK,IACDo6B,EAAOmlD,KAAe,IAARv/E,EAAY,UAAY,UACtC,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,gEAEzB,IAAK,IACL,IAAK,IACD,MAAM,IAAIA,WAAW,8CAEzB,IAAK,IACL,IAAK,IACDzgI,EAAOolD,MAAQ,CAAC,UAAW,UAAW,QAAS,OAAQ,UAAUx/E,EAAM,GACvE,MAEJ,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,2CACzB,IAAK,IACDzgI,EAAO0gI,IAAM,CAAC,UAAW,WAAW96J,EAAM,GAC1C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,6DAEzB,IAAK,IACDzgI,EAAO2gI,QAAkB,IAAR/6J,EAAY,QAAkB,IAARA,EAAY,SAAW,QAC9D,MACJ,IAAK,IACD,GAAIA,EAAM,EACN,MAAM,IAAI66J,WAAW,iDAEzBzgI,EAAO2gI,QAAU,CAAC,QAAS,OAAQ,SAAU,SAAS/6J,EAAM,GAC5D,MACJ,IAAK,IACD,GAAIA,EAAM,EACN,MAAM,IAAI66J,WAAW,iDAEzBzgI,EAAO2gI,QAAU,CAAC,QAAS,OAAQ,SAAU,SAAS/6J,EAAM,GAC5D,MAEJ,IAAK,IACDo6B,EAAO4gI,QAAS,EAChB,MACJ,IAAK,IACL,IAAK,IACD,MAAM,IAAIH,WAAW,8DAEzB,IAAK,IACDzgI,EAAO6gI,UAAY,MACnB7gI,EAAO8gI,KAAO,CAAC,UAAW,WAAWl7J,EAAM,GAC3C,MACJ,IAAK,IACDo6B,EAAO6gI,UAAY,MACnB7gI,EAAO8gI,KAAO,CAAC,UAAW,WAAWl7J,EAAM,GAC3C,MACJ,IAAK,IACDo6B,EAAO6gI,UAAY,MACnB7gI,EAAO8gI,KAAO,CAAC,UAAW,WAAWl7J,EAAM,GAC3C,MACJ,IAAK,IACDo6B,EAAO6gI,UAAY,MACnB7gI,EAAO8gI,KAAO,CAAC,UAAW,WAAWl7J,EAAM,GAC3C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,oEAEzB,IAAK,IACDzgI,EAAO+gI,OAAS,CAAC,UAAW,WAAWn7J,EAAM,GAC7C,MAEJ,IAAK,IACDo6B,EAAOghI,OAAS,CAAC,UAAW,WAAWp7J,EAAM,GAC7C,MACJ,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,8DAEzB,IAAK,IACDzgI,EAAOihI,aAAer7J,EAAM,EAAI,QAAU,OAC1C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI66J,WAAW,wEAE7B,MAAO,EACX,IACOzgI,CACX,CCvHO,IAAI,EAAoB,wCC8B/B,IAAIkhI,EAA2B,mCAC3BC,EAA8B,wBAC9BC,EAAsB,0BACtBC,EAA8B,SAClC,SAASC,EAA0B/oI,GAC/B,IAAIyH,EAAS,CAAC,EA6Bd,MA5B4B,MAAxBzH,EAAIA,EAAItyB,OAAS,GACjB+5B,EAAOuhI,iBAAmB,gBAEG,MAAxBhpI,EAAIA,EAAItyB,OAAS,KACtB+5B,EAAOuhI,iBAAmB,iBAE9BhpI,EAAIkD,QAAQ0lI,GAA6B,SAAUlgI,EAAGugI,EAAIC,GAoBtD,MAlBkB,iBAAPA,GACPzhI,EAAO0hI,yBAA2BF,EAAGv7J,OACrC+5B,EAAO2hI,yBAA2BH,EAAGv7J,QAGzB,MAAPw7J,EACLzhI,EAAO0hI,yBAA2BF,EAAGv7J,OAGtB,MAAVu7J,EAAG,GACRxhI,EAAO2hI,yBAA2BH,EAAGv7J,QAIrC+5B,EAAO0hI,yBAA2BF,EAAGv7J,OACrC+5B,EAAO2hI,yBACHH,EAAGv7J,QAAwB,iBAAPw7J,EAAkBA,EAAGx7J,OAAS,IAEnD,EACX,IACO+5B,CACX,CACA,SAAS4hI,EAAUrpI,GACf,OAAQA,GACJ,IAAK,YACD,MAAO,CACHspI,YAAa,QAErB,IAAK,kBACL,IAAK,KACD,MAAO,CACHC,aAAc,cAEtB,IAAK,cACL,IAAK,KACD,MAAO,CACHD,YAAa,UAErB,IAAK,yBACL,IAAK,MACD,MAAO,CACHA,YAAa,SACbC,aAAc,cAEtB,IAAK,mBACL,IAAK,KACD,MAAO,CACHD,YAAa,cAErB,IAAK,8BACL,IAAK,MACD,MAAO,CACHA,YAAa,aACbC,aAAc,cAEtB,IAAK,aACL,IAAK,KACD,MAAO,CACHD,YAAa,SAG7B,CACA,SAASE,EAAyCC,GAE9C,IAAIhiI,EAaJ,GAZgB,MAAZgiI,EAAK,IAA0B,MAAZA,EAAK,IACxBhiI,EAAS,CACL25D,SAAU,eAEdqoE,EAAOA,EAAKx7J,MAAM,IAED,MAAZw7J,EAAK,KACVhiI,EAAS,CACL25D,SAAU,cAEdqoE,EAAOA,EAAKx7J,MAAM,IAElBw5B,EAAQ,CACR,IAAI6hI,EAAcG,EAAKx7J,MAAM,EAAG,GAShC,GARoB,OAAhBq7J,GACA7hI,EAAO6hI,YAAc,SACrBG,EAAOA,EAAKx7J,MAAM,IAEG,OAAhBq7J,IACL7hI,EAAO6hI,YAAc,aACrBG,EAAOA,EAAKx7J,MAAM,KAEjB66J,EAA4BlvJ,KAAK6vJ,GAClC,MAAM,IAAI77J,MAAM,6CAEpB65B,EAAOiiI,qBAAuBD,EAAK/7J,MACvC,CACA,OAAO+5B,CACX,CACA,SAASkiI,EAAqBtnB,GAC1B,IACIunB,EAAWP,EAAUhnB,GACzB,OAAIunB,GAFS,CAAC,CAMlB,CAIO,SAASC,EAAoBj5E,GAEhC,IADA,IAAInpD,EAAS,CAAC,EACLyJ,EAAK,EAAG44H,EAAWl5E,EAAQ1/C,EAAK44H,EAASp8J,OAAQwjC,IAAM,CAC5D,IAAIhM,EAAQ4kI,EAAS54H,GACrB,OAAQhM,EAAMukI,MACV,IAAK,UACL,IAAK,IACDhiI,EAAO33B,MAAQ,UACf,SACJ,IAAK,QACD23B,EAAO33B,MAAQ,UACf23B,EAAOsiI,MAAQ,IACf,SACJ,IAAK,WACDtiI,EAAO33B,MAAQ,WACf23B,EAAOuiI,SAAW9kI,EAAM7xB,QAAQ,GAChC,SACJ,IAAK,YACL,IAAK,KACDo0B,EAAOwiI,aAAc,EACrB,SACJ,IAAK,oBACL,IAAK,IACDxiI,EAAOyiI,sBAAwB,EAC/B,SACJ,IAAK,eACL,IAAK,OACDziI,EAAO33B,MAAQ,OACf23B,EAAO0iI,KAAqBjlI,EAAM7xB,QAAQ,GArJ1C6vB,QAAQ,UAAW,IAsJnB,SACJ,IAAK,gBACL,IAAK,IACDuE,EAAO25D,SAAW,UAClB35D,EAAO2iI,eAAiB,QACxB,SACJ,IAAK,eACL,IAAK,KACD3iI,EAAO25D,SAAW,UAClB35D,EAAO2iI,eAAiB,OACxB,SACJ,IAAK,aACD3iI,GAAS,SAAS,SAAS,QAAS,CAAC,EAAGA,GAAS,CAAE25D,SAAU,eAAiBl8D,EAAM7xB,QAAQwD,QAAO,SAAUqiC,EAAKmpG,GAAO,OAAQ,SAAS,QAAS,CAAC,EAAGnpG,GAAMywH,EAAqBtnB,GAAQ,GAAG,CAAC,IAC9L,SACJ,IAAK,cACD56G,GAAS,SAAS,SAAS,QAAS,CAAC,EAAGA,GAAS,CAAE25D,SAAU,gBAAkBl8D,EAAM7xB,QAAQwD,QAAO,SAAUqiC,EAAKmpG,GAAO,OAAQ,SAAS,QAAS,CAAC,EAAGnpG,GAAMywH,EAAqBtnB,GAAQ,GAAG,CAAC,IAC/L,SACJ,IAAK,kBACD56G,EAAO25D,SAAW,WAClB,SAEJ,IAAK,oBACD35D,EAAO4iI,gBAAkB,eACzB5iI,EAAO6iI,YAAc,SACrB,SACJ,IAAK,mBACD7iI,EAAO4iI,gBAAkB,OACzB5iI,EAAO6iI,YAAc,QACrB,SACJ,IAAK,uBACD7iI,EAAO4iI,gBAAkB,OACzB5iI,EAAO6iI,YAAc,OACrB,SACJ,IAAK,sBACD7iI,EAAO4iI,gBAAkB,SACzB,SACJ,IAAK,QACD5iI,EAAOsiI,MAAQpxJ,WAAWusB,EAAM7xB,QAAQ,IACxC,SAEJ,IAAK,gBACD,GAAI6xB,EAAM7xB,QAAQ3F,OAAS,EACvB,MAAM,IAAIw6J,WAAW,4DAEzBhjI,EAAM7xB,QAAQ,GAAG6vB,QAAQ2lI,GAAqB,SAAUngI,EAAGugI,EAAIC,EAAIqB,EAAIC,EAAIC,GACvE,GAAIxB,EACAxhI,EAAOiiI,qBAAuBR,EAAGx7J,WAEhC,IAAI68J,GAAMC,EACX,MAAM,IAAI58J,MAAM,sDAEf,GAAI68J,EACL,MAAM,IAAI78J,MAAM,mDACpB,CACA,MAAO,EACX,IACA,SAGR,GAAIk7J,EAA4BlvJ,KAAKsrB,EAAMukI,MACvChiI,EAAOiiI,qBAAuBxkI,EAAMukI,KAAK/7J,YAG7C,GAAIi7J,EAAyB/uJ,KAAKsrB,EAAMukI,MAAxC,CAII,GAAIvkI,EAAM7xB,QAAQ3F,OAAS,EACvB,MAAM,IAAIw6J,WAAW,iEAEzBhjI,EAAMukI,KAAKvmI,QAAQylI,GAA0B,SAAUjgI,EAAGugI,EAAIC,EAAIqB,EAAIC,EAAIC,GAkBtE,MAhBW,MAAPvB,EACAzhI,EAAOijI,sBAAwBzB,EAAGv7J,OAG7B68J,GAAgB,MAAVA,EAAG,GACd9iI,EAAOyiI,sBAAwBK,EAAG78J,OAG7B88J,GAAMC,GACXhjI,EAAOijI,sBAAwBF,EAAG98J,OAClC+5B,EAAOyiI,sBAAwBM,EAAG98J,OAAS+8J,EAAG/8J,SAG9C+5B,EAAOijI,sBAAwBzB,EAAGv7J,OAClC+5B,EAAOyiI,sBAAwBjB,EAAGv7J,QAE/B,EACX,IACA,IAAI20I,EAAMn9G,EAAM7xB,QAAQ,GAEZ,MAARgvI,EACA56G,GAAS,SAAS,QAAS,CAAC,EAAGA,GAAS,CAAEkjI,oBAAqB,mBAE1DtoB,IACL56G,GAAS,SAAS,QAAS,CAAC,EAAGA,GAASshI,EAA0B1mB,IAG1E,MAEA,GAAIumB,EAA4BhvJ,KAAKsrB,EAAMukI,MACvChiI,GAAS,SAAS,QAAS,CAAC,EAAGA,GAASshI,EAA0B7jI,EAAMukI,WAD5E,CAIA,IAAIG,EAAWP,EAAUnkI,EAAMukI,MAC3BG,IACAniI,GAAS,SAAS,QAAS,CAAC,EAAGA,GAASmiI,IAE5C,IAAIgB,EAAsCpB,EAAyCtkI,EAAMukI,MACrFmB,IACAnjI,GAAS,SAAS,QAAS,CAAC,EAAGA,GAASmjI,GAP5C,CASJ,CACA,OAAOnjI,CACX,CCpSO,ICFH/C,EDEOmmI,EAAW,CAClB,MAAO,CACH,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,KAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,I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AcvsI,GACnB,OAASA,GAAK,GAAUA,GAAK,IACnB,KAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,CACR,CAKA,SAASwsI,EAAiBxsI,GACtB,OAASA,GAAK,IAAUA,GAAK,IACnB,KAANA,GACCA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACCA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,KAAUA,GAAK,KACf,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,KACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,KAC7B,CEtvCA,SAAS8zI,EAAqBtiI,EAAM7B,GAChC,OAAOl8B,OAAO0J,KAAKq0B,GAAM96B,QAAO,SAAUqiC,EAAKhQ,GAE3C,OADAgQ,EAAIhQ,IAAK,QAAS,CAAE4G,SAAUA,GAAY6B,EAAKzI,IACxCgQ,CACX,GAAG,CAAC,EACR,CACA,SAASg7H,EAAiBC,EAAOC,GAE7B,OADWxgK,OAAO0J,MAAK,SAAS,QAAS,CAAC,EAAG62J,GAAQC,IACzCv9J,QAAO,SAAUqiC,EAAKhQ,GAE9B,OADAgQ,EAAIhQ,IAAK,SAAS,QAAS,CAAC,EAAIirI,EAAMjrI,IAAM,CAAC,GAAMkrI,EAAMlrI,IAAM,CAAC,GACzDgQ,CACX,GAAG,CAAC,EACR,CACA,SAASm7H,GAA+BC,EAAIxkI,GACxC,IAAKA,EACD,OAAOwkI,EAEX,IAAIC,EAAY,IAAkB3kI,QAClC,OAAO,SAAS,SAAS,QAAS,CAAC,EAAG2kI,GAAYD,GAAK,CAAE3nF,KAAMunF,EAAiBD,EAAqBM,EAAU5nF,KAAM78C,GAAWmkI,EAAqBK,EAAG3nF,MAAQ,CAAC,EAAG78C,IAAYu0G,KAAM6vB,EAAiBD,EAAqBM,EAAUlwB,KAAMv0G,GAAWmkI,EAAqBK,EAAGjwB,MAAQ,CAAC,EAAGv0G,KAC/R,CACO,IAAI0kI,GAAgB,SAAU9vI,EAAIlY,EAAOioJ,EAAmB3pJ,EAAQ6mB,GACvE,IAAI5C,EAASrK,EAAGqK,OAAQa,EAAUlL,EAAGkL,QAASC,EAAWnL,EAAGmL,SAAUE,EAAgBrL,EAAGqL,cAAeC,EAAiBtL,EAAGsL,eAAgBC,EAAwBvL,EAAGuL,sBAAuBC,EAAUxL,EAAGwL,QAASJ,EAAWpL,EAAGoL,SAAU4kI,EAA0BhwI,EAAGgwI,6BAC/O,IAAtBD,IAAgCA,EAAoB,CAAE7kK,GAAI,KAC9D,IAAI+kK,EAAQF,EAAkB7kK,GAAIu/B,EAAiBslI,EAAkBtlI,gBC4ClE,SAAmBylI,EAAW9sI,EAAS+sI,GAE1C,QADY,IAARA,IAAkBA,EAAMjnK,QACvBgnK,EACD,MAAM,IAAIC,EAAI/sI,EAEtB,CD/CIgtI,GAAYH,EAAO,saACnB,IAAI/kK,EAAKwyB,OAAOuyI,GACZ7sI,EAIJ+H,GACIj8B,OAAOjH,UAAU+2B,eAAe31B,KAAK8hC,EAAUjgC,IAC/CigC,EAASjgC,GAEb,GAAI5B,MAAMgpB,QAAQ8Q,IACK,IAAnBA,EAAQp6B,QACRo6B,EAAQ,GAAG56B,OAASw6J,EAAK2G,QACzB,OAAOvmI,EAAQ,GAAGj4B,MAGtB,IAAKib,GACDgd,GACmB,iBAAZA,IACN4sI,EACD,OAAO5sI,EAAQ5E,QAAQ,gBAAiB,QAK5C,GAHApY,GAAS,SAAS,QAAS,CAAC,EAAG4pJ,GAA2B5pJ,GAAU,CAAC,GACrE8kB,EAAUykI,GAA+BzkI,EAASE,GAClDE,EAAiBqkI,GAA+BrkI,EAAgBF,IAC3DhI,EAAS,CACV,IAA8B,IAA1BmI,GAA+C,KAAZnI,EACnC,OAAOA,EASX,KAPKqH,GACAJ,GAAUA,EAAOqR,gBAAkBrQ,EAAcqQ,gBAIlDlQ,EAAQ,IAAI,KAAwBukI,EAAmB1lI,IAEvDI,EACA,IAEI,OADgB3iB,EAAMglB,iBAAiBrC,EAAgBY,EAAeC,EAAgB2B,GACrEM,OAAOnnB,EAC5B,CACA,MAAOsY,GAEH,OADA8M,EAAQ,IAAI,KAAmB,0CAA2C1f,OAAO5gB,EAAI,yCAA2Cm/B,EAAQ0lI,EAAmBrxI,IAC1H,iBAAnB+L,EAA8BA,EAAiBv/B,CACjE,CAEJ,OAAOA,CACX,CAEA,IAEI,OADgB4c,EAAMglB,iBAAiB1J,EAASiH,EAAQa,GAAS,QAAS,CAAEgC,WAAYplB,GAAUmlB,GAAQ,CAAC,IAC1FM,OAAOnnB,EAC5B,CACA,MAAOsY,GACH8M,EAAQ,IAAI,KAAmB,8BAA+B1f,OAAO5gB,EAAI,aAAc4gB,OAAO2e,EAAiB,kBAAoB,KAAM,iBAAkBJ,EAAQ0lI,EAAmBrxI,GAC1L,CACA,GAAI+L,EACA,IAEI,OADgB3iB,EAAMglB,iBAAiBrC,EAAgBY,EAAeC,EAAgB2B,GACrEM,OAAOnnB,EAC5B,CACA,MAAOsY,GACH8M,EAAQ,IAAI,KAAmB,8CAA+C1f,OAAO5gB,EAAI,iCAAmCm/B,EAAQ0lI,EAAmBrxI,GAC3J,CAEJ,MAAuB,iBAAZ0E,EACAA,EAEmB,iBAAnBqH,EACAA,EAEJv/B,CACX,cEpGImlK,GAAwB,CACxB,QACA,WACA,kBACA,OACA,cACA,cACA,uBACA,wBACA,wBACA,2BACA,2BAEA,iBACA,kBACA,eACA,WACA,cACA,OACA,cACA,mBAEG,SAASC,GAAatwI,EAAI0M,EAAiB/9B,GAC9C,IAAI07B,EAASrK,EAAGqK,OAAQa,EAAUlL,EAAGkL,QAASM,EAAUxL,EAAGwL,aAC3C,IAAZ78B,IAAsBA,EAAU,CAAC,GACrC,IAAI4+B,EAAS5+B,EAAQ4+B,OACjBxC,EAAawC,IACb,SAAerC,EAAS,SAAUqC,EAAQ/B,IAC1C,CAAC,EAEL,OAAOkB,EAAgBrC,GADD,SAAY17B,EAAS0hK,GAAuBtlI,GAEtE,CACO,SAASwlI,GAAanlJ,EAAQshB,EAAiBvhC,EAAOwD,QACzC,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IACI,OAAO2hK,GAAallJ,EAAQshB,EAAiB/9B,GAAS4+B,OAAOpiC,EACjE,CACA,MAAOuzB,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,2BAA4BpgB,EAAOif,OAAQ3L,GAClF,CACA,OAAOhB,OAAOvyB,EAClB,CACO,SAASqlK,GAAoBplJ,EAAQshB,EAAiBvhC,EAAOwD,QAChD,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IACI,OAAO2hK,GAAallJ,EAAQshB,EAAiB/9B,GAAS8hK,cAActlK,EACxE,CACA,MAAOuzB,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,2BAA4BpgB,EAAOif,OAAQ3L,GAClF,CACA,MAAO,EACX,iBClDIgyI,GAA+B,CAAC,UAAW,SASxC,SAASC,GAAmBvlJ,EAAQ+hB,EAAuBhiC,EAAOs6J,EAAM92J,QAC3D,IAAZA,IAAsBA,EAAU,CAAC,GAChC82J,IACDA,EAAO,UAEcr5H,KAAKD,oBAE1B/gB,EAAOogB,QAAQ,IAAI,MAAY,gIAAmI,MAAUolI,mBAEhL,IACI,OAlBR,SAAsB5wI,EAAImN,EAAuBx+B,GAC7C,IAAI07B,EAASrK,EAAGqK,OAAQa,EAAUlL,EAAGkL,QAASM,EAAUxL,EAAGwL,aAC3C,IAAZ78B,IAAsBA,EAAU,CAAC,GACrC,IAAI4+B,EAAS5+B,EAAQ4+B,OACjBxC,IAAcwC,IAAU,SAAerC,EAAS,WAAYqC,EAAQ/B,IAAa,CAAC,EAEtF,OAAO2B,EAAsB9C,GADP,SAAY17B,EAAS+hK,GAA8B3lI,GAE7E,CAWe,CAAa3f,EAAQ+hB,EAAuBx+B,GAAS4+B,OAAOpiC,EAAOs6J,EAC9E,CACA,MAAO/mI,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,kCAAmCpgB,EAAOif,OAAQ3L,GACzF,CACA,OAAOhB,OAAOvyB,EAClB,CCzBA,IAAI0lK,GAA2B,CAC3B,gBACA,WACA,SACA,UACA,MACA,OACA,QACA,MACA,OACA,SACA,SACA,eACA,YACA,YACA,YACA,WAEA,kBACA,0BAEG,SAAS,GAAa7wI,EAAIx3B,EAAM+jC,EAAmB59B,GACtD,IAAI07B,EAASrK,EAAGqK,OAAQa,EAAUlL,EAAGkL,QAASM,EAAUxL,EAAGwL,QAASJ,EAAWpL,EAAGoL,cAClE,IAAZz8B,IAAsBA,EAAU,CAAC,GACrC,IAAI4+B,EAAS5+B,EAAQ4+B,OACjBxC,GAAW,SAAS,QAAS,CAAC,EAAIK,GAAY,CAAEA,SAAUA,IAAemC,IAAU,SAAerC,EAAS1iC,EAAM+kC,EAAQ/B,IACzHslI,GAAkB,SAAYniK,EAASkiK,GAA0B9lI,GAUrE,MATa,SAATviC,GACCsoK,EAAgBjN,MAChBiN,EAAgBhN,QAChBgN,EAAgB/M,QAChB+M,EAAgBC,WAChBD,EAAgBE,YAEjBF,GAAkB,SAAS,QAAS,CAAC,EAAGA,GAAkB,CAAEjN,KAAM,UAAWC,OAAQ,aAElFv3H,EAAkBlC,EAAQymI,EACrC,CACO,SAASG,GAAW7lJ,EAAQmhB,GAE/B,IADA,IAAIvM,EAAK,GACAwM,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCxM,EAAGwM,EAAK,GAAKvjC,UAAUujC,GAE3B,IAAIrhC,EAAQ60B,EAAG,GAAIo/F,EAAKp/F,EAAG,GAAIrxB,OAAiB,IAAPywH,EAAgB,CAAC,EAAIA,EAC1Dn3C,EAAwB,iBAAV98E,EAAqB,IAAI0zB,KAAK1zB,GAAS,GAAKA,EAC9D,IACI,OAAO,GAAaigB,EAAQ,OAAQmhB,EAAmB59B,GAAS4+B,OAAO06C,EAC3E,CACA,MAAOvpD,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,yBAA0BpgB,EAAOif,OAAQ3L,GAChF,CACA,OAAOhB,OAAOuqD,EAClB,CACO,SAASipF,GAAW9lJ,EAAQmhB,GAE/B,IADA,IAAIvM,EAAK,GACAwM,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCxM,EAAGwM,EAAK,GAAKvjC,UAAUujC,GAE3B,IAAIrhC,EAAQ60B,EAAG,GAAIo/F,EAAKp/F,EAAG,GAAIrxB,OAAiB,IAAPywH,EAAgB,CAAC,EAAIA,EAC1Dn3C,EAAwB,iBAAV98E,EAAqB,IAAI0zB,KAAK1zB,GAAS,GAAKA,EAC9D,IACI,OAAO,GAAaigB,EAAQ,OAAQmhB,EAAmB59B,GAAS4+B,OAAO06C,EAC3E,CACA,MAAOvpD,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,yBAA0BpgB,EAAOif,OAAQ3L,GAChF,CACA,OAAOhB,OAAOuqD,EAClB,CACO,SAASkpF,GAAoB/lJ,EAAQmhB,GAExC,IADA,IAAIvM,EAAK,GACAwM,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCxM,EAAGwM,EAAK,GAAKvjC,UAAUujC,GAE3B,IAAIrmB,EAAO6Z,EAAG,GAAInN,EAAKmN,EAAG,GAAIo/F,EAAKp/F,EAAG,GAAIrxB,OAAiB,IAAPywH,EAAgB,CAAC,EAAIA,EACrEh0F,EAAWhgB,EAAOggB,SAAUf,EAASjf,EAAOif,OAAQmB,EAAUpgB,EAAOogB,QACrEslI,GAAkB,SAAYniK,EAASkiK,GAA0BzlI,EAAW,CAAEA,SAAUA,GAAa,CAAC,GAC1G,IACI,OAAOmB,EAAkBlC,EAAQymI,GAAiBM,YAAYjrJ,EAAM0M,EACxE,CACA,MAAO6L,GACH8M,EAAQ,IAAI,KAAgB,oCAAqCpgB,EAAOif,OAAQ3L,GACpF,CACA,OAAOhB,OAAOvX,EAClB,CACO,SAASkrJ,GAAkBjmJ,EAAQmhB,GAEtC,IADA,IAAIvM,EAAK,GACAwM,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCxM,EAAGwM,EAAK,GAAKvjC,UAAUujC,GAE3B,IAAIrhC,EAAQ60B,EAAG,GAAIo/F,EAAKp/F,EAAG,GAAIrxB,OAAiB,IAAPywH,EAAgB,CAAC,EAAIA,EAC1Dn3C,EAAwB,iBAAV98E,EAAqB,IAAI0zB,KAAK1zB,GAAS,GAAKA,EAC9D,IACI,OAAO,GAAaigB,EAAQ,OAAQmhB,EAAmB59B,GAAS8hK,cAAcxoF,EAClF,CACA,MAAOvpD,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,yBAA0BpgB,EAAOif,OAAQ3L,GAChF,CACA,MAAO,EACX,CACO,SAAS4yI,GAAkBlmJ,EAAQmhB,GAEtC,IADA,IAAIvM,EAAK,GACAwM,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCxM,EAAGwM,EAAK,GAAKvjC,UAAUujC,GAE3B,IAAIrhC,EAAQ60B,EAAG,GAAIo/F,EAAKp/F,EAAG,GAAIrxB,OAAiB,IAAPywH,EAAgB,CAAC,EAAIA,EAC1Dn3C,EAAwB,iBAAV98E,EAAqB,IAAI0zB,KAAK1zB,GAAS,GAAKA,EAC9D,IACI,OAAO,GAAaigB,EAAQ,OAAQmhB,EAAmB59B,GAAS8hK,cAAcxoF,EAClF,CACA,MAAOvpD,GACHtT,EAAOogB,QAAQ,IAAI,KAAgB,yBAA0BpgB,EAAOif,OAAQ3L,GAChF,CACA,MAAO,EACX,CCjHA,IAAI6yI,GAAwB,CAAC,QACtB,SAASC,GAAaxxI,EAAI4M,EAAgBzhC,EAAOwD,GACpD,IAAI07B,EAASrK,EAAGqK,OAAQmB,EAAUxL,EAAGwL,aACrB,IAAZ78B,IAAsBA,EAAU,CAAC,GAChCy9B,KAAKS,aACNrB,EAAQ,IAAI,MAAY,kHAAqH,MAAUolI,mBAE3J,IAAIE,GAAkB,SAAYniK,EAAS4iK,IAC3C,IACI,OAAO3kI,EAAevC,EAAQymI,GAAiBzD,OAAOliK,EAC1D,CACA,MAAOuzB,GACH8M,EAAQ,IAAI,KAAgB,2BAA4BnB,EAAQ3L,GACpE,CACA,MAAO,OACX,CCdA,IAAI+yI,GAAsB,CACtB,OACA,SAEAl9F,GAAM11C,KAAK01C,MAIR,SAASm9F,GAAWzkI,EAAMG,EAAehnB,EAAQzX,QACpC,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAI+lC,EAAUi9H,GAAkB1kI,EAAMG,EAAehnB,EAAQzX,GAASwD,QAAO,SAAUqiC,EAAK4mB,GACxF,IAAItqB,EAAMsqB,EAAGjwD,MAUb,MATmB,iBAAR2lC,EACP0D,EAAI3qC,KAAKinC,GAE2B,iBAAxB0D,EAAIA,EAAIxrC,OAAS,GAC7BwrC,EAAIA,EAAIxrC,OAAS,IAAM8nC,EAGvB0D,EAAI3qC,KAAKinC,GAEN0D,CACX,GAAG,IACH,OAA0B,IAAnBE,EAAQ1rC,OAAe0rC,EAAQ,GAAwB,IAAnBA,EAAQ1rC,OAAe,GAAK0rC,CAC3E,CACO,SAASi9H,GAAkB3xI,EAAIoN,EAAehnB,EAAQzX,GACzD,IAAI07B,EAASrK,EAAGqK,OAAQmB,EAAUxL,EAAGwL,aACrB,IAAZ78B,IAAsBA,EAAU,CAAC,GACpBy9B,KAAKC,YAElBb,EAAQ,IAAI,MAAY,gHAAmH,MAAUolI,mBAEzJ,IAAIE,GAAkB,SAAYniK,EAAS8iK,IAC3C,IACI,IAAIG,EAAe,CAAC,EAChBC,EAAmBzrJ,EAAO2F,KAAI,SAAU4pC,EAAG9sD,GAC3C,GAAiB,iBAAN8sD,EAAgB,CACvB,IAAIzqD,EAhCpB,SAAuBrC,GACnB,MAAO,GAAGijB,OAAOyoD,GAAK,KAAKzoD,OAAOjjB,EAAG,KAAKijB,OAAOyoD,GACrD,CA8ByBu9F,CAAcjpK,GAEvB,OADA+oK,EAAa1mK,GAAMyqD,EACZzqD,CACX,CACA,OAAOwyB,OAAOi4B,EAClB,IACA,OAAOvoB,EAAc/C,EAAQymI,GACxBL,cAAcoB,GACd9lJ,KAAI,SAAU23C,GACf,MAAqB,YAAdA,EAAKl7D,KACNk7D,GACA,SAAS,QAAS,CAAC,EAAGA,GAAO,CAAEv4D,MAAOymK,EAAaluG,EAAKv4D,QAAUu4D,EAAKv4D,OACjF,GACJ,CACA,MAAOuzB,GACH8M,EAAQ,IAAI,KAAgB,yBAA0BnB,EAAQ3L,GAClE,CAEA,OAAOtY,CACX,CCzDA,IAAI2rJ,GAAuB,CACvB,QACA,OACA,WACA,mBAEG,SAASC,GAAkBhyI,EAAIqN,EAAiBliC,EAAOwD,GAC1D,IAAI07B,EAASrK,EAAGqK,OAAQmB,EAAUxL,EAAGwL,QAClBY,KAAKE,cAEpBd,EAAQ,IAAI,MAAY,oHAAuH,MAAUolI,mBAE7J,IAAIE,GAAkB,SAAYniK,EAASojK,IAC3C,IACI,OAAO1kI,EAAgBhD,EAAQymI,GAAiBmB,GAAG9mK,EACvD,CACA,MAAOuzB,GACH8M,EAAQ,IAAI,KAAgB,iCAAkCnB,EAAQ3L,GAC1E,CACJ,CCRA,SAASwzI,GAAqB9mJ,GAJ9B,IAA+B+f,EAKvB/f,EAAOqgB,QACPrgB,EAAO4kJ,yBAJoB,kBAFJ7kI,EAOD/f,EAAO+f,UAAY,CAAC,GANhBA,EAASj8B,OAAO0J,KAAKuyB,GAAU,SAAMzjC,IAO/D0jB,EAAOqgB,OAAO,yQAEtB,iBCTA,SAAS0mI,GAAkB/mJ,GACvB,MAAO,CACHif,OAAQjf,EAAOif,OACfe,SAAUhgB,EAAOggB,SACjBG,sBAAuBngB,EAAOmgB,sBAC9BL,QAAS9f,EAAO8f,QAChBknI,cAAehnJ,EAAOgnJ,cACtBjnI,SAAU/f,EAAO+f,SACjBE,cAAejgB,EAAOigB,cACtBC,eAAgBlgB,EAAOkgB,eACvBE,QAASpgB,EAAOogB,QAChBC,OAAQrgB,EAAOqgB,OACf4mI,6BAA8BjnJ,EAAOinJ,6BACrCrC,wBAAyB5kJ,EAAO4kJ,wBAExC,CACA,SAASsC,GAA6ClsJ,GAClD,OAAKA,EAGElX,OAAO0J,KAAKwN,GAAQjU,QAAO,SAAUU,EAAK2xB,GAC7C,IAAImxB,EAAIvvC,EAAOoe,GAIf,OAHA3xB,EAAI2xB,IAAK,SAAqBmxB,IACxB,QAAwBA,GACxBA,EACC9iD,CACX,GAAG,CAAC,GAROuT,CASf,CACA,IAAI,GAAgB,SAAUgF,EAAQ8hB,EAAY1C,EAAY+nI,GAE1D,IADA,IAAInqI,EAAO,GACFoE,EAAK,EAAGA,EAAKvjC,UAAUD,OAAQwjC,IACpCpE,EAAKoE,EAAK,GAAKvjC,UAAUujC,GAE7B,IAAIpmB,EAASksJ,GAA6CC,GACtDC,EAAS,GAAkBhpK,WAAM,GAAQ,QAAc,CAAC4hB,EACxD8hB,EACA1C,EACApkB,GAASgiB,GAAM,IACnB,OAAI9+B,MAAMgpB,QAAQkgJ,GACP,WAAetsJ,QAAQssJ,GAE3BA,CACX,EAMW,GAAa,SAAUxyI,EAAI4I,GAClC,IAAI6pI,EAA6BzyI,EAAGgwI,wBAAyB5kJ,GAAS,QAAO4U,EAAI,CAAC,4BAC9EgwI,EAA0BsC,GAA6CG,GACvEC,EDpCD,SAAoBtnJ,EAAQwd,GAC/B,IAAIsE,GAAa,SAAiBtE,GAC9B+pI,GAAiB,SAAS,QAAS,CAAC,EAAG,OAAsBvnJ,GAC7Dif,EAASsoI,EAAetoI,OAAQgB,EAAgBsnI,EAAetnI,cAAeG,EAAUmnI,EAAennI,QAoB3G,OAnBKnB,GAWK+B,KAAKO,aAAaimI,mBAAmBvoI,GAAQrhC,QAAUwiC,EAC7DA,EAAQ,IAAI,KAAiB,oCAAqC1f,OAAOue,EAAQ,mDAAqDve,OAAOuf,EAAe,mGAEtJe,KAAKK,eAAemmI,mBAAmBvoI,GAAQrhC,QACrDwiC,GACAA,EAAQ,IAAI,KAAiB,oCAAqC1f,OAAOue,EAAQ,qDAAuDve,OAAOuf,EAAe,mGAf1JG,GACAA,EAAQ,IAAI,KAAmB,uCAA0C1f,OAAOuf,EAAe,2FAOnGsnI,EAAetoI,OAASsoI,EAAetnI,eAAiB,MAS5D6mI,GAAqBS,IACd,SAAS,QAAS,CAAC,EAAGA,GAAiB,CAAEzlI,WAAYA,EAAYqjI,aAAcA,GAAa90J,KAAK,KAAMk3J,EAAgBzlI,EAAWR,iBAAkB8jI,oBAAqBA,GAAoB/0J,KAAK,KAAMk3J,EAAgBzlI,EAAWR,iBAAkBikI,mBAAoBA,GAAmBl1J,KAAK,KAAMk3J,EAAgBzlI,EAAWC,uBAAwB8jI,WAAYA,GAAWx1J,KAAK,KAAMk3J,EAAgBzlI,EAAWX,mBAAoB8kI,kBAAmBA,GAAkB51J,KAAK,KAAMk3J,EAAgBzlI,EAAWX,mBAAoB2kI,WAAYA,GAAWz1J,KAAK,KAAMk3J,EAAgBzlI,EAAWX,mBAAoB4kI,oBAAqBA,GAAoB11J,KAAK,KAAMk3J,EAAgBzlI,EAAWX,mBAAoB+kI,kBAAmBA,GAAkB71J,KAAK,KAAMk3J,EAAgBzlI,EAAWX,mBAAoBilI,aAAcA,GAAa/1J,KAAK,KAAMk3J,EAAgBzlI,EAAWN,gBAEj2BkjI,cAAeA,GAAcr0J,KAAK,KAAMk3J,EAAgBzlI,GAExD+wC,GAAI6xF,GAAcr0J,KAAK,KAAMk3J,EAAgBzlI,GAAawkI,WAAYA,GAAWj2J,KAAK,KAAMk3J,EAAgBzlI,EAAWE,eAAgBukI,kBAAmBA,GAAkBl2J,KAAK,KAAMk3J,EAAgBzlI,EAAWE,eAAgB4kI,kBAAmBA,GAAkBv2J,KAAK,KAAMk3J,EAAgBzlI,EAAWG,kBACrT,CCQmB,EAAe,SAAS,SAAS,QAAS,CAAC,EAAG,MAAsBjiB,GAAS,CAAE4kJ,wBAAyBA,IAA4BpnI,GAC/I+pI,EAAiB,CACjBtoI,OAAQqoI,EAASroI,OACjBe,SAAUsnI,EAAStnI,SACnBG,sBAAuBmnI,EAASnnI,sBAChCL,QAASwnI,EAASxnI,QAClBG,cAAeqnI,EAASrnI,cACxBC,eAAgBonI,EAASpnI,eACzBH,SAAUunI,EAASvnI,SACnBK,QAASknI,EAASlnI,QAClBwkI,wBAAyBA,GAE7B,OAAO,SAAS,QAAS,CAAC,EAAG0C,GAAW,CAEpC5C,cAAe,GAAcr0J,KAAK,KAAMk3J,EAAgBD,EAASxlI,YAEjE+wC,GAAI,GAAcxiE,KAAK,KAAMk3J,EAAgBD,EAASxlI,aAC9D,EACI2lI,GAA8B,SAAUlpI,GAExC,SAASkpI,IACL,IAAIxrI,EAAmB,OAAXsC,GAAmBA,EAAOngC,MAAMjC,KAAM0B,YAAc1B,KAOhE,OANA8/B,EAAMuB,OAAQ,WACdvB,EAAMvf,MAAQ,CACV8gB,MAAOvB,EAAMuB,MACbkqI,KAAM,GAAWX,GAAkB9qI,EAAMjsB,OAAQisB,EAAMuB,OACvDmqI,WAAYZ,GAAkB9qI,EAAMjsB,QAEjCisB,CACX,CAkBA,OA5BA,QAAUwrI,EAAclpI,GAWxBkpI,EAAajuD,yBAA2B,SAAUxpG,EAAO4kB,GACrD,IAAI+yI,EAAa/yI,EAAG+yI,WAAYnqI,EAAQ5I,EAAG4I,MACvCxd,EAAS+mJ,GAAkB/2J,GAC/B,OAAK,QAAa23J,EAAY3nJ,GAMvB,KALI,CACH0nJ,KAAM,GAAW1nJ,EAAQwd,GACzBmqI,WAAY3nJ,EAIxB,EACAynJ,EAAa5qK,UAAU6/B,OAAS,WAE5B,OADA,QAAqBvgC,KAAKugB,MAAMgrJ,MACzB,gBAAoB,KAAU,CAAE3nK,MAAO5D,KAAKugB,MAAMgrJ,MAAQvrK,KAAK6T,MAAMiK,SAChF,EACAwtJ,EAAanwH,YAAc,eAC3BmwH,EAAarwH,aAAe,KACrBqwH,CACX,CA9BiC,CA8B/B,iBACF,MC5FA,OAhBA,SAAwBz3J,GACtB,MAAM+vB,EAAW/vB,EAAMwmG,YAAYz2E,SAC7Bq7H,EAAWprJ,EAAMwmG,YAAY4kD,SACnC,OACE/7D,EAAAA,cAACooE,GAAY,CACXxoI,OAAQm8H,EACRr7H,SAAUA,EACV6kI,wBAAyB,CACvBnnK,EAAIqyF,GAASuP,EAAAA,cAAA,SAAIvP,KAGlB9/E,EAAMiK,SAGb,iMCqbA,IAzbkBpa,IAAyB,IAAD+nK,EAAA,IAAvB,eAAEC,GAAgBhoK,EACnC,MAAM,SAAEo2B,EAAQ,KAAEqqF,EAAI,QAAEC,EAAO,QAAE80C,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAClD,EAACsnD,EAAc,EAACC,IAAoB5lK,EAAAA,EAAAA,UAAS,KAC7C,EAAC49B,EAAS,EAACioI,IAAe7lK,EAAAA,EAAAA,UAAS,KACnC,EAAC+gJ,EAAW,EAAC+kB,IAAiB9lK,EAAAA,EAAAA,UAAS,CAC3C+lK,UAAW,GACXC,SAAU,GACVznB,MAAO,GACPG,SAAU,GACVunB,gBAAiB,GACjBllD,KAAM,GACNxmG,MAAO,GACP+vG,QAAS,GACT+R,OAAQ,GACR6pC,YAAa,GACbC,SAAU,GACVznK,KAAM,GACN0nK,OAAQ,MAEJ,EAAC/vI,EAAO,EAACgwI,IAAarmK,EAAAA,EAAAA,UAAS,CAAC,IAChC,EAAC2iJ,EAAY,EAAC2jB,IAAkBtmK,EAAAA,EAAAA,UAAS,MACzCumK,EAAuB,2CACvBC,EAAsB,iCACtB,OAAE1pI,IAAW+rH,EAAAA,EAAAA,KAEb4d,EAAkB/nK,IAEtB,OAAQA,GACN,IAAK,cACH,MAAO,cACT,IAAK,QACH,MAAO,QACT,IAAK,WACH,MAAO,WAGT,QACE,MAAO,UACX,EAqDF,SAASgoK,EAAkBv1I,GAOzB,GANAA,EAAEw1I,UACFb,GAAec,IAAa,IACvBA,EACH,CAACz1I,EAAExtB,OAAOgO,MAAOwf,EAAExtB,OAAO/F,UAGxBmjJ,EAAWrC,UAA8B,oBAAlBvtH,EAAExtB,OAAOgO,KAA4B,CAC9D,MAAMk1J,EAAgB11I,EAAExtB,OAAO/F,QAAUmjJ,EAAWrC,SAAW6nB,EAAuB,GACtFF,EAAU,IACLhwI,EACH4vI,gBAAiBY,GAErB,CACF,CAmHA,OAnLAvmK,EAAAA,EAAAA,YAAU,KACR,GAAI4yJ,GAAWp/H,EAAU,CACvB,MAAMgzI,EAAiB3kJ,UAAa,IAAD4kJ,EAAAC,EAAAC,EAAAC,EAAAC,EACjC,MAAMC,QAAwBtzI,EAASywH,0BACjC,KAAEpmC,EAAI,QAAEmM,EAAO,YAAE+8C,EAAW,eAAEC,EAAc,YAAEpB,EAAW,SAAEC,GAAaiB,EAAgB9kK,KAE9FwjK,EAAc,IACT/kB,EACHglB,UAA4B,QAAnBgB,EAAE7T,EAAQ6S,iBAAS,IAAAgB,EAAAA,EAAI,GAChCf,SAA0B,QAAlBgB,EAAE9T,EAAQ8S,gBAAQ,IAAAgB,EAAAA,EAAI,GAC9BzoB,MAAoB,QAAf0oB,EAAE/T,EAAQ3U,aAAK,IAAA0oB,EAAAA,EAAI,GACxB1sJ,MAAoB,QAAf2sJ,EAAEhU,EAAQ34I,aAAK,IAAA2sJ,EAAAA,EAAI,GACxBnmD,KAAkB,QAAdomD,EAAEjU,EAAQnyC,YAAI,IAAAomD,EAAAA,EAAI,GACtB78C,QAASA,GAAW,GACpB+R,OAAQgrC,GAAe,GACvBnB,YAAaA,GAAe,GAC5BC,SAAUA,GAAY,GACtBznK,KAAM+nK,EAAetoD,EAAKz/G,OAC1B,EAEJooK,GACF,IACC,CAAC5T,KAEJ5yJ,EAAAA,EAAAA,YAAU,KACR,IAAIinK,GAAc,EAElB,IAAInpD,EAAJ,CAIA,GAAItqF,EACF,IAC0B3R,WACtB,MAAM85C,QAAYnoC,EAAS4uH,mBACtB6kB,GAAetrG,GAClBqqG,EAAerqG,EAAIz4D,MAAK,CAACjB,EAAGC,IAAMA,EAAEglK,UAAYjlK,EAAEilK,YACpD,EAEF9kB,EACF,CAAE,MAAOvxH,GACP30B,QAAQhB,MAAM,KAAM21B,EACtB,CAGF,MAAO,KACLo2I,GAAc,CAAI,CAjBpB,CAkBC,GACA,CAACzzI,EAAUsqF,IAmIE,OAAZ80C,GAAsB90C,EACjBlhB,EAAAA,cAACuqE,EAAAA,EAAc,MAItBvqE,EAAAA,cAAA,OAAKzpD,UAAU,gBAAgB51C,MAAO,CAAEQ,QAASqnK,EAAiB,UAAY,eAC5ExoE,EAAAA,cAAA,UAAI,uBACJA,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,WAASzpD,UAAU,wBACjBypD,EAAAA,cAAA,QAAMwqE,SAtEdvlJ,eAA4BgP,GAK1B,GAJAA,EAAExkB,iBAEFk5J,EAAY,IA9Bd,WAEE,MAAM8B,EAAc,CAAC,EAsBrB,OArBI5mB,EAAWrC,UACTqC,EAAWrC,WAAaqC,EAAWklB,kBACrC0B,EAAY1B,gBAAkBM,GAK9BlwI,EAAOqoH,WAAa8nB,IACtBmB,EAAYjpB,SAAWroH,EAAOqoH,UAI5BqC,EAAWglB,UAAUtqK,OAAS,IAChCksK,EAAY5B,UAAY,4DAGtBhlB,EAAWilB,SAASvqK,OAAS,IAC/BksK,EAAY3B,SAAW,2DAGzBK,EAAUsB,GAC6B,OAAhC3yJ,KAAKC,UAAU0yJ,EACxB,CAOOC,GAEE,CACLhC,EAAiB,IAEjB,MAAMiC,EAAc,CAClB9B,UAAWhlB,EAAWglB,UACtBC,SAAUjlB,EAAWilB,SACrBznB,MAAOwC,EAAWxC,MAClBx9B,KAAMggC,EAAWhgC,KACjBxmG,MAAOwmI,EAAWxmI,OAGpB,GAAIwmI,EAAWxC,QAAUpgC,EAAKogC,OAA6C,aAApCpgC,EAAK2pD,aAAa,GAAGtT,WAC1D,UACQ1gI,EAASwqH,gBAAgByC,EAAWxC,OAC1CsnB,EAAY,GAADtnJ,QAAAkvF,EAAAA,EAAAA,GAAK7vE,GAAQ,CAAE,0BAC5B,CAAE,MAAOzM,GAOP,YANAy0I,EAAiB,GAADrnJ,QAAAkvF,EAAAA,EAAAA,GACXk4D,GAAa,CACL,+BAAXx0I,EAAE5jB,KACE,+GACA4jB,EAAE0E,UAGV,CAGF,GAAIkrH,EAAWrC,SACb,UACQ5qH,EAAS2qH,mBAAmBsC,EAAWrC,UAC7CmnB,EAAY,GAADtnJ,QAAAkvF,EAAAA,EAAAA,GAAK7vE,GAAQ,CAAE,qBAC5B,CAAE,MAAOzM,GAEP,YADAy0I,EAAiB,GAADrnJ,QAAAkvF,EAAAA,EAAAA,GAAKk4D,GAAa,CAAEx0I,EAAE0E,UAExC,CAIF,UACQ/B,EAASwnH,cAAc,CAAElG,OAAQj3B,EAAKhrF,IAAK7wB,KAAMulK,IAEnDnC,EACFG,EAAY,GAADtnJ,QAAAkvF,EAAAA,EAAAA,GAAK7vE,GAAQ,CAAE,2CAE1BmqI,EAAAA,EAAAA,GAAkB,CAChB9sK,KAAM,UACN0tJ,QAAS,wCAGf,CAAE,MAAOx3H,GACPy0I,EAAiB,GAADrnJ,QAAAkvF,EAAAA,EAAAA,GAAKk4D,GAAa,CAAEx0I,EAAE0E,UACxC,CACF,MApDE+vI,EAAiB,CAAC,qCAqDtB,GAYU1oE,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,aACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,qBAAqBu/B,eAAe,eAAe,IAACggE,EAAAA,cAAA,QAAMzpD,UAAU,kBAAiB,MAE5GypD,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,YAAY1W,KAAK,OAAOitK,UAAQ,EAACtqK,MAAOmjJ,EAAWglB,YAC5F7oE,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0rJ,MAAO,QAAUlzH,EAAO0vI,YAEzC7oE,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,YACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,oBAAoBu/B,eAAe,cAAc,IAACggE,EAAAA,cAAA,QAAMzpD,UAAU,kBAAiB,MAE1GypD,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,WAAW1W,KAAK,OAAOitK,UAAQ,EAACtqK,MAAOmjJ,EAAWilB,WAC3F9oE,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0rJ,MAAO,QAAUlzH,EAAO2vI,WAGzC9oE,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,SACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,gBAAgBu/B,eAAe,aAEnDihF,EAAK2pD,cAAoD,aAApC3pD,EAAK2pD,aAAa,GAAGtT,YAC3Ct3D,EAAAA,cAAA,aACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,6CACHu/B,eAAe,oEAIrBggE,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,QAAQ1W,KAAK,OAAO2C,MAAOmjJ,EAAWxC,MAAOxqI,UAAU,KAGlGmpF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,UACb9qE,EAAAA,cAAA,aACAA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,SAASu/B,eAAe,YAC1C6jH,SAAmB,QAAT0kB,EAAV1kB,EAAYz2B,eAAO,IAAAm7C,OAAT,EAAVA,EAAqBhqK,QAAS,EAAI,IAAM,KAE7CyhG,EAAAA,cAAA,YACEhxE,SAAUw6I,EACV/0J,KAAK,SACL1W,KAAK,OACLktK,KAAM,EACNvqK,MAAOmjJ,EAAWz2B,QAAQ9rG,KAAK4pJ,GAAWA,EAAOz2J,OAAM8b,KAAK,MAC5D1Z,UAAU,KAIb2xJ,GACCxoE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,cAAa,eAC5B9qE,EAAAA,cAAA,YACEhxE,SAAUw6I,EACV/0J,KAAK,aACL1W,KAAK,OACLktK,KAAM,EACNvqK,MAAOmjJ,EAAWmlB,YAAY1nJ,KAAK6pJ,GAAeA,EAAW12J,OAAM8b,KAAK,MACxE1Z,UAAU,KAIdmpF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,UAAS,YACxB9qE,EAAAA,cAAA,YACEhxE,SAAUw6I,EACV/0J,KAAK,SACL1W,KAAK,OACLktK,KAAM,EACNvqK,MAAOmjJ,EAAWolB,SAAS3nJ,KAAK8pJ,GAAWA,EAAO32J,OAAM8b,KAAK,MAC7D1Z,UAAU,KAIdmpF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,SAAQ,UACvB9qE,EAAAA,cAAA,YACEhxE,SAAUw6I,EACV/0J,KAAK,QACL1W,KAAK,OACLktK,KAAM,EACNvqK,MAAOmjJ,EAAW1kB,OAAO79G,KAAKg+G,GAAUA,EAAM7qH,OAAM8b,KAAK,MACzD1Z,UAAU,KAIdmpF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,QAAO,QACtB9qE,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,OAAO1W,KAAK,OAAO2C,MAAOmjJ,EAAWriJ,KAAMqV,UAAU,QAKjGoqG,EAAK2pD,cAAoD,aAApC3pD,EAAK2pD,aAAa,GAAGtT,YAC3Ct3D,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,YACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,0BAA0Bu/B,eAAe,oBAAoB,KAAEggE,EAAAA,cAAA,QAAMzpD,UAAU,kBAAiB,MAEvHypD,EAAAA,cAAA,QACEr/F,MAAO,CACLysJ,WAAY,SACZf,MAAO,UACP/rJ,QAAS,UAGX0/F,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,mBAAmB,KAElFggE,EAAAA,cAACqrE,IAAqB,CACpB90H,UAAU,qBACV+0H,UAAW,EACXC,SAAU,EACVC,WAAY,CAAC,OAAQ,KAAM,OAAQ,SAAU,YAC7CC,WAAY,CAAEh3J,KAAM,WAAYi3J,aAAc,OAC9CC,eA5OpB,SAA6B1pK,GAAyB,IAAxB,QAAEs9E,EAAO,SAAEiiE,GAAUv/I,EAEjD2mK,EAAc,IACT/kB,EACHrC,SAAUA,EACVunB,gBAAiB,KAGnB,MAAM6C,EAAazyI,GAEdomD,GAAWiiE,EAASjjJ,OAAS,EAChCqtK,EAAWpqB,SAAW8nB,EAElBsC,EAAWpqB,iBACNoqB,EAAWpqB,SAIlBroH,EAAO4vI,wBACF5vI,EAAO4vI,gBAGhBI,EAAUyC,EACZ,IAuNkB5rE,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0rJ,MAAO,QAAUlzH,EAAOqoH,WAEzCxhD,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,mBACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,qBAAqB,KAEtFggE,EAAAA,cAAA,SACEjiG,KAAK,WACL0W,KAAK,kBACL/T,MAAOmjJ,EAAWklB,gBAClB/5I,SAAUw6I,EACV7oK,MAAO,CACLkrK,YAAa1yI,EAAO4vI,gBAAkB,MAAQ,QAG/C5vI,EAAO4vI,iBAAmB/oE,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0rJ,MAAO,QAAUlzH,EAAO4vI,mBAK1E/oE,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,QACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,UAErDggE,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,OAAO1W,KAAK,OAAO+tK,UAAU,KAAKprK,MAAOmjJ,EAAWhgC,QAG/F7jB,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,SAAO8qE,QAAQ,SACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,gBAAgBu/B,eAAe,WAEtDggE,EAAAA,cAAA,SAAOhxE,SAAUw6I,EAAmB/0J,KAAK,QAAQ1W,KAAK,OAAO+tK,UAAU,KAAKprK,MAAOmjJ,EAAWxmI,SAGhG2iF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,UAAQzpD,UAAU,2CAA2Cx4C,KAAK,SAAS4C,MAAO,CAACorK,SAAU,UAC3F/rE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,YAKxDU,EAASniC,OAAS,GACjByhG,EAAAA,cAAA,WAASzpD,UAAU,WAAW51C,MAAO,CAAEI,MAAO,SAC5Ci/F,EAAAA,cAACgsE,EAAAA,EAAK,CAAClwC,QAAQ,WACb97B,EAAAA,cAAA,MAAIr/F,MAAO,CAAEsrK,cAAe,OAAQhrK,OAAQ,MACzCy/B,EAASpf,KAAI,CAACqX,EAAS9gB,IACtBmoF,EAAAA,cAAA,MAAIr/F,MAAO,CAAEurK,aAAc,KAAOjsK,IAAK4X,GACpC8gB,QAOZ8vI,EAAclqK,OAAS,GACtByhG,EAAAA,cAAA,WAASzpD,UAAU,WAAW51C,MAAO,CAAEI,MAAO,SAC5Ci/F,EAAAA,cAACgsE,EAAAA,EAAK,CAAClwC,QAAQ,UACb97B,EAAAA,cAAA,UACGyoE,EAAcnnJ,KAAI,CAACqX,EAAS9gB,IAC3BmoF,EAAAA,cAAA,MAAI//F,IAAK4X,GAAQ8gB,UAQ/BqnE,EAAAA,cAAA,WAASzpD,UAAU,wBACjBypD,EAAAA,cAAA,WAASzpD,UAAU,iBACjBypD,EAAAA,cAAA,WACEA,EAAAA,cAAA,SAAO8qE,QAAQ,aACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sBAAsBu/B,eAAe,qBAGzDg2H,EAAQmW,gBACTnsE,EAAAA,cAAA,OACEosE,IAAKpW,EAAQmW,gBACb5hC,IAAI,KAGNvqC,EAAAA,cAAA,OAAKzpD,UAAU,6CACbypD,EAAAA,cAAA,OACEosE,IAAKC,EAAAA,EACL9hC,IAAI,KACH,MAITvqC,EAAAA,cAACssE,EAAAA,EAAiB,CAACC,SAAS,EAAMC,aAAgBxW,EAAQmW,gBAAkBnW,EAAQmW,gBAAkBE,EAAAA,OAIxG,iOC/bH,IAAMI,EAAI,WA06Bf,SAAAA,EACEv0B,GAEAp7I,KAAK4vK,WAAa,KAClB5vK,KAAK6vK,UAAY,KACjB7vK,KAAK8vK,OAAS,KACd9vK,KAAK+vK,QAAU30B,EACfp7I,KAAKgwK,cAAe,EACpBhwK,KAAKiwK,iBAAmB,EACxBjwK,KAAKkwK,YAAc,EACnBlwK,KAAKmwK,eAAiB,EACtBnwK,KAAKowK,eAAgB,EACrBpwK,KAAKqwK,YAAc,EACnBrwK,KAAKswK,oBAAsB,EAC3BtwK,KAAKuwK,qBAAuB,EAC5BvwK,KAAKwwK,qBAAuB,EAC5BxwK,KAAKywK,oBAAsB,EAC3BzwK,KAAK0wK,mBAAqB,EAC1B1wK,KAAK2wK,aAAe,KACpB3wK,KAAK4wK,gBAAkB,KACvB5wK,KAAK6wK,WAAY,EACjB7wK,KAAK8wK,mBAAoB,EACzB9wK,KAAK+wK,aAAe,EACpB/wK,KAAK8mH,MAAQ,KACb9mH,KAAK6rC,OAAS,KACd7rC,KAAKgxK,UAAY,KACjBhxK,KAAKixK,MAAQ,KACbjxK,KAAKkxK,UAAY,GACjBlxK,KAAKmxK,cAAgB,GACrBnxK,KAAKoxK,WAAa,KAClBpxK,KAAKqxK,qBAAuB,GAC5BrxK,KAAKsxK,sBAAwB,GAC7BtxK,KAAKuxK,sBAAwB,GAC7BvxK,KAAKwxK,qBAAuB,GAC5BxxK,KAAKyxK,oBAAsB,GAC3BzxK,KAAK0xK,WAAa,GAClB1xK,KAAK2xK,QAAU,GACf3xK,KAAK4xK,SAAW,KAChB5xK,KAAK6xK,UAAY,KACjB7xK,KAAK8xK,OAAS,KACd9xK,KAAK+xK,OAAS,KACd/xK,KAAKgyK,OAAS,KACdhyK,KAAKiyK,YAAc,KACnBjyK,KAAKkyK,kBAAoB,KACzBlyK,KAAKmyK,kBAAoB,KACzBnyK,KAAKoyK,eAAiB,KACtBpyK,KAAKqyK,iBAAmB,KACxBryK,KAAKsyK,yBAA2B,KAChCtyK,KAAKuyK,4BAA8B,KACnCvyK,KAAKwyK,gCAAkC,KACvCxyK,KAAKyyK,2BAA6B,KAClCzyK,KAAK0yK,yBAA2B,KAChC1yK,KAAK2yK,+BAAiC,KACtC3yK,KAAK4yK,+BAAiC,IACxC,CA5EC,OAp5BcjD,EAAAjvK,UA45BfmyK,UAAA,WAEE,QAAK7yK,KAAKm7J,gBAGH7jI,KAAK01C,MAAQhtE,KAAKm7J,eAAe5jI,SAC1C,GA8DCquF,EAAAA,EAAAA,GAAA+pD,EAAA,EAAAxsK,IAAA,6BAAAmG,IA19BD,WACE,OAAOtJ,KAAKuyK,2BACd,EAEA1xJ,IAKA,SAA+Bjd,GAC7B5D,KAAKuyK,4BAA8B3uK,CACrC,GAEA,CAAAT,IAAA,iCAAAmG,IAKA,WACE,OAAOtJ,KAAKwyK,+BACd,EAEA3xJ,IAKA,SAAmCjd,GACjC5D,KAAKwyK,gCAAkC5uK,CACzC,GAEA,CAAAT,IAAA,4BAAAmG,IAKA,WACE,OAAOtJ,KAAKyyK,0BACd,EAEA5xJ,IAKA,SAA8Bjd,GAC5B5D,KAAKyyK,2BAA6B7uK,CACpC,GAEA,CAAAT,IAAA,0BAAAmG,IAKA,WACE,OAAOtJ,KAAK0yK,wBACd,EAEA7xJ,IAKA,SAA4Bjd,GAC1B5D,KAAK0yK,yBAA2B9uK,CAClC,GAEA,CAAAT,IAAA,gCAAAmG,IAKA,WACE,OAAOtJ,KAAK4yK,8BACd,EAEA/xJ,IAKA,SAAkCjd,GAChC5D,KAAK4yK,+BAAiChvK,CACxC,GAEA,CAAAT,IAAA,gCAAAmG,IAKA,WACE,OAAOtJ,KAAK2yK,8BACd,EAEA9xJ,IAKA,SAAkCjd,GAChC5D,KAAK2yK,+BAAiC/uK,CACxC,GAEA,CAAAT,IAAA,0BAAAmG,IAIA,WACE,OAAOtJ,KAAKsyK,wBACd,EAEAzxJ,IAIA,SAA4Bjd,GAC1B5D,KAAKsyK,yBAA2B1uK,CAClC,GAEA,CAAAT,IAAA,gBAAAmG,IAKA,WACE,OAAOtJ,KAAKoyK,cACd,EAEAvxJ,IAKA,SAAkBjd,GAChB5D,KAAKoyK,eAAiBxuK,CACxB,GAEA,CAAAT,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAK0xK,UACd,EAEA7wJ,IAuBA,SAAcjd,GACZ5D,KAAK0xK,WAAa9tK,CACpB,GAEA,CAAAT,IAAA,WAAAmG,IAtBA,WACE,OAAOtJ,KAAKkxK,SACd,EAEArwJ,IAuBA,SAAajd,GACX5D,KAAKkxK,UAAYttK,CACnB,GAEA,CAAAT,IAAA,eAAAmG,IAtBA,WACE,OAAOtJ,KAAKmxK,aACd,EAACtwJ,IAyBD,SAAiBjd,GACf5D,KAAKmxK,cAAgBvtK,CACvB,GAEA,CAAAT,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAK2xK,OACd,EAEA9wJ,IAKA,SAAWjd,GACT5D,KAAK2xK,QAAU/tK,CACjB,GAEA,CAAAT,IAAA,kBAAAmG,IAKA,WACE,OAAOtJ,KAAKqyK,gBACd,EAEAxxJ,IAKA,SAAoBjd,GAClB5D,KAAKqyK,iBAAmBzuK,CAC1B,GAGA,CAAAT,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKqxK,oBACd,EAEAxwJ,IAKA,SAAwBjd,GACtB5D,KAAKqxK,qBAAqB/uK,KAAKsB,EACjC,GAEA,CAAAT,IAAA,uBAAAmG,IAKA,WACE,OAAOtJ,KAAKsxK,qBACd,EAEAzwJ,IAKA,SAAyBjd,GACvB5D,KAAKsxK,sBAAsBhvK,KAAKsB,EAClC,GAEA,CAAAT,IAAA,uBAAAmG,IAKA,WACE,OAAOtJ,KAAKuxK,qBACd,EAEA1wJ,IAKA,SAAyBjd,GACvB5D,KAAKuxK,sBAAsBjvK,KAAKsB,EAClC,GAEA,CAAAT,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKwxK,oBACd,EAEA3wJ,IAKA,SAAwBjd,GACtB5D,KAAKwxK,qBAAqBlvK,KAAKsB,EACjC,GAEA,CAAAT,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAKyxK,mBACd,EAEA5wJ,IAKA,SAAuBjd,GACrB5D,KAAKyxK,oBAAoBnvK,KAAKsB,EAChC,GAEA,CAAAT,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8mH,KACd,EAEAjmG,IAKA,SAASjd,GACP5D,KAAK8mH,MAAQljH,CACf,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK6rC,MACd,EAEAhrB,IAKA,SAAUjd,GACR5D,KAAK6rC,OAASjoC,CAChB,GAEA,CAAAT,IAAA,cAAAmG,IAKA,WACE,OAAOtJ,KAAK2wK,YACd,EAEA9vJ,IAKA,SAAgBjd,GACd5D,KAAK2wK,aAAe/sK,CACtB,GAEA,CAAAT,IAAA,iBAAAmG,IAKA,WACE,OAAOtJ,KAAK4wK,eACd,EAEA/vJ,IAKA,SAAmBjd,GACjB5D,KAAK4wK,gBAAkBhtK,CACzB,GAEA,CAAAT,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAK6wK,SACd,EAEAhwJ,IAKA,SAAajd,GACX5D,KAAK6wK,UAAYjtK,CACnB,GAEA,CAAAT,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAK8wK,iBACd,EAEAjwJ,IAKA,SAAqBjd,GACnB5D,KAAK8wK,kBAAoBltK,CAC3B,GAEA,CAAAT,IAAA,cAAAmG,IAKA,WACE,OAAOtJ,KAAK+wK,YACd,EAEAlwJ,IAKA,SAAgBjd,GACd5D,KAAK+wK,aAAentK,CACtB,GAEA,CAAAT,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAK4vK,UACd,EAEA/uJ,IAKA,SAAcjd,GACZ5D,KAAK4vK,WAAahsK,CACpB,GAEA,CAAAT,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAK6vK,SACd,EAEAhvJ,IAKA,SAAajd,GACX5D,KAAK6vK,UAAYjsK,CACnB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK8vK,MACd,EAEAjvJ,IAKA,SAAUjd,GACR5D,KAAK8vK,OAASlsK,CAChB,GAEA,CAAAT,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAK+vK,OACd,EAEAlvJ,IAKA,SAAWjd,GACT5D,KAAK+vK,QAAUnsK,CACjB,GAEA,CAAAT,IAAA,cAAAmG,IAKA,WACE,OAAOtJ,KAAKgwK,YACd,EAEAnvJ,IAKA,SAAgBjd,GACd5D,KAAKgwK,aAAepsK,CACtB,GAEA,CAAAT,IAAA,kBAAAmG,IAKA,WACE,OAAOtJ,KAAKiwK,gBACd,EAEApvJ,IAKA,SAAoBjd,GAClB5D,KAAKiwK,iBAAmBrsK,CAC1B,GAEA,CAAAT,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKkwK,WACd,EAEArvJ,IAKA,SAAejd,GACb5D,KAAKkwK,YAActsK,CACrB,GAEA,CAAAT,IAAA,gBAAAmG,IAKA,WACE,OAAOtJ,KAAKmwK,cACd,EAEAtvJ,IAKA,SAAkBjd,GAChB5D,KAAKmwK,eAAiBvsK,CACxB,GAEA,CAAAT,IAAA,eAAAmG,IAKA,WACE,OAAOtJ,KAAKowK,aACd,EAEAvvJ,IAKA,SAAiBjd,GACf5D,KAAKowK,cAAgBxsK,CACvB,GAEA,CAAAT,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKqwK,WACd,EAEAxvJ,IAKA,SAAejd,GACb5D,KAAKqwK,YAAczsK,CACrB,GAEA,CAAAT,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAKswK,mBACd,EAEAzvJ,IAKA,SAAuBjd,GACrB5D,KAAKswK,oBAAsB1sK,CAC7B,GAEA,CAAAT,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKuwK,oBACd,EAEA1vJ,IAKA,SAAwBjd,GACtB5D,KAAKuwK,qBAAuB3sK,CAC9B,GAEA,CAAAT,IAAA,sBAAAmG,IAKA,WACE,OAAOtJ,KAAKwwK,oBACd,EAEA3vJ,IAKA,SAAwBjd,GACtB5D,KAAKwwK,qBAAuB5sK,CAC9B,GAEA,CAAAT,IAAA,qBAAAmG,IAKA,WACE,OAAOtJ,KAAKywK,mBACd,EAEA5vJ,IAKA,SAAuBjd,GACrB5D,KAAKywK,oBAAsB7sK,CAC7B,GAEA,CAAAT,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAK0wK,kBACd,EAEA7vJ,IAKA,SAAsBjd,GACpB5D,KAAK0wK,mBAAqB9sK,CAC5B,GAEA,CAAAT,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAKgxK,SACd,EAEAnwJ,IAcA,SAAajd,GACX5D,KAAKgxK,UAAYptK,CACnB,GAEA,CAAAT,IAAA,OAAAmG,IAbA,WACE,OAAOtJ,KAAKixK,KACd,EAACpwJ,IAgBD,SAASjd,GACP5D,KAAKixK,MAAQrtK,CACf,GAEA,CAAAT,IAAA,YAAAmG,IAKA,WACE,OAAOtJ,KAAKoxK,UACd,EAEAvwJ,IAKA,SAAcjd,GACZ5D,KAAKoxK,WAAaxtK,CACpB,GAEA,CAAAT,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKkyK,iBACd,EAEArxJ,IAKA,SAAqBjd,GACnB5D,KAAKkyK,kBAAoBtuK,CAC3B,GAEA,CAAAT,IAAA,mBAAAmG,IAKA,WACE,OAAOtJ,KAAKmyK,iBACd,EAEAtxJ,IAKA,SAAqBjd,GACnB5D,KAAKmyK,kBAAoBvuK,CAC3B,GAEA,CAAAT,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAK4xK,QACd,EAEA/wJ,IAKA,SAAYjd,GACV5D,KAAK4xK,SAAWhuK,CAClB,GAEA,CAAAT,IAAA,WAAAmG,IAKA,WACE,OAAOtJ,KAAK6xK,SACd,EAEAhxJ,IAKA,SAAajd,GACX5D,KAAK6xK,UAAYjuK,CACnB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK8xK,MACd,EAEAjxJ,IAKA,SAAUjd,GACR5D,KAAK8xK,OAASluK,CAChB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK+xK,MACd,EAEAlxJ,IAKA,SAAUjd,GACR5D,KAAK+xK,OAASnuK,CAChB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAKgyK,MACd,EAEAnxJ,IAKA,SAAUjd,GACR5D,KAAKgyK,OAASpuK,CAChB,GAEA,CAAAT,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKiyK,WACd,EAEApxJ,IAKA,SAAejd,GACb5D,KAAKiyK,YAAcruK,CACrB,KAAC+rK,CAAA,CAp5Bc,4BCGjB,IAGMmD,EAAgB,WAQpB,SAAAA,EAAYxqK,GACVtI,KAAK8rC,MAAQxjC,CACf,CAkBC,OAhBDs9G,EAAAA,EAAAA,GAAAktD,EAAA,EAAA3vK,IAAA,eAAAmG,IAKA,WACE,OAAO,CACT,GAEA,CAAAnG,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK8rC,KACd,KAACgnI,CAAA,CA5BmB,GAkCT1xB,EAAqB,SAAA2xB,GAAA,SAAA3xB,IAAA,OAAA2xB,EAAA9wK,MAAA,KAAAP,YAAA,KAO/B,OAP+B+sG,EAAAA,EAAAA,GAAA2yC,EAAA2xB,IAAAntD,EAAAA,EAAAA,GAAAw7B,EAAA,EAAAj+I,IAAA,eAAAmG,IAKhC,WACE,OAAO,CACT,KAAC83I,CAAA,CAP+B,CAAS0xB,GAa9B3xB,EAAqB,SAAA6xB,GAAA,SAAA7xB,IAAA,OAAA6xB,EAAA/wK,MAAA,KAAAP,YAAA,MAAA+sG,EAAAA,EAAAA,GAAA0yC,EAAA6xB,GAAA,IAAAhzI,EAAAmhH,EAAAzgJ,UA6D/B,OA3DDs/B,EAKAizI,QAAA,WACE,OAAOjzK,KAAKsI,KAAK+zB,OAAO56B,OAAS,CACnC,EAEAu+B,EAKAkzI,UAAA,WACE,OAAOlzK,KAAKsI,KAAK+zB,MACnB,EAEA2D,EAKAmzI,SAAA,WACE,OAAOnzK,KAAKsI,KAAK8qK,YACnB,EAEApzI,EAKAqzI,kBAAA,WACE,OAAOrzK,KAAKsI,KAAKgrK,gBACnB,EAEAtzI,EAKAuzI,gBAAA,WACE,OAAOvzK,KAAKsI,KAAKkrK,YACnB,EAEAxzI,EAKAyzI,mBAAA,WACE,OAAOzzK,KAAKsI,KAAKorK,eACnB,GAEA9tD,EAAAA,EAAAA,GAAAu7B,EAAA,EAAAh+I,IAAA,eAAAmG,IAGA,WACE,OAAO,CACT,KAAC63I,CAAA,CA7D+B,CAAS2xB,GAmE9Ba,EAAqB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA3xK,MAAA,KAAAP,YAAA,MAAA+sG,EAAAA,EAAAA,GAAAklE,EAAAC,GAAA,IAAA98D,EAAA68D,EAAAjzK,UAO/B,OAEDo2G,EAKA+8D,WAAA,WACE,OAAO7zK,KAAKsI,KAAKwrK,OACnB,EAEAh9D,EAKAi9D,gBAAA,WACE,OAAO/zK,KAAKsI,KAAK8qK,YACnB,GAACxtD,EAAAA,EAAAA,GAAA+tD,EAAA,EAAAxwK,IAAA,eAAAmG,IApBD,WACE,OAAO,CACT,KAACqqK,CAAA,CAP+B,CAASb,GA+B9BkB,EAAqB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAhyK,MAAA,KAAAP,YAAA,KAO/B,OAP+B+sG,EAAAA,EAAAA,GAAAulE,EAAAC,IAAAruD,EAAAA,EAAAA,GAAAouD,EAAA,EAAA7wK,IAAA,eAAAmG,IAKhC,WACE,OAAO,CACT,KAAC0qK,CAAA,CAP+B,CAASlB,GAatBoB,EAAsB,WAQzC,SAAAA,EAAYp6I,GACV95B,KAAKm0K,UAAYr6I,CACnB,CAEA,IAAAs6I,EAAAF,EAAAxzK,UAOC,OAED0zK,EAYMC,UAANlsJ,eAAgB44H,EAAUC,EAAU//I,EAAMggJ,GACxC,MAAMC,EAAWlhJ,KAAK85B,SAAS6Q,UAAU40F,cACvC,cAEF,IACE,MAAMv6D,QAAiBk8E,EAAS,CAACH,WAAU9/I,OAAM+/I,WAAUC,oBAC3D,OAAO,IAAIE,EAAsBn8E,EAAS18D,KAC5C,CAAE,MAAM6uB,GACN,MAAe,qBAAXA,EAAE5jB,KACG,IAAI6tI,EAAsBjqH,EAAE0E,SAE9B,IAAIulH,EACT,qDAEJ,CACF,EAEAgzB,EAQME,UAANnsJ,eAAgB/gB,GACd,MAAMmtK,EAAWv0K,KAAK85B,SAAS6Q,UAAU40F,cACvC,cAEF,IACE,MAAMv6D,QAAiBuvG,EAAS,CAACntK,YACjC,OAAO,IAAIusK,EAAsB3uG,EAAS18D,KAC5C,CAAE,MAAO6uB,GACP,MAAe,qBAAXA,EAAE5jB,MAGS,cAAX4jB,EAAE5jB,KAFG,IAAIygK,EAAsB78I,EAAE0E,SAK9B,IAAIm4I,EAAsB,oDACnC,CACF,EAEAI,EAKMI,gBAANrsJ,iBACE,MAAMssJ,EAAW,GACTh+C,QAAiBz2H,KAAK85B,SAASihH,GAClC3xE,WAAW,gBACX9/D,MACH,OAAImtH,EAAS5mE,OAGb4mE,EAAS5kH,SAASjD,IAChB6lK,EAASnyK,MAAKoyK,EAAAA,EAAAA,IAAyB9lK,GAAU,IAH1C6lK,CAMb,EAEAL,EAQMO,cAANxsJ,eAAoBxkB,GAClB,MAAMiL,QAAiB5O,KAAK85B,SAASihH,GAClC3xE,WAAW,gBACXmmB,IAAI5rF,GACJ2F,MACH,IAAKsF,EAAS8sE,OACZ,MAAM,IAAI/5E,MAAM,yCAElB,OAAO+yK,EAAAA,EAAAA,IAAyB9lK,EAClC,EAACwlK,EAEKQ,oBAANzsJ,eAA0BxQ,EAAM1W,GAC9B,MAAMw1H,QAAiBz2H,KAAK85B,SAASihH,GAClC3xE,WAAW,gBACX4uD,MAAM,QAAS,KAAMrgH,GACrBqgH,MAAM,OAAQ,KAAM/2H,GACpBqI,MACH,OAAImtH,EAAS5mE,MACJ,MAEF6kH,EAAAA,EAAAA,IAAyBj+C,EAASmC,KAAK,GAChD,EAACw7C,EAEKS,oBAAN1sJ,eAA0B5U,EAAMtS,GAC9B,MAAM6zK,QAAiB90K,KAAK85B,SAASihH,GAClC3xE,WAAW,gBACX4uD,MAAM,KAAM,KAAMzkH,GAClBjK,MACH,GAAIwrK,EAASjlH,MACX,OAAO,KAET,IAAIklH,EAAS,KAMb,OALAD,EAASjjK,SAAQ09E,IACXA,EAAIjnF,OAAOrH,OAASA,IACtB8zK,GAASL,EAAAA,EAAAA,IAAyBnlF,GACpC,IAEKwlF,CACT,EAACX,EAEKY,4BAAN7sJ,eAAkC5U,EAAMtS,EAAMokD,GAC5C,GAAI19C,OAAOjH,UAAU+2B,eAAe31B,KAAKujD,EAAO,GAAEpkD,KAAQsS,KACxD,OAAO8xC,EAAM,GAAEpkD,KAAQsS,KAEzB,MAAMwhK,QAAe/0K,KAAK60K,oBAAoBthK,EAAMtS,GAEpD,OADAokD,EAAM,GAAEpkD,KAAQsS,KAAUwhK,EACnBA,CACT,EAEAX,EAQMa,eAAN9sJ,eAAqB4sJ,GACnB,GAAKA,EAAOh4B,YAMJ/8I,KAAK85B,SAASihH,GACjB3xE,WAAW,gBACXmmB,IAAIwlF,EAAOh4B,OACXh+F,OAAOg2H,EAAO/wB,eATA,CACjB,MAAMxoH,QAAex7B,KAAK85B,SAASihH,GAChC3xE,WAAW,gBACXp3D,IAAI+iK,EAAO/wB,WACd+wB,EAAOh4B,MAAQvhH,EAAO73B,EACxB,CAMA,OAAOoxK,CACT,EAEAX,EAQMc,iBAAN/sJ,eAAuB4sJ,GAChBA,EAAOh4B,aAGN/8I,KAAK85B,SAASihH,GACjB3xE,WAAW,gBACXmmB,IAAIwlF,EAAOh4B,OACX/7H,QACL,EAEAozJ,EAYMe,YAANhtJ,eAAkBlb,EAAO8iE,EAAQvmE,GAAO,IAAD4rK,EAChC5rK,IACHA,EAAO,CAACxJ,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,eAEhD,MAAMk8C,GAAoBD,EAAAp1K,KAAK85B,SAASihH,GACrC3xE,WAAW,gBACX7L,QAAOt7D,MAAAmzK,GAAA3hE,EAAAA,EAAAA,GAAIjqG,IACd,IAAI8rK,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAYMqB,gBAANttJ,eAAsBo8H,EAAOt3I,EAAO8iE,QAAM,IAANA,IAAAA,EAAS,MAC3C,MAAMwlG,QAAsBv1K,KAAK85B,SAASihH,GACvC3xE,WAAW,SACX4uD,MAAM,QAAS,KAAMusB,GACrBt3I,MAAMA,EAAQ,GACd3D,MACH,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAcMsB,eAANvtJ,eAAqB4jJ,EAAWC,EAAU/+J,EAAO8iE,GAC/C,QADqD,IAANA,IAAAA,EAAS,QACrC,OAAdg8F,GAA2C,IAArBA,EAAUtqK,QAA+B,OAAbuqK,GAAyC,IAApBA,EAASvqK,QACnF,MAAO,CAAC,GAAI,MAEd,MAAM4zK,EAAoBr1K,KAAK85B,SAASihH,GACrC3xE,WAAW,SACd,IAAIksG,EACAvJ,IACFuJ,EAAqBD,EAAkBr9C,MAAM,YAAa,KAAM+zC,IAE9DC,IAEAsJ,EADEA,EACmBA,EAAmBt9C,MAAM,WAAY,KAAMg0C,GAE3CqJ,EAAkBr9C,MAAM,WAAY,KAAMg0C,IAGnEsJ,EAAqBA,EAAmB/3G,QAAQv9D,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,cAEpFm8C,EADEvlG,EACmBulG,EAClBj9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAEIqoK,EAClBroK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAcMuB,0BAANxtJ,eAAgCytJ,EAAWC,EAAY5oK,EAAO8iE,QAAM,IAANA,IAAAA,EAAS,MACrE,MAAMslG,EAAoBr1K,KAAK85B,SAASihH,GACrC3xE,WAAW,cACX4uD,MAAM49C,EAAW,KAAMC,GACvBt4G,QAAQv9D,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,cACjD,IAAIm8C,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAgBM0B,sCAAN3tJ,eAA4CytJ,EAAWC,EAAY5oK,EAAOzD,EAAMumE,GAAgB,IAADgmG,OAAT,IAANhmG,IAAAA,EAAS,MAClFvmE,IACHA,EAAO,CAACxJ,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,eAEhD,MAAMk8C,GAAoBU,EAAA/1K,KAAK85B,SAASihH,GACrC3xE,WAAW,eACX4uD,MAAM49C,EAAW,KAAMC,IACvBt4G,QAAOt7D,MAAA8zK,GAAAtiE,EAAAA,EAAAA,GAAIjqG,IACd,IAAI8rK,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAcM4B,eAAN7tJ,eAAqBlnB,EAAMgM,EAAOzD,EAAMumE,GAAgB,IAADkmG,OAAT,IAANlmG,IAAAA,EAAS,MAC1CvmE,IACHA,EAAO,CAACxJ,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,eAEhD,MAAMk8C,GAAoBY,EAAAj2K,KAAK85B,SAASihH,GACrC3xE,WAAW,eACX4uD,MAAM,iBAAkB,KAAM/2H,IAC9Bs8D,QAAOt7D,MAAAg0K,GAAAxiE,EAAAA,EAAAA,GAAIjqG,IACd,IAAI8rK,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAcM8B,2BAAN/tJ,eAAiCu4D,EAAMzzE,EAAOzD,EAAMumE,QAAM,IAANA,IAAAA,EAAS,MAC3D,MAAMslG,EAAoBr1K,KAAK85B,SAASihH,GACrC3xE,WAAW,eACX4uD,MAAM,cAAe,KAAMt3C,GAC3BnjB,QAAQ,cAAe/zD,GAC1B,IAAI8rK,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAcM+B,qBAANhuJ,eAA2BvF,EAAQ3V,EAAOzD,EAAMumE,GAAgB,IAADqmG,EAC7D,IAAIvlG,EACAjtE,EACAyyK,OAHgD,IAANtmG,IAAAA,EAAS,MAIvD,MAAMisE,EAAc,IAAI1kH,KACpBg/I,EAAAA,GAAeC,SAAW3zJ,IAC5BiuD,EAAY,IACZjtE,EAAQo4I,EACRq6B,EAAW,CAAC,cAAe7sK,IAEzB8sK,EAAAA,GAAeE,WAAa5zJ,IAC9BiuD,EAAY,KACZjtE,EAAQo4I,EACRq6B,EAAW,CAAC,cAAe7sK,IAEzB8sK,EAAAA,GAAeG,QAAU7zJ,IAC3BiuD,EAAY,KACZjtE,EAAQ,GACRyyK,EAAW,CAACr2K,KAAK85B,SAASu6F,IAAI5B,UAAUwG,UAAUE,eAEpD,MAAMk8C,GAAoBe,EAAAp2K,KAAK85B,SAASihH,GACrC3xE,WAAW,eACX4uD,MAAM,cAAennD,EAAWjtE,IAChC25D,QAAOt7D,MAAAm0K,GAAA3iE,EAAAA,EAAAA,GAAI4iE,IACd,IAAIf,EAEFA,EADEvlG,EACmBslG,EAClBh9C,WAAWtoD,GACX9iE,MAAMA,EAAQ,GAGIooK,EAClBpoK,MAAMA,EAAQ,GAEnB,MAAMsoK,QAAsBD,EAAmBhsK,MAC/C,aAAatJ,KAAKw1K,0BAA0BD,EAAetoK,EAC7D,EAEAmnK,EAgBMsC,qBAANvuJ,eAA2BxQ,EAAM1W,EAAMgM,EAAOzD,EAAMumE,QAAM,IAANA,IAAAA,EAAS,MAC3D,MAAMglG,QAAe/0K,KAAK40K,oBAAoBj9J,EAAM1W,GACpD,OAAK8zK,EAGD9zK,IAAS01K,EAAAA,GAAeC,aACb52K,KAAK81K,sCAAsC,UAAWf,EAAOpxK,GAAIsJ,EAAOzD,EAAMumE,GAEzF9uE,IAAS01K,EAAAA,GAAeE,mBACb72K,KAAK81K,sCAAsC,eAAgBf,EAAOpxK,GAAIsJ,EAAOzD,EAAMumE,GAE3F,CAAC,GAAI,MARH,CAAC,GAAI,KAShB,EAEAqkG,EAUMoB,0BAANrtJ,eAAgCotJ,EAAetoK,GAC7C,GAAIsoK,EAAc1lH,MAChB,MAAO,CAAC,GAAI,MAEd,MAAM3iB,EAAW,GACXojC,EAAQ,GACRwmG,EAAavB,EAAchoI,KACjC,IAAIwpI,GAAqB,EACrBD,IAAe7pK,EAAQ,IACzB8pK,GAAqB,GAEvB,IAAIC,EAAe,KACfC,EAAgB,EACpB,MAAMC,EAAa,CAAC,EAepB,OAdA3B,EAAc1jK,SAAS09E,IACrB,GAAI0nF,IAAkBhqK,EAAQ,EAC5B,OAEF,MAAMksB,EAAMo2D,EAAI5rF,GACVwgH,EAAO,IAAIwrD,EAAKx2I,GACtBm3C,EAAMhuE,KAAK6hH,GACXj3E,EAAS5qC,KAAKtC,KAAKm3K,UAAUh+I,EAAKgrF,EAAM+yD,IACpCH,GAAsBE,IAAkBhqK,IAC1C+pK,EAAeznF,GAEjB0nF,GAAe,UAEX5uJ,QAAQ4kB,IAAIC,GACX,CAACojC,EAAO0mG,EACjB,EAAC5C,EAEMgD,6BAAPjvJ,eAAoCkvJ,GAClC,MAAM5C,EAAW,GACjB,IAAK,MAAMlhK,KAAQ8jK,EAAa,CAC5B,MAAMjJ,EAASkJ,EAAAA,EAA0BtvH,MAAKq6C,GAAUA,EAAOz+F,QAAU2P,IACrE66J,GACAqG,EAASnyK,KAAK8rK,EAAOz6E,KAE7B,CACA,OAAO8gF,CACX,EAEEL,EAYM+C,UAANhvJ,eAAgBgR,EAAKgrF,EAAM9+D,GAGzB,SAFMrlD,KAAKu3K,eAAep+I,EAAKgrF,SACzBnkH,KAAKi9I,cAAc9jH,EAAKgrF,GAC1BA,EAAKqzD,QAAS,CAChB,MAAMzC,QAAe/0K,KAAKg1K,4BAA4B7wD,EAAKqzD,QAAS,SAAUnyH,GAC1E0vH,IACF5wD,EAAKszD,WAAa1C,EAAOhwD,MAE7B,CACA,GAAIZ,EAAKuzD,iBAAkB,CACzB,MAAM3C,QAAe/0K,KAAKg1K,4BAA4B7wD,EAAKuzD,iBAAkB,eAAgBryH,GACzF0vH,IACF5wD,EAAKwzD,iBAAmB5C,EAAOhwD,MAEnC,CACIZ,EAAKyzD,WACPzzD,EAAK0zD,mBAAqB73K,KAAKo3K,6BAA6BjzD,EAAKyzD,iBAE7D53K,KAAK83K,eAAe3+I,EAAKgrF,SACzBnkH,KAAK+3K,cAAc5+I,EAAKgrF,SACxBnkH,KAAKw7I,kBAAkBriH,EAAKgrF,SAC5BnkH,KAAKg4K,kBAAkB7+I,EAAKgrF,EACpC,EAEAiwD,EAUMn3B,cAAN90H,eAAoBgR,EAAKgrF,GACvB,MAAM8zD,QAA2Bj4K,KAAK85B,SAASihH,GAC5C3xE,WAAW,cACXmmB,IAAIp2D,GACJ7vB,MACH,IAAK2uK,EAAmBv8F,OACtB,OAEF,MAAMpzE,EAAO2vK,EAAmB3vK,OAChC67G,EAAKqzD,QAAUlvK,EAAKkvK,QACpBrzD,EAAKuzD,iBAAmBpvK,EAAK4vK,aAC7B/zD,EAAKg0D,SAAW7vK,EAAK6vK,SACrBh0D,EAAKi0D,MAAQ9vK,EAAK8vK,MAClBj0D,EAAKk0D,MAAQ/vK,EAAK+vK,MAClBl0D,EAAKm0D,MAAQhwK,EAAKgwK,KACpB,EAEAlE,EAUM54B,kBAANrzH,eAAwBgR,EAAKgrF,GAC3B,MAAMo0D,QAA2Bv4K,KAAK85B,SAASihH,GAC5C3xE,WAAW,eACXmmB,IAAIp2D,GACJ7vB,MACH,IAAKivK,EAAmB78F,OACtB,OAEF,MAAMpzE,EAAOiwK,EAAmBjwK,OAC5BA,EAAKkwK,cACPr0D,EAAKg3C,eAAiB7yJ,EAAKkwK,YAAYt1F,UAErC56E,EAAKmwK,YACPt0D,EAAKs0D,UAAYnwK,EAAKmwK,WAEpBnwK,EAAKk9I,aAAel9I,EAAKk9I,YAAYtiE,SACvCihC,EAAKqhC,YAAcl9I,EAAKk9I,YAAYtiE,UAEtCihC,EAAKu0D,SAAWpwK,EAAKqwK,cACvB,EAEAvE,EAUM2D,cAAN5vJ,eAAoBgR,EAAKgrF,GACvB,MAAMy0D,QAAsB54K,KAAK85B,SAASihH,GACvC3xE,WAAW,eACXmmB,IAAIp2D,GACJ7vB,MACH,IAAKsvK,EAAcl9F,OACjB,OAEF,MAAMpzE,EAAOswK,EAActwK,OAC3B67G,EAAK00D,YAAcxjG,SAAS/sE,EAAKizJ,WACnC,EAEA6Y,EAUMmD,eAANpvJ,eAAqBgR,EAAKgrF,GACxB,MAAM20D,QAAwB94K,KAAK85B,SAASihH,GACzC3xE,WAAW,SACXmmB,IAAIp2D,GACJ7vB,MACH,IAAKwvK,EAAgBp9F,OACnB,OAEF,MAAMw9E,EAAU4f,EAAgBxwK,OAC5B4wJ,EAAQ6S,YACV5nD,EAAK4nD,UAAY7S,EAAQ6S,WAEvB7S,EAAQ8S,WACV7nD,EAAK6nD,SAAW9S,EAAQ8S,UAErB7nD,EAAKogC,QACRpgC,EAAKogC,MAAQ2U,EAAQ3U,OAEnB2U,EAAQ1T,aAAe0T,EAAQ1T,YAAYtiE,SAC7CihC,EAAKqhC,YAAc0T,EAAQ1T,YAAYtiE,UAErCg2E,EAAQrS,eAAiBqS,EAAQrS,cAAc3jE,SACjDihC,EAAK0iC,cAAgBqS,EAAQrS,cAAc3jE,UAE7CihC,EAAK40D,YAAc1iK,QAAQ6iJ,EAAQ8f,aAAe9f,EAAQ+f,cAAgB/f,EAAQggB,SAAWhgB,EAAQigB,cACjGjgB,EAAQpL,QAAU/rJ,MAAMgpB,QAAQmuI,EAAQpL,UAC1C3pC,EAAKi1D,WAAalgB,EAAQpL,OAAOrsJ,OACjC0iH,EAAK2pC,OAASoL,EAAQpL,QAEpBoL,EAAQnL,WAAahsJ,MAAMgpB,QAAQmuI,EAAQnL,aAC7C5pC,EAAK4pC,UAAYmL,EAAQnL,UACzB5pC,EAAKk1D,cAAgBngB,EAAQnL,UAAUtsJ,QAEzC0iH,EAAKm1D,SAAWjjK,QAAQ6iJ,EAAQqgB,OAChCp1D,EAAKq1D,iBAAmBnjK,QAAQ6iJ,EAAQugB,kBACxC,MAAMC,EAAkBA,CAACC,EAAW14K,EAAM24K,KACxC,IAAKD,EACH,OAAO,EAET,MAAME,EAAiBlyK,OAAOkX,OAAO86J,GACrC,OAAK53K,MAAMgpB,QAAQ8uJ,GAGZA,EAAepyK,QACnBqyK,GACKA,EAAShxC,cAAgB7nI,IACvB64K,EAASC,eACX51D,EAAKy1D,GAAgBE,EAASC,eAEzB,KAKXt4K,OAbO,CAaD,EAEV0iH,EAAK61D,mBAAqBN,EAAgBxgB,EAAQygB,UAAW,UAAW,uBACxEx1D,EAAK81D,kBAAoBP,EAAgBxgB,EAAQygB,UAAW,QAAS,sBACrEx1D,EAAK+1D,mBAAqBR,EAAgBxgB,EAAQygB,UAAW,SAAU,uBACvEx1D,EAAKg2D,oBAAsBT,EAAgBxgB,EAAQygB,UAAW,UAAW,wBACzEx1D,EAAKi2D,oBAAsBV,EAAgBxgB,EAAQygB,UAAW,UAAW,wBACrEzgB,EAAQnyC,OACV5C,EAAK4C,KAAOmyC,EAAQnyC,MAElBmyC,EAAQ34I,QACV4jG,EAAK5jG,MAAQ24I,EAAQ34I,OAEnB24I,EAAQxS,aACVviC,EAAKuiC,WAAawS,EAAQxS,YAExBwS,EAAQx0J,OACVy/G,EAAKz/G,KAAOw0J,EAAQx0J,MAElBw0J,EAAQ0e,WACVzzD,EAAKyzD,SAAW1e,EAAQ0e,SAE5B,EAEAxD,EAUM0D,eAAN3vJ,eAAqBgR,EAAKgrF,GACxB,MAAMk2D,QAA+Br6K,KAAK85B,SAASihH,GAChD3xE,WAAW,mBACX4uD,MAAM,SAAU,KAAM7+F,GACtB7vB,MACE+wK,EAAuBxqH,QAC1Bs0D,EAAKm2D,gBAAkBD,EAAuB9sI,KAElD,EAEE6mI,EAUI4D,kBAAN7vJ,eAAwBgR,EAAKgrF,GAC3B,MAAMo2D,QAA+Bv6K,KAAK85B,SAASihH,GAChD3xE,WAAW,eACXmmB,IAAIp2D,GACJ7vB,MAKH,GAFA66G,EAAKq2D,iBAAkB,EAEnBD,EAAuB7+F,OAAQ,CACjC,MAAM++F,EAAiBF,EAAuBjyK,OAG9C,GAAImyK,EAAeC,cAAe,CAChCv2D,EAAKq2D,iBAAkB,EAGvBr2D,EAAKw2D,wBAA0BF,EAAeC,cAIhBpyK,KAC5B,IAAK,MAAMsyK,KAAoBtyK,EAC7B67G,EAAKy2D,GAAoBtyK,EAAKsyK,EAChC,EAGFC,CAAqBJ,EAAeC,cACtC,CACF,CACF,EAEAtG,EASMtyB,WAAN35H,eAAiBgR,GACf,MAAM2oH,EAAa9hJ,KAAK85B,SAAS6Q,UAAU40F,cACzC,cAEF,aAAauiB,EAAW,CAAE1G,OAAQjiH,GACpC,EAEAi7I,EAKM0G,cAAN3yJ,iBACE,MAAM4yJ,QAAsB/6K,KAAK85B,SAASihH,GACvC3xE,WAAW,UACXmmB,IAAI,eACJjmF,MACH,OAAIyxK,EAAcr/F,OACTq/F,EAAczyK,OAAOq1D,MAEvB,CACT,EAACy2G,EAEK4G,aAAN7yJ,eAAoB7f,GAClB,IACE,MAAM2yK,EAAuBj7K,KAAK85B,SAAS6Q,UAAU40F,cAAc,wBAErE,aADmC07C,EAAqB3yK,EAExD,CAAE,MAAO9G,GACP,OAAOA,CACT,CACF,GAACokH,EAAAA,EAAAA,GAAAsuD,EAAA,EAAA/wK,IAAA,WAAAmG,IAt1BD,WACE,OAAOtJ,KAAKm0K,SACd,KAACD,CAAA,CAnBwC,+GCvK3C,IAGMgH,EAAiB,eAAAl7I,EAAAk7I,EAAAx6K,UA2HrB,SAAAw6K,EACEC,EACAC,EACA76J,EACAsmG,EACAE,QAJM,IAANo0D,IAAAA,EAAS,WACC,IAAVC,IAAAA,EAAa,WACR,IAAL76J,IAAAA,EAAQ,WACD,IAAPsmG,IAAAA,EAAU,WACN,IAAJE,IAAAA,EAAO,MAEP/mH,KAAKq7K,QAAUF,EACfn7K,KAAKs7K,YAAcF,EACnBp7K,KAAK6rC,OAAStrB,EACdvgB,KAAK4mH,SAAWC,EAChB7mH,KAAK8mH,MAAQC,CACf,CA7CC,OAED/mF,EAKAu7I,WAAA,WACE,MAAM18J,EAAS,CACb7e,KAAKm7K,OACLn7K,KAAK+mH,KACL/mH,KAAKo7K,WACLp7K,KAAKugB,MACLvgB,KAAK6mH,SACLp/G,QAAQ7D,GAAUyS,QAAQzS,KAE5B,OAAOib,EAAOpd,OAAS,EAAIod,EAAO4U,KAAK,MAAQ,IACjD,EA8BAuM,EAKAgkH,QAAA,WACE,OACGhkJ,KAAKm7K,QACFn7K,KAAKo7K,YACLp7K,KAAKugB,OACLvgB,KAAK6mH,SACL7mH,KAAK+mH,KAKJ,CACLo0D,OAAQn7K,KAAKm7K,OACbC,WAAYp7K,KAAKo7K,WACjB76J,MAAOvgB,KAAKugB,MACZsmG,QAAS7mH,KAAK6mH,QACdE,KAAM/mH,KAAK+mH,MARJ,IAUX,GAACnB,EAAAA,EAAAA,GAAAs1D,EAAA,EAAA/3K,IAAA,OAAAmG,IAzJD,WACE,OAAOtJ,KAAK8mH,KACd,EAEAjmG,IAKA,SAASjd,GACP5D,KAAK8mH,MAAQljH,CACf,GAEA,CAAAT,IAAA,SAAAmG,IAKA,WACE,OAAOtJ,KAAKq7K,OACd,EAEAx6J,IAKA,SAAWjd,GACT5D,KAAKq7K,QAAUz3K,CACjB,GAEA,CAAAT,IAAA,aAAAmG,IAKA,WACE,OAAOtJ,KAAKs7K,WACd,EAEAz6J,IAKA,SAAejd,GACb5D,KAAKs7K,YAAc13K,CACrB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK6rC,MACd,EAEAhrB,IAKA,SAAUjd,GACR5D,KAAK6rC,OAASjoC,CAChB,GAEA,CAAAT,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAK4mH,QACd,EAEA/lG,IAKA,SAAYjd,GACV5D,KAAK4mH,SAAWhjH,CAClB,KAACs3K,CAAA,CA1FoB,GAuKjBM,EAAiB,eAAA1kE,EAAA0kE,EAAA96K,UAqFrB,SAAA86K,EAAY7jK,EAAa8jK,EAAcl3B,QAAvB,IAAJ5sI,IAAAA,EAAO,WAAW,IAAL8jK,IAAAA,EAAQ,WAAW,IAALl3B,IAAAA,EAAQ,MAC7CvkJ,KAAK8kH,MAAQntG,EACb3X,KAAK07K,OAASD,EACdz7K,KAAK8vK,OAASvrB,CAChB,CAnCC,OAEDztC,EAKAykE,WAAA,WACE,MAAMI,EAAc,GAUpB,OATI37K,KAAK2X,MACPgkK,EAAYr5K,KAAKtC,KAAK2X,MAEpB3X,KAAKukJ,OACPo3B,EAAYr5K,KAAKtC,KAAKukJ,OAEpBvkJ,KAAKy7K,OACPE,EAAYr5K,KAAKtC,KAAKy7K,OAEjBE,EAAYl6K,OAAS,EAAIk6K,EAAYloJ,KAAK,MAAQ,IAC3D,EAkBAqjF,EAKAktC,QAAA,WACE,OAAKhkJ,KAAK2X,MAAS3X,KAAKy7K,OAAUz7K,KAAKukJ,MAGhC,CACL5sI,KAAM3X,KAAK2X,KACX8jK,MAAOz7K,KAAKy7K,MACZl3B,MAAOvkJ,KAAKukJ,OALL,IAOX,GAAC3+B,EAAAA,EAAAA,GAAA41D,EAAA,EAAAr4K,IAAA,OAAAmG,IAlGD,WACE,OAAOtJ,KAAK8kH,KACd,EAEAjkG,IAKA,SAASjd,GACP5D,KAAK8kH,MAAQlhH,CACf,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK07K,MACd,EAEA76J,IAKA,SAAUjd,GACR5D,KAAK07K,OAAS93K,CAChB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAK8vK,MACd,EAEAjvJ,IAKA,SAAUjd,GACR5D,KAAK8vK,OAASlsK,CAChB,KAAC43K,CAAA,CAtDoB,GAgHFI,EAAU,WAkJ7B,SAAAA,EACE72D,EACA9jH,EACA0C,EACAo5I,EACA8+B,EACAC,EACAC,GAEA/7K,KAAKg8K,OAASj3D,EACd/kH,KAAKi8K,MAAQh7K,EACbjB,KAAK4wH,IAAMjtH,EACX3D,KAAKk8K,SAAWL,EAChB77K,KAAKm8K,SAAWL,EAChB97K,KAAKo8K,OAASr/B,EACd/8I,KAAKq8K,aAAeN,CACtB,CApCC,OAsCDH,EAAAl7K,UAKAsjJ,QAAA,WACE,MAAO,CACLj/B,MAAO/kH,KAAK+kH,MACZ9jH,KAAMjB,KAAKiB,KACX0C,GAAI3D,KAAK2D,GACTk4K,QAAS77K,KAAK67K,QAAU77K,KAAK67K,QAAQ73B,UAAY,KACjD83B,QAAS97K,KAAK87K,QAAU97K,KAAK87K,QAAQ93B,UAAY,KACjD+3B,YAAa/7K,KAAK+7K,YAEtB,GAACn2D,EAAAA,EAAAA,GAAAg2D,EAAA,EAAAz4K,IAAA,cAAAmG,IA3KD,WACE,OAAOtJ,KAAKq8K,YACd,EAEAx7J,IAKA,SAAgBjd,GACd5D,KAAKq8K,aAAez4K,CACtB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAKo8K,MACd,EAEAv7J,IAKA,SAAUjd,GACR5D,KAAKo8K,OAASx4K,CAChB,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAKg8K,MACd,EAEAn7J,IAKA,SAAUjd,GACR5D,KAAKg8K,OAASp4K,CAChB,GAEA,CAAAT,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAKi8K,KACd,EAEAp7J,IAKA,SAASjd,GACP5D,KAAKi8K,MAAQr4K,CACf,GAEA,CAAAT,IAAA,KAAAmG,IAKA,WACE,OAAOtJ,KAAK4wH,GACd,EAEA/vG,IAKA,SAAOjd,GACL5D,KAAK4wH,IAAMhtH,CACb,GAEA,CAAAT,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAKk8K,QACd,EAEAr7J,IAKA,SAAYjd,GACV5D,KAAKk8K,SAAWt4K,CAClB,GAEA,CAAAT,IAAA,UAAAmG,IAKA,WACE,OAAOtJ,KAAKm8K,QACd,EAEAt7J,IAKA,SAAYjd,GACV5D,KAAKm8K,SAAWv4K,CAClB,KAACg4K,CAAA,CA9H4B,GA6LxB,MAAMlH,EAA4B9lK,IAAc,IAAD0tK,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpD,MAAMC,EAAe1uK,EAAStG,OACxBuzK,EAAU,IAAIX,EACU,QADOoB,EACf,QADeC,EACnCe,EAAazB,eAAO,IAAAU,OAAA,EAApBA,EAAsBpB,cAAM,IAAAmB,EAAAA,EAAI,KACA,QADIE,EAChB,QADgBC,EACpCa,EAAazB,eAAO,IAAAY,OAAA,EAApBA,EAAsBrB,kBAAU,IAAAoB,EAAAA,EAAI,KACT,QADaE,EACpB,QADoBC,EACxCW,EAAazB,eAAO,IAAAc,OAAA,EAApBA,EAAsBp8J,aAAK,IAAAm8J,EAAAA,EAAI,KACF,QADME,EACf,QADeC,EACnCS,EAAazB,eAAO,IAAAgB,OAAA,EAApBA,EAAsBh2D,eAAO,IAAA+1D,EAAAA,EAAI,KACP,QADWE,EACjB,QADiBC,EACrCO,EAAazB,eAAO,IAAAkB,OAAA,EAApBA,EAAsBh2D,YAAI,IAAA+1D,EAAAA,EAAI,MAE1BhB,EAAU,IAAIN,EACQ,QADSwB,EACf,QADeC,EACnCK,EAAaxB,eAAO,IAAAmB,OAAA,EAApBA,EAAsBtlK,YAAI,IAAAqlK,EAAAA,EAAI,KACH,QADOE,EACd,QADcC,EAClCG,EAAaxB,eAAO,IAAAqB,OAAA,EAApBA,EAAsB1B,aAAK,IAAAyB,EAAAA,EAAI,KACJ,QADQE,EACf,QADeC,EACnCC,EAAaxB,eAAO,IAAAuB,OAAA,EAApBA,EAAsB94B,aAAK,IAAA64B,EAAAA,EAAI,MAEjC,OAAO,IAAIxB,EACT0B,EAAav4D,MACbu4D,EAAar8K,KACbq8K,EAAa35K,GACbiL,EAASjL,GACTk4K,EACAC,EACAwB,EAAavB,YACd,EAWUwB,EAA6Bt8K,GACjC,IAAI26K,EACT,KACA36K,EACA,KACA,KACA,IAAIi6K,EACJ,IAAIM,EACJ,oPC3fG,MAAMgC,EAAgB,CAC3B5G,OAAQ,SACR6G,WAAY,aACZ5G,aAAc,gBAeH6G,GAPiB/1K,OAAOkX,OAAO2+J,GAOf,CAC3B5G,OAAQ,SACRC,aAAc,eACd4G,WAAY,eAeD9G,GAPkBhvK,OAAOkX,OAAO6+J,GAOf,CAC5B9G,OAAQ,SACRC,aAAc,iBAyBH8G,GAjBkBh2K,OAAOkX,OAAO83J,GAiBV,CACjCiH,KAAM,OACNC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,MAAO,QACPC,QAAS,UACTC,WAAY,aACZC,OAAQ,SACRC,SAAU,WACVC,QAAS,YAUEC,GAFyB32K,OAAOkX,OAAO8+J,GAEnB,CAC/BG,QAAS,UACTS,YAAa,cACbC,WAAY,aACZC,aAAc,eACdC,YAAa,gBAMR,IAAMC,EAA4B,WAkEvC,SAAAA,EAAYh7K,EAAIohH,EAAO5hF,GACrBnjC,KAAK4wH,IAAMjtH,EACX3D,KAAKg8K,OAASj3D,EACd/kH,KAAK4+K,aAAez7I,CACtB,CAhBC,OAgBAyiF,EAAAA,EAAAA,GAAA+4D,EAAA,EAAAx7K,IAAA,KAAAmG,IA/DD,WACE,OAAOtJ,KAAK4wH,GACd,EAEA/vG,IAKA,SAAOjd,GACL5D,KAAK4wH,IAAMhtH,CACb,GAEA,CAAAT,IAAA,QAAAmG,IAKA,WACE,OAAOtJ,KAAKg8K,MACd,EAEAn7J,IAKA,SAAUjd,GACR5D,KAAKg8K,OAASp4K,CAChB,GAEA,CAAAT,IAAA,cAAAmG,IAKA,WACE,OAAOtJ,KAAK4+K,YACd,EAEA/9J,IAKA,SAAgBjd,GACd5D,KAAK4+K,aAAeh7K,CACtB,KAAC+6K,CAAA,CAtDsC,GA4E5BE,EAA0B,SAAAC,GA8DrC,SAAAD,EAAYl7K,EAAIohH,EAAO5hF,EAAa47I,EAAaC,GAAY,IAADl/I,EAG/B,OAF3BA,EAAAg/I,EAAAh9K,KAAA,KAAM6B,EAAIohH,EAAO5hF,IAAY,MACxB87I,aAAeF,EACpBj/I,EAAKo/I,WAAaF,EAASl/I,CAC7B,CAfC,OAnDoC2uE,EAAAA,EAAAA,GAAAowE,EAAAC,GAAAD,EAAAn+K,UA+BrCy+K,cAAA,SAAcC,GACZ,OAAOp/K,KAAK++K,YAAYzxK,SAAS8xK,EACnC,GAiCCx5D,EAAAA,EAAAA,GAAAi5D,EAAA,EAAA17K,IAAA,cAAAmG,IA3DD,WACE,OAAOtJ,KAAKi/K,YACd,EAEAp+J,IAQA,SAAgBjd,GACd5D,KAAKi/K,aAAer7K,CACtB,GAAC,CAAAT,IAAA,YAAAmG,IAmBD,WACE,OAAOtJ,KAAKk/K,UACd,EAEAr+J,IAKA,SAAcjd,GACZ5D,KAAKk/K,WAAat7K,CACpB,KAACi7K,CAAA,CAnDoC,CAASF,qCCrKhD,IAL0B,CACxBtsG,MAAOt6C,aACP2/C,OAAQ3/C,mOCcV,MAAMsnJ,EAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGd8nG,EAAc97K,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC1B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,qBACL6jH,EAAoB,gBACpB6rB,EAAe,gBACfC,EAAe,cACfC,EAAa,YACbC,EAAW,eACXC,EAAc,KACd1wD,EAAI,KACJnuH,GACEw+K,EAEJ,OACEv8E,EAAAA,cAAC68E,EAAAA,EAAW,CACVnuG,SAAUA,EACVouG,IAAKnsB,EACL7jH,MAAOA,EACPo/E,KAAMA,EACN0wD,eAAgBA,EAChBJ,gBAAiBA,EACjBC,gBAAiBA,EACjBC,cAAeA,EACfC,YAAaA,EACb/2C,YAAa7nI,GACb,EA8EN,IA1E2Bg/K,KACzB,MAAM,OAAEn9I,IAAW+rH,EAAAA,EAAAA,MAGnBvoJ,EAAAA,EAAAA,YAAU,KACR+4K,EAAa13G,aACN,KACL03G,EAAa13G,YAAY,IAE1B,IAGH,MAAM,mBAAEu4G,IAAuBn/D,EAAAA,EAAAA,gBAAe,aA0BxCo/D,EAXmBD,EAAmBE,MAAM34K,QAChD44K,GAASA,EAAKjzK,KAAK01B,SAAWA,GAAYu9I,EAAKjzK,KAAK8oH,SAASoqD,gCAOvB97J,KACtC67J,GAAS,YAAWA,EAAKjzK,KAAKgiH,QAAQtsF,MAECrP,KAAK,QAE9C,OACEyvE,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,kBACVy7G,SAAS,EACTnB,aAAcA,GAEdn8E,EAAAA,cAAA,OAAKzpD,UAAY,6CACfypD,EAAAA,cAAA,OACEzpD,UAAU,4BACV51C,MAAO,CAAEurK,aAAc,WAEvBlsE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,yCACHu/B,eAAe,yBAInBggE,EAAAA,cAACu9E,EAAAA,EAAS,CAACxpH,YAAa,EAAGypH,QAASP,IAEpCj9E,EAAAA,cAACy9E,EAAAA,EAAI,CAACC,aAAcpB,IAEpBt8E,EAAAA,cAAC29E,EAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,WAI1C,sEC9Hb,MAAM4zI,EAA2BA,CAACC,EAAYC,KACnD,MAAMC,EAAkBD,EAAa78J,KAAK+8J,GAAUA,EAAMC,WAsB1D,OAnB4CJ,EACzC35K,QAAQg1I,GACmBA,EAAOglC,qBAAqBj9J,KAAKk9J,IAAY,IAAAC,EAAA,OAA0B,QAA1BA,EAAKD,EAAaxrD,gBAAQ,IAAAyrD,OAAA,EAArBA,EAAuBC,SAAS,IAEnFn0K,MAAMo0K,GAAoBP,EAAgBh0K,SAASu0K,OAE7Er9J,KAAKi4H,IACJ,MAAMqlC,EAAgBrlC,EAAOglC,qBAAqBh6K,QAAQi6K,IAAkB,IAADK,EACzE,MAAMF,EAAuC,QAAxBE,EAAGL,EAAaxrD,gBAAQ,IAAA6rD,OAAA,EAArBA,EAAuBH,UAC/C,OAAON,EAAgBh0K,SAASu0K,EAAgB,IAGlD,MAAO,IACFplC,EACHglC,qBAAsBK,EACvB,GAIqC,oCCmmB5C,IA1nBqB,CACnB5zH,QAAS,IACT8zH,UAAW,CACT,CACE7tB,SAAU,sDACV8tB,iBAAkB,gCAClBC,MACE,+bACFvqK,KAAM,WACN8kI,OAAQ,wBACR0lC,MACE,sHAEJ,CACEhuB,SACE,sEACF8tB,iBAAkB,iCAClBC,MACE,2eACFvqK,KAAM,gBACN8kI,OAAQ,uCACR0lC,MACE,uIAEJ,CACEhuB,SAAU,gDACV8tB,iBAAkB,6BAClBC,MACE,4YACFvqK,KAAM,cACN8kI,OAAQ,mBACR0lC,MACE,iHAEJ,CACEhuB,SAAU,wDACV8tB,iBAAkB,4BAClBC,MACE,4gBACFvqK,KAAM,YACN8kI,OAAQ,4BACR0lC,MACE,mHAEJ,CACEhuB,SAAU,2DACV8tB,iBAAkB,0BAClBC,MACE,ycACFvqK,KAAM,kBACN8kI,OAAQ,eACR0lC,MACE,qHAEJ,CACEhuB,SAAU,gDACV8tB,iBAAkB,4BAClBC,MACE,kVACFvqK,KAAM,iBACN8kI,OAAQ,oBACR0lC,MACE,qJAEJ,CACEhuB,SAAU,iEACV8tB,iBAAkB,gCAClBC,MACE,yXACFvqK,KAAM,kBACN8kI,OAAQ,qDACR0lC,MACE,wHAEJ,CACEhuB,SACE,0EACF8tB,iBAAkB,gCAClBC,MACE,ogBACFvqK,KAAM,gBACN8kI,OAAQ,gCACR0lC,MACE,sHAEJ,CACEhuB,SACE,oEACF8tB,iBAAkB,gCAClBC,MACE,4hBACFvqK,KAAM,oBACN8kI,OAAQ,cACR0lC,MACE,6HAEJ,CACEhuB,SAAU,iDACV8tB,iBAAkB,0BAClBC,MACE,mbACFvqK,KAAM,iBACN8kI,OAAQ,sBACR0lC,MACE,4GAEJ,CACEhuB,SACE,0EACF8tB,iBAAkB,0BAClBC,MACE,iWACFvqK,KAAM,eACN8kI,OAAQ,oBACR0lC,MACE,4GAEJ,CACEhuB,SAAU,2DACV8tB,iBAAkB,4BAClBC,MACE,2UACFvqK,KAAM,gBACN8kI,OAAQ,sBACR0lC,MACE,2HAEJ,CACEhuB,SAAU,iEACV8tB,iBAAkB,iCAClBC,MACE,iaACFvqK,KAAM,oBACN8kI,OAAQ,iBACR0lC,MACE,sKAEJ,CACEhuB,SAAU,4CACV8tB,iBAAkB,6BAClBC,MACE,2iBACFvqK,KAAM,cACN8kI,OAAQ,2BACR0lC,MACE,+GAEJ,CACEhuB,SAAU,0DACV8tB,iBAAkB,6BAClBC,MACE,ofACFvqK,KAAM,qBACN8kI,OAAQ,oBACR0lC,MACE,kMAEJ,CACEhuB,SAAU,uDACV8tB,iBAAkB,4BAClBC,MACE,ibACFvqK,KAAM,gBACN8kI,OAAQ,aACR0lC,MACE,4IAEJ,CACEhuB,SAAU,2DACV8tB,iBAAkB,6BAClBC,MACE,oYACFvqK,KAAM,eACN8kI,OAAQ,UACR0lC,MACE,4JAEJ,CACEhuB,SACE,6EACF8tB,iBAAkB,iCAClBC,MACE,kfACFvqK,KAAM,cACN8kI,OAAQ,iBACR0lC,MACE,mIAEJ,CACEhuB,SAAU,qDACV8tB,iBAAkB,0BAClBC,MACE,8TACFvqK,KAAM,iBACN8kI,OAAQ,wBACR0lC,MACE,4IAEJ,CACEhuB,SAAU,4DACV8tB,iBAAkB,4BAClBC,MACE,mWACFvqK,KAAM,YACN8kI,OAAQ,UACR0lC,MACE,mHAEJ,CACEhuB,SAAU,kEACV8tB,iBAAkB,gCAClBC,MACE,kbACFvqK,KAAM,aACN8kI,OAAQ,eACR0lC,MACE,kHAEJ,CACEhuB,SACE,qEACF8tB,iBAAkB,gCAClBC,MACE,yMACFvqK,KAAM,gBACN8kI,OAAQ,iCACR0lC,MACE,oHAEJ,CACEhuB,SACE,mFACF8tB,iBAAkB,gCAClBC,MACE,0bACFvqK,KAAM,wBACN8kI,OAAQ,4CACR0lC,MACE,gHAEJ,CACEhuB,SACE,qEACF8tB,iBAAkB,0BAClBC,MACE,oWACFvqK,KAAM,cACN8kI,OAAQ,mBACR0lC,MACE,gJAEJ,CACEhuB,SACE,mEACF8tB,iBAAkB,0BAClBC,MACE,oWACFvqK,KAAM,mBACN8kI,OAAQ,wCACR0lC,MACE,4IAEJ,CACEhuB,SACE,sEACF8tB,iBAAkB,gCAClBC,MACE,6eACFvqK,KAAM,iBACN8kI,OAAQ,kCACR0lC,MACE,wHAEJ,CACEhuB,SACE,8FACF8tB,iBAAkB,gCAClBC,MACE,8WACFvqK,KAAM,kBACN8kI,OAAQ,4BACR0lC,MACE,gHAEJ,CACEhuB,SAAU,8DACV8tB,iBAAkB,gCAClBC,MACE,+tBACFvqK,KAAM,gBACN8kI,OAAQ,2BACR0lC,MACE,gHAEJ,CACEhuB,SAAU,gDACV8tB,iBAAkB,4BAClBC,MACE,gVACFvqK,KAAM,YACN8kI,OAAQ,wDACR0lC,MACE,2IAEJ,CACEhuB,SACE,gFACF8tB,iBAAkB,iCAClBC,MACE,kXACFvqK,KAAM,cACN8kI,OAAQ,cACR0lC,MACE,iIAEJ,CACEhuB,SAAU,gDACV8tB,iBAAkB,0BAClBC,MACE,ocACFvqK,KAAM,kBACN8kI,OAAQ,mBACR0lC,MACE,2JAEJ,CACEhuB,SACE,mEACF8tB,iBAAkB,iCAClBC,MACE,yWACFvqK,KAAM,gBACN8kI,OAAQ,sBACR0lC,MACE,uHAEJ,CACEhuB,SAAU,8DACV8tB,iBAAkB,6BAClBC,MACE,yaACFvqK,KAAM,gBACN8kI,OAAQ,qCACR0lC,MACE,+HAEJ,CACEhuB,SACE,2EACF8tB,iBAAkB,iCAClBC,MACE,okBACFvqK,KAAM,aACN8kI,OAAQ,WACR0lC,MACE,oHAEJ,CACEhuB,SAAU,yDACV8tB,iBAAkB,6BAClBC,MACE,kaACFvqK,KAAM,cACN8kI,OAAQ,2BACR0lC,MACE,8KAEJ,CACEhuB,SACE,sEACF8tB,iBAAkB,4BAClBC,MACE,+YACFvqK,KAAM,UACN8kI,OAAQ,sBACR0lC,MACE,gJAEJ,CACEhuB,SAAU,8DACV8tB,iBAAkB,4BAClBC,MACE,6UACFvqK,KAAM,gBACN8kI,OAAQ,mBACR0lC,MACE,sJAEJ,CACEhuB,SAAU,8CACV8tB,iBAAkB,6BAClBC,MACE,myBACFvqK,KAAM,cACN8kI,OAAQ,uCACR0lC,MACE,sHAEJ,CACEhuB,SACE,0FACF8tB,iBAAkB,0BAClBC,MACE,ohBACFvqK,KAAM,oBACN8kI,OAAQ,yCACR0lC,MACE,4HAEJ,CACEhuB,SAAU,6CACV8tB,iBAAkB,gCAClBC,MACE,mfACFvqK,KAAM,eACN8kI,OAAQ,qBACR0lC,MACE,8IAEJ,CACEhuB,SACE,mEACF8tB,iBAAkB,gCAClBC,MACE,gdACFvqK,KAAM,oBACN8kI,OAAQ,uCACR0lC,MACE,iHAEJ,CACEhuB,SACE,qGACF8tB,iBAAkB,0BAClBC,MACE,wQACFvqK,KAAM,iBACN8kI,OAAQ,kBACR0lC,MACE,wKAEJ,CACEhuB,SAAU,8DACV8tB,iBAAkB,gCAClBC,MACE,iPACFvqK,KAAM,mBACN8kI,OAAQ,yCACR0lC,MACE,yHAEJ,CACEhuB,SAAU,2DACV8tB,iBAAkB,gCAClBC,MACE,smBACFvqK,KAAM,aACN8kI,OAAQ,oBACR0lC,MACE,2HAEJ,CACEhuB,SACE,8FACF8tB,iBAAkB,iCAClBC,MACE,mjBACFvqK,KAAM,WACN8kI,OAAQ,mBACR0lC,MACE,4IAEJ,CACEhuB,SAAU,qDACV8tB,iBAAkB,0BAClBC,MACE,kgBACFvqK,KAAM,kBACN8kI,OAAQ,wBACR0lC,MACE,sHAEJ,CACEhuB,SACE,mEACF8tB,iBAAkB,6BAClBC,MACE,yfACFvqK,KAAM,iBACN8kI,OAAQ,YACR0lC,MACE,oJAEJ,CACEhuB,SAAU,gEACV8tB,iBAAkB,iCAClBC,MACE,+6BACFvqK,KAAM,iBACN8kI,OAAQ,iDACR0lC,MACE,+GAEJ,CACEhuB,SACE,uEACF8tB,iBAAkB,4BAClBC,MACE,sbACFvqK,KAAM,aACN8kI,OAAQ,kBACR0lC,MACE,mHAEJ,CACEhuB,SACE,uFACF8tB,iBAAkB,iCAClBC,MACE,8uBACFvqK,KAAM,iBACN8kI,OAAQ,mCACR0lC,MACE,qHAEJ,CACEhuB,SAAU,yDACV8tB,iBAAkB,6BAClBC,MACE,0pBACFvqK,KAAM,iBACN8kI,OAAQ,iBACR0lC,MACE,4GAEJ,CACEhuB,SACE,mEACF8tB,iBAAkB,gCAClBC,MACE,qTACFvqK,KAAM,eACN8kI,OAAQ,UACR0lC,MACE,4JAEJ,CACEhuB,SACE,gGACF8tB,iBAAkB,4BAClBC,MACE,sPACFvqK,KAAM,gBACN8kI,OAAQ,uBACR0lC,MACE,uJAEJ,CACEhuB,SACE,oFACF8tB,iBAAkB,gCAClBC,MACE,4bACFvqK,KAAM,iBACN8kI,OAAQ,6CACR0lC,MACE,sJAEJ,CACEhuB,SACE,oEACF8tB,iBAAkB,gCAClBC,MACE,kUACFvqK,KAAM,YACN8kI,OAAQ,OACR0lC,MACE,gHAEJ,CACEhuB,SACE,qEACF8tB,iBAAkB,gCAClBC,MACE,uaACFvqK,KAAM,eACN8kI,OAAQ,kBACR0lC,MACE,+GAEJ,CACEhuB,SACE,sEACF8tB,iBAAkB,iCAClBC,MACE,k1BACFvqK,KAAM,kBACN8kI,OAAQ,qBACR0lC,MACE,qHAEJ,CACEhuB,SACE,sFACF8tB,iBAAkB,gCAClBC,MACE,wcACFvqK,KAAM,iBACN8kI,OAAQ,oCACR0lC,MACE,gHAEJ,CACEhuB,SAAU,mDACV8tB,iBAAkB,6BAClBC,MACE,iQACFvqK,KAAM,kBACN8kI,OAAQ,aACR0lC,MACE,qJAEJ,CACEhuB,SAAU,8DACV8tB,iBAAkB,gCAClBC,MACE,maACFvqK,KAAM,gBACN8kI,OAAQ,YACR0lC,MACE,yRChdR,IAxJuBz+K,IAA8C,IAA7C,YAAE0+K,EAAW,uBAAEC,GAAwB3+K,EAC7D,MAAM,QAAEw1J,EAAO,SAAEp/H,EAAQ,iBAAE0hI,IAAqBh1J,EAAAA,EAAAA,YAAW69G,EAAAA,KAErD,EAACi+D,EAAY,EAACC,IAAkBv8K,EAAAA,EAAAA,WAAS,IACzC,EAACw8K,EAAe,EAACC,IAAqBz8K,EAAAA,EAAAA,WAAS,IAG/C,EAAC08K,EAAU,EAACC,IAAgB38K,EAAAA,EAAAA,WAAS,IAE3CM,EAAAA,EAAAA,YAAU,KAER,GAAI4yJ,GAAWkpB,EAAa,CAAC,IAADQ,EAAAC,EAAAC,EAAAC,EAM1B,MAAMC,GACoB,QAAxBJ,EAAA1pB,EAAQlI,wBAAgB,IAAA4xB,GAAc,QAAdC,EAAxBD,EAA0BK,oBAAY,IAAAJ,OAAd,EAAxBA,EAAwCv1K,SAAS80K,MAAgB,EAC7Dc,GACoB,QAAxBJ,EAAA5pB,EAAQlI,wBAAgB,IAAA8xB,GAAiB,QAAjBC,EAAxBD,EAA0BK,uBAAe,IAAAJ,OAAjB,EAAxBA,EAA2Cz1K,SAAS80K,MAAgB,EAElEY,IAAYV,GACdC,EAAeS,GAGbE,IAAeV,GACjBC,EAAkBS,EAEtB,IACC,CAAChqB,EAASkpB,IAQb,MAAMgB,EAAYj7J,MAAOi6J,EAAaiB,KAEpC,UAEQvpJ,EAAS6tH,6BAA6B,CAC1C07B,aAAcA,EACdjB,YAAaA,GAEjB,CAAE,MAAO5gL,GACPgB,QAAQhB,MAAM,yBAA0BA,GACxC8hL,MACG,8CAA6CD,6BAElD,GASIE,EAAep7J,MAAOi6J,EAAaiB,KAEvC,UACQvpJ,EAAS+tH,gCAAgC,CAC7Cw7B,aAAcA,EACdjB,YAAaA,GAEjB,CAAE,MAAO5gL,GACPgB,QAAQhB,MAAM,yBAA0BA,GACxC8hL,MACG,kDAAiDD,6BAEtD,GASIG,EAAiBA,CAACrsJ,EAAGksJ,KACX,MAAVlsJ,EAAEh0B,KAAyB,UAAVg0B,EAAEh0B,KAA6B,aAAVg0B,EAAEh0B,MAC1Cg0B,EAAExkB,iBACF8wK,EAAaJ,GACf,EASIK,EAAcA,CAACvsJ,EAAGksJ,KACtBlsJ,EAAExkB,iBACF8wK,EAAaJ,EAAa,EAUtBI,EAAet7J,UAEnBw6J,GAAa,GAEQ,mBAAjBU,GAAsCb,EAId,gBAAjBa,GAAmCf,EAGlB,gBAAjBe,GAAkCf,GAC3CC,GAAe,SACTgB,EAAanB,EAAa,iBACN,mBAAjBiB,GAAqCb,GAE9ChgL,QAAQhB,MAAM,2CAPd+gL,GAAe,SACTa,EAAUhB,EAAa,kBAL7BC,GAAuBj8F,GAAI,GAAA7hE,QAAAkvF,EAAAA,EAAAA,GAAQrtB,GAAI,CAAEg8F,YACnCgB,EAAUhB,EAAa,yBACvBmB,EAAanB,EAAa,uBAY5B5mB,IACNmnB,GAAa,EAAM,EAGrB,OACEz/E,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAMk8I,EAAcqB,EAAAA,IAAcC,EAAAA,IAClCr2I,KAAK,KACLiN,KAAK,aACLy1G,QAAUyyB,EAAiD,KAArCvrJ,GAAKusJ,EAAYvsJ,EAAG,eAC1C0sJ,WAAanB,EAAoD,KAAxCvrJ,GAAKqsJ,EAAersJ,EAAG,eAChDzyB,KAAK,WAEPw+F,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAMo8I,EAAiBsB,EAAAA,IAAgBC,EAAAA,IACvCx2I,KAAK,KACL0iH,QAAUyyB,EAAoD,KAAxCvrJ,GAAKusJ,EAAYvsJ,EAAG,kBAC1C0sJ,WACGnB,EAAuD,KAA3CvrJ,GAAKqsJ,EAAersJ,EAAG,kBAEtCzyB,KAAK,WAEH,oFChKH,MAAMs/K,EAAalhJ,IACxB,IAAI,mBAAEmhJ,IAAuBljE,EAAAA,EAAAA,gBAAe,cA8C5C,OAAOkjE,EAAmB7D,MACvB34K,QAAOg1I,GAAUA,EAAOrvI,KAAK01B,SAAWA,IACxCte,KAAI,CAACi4H,EAAQ1hI,KAAK,IAAAmpK,EAAAC,EAAA,MAAM,CACvBhhL,IAAK4X,EACLq0G,KAAMqtB,EAAOrvI,KAAKgiH,KAClBzrH,GAAI84I,EAAOrvI,KAAKzJ,GAChBqsC,MAAOysG,EAAOrvI,KAAK4iC,MACnBo0I,yBAA0B3nC,EAAOrvI,KAAK8oH,SAASkuD,yBAC/CC,uBAAwB5nC,EAAOrvI,KAAK8oH,SAASouD,iCAC7CC,aAAc9nC,EAAOrvI,KAAK8oH,SAASquD,aAAa3gL,MAChD4gL,gBAAiB/nC,EAAOrvI,KAAK8oH,SAASuuD,yBAAyB7gL,MAC/D8gL,0BAA2BjoC,EAAOrvI,KAAK8oH,SAASwuD,0BAChDC,qBAAsBj4K,WAAoD,QAA1Cw3K,EAACznC,EAAOrvI,KAAK8oH,SAASyuD,4BAAoB,IAAAT,OAAA,EAAzCA,EAA2CU,WAAW,IAAK,KAC5FC,0BAA2BpoC,EAAOrvI,KAAK8oH,SAAS2uD,0BAChDC,cAAeroC,EAAOrvI,KAAK8oH,SAAS4uD,cAAclhL,MAClDmhL,sBAAuBtoC,EAAOrvI,KAAK8oH,SAAS6uD,sBAC5C9jL,KAAMw7I,EAAOrvI,KAAKnM,KAClB+jL,oBAA6D,QAA1Cb,EAAE1nC,EAAOrvI,KAAK8oH,SAAS8uD,2BAAmB,IAAAb,OAAA,EAAxCA,EAA0CrwB,UAC/D2tB,qBAAsBhlC,EAAOrvI,KAAK8oH,SAASurD,qBAC3C3+I,OAAQ25G,EAAOrvI,KAAK01B,OACpBmiJ,uBAAwBxoC,EAAOrvI,KAAK8oH,SAAS+uD,uBAC9C,GAAE,uNC5CA,MAAMC,EAA2BhsB,IAEtC,MAAMisB,EAAY,CAChB,6BACA,iCACA,4BACA,0BACA,gCACA,iCAGF,IAAKjsB,GAA8B,iBAAZA,EAErB,OADA12J,QAAQhB,MAAM,sCACP,KAQT,OAJ6BmG,OAAO0J,KAAK6nJ,GAAS1vJ,MAChD,CAACjB,EAAGC,IAAM28K,EAAUx4K,QAAQpE,GAAK48K,EAAUx4K,QAAQnE,KAGzBgc,KAAIrhB,GAAO+1J,EAAQ/1J,IAAK,EAGzCiiL,EAAgBlsB,IAW3B,IAAKA,GAA8B,iBAAZA,EAErB,OADA12J,QAAQhB,MAAM,sCACP,KAGT,MAIM6jL,EAJuB19K,OAAOoe,QAAQmzI,GAAS1vJ,MACnD,CAACjB,EAAGC,IAAMA,EAAE,GAAKD,EAAE,KAIlBd,QAAO,CAAC69K,EAAgBvqK,EAAOqsB,KAC9B,GAAIk+I,EAAe,IAAMl+I,EAAI,GAAG,GAC9B,OAAO,CACT,IAED5iB,KAAI+gK,GAAYA,EAAS,GAAG15K,MAAM,KAAK,KAI1C,MAAO,CACL0H,KAHW8xK,EAAU7gK,KAAIghK,GAASA,EAAM7uJ,OAAO,GAAGwX,gBAAe1a,KAAK,IAItEgyJ,WAAYJ,EACb,EAcUK,EAAqBC,GAC5BA,EAAgB,KACX,YACEA,EAAgB,KAClB,OACEA,EAAgB,EAClB,OAEA,OAIEC,EAA2B1sB,IACtC,IAAKA,GAA8B,iBAAZA,EAErB,OADA12J,QAAQhB,MAAM,sCACP,KAGT,MAAMqkL,EAAiBl+K,OAAOoe,QAAQmzI,GAAS1vJ,MAAK,CAACjB,EAAGC,IAAMA,EAAE,GAAKD,EAAE,KAEvE,MAAO,CACLu9K,OAAQD,EAAerhK,KAAIuhK,GAAYA,EAAS,GAAGl6K,MAAM,KAAK,KAC9DgT,OAAQgnK,EAAerhK,KAAIuhK,GAAYA,EAAS,KACjD,EAGUC,EAAgBruK,GACP,iBAATA,GAAqBA,EAAKlW,OAAS,EAClB,MAAnBkW,EAAK3V,OAAO,GAAc,GAAE2V,KAAW,GAAEA,MAEzC,GAKEsuK,EAAuBA,CAACryJ,EAASwtJ,IACrCxtJ,EAAQnsB,QAAOg1I,IACpB,GAAI2kC,EAAW3zK,MAAKy4K,GAAaA,EAAU92D,OAASqtB,EAAOrtB,OACzD,OAAO,CACT,IAKS+2D,EAAmBA,CAACvyJ,EAASwtJ,KAEfxtJ,aAAO,EAAPA,EAASnsB,QAAOg1I,IACvC,GAAI2kC,EAAW3zK,MAAKy4K,GAAaA,EAAU92D,OAASqtB,EAAOrtB,OACzD,OAAO,CACT,KAIC3nH,QAAOg1I,IACN,IAAI2pC,EAAehF,EAAWp5H,MAC5Bk+H,GAAaA,EAAU92D,OAASqtB,EAAOrtB,OAGzC,SAAIg3D,IAA0D,IAA1CA,EAAahC,yBAIjC,IAEDpiL,MAAM,EAAG,oICMd,IA3JiB6R,IACf,MAAM,QAAEqlJ,EAAO,SAAEp/H,EAAQ,SAAE0/H,IAAahzJ,EAAAA,EAAAA,YACtC69G,EAAAA,KAEI,MAAExgH,EAAK,MAAEkhH,EAAK,aAAEshE,EAAY,UAAEC,EAAS,YAAElE,EAAW,YAAEt5C,EAAW,aAAEixC,EAAe,GAAE,cAAEwM,EAAa,qBAAEC,GAAyB3yK,GAC9H,EAAC4yK,EAAW,EAACC,IAAiB1gL,EAAAA,EAAAA,WAAS,IACvC,EAAC2gL,EAAc,EAACC,IAAoB5gL,EAAAA,EAAAA,WAAS,IAC7C,OAAE88B,IAAW+rH,EAAAA,EAAAA,MAEnBvoJ,EAAAA,EAAAA,YAAU,KAEH87K,GAAgBt5C,IAEnBtmI,QAAQ+1B,KAAK,yCACbquJ,GAAiB,IAGf1tB,GAAWkpB,IAKPlpB,EAAQygB,WAAazgB,EAAQygB,UAAUyI,GAC3CsE,GAAc,GAEdA,GAAc,GAElB,GACC,CAACxtB,EAASotB,EAAWlE,EAAat5C,IASrC,MAiDM+9C,EAAcA,CAACC,EAASC,KAE5BjtJ,EAASwnH,cAAc,CAAEh5I,KAAM,CAAE,UAAew+K,KAAa/tJ,OAAM,KACjEuqJ,MACEpgF,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,0EACpE,GACD,EA2BE8jJ,EAAiBA,KACjBP,EA7CiBrE,KACrB,MAAM32J,EAAQytI,EAAQygB,UACtB,IAAKluJ,IAAUA,EAAM22J,GACnB,OAAO,YAGF32J,EAAM22J,GACbyE,EAAYp7J,EAAO,SAAS,EAuC1Bw7J,CAAe7E,GApFCj6J,OAAOi6J,EAAakE,EAAWx9C,EAAaixC,EAAcwM,EAAeC,KAE3F,IAYIM,EAZAI,EAAa,CACfC,eAAgB,CACdC,cAAerN,GAAgB,GAC/BsN,aAAcjF,GAAe,IAE/BkF,oBAAqB,CACnBF,eAAeb,aAAa,EAAbA,EAAev2I,QAAS,GACvCq3I,cAAcd,aAAa,EAAbA,EAAen3D,OAAQ,IAEvCm4D,uBAAwBf,GAAwB,IAKhDM,EAAU,IACL5tB,EAAQygB,UACX,CAACyI,GAAc,CACbkE,YACAlE,cACAt5C,cACAixC,eACAyN,UAAW,IAAIlwJ,QACK,YAAhBwxG,EAA4Bo+C,EAAa,CAAC,IAIpDL,EAAYC,EAAS,aACfttB,EAASiuB,kBAAkB3+C,EAAaixC,EAAcqI,EAAalpB,EAAQ,EAyD/EwuB,CAAYtF,EAAakE,EAAWx9C,EAAaixC,EAAcwM,EAAeC,GAEhFE,GAAeD,EAAW,EAK5B,OAAKE,EAKHzjF,EAAAA,cAAA,OACEr/F,MAAOA,EACP41C,UAAY,kDAAiD4sI,IAC7Dp2B,QA3BgB94H,IAClBA,EAAExkB,iBACFq0K,GAAgB,EA0BdW,UAvCmBxwJ,IACP,MAAVA,EAAEh0B,KAAyB,UAAVg0B,EAAEh0B,KAA6B,aAAVg0B,EAAEh0B,MAC1Cg0B,EAAExkB,iBACFq0K,IACF,EAoCEtiL,KAAK,SACLmlB,SAAS,KACV,MAAIk7F,GAAS7hB,EAAAA,cAAA,YAAO6hB,KAChB0hE,GAAcvjF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMwhJ,EAAAA,OACtCnB,GAAcvjF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMyhJ,EAAAA,MAblC3kF,EAAAA,cAAAA,EAAAA,SAAA,KAcD,4FC1IH,MAAM4kF,EAAkBnO,IAC7B,IAAKA,GAAkC,iBAAdA,EACvB,OAAO,KAGT,MAAMoO,EAAkB,CAAC,EASzB,OAPApgL,OAAOoe,QAAQ4zJ,GAAW9nK,SAAQqb,IAC3B66J,EAAgB76J,EAAK,GAAG47G,eAC3Bi/C,EAAgB76J,EAAK,GAAG47G,aAAe,IAEzCi/C,EAAgB76J,EAAK,GAAG47G,aAAaxmI,KAAM,QAAO4qB,EAAK,GAAGk1J,cAAc,IAGnE2F,CAAe,EAUXC,EAAaA,CAACC,EAAoBhnL,IACzCgnL,GAAsBA,EAAmBxwJ,eAAex2B,GACnDgnL,EAAmBhnL,GAAMwyB,KAAK,QAE9B,+IC+EX,IArHoB5f,IAClB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,YACJ84D,EAAW,kBACXC,EAAiB,YACjBC,EAAW,OACXC,EAAM,SACNtC,EAAQ,SACRn0G,EAAQ,YACRk3D,EAAW,cACXw/C,EAAa,eACbC,EAAc,uBACdlG,GACExuK,GACE,OAAEivB,IAAW+rH,EAAAA,EAAAA,KAEb25B,GADqBxE,EAAAA,EAAAA,GAAWlhJ,GACGklB,MAAKy0F,GAAUA,EAAOrtB,OAASA,IAExE,OACElsB,EAAAA,cAAA,OACEzpD,UAAU,wCACV51C,MAAO,CAAE4kL,WAAY,cACrB,cAAa72G,GAEbsxB,EAAAA,cAAA,OACEzpD,UAAU,oDACV51C,MAAO,CAAEb,SAAU,aAEnBkgG,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,WAAU8jG,IAAQ7uG,MAAO,CAACooK,QAAS,KAC3CP,GACCllF,EAAAA,cAAA,QAAMzpD,UAAY,gBAAcisI,EAAAA,EAAAA,IAAkB0C,MAChDllF,EAAAA,cAAA,aACc,UAAXpgE,EACoC,eAAnC4iJ,EAAAA,EAAAA,IAAkB0C,GAA+B,YACZ,UAAnC1C,EAAAA,EAAAA,IAAkB0C,GAA0B,QACP,UAAnC1C,EAAAA,EAAAA,IAAkB0C,GAA0B,WAC1C1C,EAAAA,EAAAA,IAAkB0C,IACxB1C,EAAAA,EAAAA,IAAkB0C,KAI1BllF,EAAAA,cAAA,OACEosE,IAAM,GAAE0Q,sDACRvyC,IAAI,OAIVvqC,EAAAA,cAAA,OAAKzpD,UAAU,mDACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kEACX6uI,GACAplF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC0lF,EAAAA,EAAQ,CACP7O,aAAc/pI,EACdq2I,aAAc,UACdC,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,EACby9C,cAAeiC,aAAa,EAAbA,EAAezD,sBAC9ByB,qBAAsBgC,aAAa,EAAbA,EAAevD,0BAI1CsD,GACCrlF,EAAAA,cAAC2lF,EAAAA,EAAc,CACbvC,UAAW10G,EACXwwG,YAAahzD,EACbizD,uBAAwBA,IAI5Bn/E,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,WAAU8jG,IACf31E,UAAU,qDAETzJ,IAGJk4I,GAAeC,GACdjlF,EAAAA,cAAA,OAAKzpD,UAAU,uDACbypD,EAAAA,cAAA,cAAQA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,iBAAiB,OAAY,IAAEglJ,EACxGhlF,EAAAA,cAAA,YAAM,OAAU,IAAEilF,GAGrBE,GACCnlF,EAAAA,cAAA,OAAKzpD,UAAU,uDACbypD,EAAAA,cAAA,cAAQA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,WAAW,OAC7E4lJ,EAAAA,GAAmBT,GAAQvlJ,IAAWulJ,GAG1CtC,GACC7iF,EAAAA,cAAA,OAAKzpD,UAAU,2DACbypD,EAAAA,cAAA,cAAQA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,aAAa,MACjF6iJ,IAmBH,uHCOV,IAzHoBlyK,IAClB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,gBACJuwD,EAAe,cACfC,EAAa,YACbC,EAAW,gBACXH,EAAe,eACfI,EAAc,SACdluG,EAAQ,IACRxT,EAAG,YACH0qE,EAAW,cACXw/C,GACEz0K,GACE,cAAE00J,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAA,OACEzpD,UAAU,wCACVt2C,IAAKi7D,EACL,cAAawT,GAEZ8tG,GAAmBM,EAClB98E,EAAAA,cAAA,OAAKzpD,UAAU,sFACbypD,EAAAA,cAAA,OAAKzpD,UAAU,iBACbypD,EAAAA,cAAC6lF,EAAAA,EAAW,CACVlrJ,IAAK6hJ,EACLsJ,MAAOhJ,EACPiJ,UAAU,EACVC,SAAS,EACTjlL,MAAM,OACNC,OAAO,OACPilL,SACEjmF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAQzpD,UAAU,+EAChBypD,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAU,aACVrT,KAAMgjJ,EAAAA,MAEP7gB,EAAc,CAAE5kK,GAAI,2BAA4Bu/B,eAAgB,iBAEnEggE,EAAAA,cAAA,UAAQzpD,UAAU,+EAChBypD,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAU,aACVrT,KAAMgjJ,EAAAA,MAERlmF,EAAAA,cAAA,QAAMzpD,UAAU,WACb8uH,EAAc,CAAE5kK,GAAI,2BAA4Bu/B,eAAgB,uBAS/EggE,EAAAA,cAAA,OAAKzpD,UAAU,qDACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,UAAS8jG,KAClBlsB,EAAAA,cAAA,OACEosE,IAAM,GAAE0Q,sDACRvyC,IAAI,OAKZvqC,EAAAA,cAAA,OAAKzpD,UAAU,mDACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kEACX6uI,GACAplF,EAAAA,cAAC0lF,EAAAA,EAAQ,CACP7O,aAAc/pI,EACdq2I,aAAc,UACdC,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,IAIU,iBAAnBg3C,GACN58E,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAME,EAAAA,IACNipH,MAAM,UACN1rJ,MAAO,CACLwlL,SAAU,OACVC,YAAa,SAGjBpmF,EAAAA,cAAA,QACEr/F,MAAO,CACLwlL,SAAU,OACV95B,MAAO,UACPg6B,WAAY,OACZD,YAAa,MACbtmL,SAAU,WACV4F,IAAK,QAGNk3K,EAAe11K,QAAQ,KAK9B84F,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,UAAS8jG,IACd31E,UAAU,qDAETkmI,IAGLz8E,EAAAA,cAAA,OAAKzpD,UAAU,yDACZmmI,GAEH18E,EAAAA,cAAA,cAAYzpD,UAAU,qDACpBypD,EAAAA,cAAA,SAAG,IAAQ28E,EAAY,KACvB38E,EAAAA,cAAA,YAAM,KAASlzD,KAGf,uTCnHH,MAAMw5I,EAAuB,CAClC,eACA,cACA,OACA,aACA,YACA,WAYWC,EAA6B,CACxC,iBACA,YAcWC,EAAmB,CAC9B,aACA,WACA,aACA,YACA,mBAaWC,EAA0B,CACrC,cACA,kBACA,mBACA,aAoBIC,EAAY,GAAArlK,OACbolK,EACAD,EACAF,EACAC,GAQQI,EAAgB,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAQWC,EAAqB,CAChC,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEWC,EAAuB,CAClC,QACA,UACA,QACA,QACA,QACA,QACA,QACA,SACA,aACA,UACA,YACA,aAYWC,EAAqBtpG,IAChC,IAAKA,EACH,OAAO,EAET,MAAMupG,EAAYvpG,EAAK70E,MAAM,KAC7B,GAAyB,IAArBo+K,EAAUxoL,OACZ,OAAO,EAET,MAAMyoL,EAAaD,EAAU,GAC7B,IAAKE,EAAYD,GACf,OAAO,EAGT,MAAME,EAAcH,EAAU,GAC9B,OAAOI,EAAmBD,EAAY,EAgB3BE,EAAoB5pG,IAC/B,IAAKA,EACH,OAAO,KAET,MAAMupG,EAAYvpG,EAAK70E,MAAM,KAC7B,GAAyB,IAArBo+K,EAAUxoL,OACZ,OAAO,KAET,MAAMm/E,EAAQvL,SAAS40G,EAAU,IACjC,GAAIrpG,EAAQ,IAAMA,EAAQ,EACxB,OAAO,KAET,MAAMs7E,EAAM7mF,SAAS40G,EAAU,IAC/B,OAAI/tB,EAAM,IAAMA,EAAM,EACb,KAEF,CAAEt7E,QAAOs7E,MAAK,EAYVmuB,EAAsBzpG,GAC1BipG,EAAcv8K,SAASszE,GAYnBupG,EAAeD,IAC1B,GAA0B,IAAtBA,EAAWzoL,OACb,OAAO,EAET,MAAM8oL,EAAUl1G,SAAS60G,GAEzB,QAASK,EAAU,MAAQA,EAAU,KAAK,EAG5C,iJC5Ne,SAASC,EAAiBC,EAAgBC,GAAuB,IAADC,OAA/B,IAAPF,IAAAA,EAAU,WAAmB,IAAbC,IAAAA,EAAgB,MACvE,MAAMzpL,EAAOwpL,IAAiC,QAAhBE,EAAGD,SAAa,IAAAC,OAAA,EAAbA,EAAe1pL,MAChD,IAAK2oL,EAAAA,GAAat8K,SAASrM,GACzB,OAAO,KAET,GAAIyoL,EAAAA,GAAiBp8K,SAASrM,GAAO,CACnC,MAAM2pL,EAAY,IAAIC,EAAAA,EAAmBH,GAIzC,OAHKE,EAAU3pL,OACb2pL,EAAU3pL,KAAOA,GAEZ2pL,CACT,CACA,GAAIjB,EAAAA,GAAwBr8K,SAASrM,GAAO,CAC1C,MAAM2pL,EAAY,IAAIE,EAAAA,EAA0BJ,GAIhD,OAHKE,EAAU3pL,OACb2pL,EAAU3pL,KAAOA,GAEZ2pL,CACT,CACA,GAAIpB,EAAAA,GAAqBl8K,SAASrM,GAAO,CACvC,MAAM2pL,EAAY,IAAIG,EAAAA,EAAkBL,GAIxC,OAHKE,EAAU3pL,OACb2pL,EAAU3pL,KAAOA,GAEZ2pL,CACT,CACA,GAAInB,EAAAA,GAA2Bn8K,SAASrM,GAAO,CAC7C,MAAM2pL,EAAY,IAAII,EAAAA,EAAmBN,GAIzC,OAHKE,EAAU3pL,OACb2pL,EAAU3pL,KAAOA,GAEZ2pL,CACT,CACA,OAAO,IACT,CChDA,IAGqBxnC,EAAU,WAU7B,SAAAA,EAAYz/I,EAAWujL,GAAoB,IAAD+D,EAAAC,EAAAC,EAAAC,EAAAC,OAA5B,IAAF1nL,IAAAA,EAAK,WAAgB,IAAVujL,IAAAA,EAAa,MAClClnL,KAAKg8K,OAAmB,QAAbiP,EAAG/D,SAAU,IAAA+D,OAAA,EAAVA,EAAYlmE,MAC1B/kH,KAAK4wH,IAAMjtH,EACX3D,KAAKsrL,gBAA0B,QAAXJ,EAAChE,SAAU,IAAAgE,OAAA,EAAVA,EAAYxnC,YACjC1jJ,KAAK+vK,QAAoB,QAAbob,EAAGjE,SAAU,IAAAiE,OAAA,EAAVA,EAAY/vC,OAC3Bp7I,KAAKurL,SAAqB,QAAbH,EAAGlE,SAAU,IAAAkE,OAAA,EAAVA,EAAYnnC,QAC5BjkJ,KAAKwrL,SAAqB,QAAbH,EAAGnE,SAAU,IAAAmE,OAAA,EAAVA,EAAY1zD,OAC9B,CAEA,IAAA33F,EAAAojH,EAAA1iJ,UA8MC,OA9MDs/B,EAMAsrJ,gBAAA,SAAgB5nC,GACd1jJ,KAAKyrL,YAAc,GACd1pL,MAAMgpB,QAAQ24H,IAAqC,IAAtBA,EAAWjiJ,QAG7CiiJ,EAAW7xI,SAAS65K,IAClB,MAAMd,EAAYJ,EAAiB,KAAMkB,GACpCd,GAGL5qL,KAAKyrL,YAAYnpL,KAAKsoL,EAAU,GAEpC,EAEA5qJ,EAMA2rJ,cAAA,WACE,OAAO3rL,KAAKyrL,YAAYhqL,OAAS,CACnC,EAEAu+B,EAMA4rJ,uBAAA,SAAuB7wK,GACrB/a,KAAKyrL,YAAYxoL,OAAO8X,EAAO,EACjC,EAEAilB,EAQA6rJ,oBAAA,SAAoB9wK,GAClB,OAAO/a,KAAKyrL,YAAY1wK,EAC1B,EAEAilB,EASA8rJ,gBAAA,SAAgB7qL,GACd,MAAM2pL,EAAYJ,EAAiBvpL,GACnC,OAAK2pL,GAGL5qL,KAAKyrL,YAAYnpL,KAAKsoL,GACfA,GAHE,IAIX,EA0CA5qJ,EAMA+rJ,MAAA,WACE,OAAoB,OAAb/rL,KAAK4wH,KAA0C,IAApB5wH,KAAK4wH,IAAInvH,MAC7C,EAYAu+B,EAMAgkH,QAAA,WACE,MAAM17I,EAAO,CACXy8G,MAAO/kH,KAAK+kH,MACZphH,GAAI3D,KAAK2D,GACT+/I,WAAY,IAKd,OAHA1jJ,KAAK0jJ,WAAW7xI,SAAS+4K,IACvBtiL,EAAKo7I,WAAWphJ,KAAKsoL,EAAU5mC,UAAU,IAEpC17I,CACT,GAEAs9G,EAAAA,EAAAA,GAAAw9B,EAAA,EAAAjgJ,IAAA,QAAAmG,IA9DA,WACE,OAAOtJ,KAAKg8K,MACd,EAEAn7J,IAdA,SAAUkkG,GACR/kH,KAAKg8K,OAASj3D,CAChB,GAAC,CAAA5hH,IAAA,KAAAmG,IA4BD,WACE,OAAOtJ,KAAK4wH,GACd,EAAC/vG,IAZD,SAAOld,GACL3D,KAAK4wH,IAAMjtH,CACb,GAAC,CAAAR,IAAA,aAAAmG,IA4BD,WACE,OAAOtJ,KAAKyrL,WACd,GAAC,CAAAtoL,IAAA,UAAAmG,IA0BD,WACE,OAAOtJ,KAAKurL,QACd,EAEA1qK,IAMA,SAAYojI,GACVjkJ,KAAKurL,SAAWtnC,CAClB,GAEA,CAAA9gJ,IAAA,UAAAmG,IAMA,WACE,OAAOtJ,KAAKwrL,QACd,EAEA3qK,IAMA,SAAY82G,GACV33H,KAAKwrL,SAAW7zD,CAClB,GAEA,CAAAx0H,IAAA,SAAAmG,IAMA,WACE,OAAOtJ,KAAK+vK,OACd,EAEAlvJ,IAMA,SAAWld,GACT3D,KAAK+vK,QAAUpsK,CACjB,KAACy/I,CAAA,CAjO4B,iGCH/B,IAGqB4oC,EAAU,WAQ7B,SAAAA,EAAYj5K,EAAOK,GACjBpT,KAAKisL,SAAW74K,EAChBpT,KAAKksL,WAAan5K,CACpB,CAEA,IAAAitB,EAAAgsJ,EAAAtrL,UA8OC,OA9ODs/B,EAGAmsJ,kBAAA,WACEnsL,KAAKisL,SAAW,KAChBjsL,KAAKosL,cAAgB,IACvB,EAEApsJ,EAGAqsJ,oBAAA,WACErsL,KAAKksL,WAAa,KAClBlsL,KAAKssL,gBAAkB,IACzB,EAEAtsJ,EAGAusJ,iBAAA,WACEvsL,KAAKisL,SAAW,KAChBjsL,KAAKwsL,aAAe,IACtB,EAEAxsJ,EAGAysJ,mBAAA,WACEzsL,KAAKksL,WAAa,KAClBlsL,KAAK0sL,eAAiB,IACxB,GAEA9mE,EAAAA,EAAAA,GAAAomE,EAAA,EAAA7oL,IAAA,YAAAmG,IAsEA,WACE,OAAOtJ,KAAKksL,UACd,EAEArrK,IArEA,SAAc6/D,GACZ,KAAKspG,EAAAA,EAAAA,IAAkBtpG,GACrB,MAAM,IAAI/+E,MAAM,mEAElB,MAAMg/E,EAAOD,EAAK70E,MAAM,KAAK,GACvB+0E,EAAQF,EAAK70E,MAAM,KAAK,GAC9B,IAAK7L,KAAK2sL,QAIR,OAHA3sL,KAAKksL,WAAaxrG,EAClB1gF,KAAKssL,gBAAkB1rG,OACvB5gF,KAAK0sL,eAAiB/rG,GAGxB,GAAItL,SAASqL,EAAK70E,MAAM,KAAK,IAAM7L,KAAKurJ,YACtC,MAAM,IAAI5pJ,MAAM,yEAElB,GAAI0zE,SAASqL,EAAK70E,MAAM,KAAK,MAAQ7L,KAAKurJ,aAAel2E,SAASqL,EAAK70E,MAAM,KAAK,KAAO7L,KAAK4sL,gBAC5F,MAAM,IAAIjrL,MAAM,yEAElB3B,KAAKssL,gBAAkB1rG,EACvB5gF,KAAK0sL,eAAiB/rG,EACtB3gF,KAAKksL,WAAaxrG,CACpB,GAEA,CAAAv9E,IAAA,UAAAmG,IAiCA,WACE,OAAOtJ,KAAKisL,QACd,EAACprK,IA9BD,SAAY6/D,GACV,KAAKspG,EAAAA,EAAAA,IAAkBtpG,GACrB,MAAM,IAAI/+E,MAAM,mEAElB,MAAMg/E,EAAOD,EAAK70E,MAAM,KAAK,GACvB+0E,EAAQF,EAAK70E,MAAM,KAAK,GAC9B,IAAK7L,KAAK6sL,UAIR,OAHA7sL,KAAKisL,SAAWvrG,EAChB1gF,KAAKwsL,aAAe7rG,OACpB3gF,KAAKosL,cAAgBxrG,GAGvB,GAAIvL,SAASqL,EAAK70E,MAAM,KAAK,IAAM7L,KAAK8sL,cACtC,MAAM,IAAInrL,MAAM,wEAElB,GAAI0zE,SAASqL,EAAK70E,MAAM,KAAK,MAAQ7L,KAAK8sL,eAAiBz3G,SAASqL,EAAK70E,MAAM,KAAK,KAAO7L,KAAK+sL,kBAC9F,MAAM,IAAIprL,MAAM,wEAElB3B,KAAKwsL,aAAe7rG,EACpB3gF,KAAKosL,cAAgBxrG,EACrB5gF,KAAKisL,SAAWvrG,CAClB,GAAC,CAAAv9E,IAAA,cAAAmG,IAyBD,WACE,OAAKtJ,KAAKisL,SAGH52G,SAASr1E,KAAKisL,SAASpgL,MAAM,KAAK,IAFhC7L,KAAKwsL,aAAen3G,SAASr1E,KAAKwsL,cAAgB,IAG7D,EAEA3rK,IAKA,SAAgB8/D,GACd,KAAKwpG,EAAAA,EAAAA,IAAYxpG,GACf,MAAM,IAAIh/E,MAAM,2BAEd3B,KAAKsrJ,aACPtrJ,KAAK2sL,QAAW,GAAEhsG,KAAQ3gF,KAAKsrJ,eAG/BtrJ,KAAKwsL,aAAe7rG,CAExB,GAEA,CAAAx9E,IAAA,kBAAAmG,IAKA,WACE,OAAOtJ,KAAKsrJ,aAAej2E,SAASr1E,KAAKsrJ,cAAgB,IAC3D,GAEA,CAAAnoJ,IAAA,eAAAmG,IAKA,WACsB,IAAD0jL,EAAnB,OAAIhtL,KAAKisL,SAGFjsL,KAAKisL,SAASpgL,MAAM,KAAK,GAFL,QAAzBmhL,EAAOhtL,KAAKosL,qBAAa,IAAAY,EAAAA,EAAI,IAGjC,EAEAnsK,IAKA,SAAiB+/D,GACf,IAAKipG,EAAAA,GAAcv8K,SAASszE,GAC1B,MAAM,IAAIj/E,MAAM,2BAEd3B,KAAKurJ,YACPvrJ,KAAK2sL,QAAW,GAAE3sL,KAAKurJ,eAAe3qE,IAGtC5gF,KAAKosL,cAAgBxrG,CAEzB,GAEA,CAAAz9E,IAAA,gBAAAmG,IAKA,WACE,OAAItJ,KAAKksL,WAGF72G,SAASr1E,KAAKksL,WAAWrgL,MAAM,KAAK,IAFlC7L,KAAK0sL,eAAiBr3G,SAASr1E,KAAK0sL,gBAAkB,IAGjE,EAEA7rK,IAKA,SAAkB8/D,GAChB,KAAKwpG,EAAAA,EAAAA,IAAYxpG,GACf,MAAM,IAAIh/E,MAAM,2BAEd3B,KAAKitL,eACPjtL,KAAK6sL,UAAa,GAAElsG,KAAQ3gF,KAAKitL,iBAGjCjtL,KAAK0sL,eAAiB/rG,CAE1B,GAEA,CAAAx9E,IAAA,oBAAAmG,IAKA,WACE,OAAOtJ,KAAKitL,eAAiB53G,SAASr1E,KAAKitL,gBAAkB,IAC/D,GAEA,CAAA9pL,IAAA,iBAAAmG,IAKA,WACwB,IAAD4jL,EAArB,OAAIltL,KAAKksL,WAGFlsL,KAAKksL,WAAWrgL,MAAM,KAAK,GAFL,QAA3BqhL,EAAOltL,KAAKssL,uBAAe,IAAAY,EAAAA,EAAI,IAGnC,EAEArsK,IAKA,SAAmB+/D,GACjB,IAAKipG,EAAAA,GAAcv8K,SAASszE,GAC1B,MAAM,IAAIj/E,MAAM,2BAEd3B,KAAK8sL,cACP9sL,KAAK6sL,UAAa,GAAE7sL,KAAK8sL,iBAAiBlsG,IAG1C5gF,KAAKssL,gBAAkB1rG,CAE3B,KAACorG,CAAA,CA3P4B,iGCH/B,IAGqBmB,EAAS,WAQ5B,SAAAA,EAAYzC,GAAuB,IAADC,OAAT,IAAbD,IAAAA,EAAgB,MAC1B1qL,KAAKi8K,MAAqB,QAAhB0O,EAAGD,SAAa,IAAAC,OAAA,EAAbA,EAAe1pL,KAC5BjB,KAAKotL,OAAQ5qC,EAAAA,EAAAA,IACf,CA6BC,OA3BD2qC,EAAAzsL,UAmCAsjJ,QAAA,WACE,MAAO,CACL/iJ,KAAMjB,KAAKiB,KAEf,GAAC2kH,EAAAA,EAAAA,GAAAunE,EAAA,EAAAhqL,IAAA,OAAAmG,IAvBD,WACE,OAAOtJ,KAAKi8K,KACd,EAEAp7J,IAdA,SAAS5f,GACPjB,KAAKi8K,MAAQh7K,CACf,GAAC,CAAAkC,IAAA,OAAAmG,IAiBD,WACE,OAAOtJ,KAAKotL,KACd,KAACD,CAAA,CAxC2B,iGCF9B,IAGqBrC,EAAyB,SAAAuC,GAQ5C,SAAAvC,EAAYJ,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAE+C,YAFxD,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAAutJ,EAAAvrL,KAAA,KAAM4oL,IAAc,MACf6C,OAAS,IAAIvB,EAAAA,EAAwB,QAAdrB,EAACD,SAAa,IAAAC,OAAA,EAAbA,EAAekC,UAAwB,QAAfS,EAAE5C,SAAa,IAAA4C,OAAA,EAAbA,EAAeX,SAAS7sJ,CACjF,CAUC,OArB2C2uE,EAAAA,EAAAA,GAAAq8E,EAAAuC,GAa5CvC,EAAApqL,UAGAsjJ,QAAA,WACE,MAAM17I,EAAI+kL,EAAA3sL,UAASsjJ,QAAOliJ,KAAC,MAG3B,OAFAwG,EAAKqkL,QAAU3sL,KAAKutL,OAAOZ,QAC3BrkL,EAAKukL,UAAY7sL,KAAKutL,OAAOV,UACtBvkL,CACT,EAACwiL,CAAA,CArB2C,UAAS0C,kICKvD,MAAMC,GAAwBh6E,EAAAA,EAAAA,GACzBk2E,EAAAA,IAGL,IAGM+D,EAAuB,WAsE3B,SAAAA,EAAYC,EAAgBC,EAAqBC,EAAcC,EAAmBC,EAAoBC,EAA2BC,EAA6BC,GAC5JluL,KAAKmuL,gBAAkBR,EACvB3tL,KAAKouL,qBAAuBR,EAC5B5tL,KAAKquL,cAAgBR,EACrB7tL,KAAKsuL,oBAAsBP,EAC3B/tL,KAAKuuL,mBAAqBT,EAC1B9tL,KAAKwuL,2BAA6BR,EAClChuL,KAAKyuL,6BAA+BR,EACpCjuL,KAAK0uL,eAAiBR,CACxB,CAXC,OAWAtoE,EAAAA,EAAAA,GAAA8nE,EAAA,EAAAvqL,IAAA,gBAAAmG,IAxED,WACE,OAAOtJ,KAAK0uL,cACd,EAEA7tK,IAKA,SAAkBjd,GAChB5D,KAAK0uL,eAAiB9qL,CACxB,GAEA,CAAAT,IAAA,4BAAAmG,IAOA,WACE,OAAOtJ,KAAKwuL,0BACd,GAEA,CAAArrL,IAAA,8BAAAmG,IAOA,WACE,OAAOtJ,KAAKyuL,4BACd,GAEA,CAAAtrL,IAAA,oBAAAmG,IAQA,WACE,OAAOtJ,KAAKuuL,kBACd,GAAC,CAAAprL,IAAA,iBAAAmG,IAED,WACE,OAAOtJ,KAAKmuL,eACd,GAAC,CAAAhrL,IAAA,sBAAAmG,IAED,WACE,OAAOtJ,KAAKouL,oBACd,GAAC,CAAAjrL,IAAA,eAAAmG,IAED,WACE,OAAOtJ,KAAKquL,aACd,GAAC,CAAAlrL,IAAA,qBAAAmG,IAED,WACE,OAAOtJ,KAAKsuL,mBACd,KAACZ,CAAA,CApE0B,GAkF7B,MAAMiB,EAAgB,GAKhBC,EAAqB,IAAIlB,EAC7B,kCACA,SACA,SACA,kBACA,YACA,QACA,OACA,aAEFiB,EAAcrsL,KAAKssL,GAKnB,MAAMC,EAAoB,IAAInB,EAC5B,iCACA,SACA,SACA,iBACA,YACA,QACA,OACA,mBAEFiB,EAAcrsL,KAAKusL,GAKnB,MAAMC,EAAqB,IAAIpB,EAC7B,kCACA,SACA,SACA,kBACA,YACA,QACA,OACA,oBAEFiB,EAAcrsL,KAAKwsL,GAKnB,MAAMC,EAAmB,IAAIrB,EAC3B,+BACA,SACA,SACA,eACA,YACA,QACA,OACA,eAEFiB,EAAcrsL,KAAKysL,GAOZ,MAAMC,EAAkBL,EAAc/jL,QAC3C,CAACtC,EAAMsiL,KACLtiL,EAAKsiL,EAAUsD,eAAiBtD,EACzBtiL,IACN,CAAC,GAoCN,MAP6B2mL,GAnBIA,IAAgBxB,EAAyBngL,SAAS2hL,GAoB5EC,CAAiBD,GAGfD,EAAgBC,GAFd,KCvMX,IAGqBzB,EAAwB,SAAA2B,GAQ3C,SAAA3B,EAAY9C,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAM2B,YANpC,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAAqvJ,EAAArtL,KAAA,KAAM4oL,IAAc,MACf0E,qBAAoC,QAAhBzE,EAAGD,SAAa,IAAAC,OAAA,EAAbA,EAAe0E,yBACTlvL,IAA9B2/B,EAAKsvJ,uBACPtvJ,EAAKsvJ,qBAAuB,MAE9BtvJ,EAAKwvJ,WAAaC,EAAiC,QAAdjC,EAAC5C,SAAa,IAAA4C,OAAA,EAAbA,EAAersL,MAAM6+B,CAC7D,EAf2C2uE,EAAAA,EAAAA,GAAA++E,EAAA2B,GAiB3C,IAAAnvJ,EAAAwtJ,EAAA9sL,UA+BC,OAEDs/B,EAGAwvJ,8BAAA,WACExvL,KAAKovL,sBAAuB,CAC9B,EAEApvJ,EAGAgkH,QAAA,WACE,MAAM17I,EAAI6mL,EAAAzuL,UAASsjJ,QAAOliJ,KAAC,MAE3B,OADAwG,EAAK+mL,oBAAsBrvL,KAAKqvL,oBACzB/mL,CACT,GAACs9G,EAAAA,EAAAA,GAAA4nE,EAAA,EAAArqL,IAAA,YAAAmG,IA1CD,WACE,OAAKtJ,KAAKsvL,aACRtvL,KAAKsvL,WAAaC,EAAoBvvL,KAAKiB,OAGtCjB,KAAKsvL,UACd,GAEA,CAAAnsL,IAAA,sBAAAmG,IAOA,WACE,OAAOtJ,KAAKovL,oBACd,EAEAvuK,IAKA,SAAwBjd,GACtB5D,KAAKovL,qBAAuBxrL,CAC9B,KAAC4pL,CAAA,CAhD0C,CAASiC,EAAAA,4GCHtD,IAGqB5E,EAAkB,SAAAsE,GAQrC,SAAAtE,EAAYH,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAE+C,YAFxD,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAAqvJ,EAAArtL,KAAA,KAAM4oL,IAAc,MACf6C,OAAS,IAAIvB,EAAAA,EAAwB,QAAdrB,EAACD,SAAa,IAAAC,OAAA,EAAbA,EAAekC,UAAwB,QAAfS,EAAE5C,SAAa,IAAA4C,OAAA,EAAbA,EAAeX,SAAS7sJ,CACjF,CAUC,OArBoC2uE,EAAAA,EAAAA,GAAAo8E,EAAAsE,GAarCtE,EAAAnqL,UAGAsjJ,QAAA,WACE,MAAM17I,EAAI6mL,EAAAzuL,UAASsjJ,QAAOliJ,KAAC,MAG3B,OAFAwG,EAAKqkL,QAAU3sL,KAAKutL,OAAOZ,QAC3BrkL,EAAKukL,UAAY7sL,KAAKutL,OAAOV,UACtBvkL,CACT,EAACuiL,CAAA,CArBoC,CAAS4E,EAAAA,iGCJhD,IAGqBA,EAAiB,SAAAC,GAQpC,SAAAD,EAAY/E,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAM/B,YANsB,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAA4vJ,EAAA5tL,KAAA,KAAM4oL,IAAc,MACfiF,MAAqB,QAAhBhF,EAAGD,SAAa,IAAAC,OAAA,EAAbA,EAAeiF,KAC5B9vJ,EAAK+vJ,MAAqB,QAAhBvC,EAAG5C,SAAa,IAAA4C,OAAA,EAAbA,EAAevqL,KACvB+8B,EAAK+vJ,QACR/vJ,EAAK+vJ,MAAQ,IACd/vJ,CACH,EAfoC2uE,EAAAA,EAAAA,GAAAghF,EAAAC,GAiBpC,IAAA1vJ,EAAAyvJ,EAAA/uL,UAgDC,OApBDs/B,EAMA8vJ,aAAA,WACE,OAAO9vL,KAAK6vL,MAAMpuL,OAAS,CAC7B,EAcAu+B,EAQA+vJ,sBAAA,SAAsBnsL,EAAOmX,GAC3B/a,KAAK6vL,MAAM90K,GAASnX,CACtB,EAEAo8B,EASAgwJ,mBAAA,SAAmBj1K,GACjB,OAAO/a,KAAK6vL,MAAM90K,EACpB,EAEAilB,EAMAiwJ,YAAA,SAAY/iK,GACVltB,KAAK6vL,MAAMvtL,KAAK4qB,EAClB,EAEA8S,EAMAkwJ,sBAAA,SAAsBn1K,GACpB/a,KAAK6vL,MAAM5sL,OAAO8X,EAAO,EAC3B,EAEAilB,EAMAmwJ,eAAA,SAAejjK,GACb,MAAMnS,EAAQ/a,KAAK6vL,MAAMljL,QAAQugB,IAClB,IAAXnS,GAGJ/a,KAAK6vL,MAAM5sL,OAAO8X,EAAO,EAC3B,EAEAilB,EAGAgkH,QAAA,WACE,MAAM17I,EAAIonL,EAAAhvL,UAASsjJ,QAAOliJ,KAAC,MAG3B,OAFAwG,EAAKsnL,KAAO5vL,KAAK4vL,KACjBtnL,EAAKvF,KAAO/C,KAAK+C,KACVuF,CACT,GAACs9G,EAAAA,EAAAA,GAAA6pE,EAAA,EAAAtsL,IAAA,OAAAmG,IAhHD,WACE,OAAOtJ,KAAK2vL,KACd,EAEA9uK,IAMA,SAAS+uK,GACP5vL,KAAK2vL,MAAQC,CACf,GAEA,CAAAzsL,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK6vL,KACd,EAAChvK,IAiBD,SAAS9d,GACP,IAAKhB,MAAMgpB,QAAQhoB,GACjB,MAAM,IAAIpB,MAAM,8BAElB3B,KAAK6vL,MAAQ9sL,CACf,KAAC0sL,CAAA,CAjEmC,UAAStC,uHCH/C,IAGqBiD,EAAa,WAQhC,SAAAA,EAAY1vG,IACNspG,EAAAA,EAAAA,IAAkBtpG,KACpB1gF,KAAKqwL,MAAQ3vG,EAAK70E,MAAM,KAAK,GAC7B7L,KAAKswL,OAAS5vG,EAAK70E,MAAM,KAAK,GAElC,CAEA,IAAAm0B,EAAAowJ,EAAA1vL,UA2FC,OA3FDs/B,EAGAuwJ,UAAA,WACEvwL,KAAKqwL,MAAQ,KACbrwL,KAAKswL,OAAS,IAChB,EAEAtwJ,EAGAwwJ,WAAA,WACExwL,KAAKswL,OAAS,IAChB,EAEAtwJ,EAGAywJ,UAAA,WACEzwL,KAAKqwL,MAAQ,IACf,GAEAzqE,EAAAA,EAAAA,GAAAwqE,EAAA,EAAAjtL,IAAA,OAAAmG,IAoBA,WACE,OAAKtJ,KAAK2gF,MAAS3gF,KAAK4gF,MAGhB,GAAE5gF,KAAKqwL,SAASrwL,KAAKswL,SAFpB,IAGX,EAEAzvK,IArBA,SAAS6/D,GACP,KAAKspG,EAAAA,EAAAA,IAAkBtpG,GACrB,MAAM,IAAI/+E,MAAM,qCAElB3B,KAAK2gF,KAAOD,EAAK70E,MAAM,KAAK,GAC5B7L,KAAK4gF,MAAQF,EAAK70E,MAAM,KAAK,EAC/B,GAAC,CAAA1I,IAAA,QAAAmG,IAoBD,WACE,OAAOtJ,KAAKswL,MACd,EAEAzvK,IAMA,SAAU+/D,GACR,KAAKypG,EAAAA,EAAAA,IAAmBzpG,GACtB,MAAM,IAAIj/E,MAAM,uCAElB3B,KAAKswL,OAAS1vG,CAChB,GAEA,CAAAz9E,IAAA,OAAAmG,IAMA,WACE,OAAOtJ,KAAKqwL,KACd,EAEAxvK,IAKA,SAAS8/D,GACP,KAAKwpG,EAAAA,EAAAA,IAAYxpG,GACf,MAAM,IAAIh/E,MAAM,sCAElB3B,KAAKqwL,MAAQ1vG,CACf,KAACyvG,CAAA,CA1G+B,GCCbrF,EAAiB,SAAA2F,GAOpC,SAAA3F,EAAYL,GAAuB,IAADC,EAAA7qJ,EAE+B,YAFxC,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAA4wJ,EAAA5uL,KAAA,KAAM4oL,IAAc,MACfhqG,KAAO5gD,EAAK4gD,KAAO,IAAI0vG,EAA2B,QAAdzF,EAACD,SAAa,IAAAC,OAAA,EAAbA,EAAejqG,MAAM5gD,CACjE,CASC,OAnBmC2uE,EAAAA,EAAAA,GAAAs8E,EAAA2F,GAYpC3F,EAAArqL,UAGAsjJ,QAAA,WACE,MAAM17I,EAAIooL,EAAAhwL,UAASsjJ,QAAOliJ,KAAC,MAE3B,OADAwG,EAAKo4E,KAAO1gF,KAAK0gF,KAAKA,KACfp4E,CACT,EAACyiL,CAAA,CAnBmC,CAAS4F,EAAAA,4GCH/C,IAGqB3F,EAAkB,SAAA0F,GAOrC,SAAA1F,EAAYN,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAE+C,YAFxD,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAA4wJ,EAAA5uL,KAAA,KAAM4oL,IAAc,MACf6C,OAAS,IAAIvB,EAAAA,EAAwB,QAAdrB,EAACD,SAAa,IAAAC,OAAA,EAAbA,EAAekC,UAAwB,QAAfS,EAAE5C,SAAa,IAAA4C,OAAA,EAAbA,EAAeX,SAAS7sJ,CACjF,CAUC,OApBoC2uE,EAAAA,EAAAA,GAAAu8E,EAAA0F,GAYrC1F,EAAAtqL,UAGAsjJ,QAAA,WACE,MAAM17I,EAAIooL,EAAAhwL,UAASsjJ,QAAOliJ,KAAC,MAG3B,OAFAwG,EAAKqkL,QAAU3sL,KAAKutL,OAAOZ,QAC3BrkL,EAAKukL,UAAY7sL,KAAKutL,OAAOV,UACtBvkL,CACT,EAAC0iL,CAAA,CApBoC,CAAS2F,EAAAA,iGCJhD,IAGqBA,EAAiB,SAAAjB,GAQpC,SAAAiB,EAAYjG,GAAuB,IAADC,EAAA2C,EAAAxtJ,EAGC,YAHV,IAAb4qJ,IAAAA,EAAgB,OAC1B5qJ,EAAA4vJ,EAAA5tL,KAAA,KAAM4oL,IAAc,MACfiF,MAAqB,QAAhBhF,EAAGD,SAAa,IAAAC,OAAA,EAAbA,EAAeiF,KAC5B9vJ,EAAKg3G,MAAqB,QAAhBw2C,EAAG5C,SAAa,IAAA4C,OAAA,EAAbA,EAAe35F,KAAK7zD,CACnC,CAqCC,OAjDmC2uE,EAAAA,EAAAA,GAAAkiF,EAAAjB,GAcpCiB,EAAAjwL,UAwCAsjJ,QAAA,WACE,MAAM17I,EAAIonL,EAAAhvL,UAASsjJ,QAAOliJ,KAAC,MAG3B,OAFAwG,EAAKsnL,KAAO5vL,KAAK4vL,KACjBtnL,EAAKqrF,KAAO3zF,KAAK2zF,KACVrrF,CACT,GAACs9G,EAAAA,EAAAA,GAAA+qE,EAAA,EAAAxtL,IAAA,OAAAmG,IAxCD,WACE,OAAOtJ,KAAK2vL,KACd,EAEA9uK,IAMA,SAAS+uK,GACP5vL,KAAK2vL,MAAQC,CACf,GAEA,CAAAzsL,IAAA,OAAAmG,IAKA,WACE,OAAOtJ,KAAK82I,KACd,EAEAj2H,IAKA,SAAS8yE,GACP3zF,KAAK82I,MAAQnjD,CACf,KAACg9F,CAAA,CAjDmC,UAASxD,uECLxC,MAAMyD,EAAsB,CACjC,CACE7K,SAAU,eACVlqJ,QAAS,+DACTg1J,SAAS,EACT30B,IAAK,SACL1xJ,MAAO,IACPsmL,sBAAuB,GACvBxiC,UACE,0FACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,UACVlqJ,QACE,+GACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,4CACvBxiC,UACE,sIACFyiC,wBACE,uDAEJ,CACEhL,SAAU,iBACVlqJ,QACE,4HACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,GACvBxiC,UACE,sJACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,UACVlqJ,QACE,oEACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,KACPsmL,sBAAuB,gDACvBxiC,UACE,qEACFyiC,wBAAyB,iDAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,0DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,2CACvBxiC,UAAW,2DACXyiC,wBAAyB,6CAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,0DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,2CACvBxiC,UAAW,wDACXyiC,wBAAyB,4CAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,yDACTg1J,SAAS,EACT30B,IAAK,SACL1xJ,MAAO,IACPsmL,sBAAuB,oCACvBxiC,UAAW,8CACXyiC,wBAAyB,2CAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,qDACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,GACvBxiC,UAAW,wDACXyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,mCACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,mCACvBxiC,UAAW,qCACXyiC,wBAAyB,kCAE3B,CACEhL,SAAU,UACVlqJ,QACE,sEACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,gDACvBxiC,UACE,kEACFyiC,wBAAyB,6CAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,sDACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,kCACvBxiC,UAAW,uDACXyiC,wBAAyB,qCAE3B,CACEhL,SAAU,eACVlqJ,QACE,+EACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,0FACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QACE,uKACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,+MACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QACE,sEACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,6EACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QACE,kFACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,qFACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QACE,wEACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,GACvBxiC,UACE,8EACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,6DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,GACvBxiC,UACE,wEACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,sCACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,6CACvBxiC,UAAW,gDACXyiC,wBACE,qDAEJ,CACEhL,SAAU,iBACVlqJ,QAAS,0DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UAAW,gEACXyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,yDACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UAAW,8DACXyiC,wBAAyB,IAE3B,CACEhL,SAAU,iBACVlqJ,QACE,wFACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,gDACvBxiC,UACE,qFACFyiC,wBAAyB,6CAE3B,CACEhL,SAAU,iBACVlqJ,QACE,sGACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,KACPsmL,sBAAuB,gDACvBxiC,UACE,sHACFyiC,wBAAyB,iDAE3B,CACEhL,SAAU,iBACVlqJ,QAAS,0DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,IACPsmL,sBAAuB,mCACvBxiC,UACE,kEACFyiC,wBAAyB,kCAE3B,CACEhL,SAAU,aACVlqJ,QACE,oEACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,0FACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,aACVlqJ,QAAS,0CACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,8EACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QAAS,4DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UAAW,4DACXyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QACE,+EACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,uEACFyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QACE,8FACFg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UACE,sFACFyiC,wBAAyB,IAG3B,CACEhL,SAAU,eACVlqJ,QAAS,4DACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UAAW,oDACXyiC,wBAAyB,IAE3B,CACEhL,SAAU,eACVlqJ,QAAS,qDACTg1J,SAAS,EACT30B,IAAK,GACL1xJ,MAAO,GACPsmL,sBAAuB,GACvBxiC,UAAW,gDACXyiC,wBAAyB,gJCrU7B,IAAIC,EACkB,oBAAX9iL,SACT8iL,EAAa,IAAI3vF,YAwNnB,IArN0B39F,IAAgC,IAA/B,aAAEgsK,EAAY,QAAED,GAAS/rK,EAClD,MAAM,SAAEo2B,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1B,EAAC7iH,EAAM,EAACyvL,IAAYjrL,EAAAA,EAAAA,UAAS,OAC7B,EAAC8/I,EAAQ,EAACorC,IAAclrL,EAAAA,EAAAA,UAAS0pK,IACjC,EAACyhB,EAAS,EAACC,IAAeprL,EAAAA,EAAAA,UAAS,OACnC,EAACs1B,EAAK,EAACutD,IAAW7iF,EAAAA,EAAAA,WAAS,IAC3B,EAACqrL,EAAc,EAACC,IAAoBtrL,EAAAA,EAAAA,WAAS,IAC7C,cAAEuiK,IAAkB1Z,EAAAA,EAAAA,MACpB,OAAE/rH,IAAW+rH,EAAAA,EAAAA,MAEnBvoJ,EAAAA,EAAAA,YAAU,KAEJopK,GACFwhB,EAAWxhB,EACb,GACC,CAACA,IAOJ,MAqEM6hB,EAAcA,KAClB1oG,GAAQ,GACRqoG,EAAWxhB,EAAa,EAG1B,OACExsE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UACEr/F,MAAO,CAAE2tL,gBAAiB,cAAehuL,QAAS,OAAQiuL,eAAgB,SAAUhJ,WAAY,UAChGx4B,QAASA,IAAMpnE,GAAQ,IAEtB4mF,EACCvsE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAQzpD,UAAU,yGAClBypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,iDAAiDu/B,eAAe,2BAA4B,MAInHggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMsrJ,EAAAA,OAG3BxuF,EAAAA,cAACyuF,EAAAA,EAAK,CACJxpG,KAAM7sD,EACNiS,KAAK,KACLqkJ,OAAQA,KACNX,EAAS,KAAK,EAEhBY,OAAQN,EACRO,UAAQ,EACRC,WAAW,GAEX7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACnuL,MAAO,CAAE4tL,eAAgB,UAAW9gC,aAAW,GAC3DztD,EAAAA,cAAA,MAAIr/F,MAAO,CAAEurK,aAAc,MACzBlsE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,iDAAiDu/B,eAAe,2BAA4B,MAGrHggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,CAACpuL,MAAO,CAAEquL,cAAe,SAClChvF,EAAAA,cAAA,WACEA,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,kDAAkDu/B,eAAe,6BAErF4iH,IAAYurC,EACXnuF,EAAAA,cAAA,OACEr/F,MAAO,CACLsuL,gBAAkB,OAAMrsC,KACxBssC,mBAAoB,SACpBC,eAAgB,QAChBC,aAAc,QACdrjB,SAAU,QACV/qK,OAAQ,QACRE,OAAQ,kBACRD,OAAQ,YACRG,SAAU,YAId4+F,EAAAA,cAAA,OACEr/F,MAAO,CACLyuL,aAAc,QACdruL,MAAO,QACPC,OAAQ,QACRE,OAAQ,kBACRotL,gBAAiB,QACjBrtL,OAAQ,YACRX,QAAS,OACTiuL,eAAgB,SAChBhJ,WAAY,WAGdvlF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmsJ,EAAAA,IAAWt4I,MAAI,EAAC1M,KAAK,KAAKgiH,MAAM,aAG3DrsD,EAAAA,cAAA,OACEzpD,UAAU,eACV51C,MAAO,CACLO,OAAQ,oBACRC,QAAS,OACTb,QAAS,OACTilL,WAAY,WACZ+J,IAAK,OACLzjB,YAAavtK,EAAQ,MAAQ,GAC7B4tK,aAAc,QAGhBlsE,EAAAA,cAAA,SACEr/F,MAAO,CACLQ,QAAS,MACTJ,MAAO,cACPG,OAAQ,oBACR2rE,OAAQ,UACR5rE,OAAQ,MACRmuL,aAAc,OAEhB74I,UAAU,2BACVu0H,QAAQ,gBAEI,UAAXlrI,EAAqB,cAAgB,oBAExCogE,EAAAA,cAAA,SAAOv/F,GAAG,eAAegU,KAAK,eAAe1W,KAAK,OAAOixB,SAvK7C/J,UACxBgP,EAAEw1I,UACF,MAAMhnB,EAAOxuH,EAAExtB,OAAO8oL,MAAM,GAI5B,GAFAxB,EAAS,OAEJtrC,EACH,OAKF,IAFqB,CAAC,YAAa,aAAc,aAE/Br4I,SAASq4I,EAAK1kJ,MAE9B,YADAgwL,EAAS,sCAIX,MAAMyB,EAAoB9jL,SAAS6uE,eAAe,qBAEhDi1G,EAAkB71F,YADhB8oD,EAC+B,GAAEA,EAAKhuI,OAEG,UAAXmrB,EAAqB,iBAAmB,8BAG1E,IACE,MAAM6vJ,QAAwBC,EAAAA,EAAAA,GAAiBjtC,EAAM,CACnDktC,UAAW,EACXC,WAAYC,IACMzB,EAAhByB,EAAU,IAAsD,IAGpEzB,GAAiB,GAGjBN,EAAW1vF,UAAY,KACrB4vF,EAAWF,EAAWx1J,SAGV,IAAIw3J,OACZ1jB,IAAM0hB,EAAWx1J,MAAM,EAG7Bw1J,EAAWzvF,cAAcoxF,GACzBvB,EAAYuB,EACd,CAAE,MACA1B,EAAS,4CACX,KA0HY/tF,EAAAA,cAAA,QAAMv/F,GAAG,qBAAgC,UAAXm/B,EAAqB,iBAAmB,+BACrEthC,GAAS0hG,EAAAA,cAAA,SAAOr/F,MAAO,CAAE0rJ,MAAO,QAAU/tJ,MAKnD0hG,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACX/vF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mBAAmBu/B,eAAe,WAC9DiwJ,UAAU,EACVljC,QAASshC,IAEXruF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,kCAAkCu/B,eAAe,SAC7EiwJ,UAAU,EACVljC,QAtIW9nI,UACnB,GAAKgpK,IAAY3vL,EAAjB,CAMA,IACE,MAAM4xL,QAAgBt5J,EAAS4rH,kBAAkByrC,GAC7CiC,SACIt5J,EAASwnH,cAAc,CAAEh5I,KAAM,CAAE+mK,gBAAiB+jB,IAE5D,CAAE,MAAOj8J,GACP85J,EACE,6EAEJ,CACApoG,GAAQ,EAbR,MAFEooG,EAAS,uCAeG,MAyHX,oHCxMP,SAASoC,EAAuB3nL,EAAW5C,EAAMwqL,GAC/C,MAAM1vL,EAAQ,IAAK8H,GAenB,OAZI5C,EAAKF,IAAM8C,EAAU5D,GAAKwrL,EAAa1qL,IACzChF,EAAMkE,EAAIwrL,EAAa1qL,IAAME,EAAKF,IACzBE,EAAKiB,OAAS2B,EAAU5D,GAAKwrL,EAAa1qL,IAAM0qL,EAAapvL,SACtEN,EAAMkE,EAAIwrL,EAAa1qL,IAAM0qL,EAAapvL,OAAS4E,EAAKiB,QAGtDjB,EAAKH,KAAO+C,EAAU7D,GAAKyrL,EAAa3qL,KAC1C/E,EAAMiE,EAAIyrL,EAAa3qL,KAAOG,EAAKH,KAC1BG,EAAKe,MAAQ6B,EAAU7D,GAAKyrL,EAAa3qL,KAAO2qL,EAAarvL,QACtEL,EAAMiE,EAAIyrL,EAAa3qL,KAAO2qL,EAAarvL,MAAQ6E,EAAKe,OAGnDjG,CACT,CAEA,MAAM2vL,EAA0B7vL,IAC9B,IAAI,kBACF2b,EAAiB,iBACjBsG,EAAgB,UAChBja,GACEhI,EAEJ,OAAKiiB,GAAqBtG,EAInBg0K,EAAuB3nL,EAAWia,EAAkBtG,GAHlD3T,CAGoE,ECb/EiN,EAAAA,GAAcpC,WAAa,CACzB,CACEtE,UAAW,gBACX9Q,QAAUyR,GApBS4gL,KACrB,IAAI5+K,EAAU4+K,EAEd,MAAMC,EAAc,CAAC,SAAU,QAAS,YAExC,KAAO7+K,KAAaA,EAAQ0xF,SAAmC,SAAxB1xF,EAAQ0xF,QAAQotF,MAAiB,CACtE,GAAID,EAAYnmL,SAASsH,EAAQs5B,UACzBt5B,EAAQ0xF,SAAmC,UAAxB1xF,EAAQ0xF,QAAQotF,KACnC9+K,EAAQgmC,WAAahmC,EAAQgmC,UAAU59B,SAAS,cACtD,OAAO,EAETpI,EAAUA,EAAQ4Q,aACpB,CAEA,OAAO,CAAI,EAMWmuK,CAAc/gL,EAAMjJ,UCwC5C,MA/D0BjG,IAQnB,IARoB,UACzB+1C,EAAU,GAAE,OACZm6I,EAAM,SACNC,EAAQ,4BACRC,EAA4B/qL,EAAAA,GAAa,gBACzCgrL,EAAgBpoK,EAAAA,GAAmB,iBACnCqoK,EAAiB,SAAQ,SACzBl2K,GACDpa,EACC,MAAM,EAACuwL,EAAiB,EAACC,IAAuBluL,EAAAA,EAAAA,WAAS,GACnDuB,GDuBCF,EAAAA,EAAAA,KACLH,EAAAA,EAAAA,IAAUyR,EAAAA,KCNZ,OACEuqF,EAAAA,cAACrhF,EAAAA,GAAU,CACTta,QAASA,EACT6a,mBAAoB0xK,EACpBzuL,UAhBkB8iB,UACpB,MAAM,OAACljB,EAAM,KAAEG,GAAQwN,EAGvB,GAFAshL,GAAoB,GAEhBjvL,GAAUG,GAAQH,EAAOtB,KAAOyB,EAAKzB,GAAI,CAC3C,MAAMg1H,EAAWi7D,EAAOjnL,QAAQ1H,EAAOtB,IACjCiqB,EAAWgmK,EAAOjnL,QAAQvH,EAAKzB,IAC/B4pJ,GAAWniI,EAAAA,EAAAA,IAAUwoK,EAAQj7D,EAAU/qG,SACvCimK,EAAStmC,EACjB,GAQEvoJ,YArBoBmjB,UACtB+rK,GAAoB,EAAK,EAqBvBt5K,WAAY,CACVxK,UAAW,CACXvI,EAAG,EACHC,EAAG,IAEHkI,aAAc,GAEhB0R,UAAa,CAAC6xK,IAEdrwF,EAAAA,cAACn2E,EAAAA,GAAe,CACdtB,MAAOmoK,EACPx1K,SAAU21K,GAEV7wF,EAAAA,cAAA,OAAKzpD,UAAW,sBAAwBA,GACtCypD,EAAAA,cAAA,OACEzpD,UAAU,sBACV51C,MAAO,CACLK,OAAS,oBAAmB8vL,MAC5B/vL,MAAQ,oBAAmB+vL,MAC3BxwL,QAASywL,EAAmB,QAAU,UAGzCn2K,IAGM,+ECzEjB,MAAMq2K,EAA8BC,IAClC,MAAMC,EAAiBD,EAAcA,EAAc3yL,OAAS,GAC5D,OAAQJ,IACN,IAAK,MAAMizL,KAAaF,EAAgB,CACtC,MAAMhrL,EAAakrL,EAAUjzL,GAC7B,GAAI+H,EAAW3H,OAAS,GAAK6yL,IAAcD,EACzC,OAAOjrL,CAEX,EACD,qDCuEH,IApEwB1F,IAKjB,IALkB,GACvBC,EAAE,gBACF4wL,GAAgB,EAAK,MACrBz2B,EAAM,IAAG,mBACT02B,GAAmB,GACpB9wL,EACC,MAAM,WACJimB,EAAU,UACVpoB,EAAS,WACTwoB,EAAU,UACVre,EAAS,WACTqiB,EAAU,WACVjE,EAAU,UACV4D,EAAS,OACTvC,EAAM,YACNS,EAAW,MACX7Q,IACEyT,EAAAA,EAAAA,IAAY,CAAC7qB,GAAIA,IAEf8wL,EAAgB3qK,EAAag0I,EAAQ,EAErC42B,EAAY,CAChBhpL,UAAWA,EAAa,eAAcA,EAAU7D,QAAQ6D,EAAU5D,kBAAkB2sL,aAAyBA,UAAmBt0L,EAChI4tB,aACAs7D,OAAQv/D,EAAa,IAAM,IAC3B6qK,UAAW7qK,EAAa,wCAAqC3pB,GAGzDy0L,EAAc,CAClB7kH,OAAQjmD,EAAa,WAAa,OAClC+qK,YAAa,QAGf,IAAIC,EAAiB,CAAC,EAClBC,EAAmB,CAAC,EAuBxB,OArBKR,GAAoBC,GAQbD,GAAmBC,IAC7BM,EAAiB,CACf1kK,IAAKrG,EACLlmB,MAAO6wL,GAETK,EAAmB,CACjB,WAAc,UACXxzL,KACAooB,EACH9lB,MAAO+wL,IAhBTE,EAAiB,CACf1kK,IAAKrG,EACLlmB,MAAO,IAAI6wL,KAAcE,GACzB,WAAc,UACXrzL,KACAooB,GAeA,CACLmrK,iBACAC,mBACAnpK,cACA7Q,QACA+O,aACA4D,YACAvC,SACD,6FCnFI,MAAM6pK,EAAO,CAClBC,WAAY,cACZC,MAAO,QACPC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,wBAAyB,cACzBC,KAAM,QAYK3zK,EAAS,CACpB2uH,MAAO,QACPD,QAAS,UACTtd,SAAU,+DCRZ,IAPgBn/G,IACd,MAAM,MAAEhQ,EAAK,KAAE8vF,GAAS9/E,EACxB,OACEqvF,EAAAA,cAAA,OAAKzpD,UAAU,4BAA4B51C,MAAOA,GAAQ8vF,EAAW,oCCVzE,KACE,CACEk1D,QAAS,eACT74G,MAAO,qBACPY,QACE,wRAGF4kJ,gBACE,uGACFC,gBAAiB,2BAEnB,CACE5sC,QAAS,gBACT74G,MAAO,0BACPY,QACE,iRACF8kJ,WAAY,8BACZC,WAAY,0BAGZH,gBACE,uGACFC,gBAAiB,wCAEnB,CACE5sC,QAAS,uBACT74G,MAAO,UACPY,QACE,yPACF8kJ,WAAY,sBACZC,WAAY,gCAMd,CACE9sC,QAAS,SACT74G,MAAO,SACPY,QAAS,6MACT8kJ,WAAY,iBACZC,WAAY,uCAMd,CACE9sC,QAAS,iBACT74G,MAAO,oBACPY,QACE,sMACF8kJ,WAAY,YACZC,WAAY,kCAMd,CACE9sC,QAAS,WACT74G,MAAO,iBACPY,QACE,6KACF8kJ,WAAY,eACZC,WAAY,wKChET,MAAMC,EAAmB,CAC9BC,cAAc,EACdC,eAAe,EACfC,sBAAsB,EACtBC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,GAGCC,EAA2B,GAE3BC,EAA6BC,IACxC,MAAMC,EAAaC,EAAAA,EAAe90L,OAC5B+0L,EAAWD,EAAAA,EAAe/xK,KAAIiyK,GAAOA,EAAI5tC,UAC/C,IAAI6tC,EAAiB,EAMrB,OAHAF,EAAS3kL,SAAQg3I,IACbwtC,EAAUxtC,GAAW6tC,IAAmBC,CAAiB,IAEtDzuL,KAAKuoC,KAAuB,IAAjBimJ,EAAwBJ,EAAW,qDCNvD,IATyBM,KACvB,MAAM,MAAE3yL,IAAU4yL,EAAAA,EAAAA,KAGlB,MAAO,CACLC,SAHe7yL,EAAQ,IAIxB,qFCXH,SAAS8yL,IACP,GAAsB,oBAAX7oL,OAAwB,CACjC,MAAQgB,WAAYjL,EAAOgL,YAAa/K,GAAWgK,OACnD,MAAO,CACLjK,QACAC,SAEJ,CACE,MAAO,CACHD,MAAO,KACPC,OAAQ,KAGhB,CAEe,SAAS2yL,IACtB,MAAM,EAACG,EAAiB,EAACC,IAAuBjxL,EAAAA,EAAAA,UAC9C+wL,KAiBF,OAdAzwL,EAAAA,EAAAA,YAAU,KACR,SAASuV,IACPo7K,EAAoBF,IACtB,CAIA,MAHsB,oBAAX7oL,QACTA,OAAOiE,iBAAiB,SAAU0J,GAE7B,KACmB,oBAAX3N,QACXA,OAAO6D,oBAAoB,SAAU8J,EACrC,CACH,GACA,IAEIm7K,CACT,mPCrCA,SAASzwJ,EAAQ3J,GAAkC,OAAO2J,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG2J,EAAQ3J,EAAM,CAC/U,SAASs6J,IAAiS,OAApRA,EAAWvvL,OAAO8xB,OAAS9xB,OAAO8xB,OAAOvlB,OAAS,SAAUvK,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS31B,UAAUJ,GAAI,IAAK,IAAI6B,KAAOk0B,EAAc1vB,OAAOjH,UAAU+2B,eAAe31B,KAAKu1B,EAAQl0B,KAAQwG,EAAOxG,GAAOk0B,EAAOl0B,GAAU,CAAE,OAAOwG,CAAQ,EAAUutL,EAASj1L,MAAMjC,KAAM0B,UAAY,CAElV,SAASglC,EAAkB/8B,EAAQkK,GAAS,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CAAE,IAAI2hC,EAAapvB,EAAMvS,GAAI2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EAAOuxB,EAAW0D,cAAe,EAAU,UAAW1D,IAAYA,EAAW2D,UAAW,GAAMj/B,OAAO4J,eAAe5H,EAAQwtL,EAAel0J,EAAW9/B,KAAM8/B,EAAa,CAAE,CAG5U,SAASm0J,EAAgBlkJ,EAAGjf,GAA6I,OAAxImjK,EAAkBzvL,OAAOo0B,eAAiBp0B,OAAOo0B,eAAe7nB,OAAS,SAAyBg/B,EAAGjf,GAAsB,OAAjBif,EAAEwhD,UAAYzgE,EAAUif,CAAG,EAAUkkJ,EAAgBlkJ,EAAGjf,EAAI,CACvM,SAASojK,EAAaC,GAAW,IAAIC,EAGrC,WAAuC,GAAuB,oBAAZ/lG,UAA4BA,QAAQD,UAAW,OAAO,EAAO,GAAIC,QAAQD,UAAUka,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFr1F,QAAQ3V,UAAUuiF,QAAQnhF,KAAK0vF,QAAQD,UAAUl7E,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO8gB,GAAK,OAAO,CAAO,CAAE,CAHvQqgK,GAA6B,OAAO,WAAkC,IAAsCh8J,EAAlCi8J,EAAQC,EAAgBJ,GAAkB,GAAIC,EAA2B,CAAE,IAAII,EAAYD,EAAgB13L,MAAMkR,YAAasqB,EAASg2D,QAAQD,UAAUkmG,EAAO/1L,UAAWi2L,EAAY,MAASn8J,EAASi8J,EAAMx1L,MAAMjC,KAAM0B,WAAc,OACpX,SAAoCi2B,EAAM71B,GAAQ,GAAIA,IAA2B,WAAlBykC,EAAQzkC,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIf,UAAU,4DAA+D,OAAOutG,EAAuB32E,EAAO,CAD4FigK,CAA2B53L,KAAMw7B,EAAS,CAAG,CAExa,SAAS8yE,EAAuB32E,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIkgK,eAAe,6DAAgE,OAAOlgK,CAAM,CAErK,SAAS+/J,EAAgBxkJ,GAA+J,OAA1JwkJ,EAAkB/vL,OAAOo0B,eAAiBp0B,OAAO0pF,eAAen9E,OAAS,SAAyBg/B,GAAK,OAAOA,EAAEwhD,WAAa/sF,OAAO0pF,eAAen+C,EAAI,EAAUwkJ,EAAgBxkJ,EAAI,CACnN,SAASrM,EAAgBjK,EAAKz5B,EAAKS,GAA4L,OAAnLT,EAAMg0L,EAAeh0L,MAAiBy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAC3O,SAASu6J,EAAe92L,GAAO,IAAI8C,EACnC,SAAsB4xB,EAAO+iK,GAAQ,GAAuB,WAAnBvxJ,EAAQxR,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAIgjK,EAAOhjK,EAAMyR,OAAOwxJ,aAAc,QAAa73L,IAAT43L,EAAoB,CAAE,IAAI91H,EAAM81H,EAAKj2L,KAAKizB,EAAO+iK,GAAQ,WAAY,GAAqB,WAAjBvxJ,EAAQ07B,GAAmB,OAAOA,EAAK,MAAM,IAAIlhE,UAAU,+CAAiD,CAAE,OAAiB,WAAT+2L,EAAoB3hK,OAAShsB,QAAQ4qB,EAAQ,CADnVkjK,CAAa53L,EAAK,UAAW,MAAwB,WAAjBkmC,EAAQpjC,GAAoBA,EAAMgzB,OAAOhzB,EAAM,CAK5H,SAAS+0L,EAAgBrkL,GACvB,MAAO,CACLskL,cAAetkL,EAAMukL,QAEzB,CA+BA,IAAIC,EAAqB,SAAUC,IAhDnC,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz3L,UAAU,sDAAyDw3L,EAAS73L,UAAYiH,OAAOu0B,OAAOs8J,GAAcA,EAAW93L,UAAW,CAAEwQ,YAAa,CAAEtN,MAAO20L,EAAU3xJ,UAAU,EAAMD,cAAc,KAAWh/B,OAAO4J,eAAegnL,EAAU,YAAa,CAAE3xJ,UAAU,IAAc4xJ,GAAYpB,EAAgBmB,EAAUC,EAAa,CAiDjcC,CAAUJ,EAAOC,GACjB,IAnDoBriJ,EAAaG,EAAYC,EAmDzCjU,EAASi1J,EAAagB,GAC1B,SAASA,EAAMxkL,GACb,IAAIisB,EAWJ,OAlEJ,SAAyBkW,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1C,UAAU,oCAAwC,CAwDpJm1C,CAAgBl2C,KAAMq4L,GAEtBxxJ,EAAgBynE,EADhBxuE,EAAQsC,EAAOtgC,KAAK9B,KAAM6T,IACqB,QAAS,CACtD6kL,aAAcR,EAAgBp4J,EAAMjsB,SAEtCgzB,EAAgBynE,EAAuBxuE,GAAQ,wBAAoB,GACnEA,EAAMjsB,MAAM0Z,aAAaorK,mBAAmB74J,EAAM84J,oBAAoB1kL,KAAKo6F,EAAuBxuE,IAAS,CACzG+4J,IAAK/4J,EAAMjsB,MAAM0Z,aACjBurK,kBAAmBh5J,EAAMvf,MAAMm4K,cAC9B54J,EAAMjsB,WAAO1T,EAAWk4L,EAAMl9I,aAC1Brb,CACT,CA4CA,OA7GoBmW,EAkEPoiJ,EAlEgChiJ,EAqGzC,CAAC,CACHlzC,IAAK,2BACLS,MAAO,SAAkCiQ,GACvC,MAAO,CACL6kL,aAAcR,EAAgBrkL,GAElC,KA3G+BuiC,EAkEb,CAAC,CACnBjzC,IAAK,oBACLS,MAAO,WACL5D,KAAK+4L,iBAAmB/4L,KAAK6T,MAAM0Z,aAAayrK,eAAeC,eAAej5L,KAChF,GACC,CACDmD,IAAK,qBACLS,MAAO,SAA4By8B,GAC7BrgC,KAAK6T,MAAMkxD,YAAc1kC,EAAU0kC,WACrC/kE,KAAK6T,MAAM0Z,aAAayrK,eAAej6I,QAE3C,GACC,CACD57C,IAAK,uBACLS,MAAO,WACgC,mBAA1B5D,KAAK+4L,kBACd/4L,KAAK+4L,kBAET,GACC,CACD51L,IAAK,sBACLS,MAAO,SAA6Bs1L,EAAkBrlL,GACpD,OAAOqlL,EAAiB3iI,SAASv2D,KAAK6T,MAAQ7T,KAAK6T,MAAMkxD,UAAYlxD,EAAMkxD,UAC7E,GACC,CACD5hE,IAAK,SACLS,MAAO,WAEL,OAAsB,IADF,EAAAu1L,SAASx7H,MAAM39D,KAAK6T,MAAMiK,UAErC,KAEW,gBAAoB,KAAe,CACrDla,MAAO5D,KAAKugB,MAAMm4K,cACjB14L,KAAK6T,MAAMiK,SAChB,MApG0E4oB,EAAkBuP,EAAYv1C,UAAW01C,GAAiBC,GAAa3P,EAAkBuP,EAAaI,GAAc1uC,OAAO4J,eAAe0kC,EAAa,YAAa,CAAErP,UAAU,IA6GrPyxJ,CACT,CA7DyB,CA6DvB,EAAAxzF,WACFh+D,EAAgBwxJ,EAAO,YAAa,CAClCtzH,UAAW,WAAiB7V,WAC5BkpI,QAAS,WAAiBlpI,WAC1BpxC,SAAU,WAEZ+oB,EAAgBwxJ,EAAO,cAAe,gBACtCxxJ,EAAgBwxJ,EAAO,SAAU,aACjCxxJ,EAAgBwxJ,EAAO,eAAgB,aACvC,IAAIe,EAAe,SAAsBvlL,GACvC,IAAIwlL,EAAkBxlL,EAAMkxD,UAC5B,OAAoB,gBAAoB,KAAuB,MAAM,SAAUx3C,GAC7E,OAAoB,gBAAoB8qK,EAAOnB,EAAS,CACtD3pK,aAAcA,EACd6qK,QAASiB,GACRxlL,GACL,GACF,EACAulL,EAAah+I,UAAY,CACvB2pB,UAAW,WAAiB7V,WAC5BkpI,QAAS,YAEJ,IACP,oECrIuC,IAEjCkB,EAAY,SAAAhB,GAAA,SAAAgB,IAAA,QAAAx5J,EAAAx4B,EAAA5F,UAAAD,OAAAJ,EAAA,IAAAU,MAAAuF,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAnG,EAAAmG,GAAA9F,UAAA8F,GA2If,OA3Ies4B,EAAAw4J,EAAAx2L,KAAAG,MAAAq2L,EAAA,OAAA/zK,OAAAljB,KAAA,MAChBkf,MAAQ,CACN3c,MAAOk8B,EAAKjsB,MAAM8hD,mBACnB71B,EAED5N,SAAW,CAACtf,EAAKlP,KAAoB,IAAlB,SAAEsuB,GAAUtuB,EAC7Bo8B,EAAKqmC,SAAS,CACZviE,MAAOouB,GACP,EACH8N,EAEDy5J,4BAA8Bp0L,IAAgB,IAAf,MAAEvB,GAAOuB,EACtC26B,EAAKjsB,MAAM2lL,OAAO51L,EAAM,EACzBk8B,EAED25J,4BAA8B,KAC5B35J,EAAKqmC,SAAS,CACZuzH,YAAa,IACb,EACH55J,EAsFD65J,qBAAuB,CAAC/mL,EAAKtN,KAA8B,IAA5B,WAAEs0L,EAAU,OAAEz6J,GAAQ75B,EACnD,MAAM,OAAEw9B,GAAWhD,EAAKjsB,MAAM03J,KAE9B,IAAIsuB,EAAW,GAES,YAApBD,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,UAAuB,iBAEjC,YAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,WAAwB,kBAElC,YAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,WAAwB,kBAElC,WAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,UAAuB,iBAEjC,cAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,YAAyB,mBAEnC,UAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,SAAsB,gBAEhC,gBAApB82J,EAAW34L,OACQ44L,EAAV,UAAX/2J,EAAgC,UAAuB,iBAG1C,UAAX3D,GAAiC,UAAXA,IACxBq8E,EAAAA,EAAAA,UAAU,GAAEq+E,IAAWD,EAAWxqE,QAGpCtvF,EAAKqmC,SAAS,CACZviE,MAAO,IACP,EACHk8B,CAAA,EA3Ie2uE,EAAAA,EAAAA,GAAA6qF,EAAAhB,GA2If,IAAAt4J,EAAAs5J,EAAA54L,UA0BA,OA1BAs/B,EAtHD85J,mBAAA,SAAmBra,GACjB,OAAOA,EAAIzvI,KACb,EAAChQ,EAED+5J,iBAAA,SAAiBta,GAIf,IAAIoa,EAAW,GAuBf,MArBiB,YAAbpa,EAAIx+K,OACN44L,EAAW,WAEI,YAAbpa,EAAIx+K,OACN44L,EAAW,YAEI,YAAbpa,EAAIx+K,OACN44L,EAAW,YAEI,WAAbpa,EAAIx+K,OACN44L,EAAW,WAEI,cAAbpa,EAAIx+K,OACN44L,EAAW,aAEI,UAAbpa,EAAIx+K,OACN44L,EAAW,UAEI,gBAAbpa,EAAIx+K,OACN44L,EAAW,WAGX32F,EAAAA,cAACwlF,EAAAA,KAAI,CAACp9J,GAAK,GAAEuuK,IAAWpa,EAAIrwD,QACZ,YAAbyqE,GAA0Bpa,EAAIE,gBAC1B,GAAEF,EAAIzvI,UAAUyvI,EAAIE,kBACrBF,EAAIzvI,MAGd,EAAChQ,EAEDg6J,mBAAA,SAAmBv4C,GACjB,MAAM,cAAE8mB,EAAa,OAAEzlI,GAAW9iC,KAAK6T,MAAM03J,KAC7C,GAA4B,IAAxB9pB,EAAQ5xE,KAAKpuE,OACf,MAAO,GA4BT,MA1B6B,CAC3B,UAAa,CACX,QAAS,YACT,QAAS8mK,EAAc,CAAE5kK,GAAI,oCAAqCu/B,eAAgB,eAEpF,MAAS,CACP,QAAS,QACT,QAASqlI,EAAc,CAAE5kK,GAAI,sBAAuBu/B,eAAgB,WAEtE,QAAW,CACT,QAAS,UACT,QAASqlI,EAAc,CAAE5kK,GAAI,wBAAyBu/B,eAAgB,aAExE,QAAW,CACT,QAAS,UACT,QAASqlI,EAAc,CAAE5kK,GAAI,8BAA+Bu/B,eAAgB,aAE9E,QAAW,CACT,QAAS,UACT,QAASqlI,EAAc,CAAE5kK,GAAI,kCAAmCu/B,eAAgB,aAElF,OAAU,CACR,QAAS,SACT,QAASqlI,EAAc,CAAE5kK,GAAI,iCAAkCu/B,eAAgB,aAGvDu+G,EAAQ1mI,OAAO+nB,IAAW2+G,EAAQ1mI,KAChE,EAACilB,EAEDi6J,sBAAA,SAAsBx4C,GAOpB,MANsB,gBAAlBA,EAAQ1mI,QACV0mI,EAAQ1mI,MAAQ,SAEI,UAAlB0mI,EAAQ1mI,QACV0mI,EAAQ1mI,MAAQ,SAEX0mI,EAAQ5xE,IACjB,EAAC7vC,EAsCDO,OAAA,WACE,MAAM,KAAEsvC,GAAS7vE,KAAK6T,OAChB,MAAEjQ,GAAU5D,KAAKugB,OACjB,cAAEgoJ,EAAa,OAAEzlI,GAAW9iC,KAAK6T,MAAM03J,KACvCoD,EAAa,CACjBurB,YAAa3xB,EAAc,CAAE5kK,GAAI,4BAA6Bu/B,eAAgB,4CAC9EhR,SAAUlyB,KAAKkyB,SACftuB,SAGF,OACEs/F,EAAAA,cAACi3F,IAAW,CACVT,YAAa7pH,EACbuqH,cAAc,EACdb,4BAA6Bv5L,KAAKu5L,4BAClCE,4BAA6Bz5L,KAAKy5L,4BAClCE,qBAAsB35L,KAAK25L,qBAC3BG,mBAAoB95L,KAAK85L,mBACzBC,iBAAkB/5L,KAAK+5L,iBACvBprB,WAAYA,EACZqrB,mBAAqBv4C,GAAYzhJ,KAAKg6L,mBAAmBv4C,EAAS3+G,GAClEm3J,sBAAuBj6L,KAAKi6L,uBAGlC,EAACX,CAAA,CArKe,CAASz0F,EAAAA,WAwK3B,OAAew1F,EAAAA,EAAAA,KAAWC,EAAAA,EAAAA,GAAoBhB,0BCrK9C,MAAMja,EAAeC,IAAcC,EAAAA,EAAkBltG,MAAOktG,EAAAA,EAAkB7nG,QA6B9E,MA3B4B6iH,KAE1B,MAAM,OAAEz3J,IAAW+rH,EAAAA,EAAAA,KACb2rC,EAAgB,UAAS13J,IAE/B,OACEogE,EAAAA,cAACq9E,EAAAA,EAAa,CAACx7G,UAAU,UAAUs6G,aAAcA,GAC/Cn8E,EAAAA,cAACu9E,EAAAA,EAAS,CAACxpH,YAAa,GAAIypH,QAAS8Z,IACrCt3F,EAAAA,cAACo2F,EAAY,MACbp2F,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,YACjBm+B,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,YACjBm+B,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,YACjBm+B,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,UACfm+B,EAAAA,cAACu9E,EAAAA,EAAS,CAACC,QAAU,GAAE8Z,6HAEzBt3F,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,cACjBm+B,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,SACfm+B,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,kBACVkoI,kBAAqC,CAAC,aAG1Cv3F,EAAAA,cAACm1F,EAAK,CAACtzH,UAAU,gBACH,wBClCpB,2vLCIA,MAAM21H,GAAW7mL,GACRqvF,EAAAA,cAAA,OAAKzpD,UAAU,WAAWw2G,QAASp8I,EAAM8mL,cAG5CC,GAAcl3L,IAAoD,IAAnD,KAAEykF,EAAI,QAAE0yG,EAAO,aAAEC,KAAiBC,GAAWr3L,EAChE,MAAM,SAAEoa,GAAai9K,EACrB,IAAIC,EAAgB7yG,EAAO,oBAAsB,eAEjD,OACE+a,EAAAA,cAAA,OAAKzpD,UAAY,GAAEuhJ,KAAiBF,EAAe,aAAe,MAC/Dh9K,EACG,EA4CV,OAxCe3Y,IAAoD,IAAnD,KAAEgjF,EAAI,QAAE8yG,EAAO,aAAEH,KAAiBC,GAAW51L,EAC3D,MAAM,SACJq0J,IACEhzJ,EAAAA,EAAAA,YAAW69G,EAAAA,KACT,SAAEvmG,GAAai9K,GACf,EAACG,EAAW,EAACC,IAAiBn1L,EAAAA,EAAAA,UAASmiF,GAoB7C,OAlBA7hF,EAAAA,EAAAA,YAAU,KACR60L,EAAchzG,EAAK,GAClB,CAACA,KAYJ7hF,EAAAA,EAAAA,YAAU,KACRkzJ,EAAS4hC,cAAcF,EAAW,GACjC,CAACA,IAGFh4F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC03F,GAAW,CACVzyG,KAAM+yG,EACNL,QAbN,WACEM,GAAc,GACdF,GAAQ,EACV,EAWMH,aAAcA,GAEbh9K,GAGFo9K,GAAch4F,EAAAA,cAACw3F,GAAQ,CAACC,YAxB7B,WACEQ,GAAc,GACdF,GAAQ,EACV,IAsBK,cCvDP,IACI,CACIpyC,QAAS,eACT74G,MAAO,iBACPY,QACI,6TAGJ4kJ,gBACI,uGACJC,gBAAiB,uBAErB,CACI5sC,QAAS,gBACT74G,MAAO,6BACPY,QACI,4SACJ8kJ,WAAY,0CACZC,WAAY,gCAGZH,gBACI,uGACJC,gBAAiB,8CAErB,CACI5sC,QAAS,uBACT74G,MAAO,WACPY,QACI,wRACJ8kJ,WAAY,yBACZC,WAAY,sCAMhB,CACI9sC,QAAS,SACT74G,MAAO,aACPY,QACI,+OACJ8kJ,WAAY,yBACZC,WAAY,6CAMhB,CACI9sC,QAAS,iBACT74G,MAAO,wBACPY,QACI,wNACJ8kJ,WAAY,aACZC,WAAY,wCAMhB,CACI9sC,QAAS,WACT74G,MAAO,sBACPY,QACI,oNACJ8kJ,WAAY,mBACZC,WAAY,2CC9BpB,OAnCA,SAAuBjyL,GAKnB,IALoB,mBACtB23L,EAAqB,EAAC,KACtB9tJ,EAAO,OAAM,YACb+tJ,EAAc,sBAAqB,gBACnC9J,EAAkB,uBACnB9tL,EACC,OACEw/F,EAAAA,cAAA,OACEzpD,UAAU,kBACVv1C,OAAQqpC,EACRtpC,MAAOspC,EACPguJ,QAAQ,eAERr4F,EAAAA,cAAA,UACEluD,EAAE,KACFF,GAAG,KACHC,GAAG,KACHtF,KAAM+hJ,EACNgK,OAAQF,IAGVp4F,EAAAA,cAAA,UACEluD,EAAE,IACFF,GAAG,KACHC,GAAG,KACHtF,KAAK,cACL+rJ,OAAQF,EACRG,YAAY,KACZC,gBAAkB,QAAOL,yBACzB3vL,UAAU,+BAIlB,aCnCA,46BCAA,ggCC6BA,SAASiwL,GAAW9nL,GAClB,MAAM,SAAE+nL,EAAQ,MAAE5rJ,KAAU+qJ,GAAclnL,EAC1C,OACEqvF,EAAAA,cAACyuF,EAAAA,EAAKhqL,OAAA8xB,OAAA,CACJggB,UAAU,0BACVoiJ,kBAAkB,8BACdd,EAAS,CACbjJ,UAAQ,EACRvkJ,KAAK,OAEL21D,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,IACzBztD,EAAAA,cAAA,OAAKzpD,UAAU,iBACbypD,EAAAA,cAAC6lF,GAAAA,EAAW,CACVlrJ,IAAK+9J,EACL3S,UAAU,EACVC,SAAO,EACPjlL,MAAM,OACNC,OAAO,OACP8kL,OAAK,EACLG,SACEjmF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAQzpD,UAAU,+EAChBypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,aAAarT,KAAMgjJ,EAAAA,MAC9ClmF,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,0BACHu/B,eAAe,qBASjC,CAEA,SAAS44J,GAAMp4L,GAAoC,IAAnC,SAAEoa,EAAQ,SAAEi+K,EAAQ,SAAEngL,GAAUlY,EAC9C,MAAMs4L,GAAkBx1L,EAAAA,EAAAA,YAAWy1L,EAAAA,GAE7BC,GAAmBC,EAAAA,EAAAA,GACvBJ,GACA,IAAMngL,GAAYA,EAASmgL,KAGvBK,EAAoBJ,IAAoBD,EAE9C,OACE74F,EAAAA,cAACm5F,EAAAA,EAAM,CAACr9D,QAAQ,OAAOixB,QAASisC,GAC7Bp+K,EACDolF,EAAAA,cAAA,OAAKosE,IAAK8sB,EAAoBE,GAAcC,KAGlD,CAqOA,OAnOA,SAAyBp3L,GAAuD,IAAD6nK,EAAA,IAArD,QAAE9T,EAAO,KAAE/wE,EAAI,QAAE8yG,EAAO,UAAE5E,EAAS,aAAEmG,GAAcr3L,EAC3E,MAAMw4E,GAAW4nB,EAAAA,EAAAA,gBACX,EAACu1F,EAAa,EAAC2B,IAAmBz2L,EAAAA,EAAAA,WAAS,IAC3C,EAAC02L,EAAe,EAACC,IAAqB32L,EAAAA,EAAAA,WAAS,IAC/C,EAAC42L,EAAa,EAACC,IAAmB72L,EAAAA,EAAAA,UAAS,MAC3C82L,GAAkB1G,EAAAA,GAAAA,IAA2BC,IAC7C,OAAEvzJ,IAAW+rH,EAAAA,EAAAA,KA4BnB,OA1BAvoJ,EAAAA,EAAAA,YAAU,KACR20L,GAAQ,EAAM,GACb,CAACt9G,IAyBFulB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC65F,GAAM,CAAC50G,KAAMA,EAAM8yG,QAASA,EAASH,aAAcA,GAClD53F,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,UACE87B,QAAQ,OACRvlF,UAAU,qBACVw2G,QAhChB,WACEwsC,GAAiB3B,EACnB,GAgCgB53F,EAAAA,cAAA,OAAKosE,IAAKwrB,ECjI5B,6qBCAA,y1BFoIc53F,EAAAA,cAAA,OAAKzpD,UAAU,yBACbypD,EAAAA,cAAC85F,GAAAA,EAAY,CAAC9jC,QAASA,KAEzBh2D,EAAAA,cAAA,OAAKzpD,UAAU,0BACZy/G,GAAWA,EAAQ6S,WAClB7oE,EAAAA,cAAA,OAAKzpD,UAAU,gBACZy/G,EAAQ6S,UAAU,IAAkB,QAAjBiB,EAAC9T,EAAQ8S,gBAAQ,IAAAgB,EAAAA,EAAI,IAG7C9pE,EAAAA,cAAA,OAAKzpD,UAAU,eAAcypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC5CtqK,GAAG,0BACHu/B,eAAe,mBAIrBggE,EAAAA,cAAA,OAAKzpD,UAAU,mBACbypD,EAAAA,cAAA,UAAQ+sD,QA7CpB,WACEgrC,GAAQ,EACV,EA2C4CxhJ,UAAU,gBACxCypD,EAAAA,cAAA,OAAKosE,IGrJrB,0qBHyJUpsE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAA,WACEA,EAAAA,cAAC+5F,GAAc,CAAC5B,mBAAoByB,KAEtC55F,EAAAA,cAAA,OAAKzpD,UAAU,iBAAiBqjJ,EAAgB,KAAE55F,EAAAA,cAAC+qE,GAAAA,EAAgB,CACjEtqK,GAAG,uBACHu/B,eAAe,eAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,iBAAgBypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC9CtqK,GAAG,kCACHu/B,eAAe,0BAInBggE,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,uBAAsBypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACpDtqK,GAAG,iCACHu/B,eAAe,yBAEjBggE,EAAAA,cAACg6F,EAAAA,EAAS,KACP7G,IAAyB,UAAXvzJ,GAAsBq6J,GAAmB5G,GAAAA,EAAiB4G,IAAkB34K,KAAI,CAACiyK,EAAK17K,KACnG,IAAIqiL,EACF3G,EAAI4G,mBAAqB5G,EAAIjB,gBAC/B,OACEtyF,EAAAA,cAACo6F,GAAAA,EAAI,CAACn6L,IAAK4X,GACTmoF,EAAAA,cAACo6F,GAAAA,EAAKtL,OAAM,KACV9uF,EAAAA,cAAA,WACEA,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,SACEt/F,MAAO6yL,EAAI5tC,QACX5nJ,KAAK,WACLs8L,UAAWlH,EAAUI,EAAI5tC,SACzBpvG,UAAU,kBACVvnB,SAAUA,KAAMsrK,OA1FjB30C,EA0FmC4tC,EAAI5tC,aAzFhE2zC,EAAa3zC,GADf,IAA2BA,CA0FgD,IAEjD3lD,EAAAA,cAAC44F,GAAM,CAACC,SAAUhhL,EAAMuT,YACtB40E,EAAAA,cAAA,OAAKzpD,UAAU,SAASg9I,EAAIzmJ,WAKpCkzD,EAAAA,cAACg6F,EAAAA,EAAUO,SAAQ,CAAC1B,SAAUhhL,EAAMuT,YAClC40E,EAAAA,cAACo6F,GAAAA,EAAKrL,KAAI,KACR/uF,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,OACbypD,EAAAA,cAAA,OACEzpD,UAAY,sBAAoB2jJ,EAAgB,WAAa,WAG7Dl6F,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAQonC,EAAI7lJ,WAGf6lJ,EAAId,YACHzyF,EAAAA,cAACwlF,EAAAA,KAAI,CAACp9J,GAAImrK,EAAId,YACZzyF,EAAAA,cAAA,UACEjiG,KAAK,SACLw4C,UAAU,yFAETg9I,EAAIf,cAKZ0H,GACCl6F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,SACfypD,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,OAAKzpD,UAAU,iDACZg9I,EAAI4G,mBACHn6F,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,UACEzpD,UAAU,sCACVw2G,QAASA,KA3HnD4sC,EA4HqEpG,QA3HrEkG,GAAkB,IA6HwB94L,MAAO,CACL65L,WAAY,gBAGdx6F,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAU,aACVrT,KAAMgjJ,EAAAA,QAIXqN,EAAIkH,mBACHz6F,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAQonC,EAAIkH,mBAEdlkJ,UAAU,oBAKjBg9I,EAAIjB,iBACHtyF,EAAAA,cAAA,OACEzpD,UAAY,2BAAyBg9I,EAAI4G,kBACrC,OACA,KAGJn6F,EAAAA,cAAA,OAAKzpD,UAAU,YACbypD,EAAAA,cAAA,KACEpC,KAAM21F,EAAIjB,gBACV7rL,OAAO,UAEPu5F,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAU,WACVrT,KAAMw3J,EAAAA,QAIXnH,EAAIhB,iBACHvyF,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAQonC,EAAIhB,iBAEdh8I,UAAU,yBAa7B,SAQpBmjJ,GACC15F,EAAAA,cAACy4F,GAAU,CACTC,SAAUgB,EAAaS,kBACvBrtJ,MAAO4sJ,EAAa5sJ,MACpBm4C,KAAMu0G,EACN7K,OA/LR,WACEgL,EAAgB,MAChBF,GAAkB,EACpB,IAiMF,8BIpTe,iBCAA,kBCAA,kBCAA,kBCAA,kBCAA,cCcf,IACI,CACI3mC,OAAQ,CAAC,EAAG,IACZr+I,KAAM,QACNkkB,QAAS,qBACTgiK,aAAc,SACdC,WAAY,SACZ3b,MAAO4b,GAAAA,KAEX,CACI/nC,OAAQ,CAAC,GAAI,IACbr+I,KAAM,WACNkkB,QAAS,yEACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAO6b,GAAAA,GAEX,CACIhoC,OAAQ,CAAC,GAAI,KACbr+I,KAAM,QACNkkB,QAAS,gDACTgiK,aAAc,UACdC,WAAY,SACZ3b,MAAO8b,GAAAA,GAEX,CACIjoC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,UACNkkB,QAAS,yDACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAO+b,GAAAA,GAEX,CACIloC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,iBACNkkB,QAAS,qJACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOgc,GAAAA,GAEX,CACInoC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,QACNkkB,QAAS,6GACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOic,GAAAA,GAEX,CACIpoC,OAAQ,CAAC,IAAMqoC,KACf1mL,KAAM,SACNkkB,QAAS,4BACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOmc,GAAAA,ICqBf,OAhFoB56L,IAAuD,IAAD66L,EAAA,IAArD,WAAEC,GAAa,EAAK,yBAAEC,GAA0B/6L,EACnE,MAAM,EAACykF,EAAK,EAAC8yG,IAAWj1L,EAAAA,EAAAA,WAAS,IAC3B,OAAE88B,IAAW+rH,EAAAA,EAAAA,MACb,YACJ6vC,EACAplC,gBAAe,MACbr8F,GACD,SACDu1F,IACEhsJ,EAAAA,EAAAA,YAAW69G,EAAAA,IAoBf,OAXA/9G,EAAAA,EAAAA,YAAU,KACM,OAAV22D,GAAkB84F,GAAAA,EAAO94F,IAAUyhI,GAAe3oC,GAAAA,EAAO94F,GAAO+4F,OAAO,KACzExD,EAASv1F,EAAQ,GACjBg+H,GAAQ,GACV,GACC,CAACyD,KAEJp4L,EAAAA,EAAAA,YAAU,KACR20L,EAAQuD,EAAW,GAClB,CAACA,IAGFt7F,EAAAA,cAAAA,EAAAA,SAAA,KACa,OAAVjmC,IAA+B,QAAjBshI,EAAIxoC,GAAAA,EAAO94F,UAAM,IAAAshI,OAAA,EAAbA,EAAepc,QAChCj/E,EAAAA,cAACyuF,EAAAA,EAAK,CACJl4I,UAAU,eACV0uC,KAAMA,EACN0pG,OAxBY8M,KAClB1D,GAAQ,GACJwD,GACFA,GACF,EAqBM3M,UAAQ,GAER5uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,IAEzBztD,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAGA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,uBAGxEggE,EAAAA,cAAA,OAAKzpD,UAAU,cACF,IAAVwjB,EACCimC,EAAAA,cAAA,OAAKr/F,MAAO,CAAE0rJ,MAAO,YACnBrsD,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAM2vH,GAAAA,EAAO94F,GAAOklH,MACpBt+K,MAAO,CAAEylL,YAAa,UACtB7vI,UAAU,sBACVlM,KAAK,QAIT21D,EAAAA,cAAA,OACEosE,IAAKvZ,GAAAA,EAAO94F,GAAOklH,MACnB10C,IAAKsoB,GAAAA,EAAO94F,GAAOtlD,KACnB8hC,UAAU,wBAGdypD,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,SAAGA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,oCAAoCu/B,eAAe,0BAC3EggE,EAAAA,cAAA,MAAIr/F,MAAO,CAAE0rJ,MAAOwG,GAAAA,EAAO94F,GAAO6gI,aACpB,UAAXh7J,EAAqBizH,GAAAA,EAAO94F,GAAOtlD,KAAOinL,GAAS3hI,GAAOtlD,SAMnEurF,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,CAACx5I,UAAU,eACtBypD,EAAAA,cAAA,SAAe,UAAXpgE,EAAqBizH,GAAAA,EAAO94F,GAAOphC,QAAU+iK,GAAS3hI,GAAOphC,WAItE,iDCpFHiI,GAAgB,KAGhB+6J,GAAc,CAAC,EAGfC,GAAwB,CAAC,EACtB,SAASC,KACd,OAAOj7J,EACT,CAmCO,SAASk7J,GAAcl8J,GAC5B,OAAI+7J,GAAY/7J,GACPA,EAGLg8J,GAAsBh8J,EAAOqR,eACxB2qJ,GAAsBh8J,EAAOqR,oBADtC,CAGF,CCxCe,SAAS,GAAcrR,GACpC,IACIm8J,GADUv9L,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACvDu9L,eAAiB,SAE7C,OAAQA,GACN,IAAK,SAKL,IAAK,WAEH,OAAOC,GAAoBp8J,GAE7B,QACE,MAAM,IAAIm5H,WAAW,mCAAqC13I,OAAO06K,IAEvE,CAgBO,SAASC,GAAoBp8J,GAClC,IAAIq8J,EAAiBH,GAAqBl8J,GAE1C,GAAIq8J,EACF,OAAOA,EAMT,IAFA,IAAI/qJ,EAAQtR,EAAOj3B,MAAM,KAElBi3B,EAAOrhC,OAAS,GAAG,CACxB2yC,EAAMq5B,MAGN,IAAI2xH,EAAkBJ,GAFtBl8J,EAASsR,EAAM3gB,KAAK,MAIpB,GAAI2rK,EACF,OAAOA,CAEX,CACF,CC1DA,IAAIztH,GAAI,CACN0tH,GAAI,SAAYx+L,GACd,OAAY,GAALA,EAAS,MAAQ,OAC1B,EACAy+L,GAAI,SAAYz+L,GACd,OAAOA,GAAK,GAAKA,GAAK,EAAI,MAAQ,OACpC,EACA0+L,GAAI,SAAY1+L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KAEpB2zL,EADKr1L,OAAOurC,EAAE,KAAO70C,GACR60C,EAAE,GAAG1zC,OAAO,GAC7B,OAAY,GAALnB,EAAS,OAAc,GAALA,EAAS,MAAa,GAALA,EAAS,MAAQ2+L,GAAQ,GAAKA,GAAQ,GAAK,MAAQA,GAAQ,IAAMA,GAAQ,GAAK,OAAS,OACnI,EACAC,IAAK,SAAa5+L,GAChB,IACI6+L,GADIvpK,OAAOt1B,GAAGgL,MAAM,KACZ,GACZ,OAAY,GAALhL,GAAU6+L,EAAK,MAAQ,OAChC,EACAC,GAAI,SAAY9+L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpB+zL,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACrBg/L,EAAMD,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACxBw9L,EAAOI,GAAMlqJ,EAAE,GAAG1zC,OAAO,GAC7B,OAAc,GAAP69L,GAAoB,IAARL,EAAa,MAAQK,GAAO,GAAKA,GAAO,IAAML,EAAO,IAAMA,EAAO,IAAM,MAAQI,GAAa,GAAPC,GAAYA,GAAO,GAAKA,GAAO,GAAKL,GAAQ,IAAMA,GAAQ,GAAK,OAAS,OACnL,EACAM,GAAI,SAAYj/L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpB+zL,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACrBg/L,EAAMD,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACxBw9L,EAAOI,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACzB+9L,EAAWH,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACjC,OAAc,GAAP69L,GAAoB,IAARL,GAAsB,IAARA,GAAsB,IAARA,EAAa,MAAe,GAAPK,GAAoB,IAARL,GAAsB,IAARA,GAAsB,IAARA,EAAa,OAAgB,GAAPK,GAAmB,GAAPA,GAAmB,GAAPA,KAAcL,EAAO,IAAMA,EAAO,MAAQA,EAAO,IAAMA,EAAO,MAAQA,EAAO,IAAMA,EAAO,IAAM,MAAa,GAAL3+L,GAAU++L,GAAkB,GAAZG,EAAgB,OAAS,OAC7S,EACAC,GAAI,SAAYn/L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNod,EAAIpd,EAAE,IAAM,GACZgqJ,GAAMhqJ,EAAE,GACRuqJ,EAAM3+L,EAAEU,OAAO,GACfk+L,EAAO5+L,EAAEU,OAAO,GAChBm+L,EAAMrtI,EAAE9wD,OAAO,GACfo+L,EAAOttI,EAAE9wD,OAAO,GACpB,OAAO09L,GAAa,GAAPO,GAAoB,IAARC,GAAqB,GAAPC,GAAoB,IAARC,EAAa,MAAQV,GAAMO,GAAO,GAAKA,GAAO,IAAMC,EAAO,IAAMA,EAAO,KAAOC,GAAO,GAAKA,GAAO,IAAMC,EAAO,IAAMA,EAAO,IAAM,MAAQ,OAC/L,EACAC,GAAI,SAAYx/L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACR4qJ,EAAWh/L,EAAEU,OAAO,GACxB,OAAY,GAALnB,GAAU6+L,EAAK,MAAa,GAALp+L,GAAsB,GAAZg/L,GAAiBZ,EAAK,OAAS,OACzE,EACAa,IAAK,SAAa1/L,GAChB,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNod,EAAIpd,EAAE,IAAM,GACZgqJ,GAAMhqJ,EAAE,GACRuqJ,EAAM3+L,EAAEU,OAAO,GACfm+L,EAAMrtI,EAAE9wD,OAAO,GACnB,OAAO09L,IAAY,GAALp+L,GAAe,GAALA,GAAe,GAALA,IAAWo+L,GAAa,GAAPO,GAAmB,GAAPA,GAAmB,GAAPA,IAAaP,GAAa,GAAPS,GAAmB,GAAPA,GAAmB,GAAPA,EAAW,MAAQ,OAC3I,EACAK,GAAI,SAAY3/L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACZ,OAAY,GAAL70C,GAAU6+L,EAAK,MAAQp+L,GAAK,GAAKA,GAAK,GAAKo+L,EAAK,MAASA,EAAc,QAAT,MACvE,EACA3qJ,GAAI,SAAYl0C,GACd,OAAY,GAALA,EAAS,OAAc,GAALA,EAAS,MAAa,GAALA,EAAS,MAAa,GAALA,EAAS,MAAa,GAALA,EAAS,OAAS,OAChG,EACA4/L,GAAI,SAAY5/L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNkqJ,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACzB,OAAY,GAALA,IAAW++L,GAAY,GAALt+L,GAAe,GAALA,GAAkB,QAAR,KAC/C,EACAo/L,IAAK,SAAa7/L,GAChB,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNod,EAAIpd,EAAE,IAAM,GACZgqJ,GAAMhqJ,EAAE,GACRwqJ,EAAO5+L,EAAEU,OAAO,GAChBo+L,EAAOttI,EAAE9wD,OAAO,GACpB,OAAO09L,GAAc,GAARQ,GAAqB,GAARE,EAAY,MAAQV,GAAc,GAARQ,GAAqB,GAARE,EAAY,MAAQV,IAAe,GAARQ,GAAqB,GAARA,IAAsB,GAARE,GAAqB,GAARA,EAAY,MAAQ,OAC1J,EACAO,GAAI,SAAY9/L,GACd,MAAO,OACT,EACA+/L,GAAI,SAAY//L,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACR4qJ,EAAWh/L,EAAEU,OAAO,GACxB,OAAY,GAALnB,EAAS,MAAa,GAALS,GAAsB,GAAZg/L,GAAiBZ,EAAK,OAAS,OACnE,EACAmB,GAAI,SAAYhgM,GACd,OAAOA,GAAK,GAAKA,EAAI,EAAI,MAAQ,OACnC,EACAigM,GAAI,SAAYjgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACR4qJ,EAAWh/L,EAAEU,OAAO,GACxB,OAAOnB,GAAK,GAAKA,EAAI,EAAI,MAAa,GAALS,GAAsB,GAAZg/L,GAAiBZ,EAAK,OAAS,OAC5E,EACAqB,GAAI,SAAYlgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpB+zL,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACzB,OAAY,GAALA,EAAS,MAAa,GAALA,EAAS,MAAQ++L,GAAM/+L,GAAK,GAAKA,GAAK,EAAI,MAAQ++L,GAAM/+L,GAAK,GAAKA,GAAK,GAAK,OAAS,OAC/G,EACAmgM,GAAI,SAAYngM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpB+zL,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACzB,OAAY,GAALA,GAAe,IAALA,EAAU,MAAa,GAALA,GAAe,IAALA,EAAU,MAAQ++L,GAAM/+L,GAAK,GAAKA,GAAK,IAAM++L,GAAM/+L,GAAK,IAAMA,GAAK,GAAK,MAAQ,OAC/H,EACAy2E,GAAI,SAAYz2E,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACZ,OAAY,GAALp0C,GAAUo+L,GAAW,GAALp+L,IAAWo+L,EAAK,MAAa,GAALp+L,GAAUo+L,EAAK,MAAQ,OACxE,EACAuB,GAAI,SAAYpgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACN4jB,GAAK5jB,EAAE,IAAM,IAAIze,QAAQ,MAAO,IAChC2oK,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACrBo/L,EAAM3+L,EAAEU,OAAO,GACfk+L,EAAO5+L,EAAEU,OAAO,GACpB,OAAO49L,GAAa,GAAPK,GAAoB,IAARC,GAAc5mI,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,MAAQ,OAChF,EACA4nI,IAAK,SAAargM,GAChB,OAAY,GAALA,EAAS,OAAc,GAALA,EAAS,MAAQ,OAC5C,EACA6xE,GAAI,SAAY7xE,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBinD,EAAIpd,EAAE,IAAM,GACZkqJ,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACrBg/L,EAAMD,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACxBw9L,EAAOI,GAAMlqJ,EAAE,GAAG1zC,OAAO,GAC7B,OAAc,GAAP69L,IAAaL,EAAO,IAAMA,EAAO,IAAM,MAAQK,GAAO,GAAKA,GAAO,IAAML,EAAO,IAAMA,EAAO,IAAM,MAAa,GAAL1sI,EAAS,OAAS,OACrI,EACAquI,GAAI,SAAYtgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBinD,EAAIpd,EAAE,IAAM,GACZ0Y,EAAI0E,EAAErxD,OACNm+L,EAAKz1L,OAAOurC,EAAE,KAAO70C,EACrBg/L,EAAMD,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACxBw9L,EAAOI,GAAMlqJ,EAAE,GAAG1zC,OAAO,GACzBo+L,EAAOttI,EAAE9wD,OAAO,GAChBm+L,EAAMrtI,EAAE9wD,OAAO,GACnB,OAAO49L,GAAa,GAAPC,GAAYL,GAAQ,IAAMA,GAAQ,IAAW,GAALpxI,GAAUgyI,GAAQ,IAAMA,GAAQ,GAAK,OAAgB,GAAPP,GAAoB,IAARL,GAAmB,GAALpxI,GAAiB,GAAP+xI,GAAoB,IAARC,GAAmB,GAALhyI,GAAiB,GAAP+xI,EAAW,MAAQ,OAChM,EACAiB,GAAI,SAAYvgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNod,EAAIpd,EAAE,IAAM,GACZgqJ,GAAMhqJ,EAAE,GACRuqJ,EAAM3+L,EAAEU,OAAO,GACfk+L,EAAO5+L,EAAEU,OAAO,GAChBm+L,EAAMrtI,EAAE9wD,OAAO,GACfo+L,EAAOttI,EAAE9wD,OAAO,GACpB,OAAO09L,GAAa,GAAPO,GAAoB,IAARC,GAAqB,GAAPC,GAAoB,IAARC,EAAa,MAAQ,OAC1E,EACAvtH,GAAI,SAAYhyE,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KAEpB2zL,EADKr1L,OAAOurC,EAAE,KAAO70C,GACR60C,EAAE,GAAG1zC,OAAO,GAC7B,OAAY,GAALnB,EAAS,MAAa,GAALA,EAAS,MAAa,GAALA,GAAU2+L,GAAQ,GAAKA,GAAQ,GAAK,MAAQA,GAAQ,IAAMA,GAAQ,GAAK,OAAS,OAC3H,EACA6B,GAAI,SAAYxgM,GACd,OAAY,GAALA,GAAe,GAALA,EAAS,MAAQ,OACpC,EACAygM,GAAI,SAAYzgM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACRuqJ,EAAM3+L,EAAEU,OAAO,GACfk+L,EAAO5+L,EAAEU,OAAO,GACpB,OAAY,GAALnB,GAAU6+L,EAAK,MAAQA,GAAMO,GAAO,GAAKA,GAAO,IAAMC,EAAO,IAAMA,EAAO,IAAM,MAAQR,GAAW,GAALp+L,IAAkB,GAAP2+L,GAAmB,GAAPA,IAAaP,GAAMO,GAAO,GAAKA,GAAO,GAAKP,GAAMQ,GAAQ,IAAMA,GAAQ,GAAK,OAAS,OACnN,EACAvtH,GAAI,SAAY9xE,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACR4qJ,EAAWh/L,EAAEU,OAAO,GACxB,OAAY,GAALV,GAAe,GAALA,EAAS,MAAa,GAALA,GAAsB,GAAZg/L,GAAiBZ,EAAK,OAAS,OAC7E,EACA6B,GAAI,SAAY1gM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpB6zL,GAAMhqJ,EAAE,GAER8pJ,EADKr1L,OAAOurC,EAAE,KAAO70C,GACR60C,EAAE,GAAG1zC,OAAO,GAC7B,OAAY,GAALnB,GAAU6+L,EAAK,OAASA,GAAW,GAAL7+L,GAAe,GAALA,GAAU2+L,GAAQ,GAAKA,GAAQ,GAAK,MAAQ,OAC7F,EACAgC,GAAI,SAAY3gM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACRuqJ,EAAM3+L,EAAEU,OAAO,GACfk+L,EAAO5+L,EAAEU,OAAO,GACpB,OAAO09L,GAAa,GAAPO,GAAoB,IAARC,EAAa,MAAQR,GAAMO,GAAO,GAAKA,GAAO,IAAMC,EAAO,IAAMA,EAAO,IAAM,MAAQR,GAAa,GAAPO,GAAYP,GAAMO,GAAO,GAAKA,GAAO,GAAKP,GAAMQ,GAAQ,IAAMA,GAAQ,GAAK,OAAS,OAC3M,EACAvsH,GAAI,SAAY9yE,GACd,OAAY,GAALA,EAAS,MAAa,GAALA,EAAS,MAAQ,OAC3C,EACA4gM,GAAI,SAAY5gM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNod,EAAIpd,EAAE,IAAM,GAChB,OAAY,GAAL70C,GAAe,GAALA,GAAe,GAALS,GAAe,GAALwxD,EAAS,MAAQ,OACxD,EACA4uI,GAAI,SAAY7gM,GACd,IAAI60C,EAAIvf,OAAOt1B,GAAGgL,MAAM,KACpBvK,EAAIo0C,EAAE,GACNgqJ,GAAMhqJ,EAAE,GACRwqJ,EAAO5+L,EAAEU,OAAO,GACpB,OAAO09L,GAAc,GAARQ,EAAY,MAAQR,GAAc,GAARQ,EAAY,MAAQR,IAAe,GAARQ,GAAqB,GAARA,KAAeR,EAAK,MAAQ,OAC7G,GAEF/tH,GAAEskC,GAAKtkC,GAAE2tH,GACT3tH,GAAEgwH,GAAKhwH,GAAE0tH,GACT1tH,GAAEiwH,GAAKjwH,GAAE0tH,GACT1tH,GAAEkwH,GAAKlwH,GAAE2tH,GACT3tH,GAAEmwH,IAAMnwH,GAAE0tH,GACV1tH,GAAEmC,GAAKnC,GAAE0tH,GACT1tH,GAAE34B,IAAM24B,GAAE0tH,GACV1tH,GAAEV,GAAKU,GAAE8tH,IACT9tH,GAAE2E,GAAK3E,GAAE0tH,GACT1tH,GAAE9d,GAAK8d,GAAE0tH,GACT1tH,GAAEyS,GAAKzS,GAAE8tH,IACT9tH,GAAEE,GAAKF,GAAE8tH,IACT9tH,GAAEowH,GAAKpwH,GAAE0tH,GACT1tH,GAAEqwH,GAAKrwH,GAAE2tH,GACT3tH,GAAEswH,GAAKtwH,GAAE8tH,IACT9tH,GAAEuwH,IAAMvwH,GAAE4uH,IACV5uH,GAAEwwH,GAAKxwH,GAAE0tH,GACT1tH,GAAEywH,IAAMzwH,GAAE0tH,GACV1tH,GAAE0wH,GAAK1wH,GAAE8tH,IACT9tH,GAAE2wH,GAAK3wH,GAAE8tH,IACT9tH,GAAE4wH,GAAK5wH,GAAE2tH,GACT3tH,GAAE6wH,GAAK7wH,GAAE0tH,GACT1tH,GAAE8wH,GAAK9wH,GAAE2tH,GACT3tH,GAAE+wH,GAAK/wH,GAAEquH,GACTruH,GAAEgxH,IAAMhxH,GAAE+uH,IACV/uH,GAAEixH,GAAKjxH,GAAE0tH,GACT1tH,GAAEkxH,GAAKlxH,GAAEkvH,GACTlvH,GAAEmxH,GAAKnxH,GAAE8tH,IACT9tH,GAAEhuE,GAAKguE,GAAEgvH,GACThvH,GAAEoxH,GAAKpxH,GAAEgvH,GACThvH,GAAEO,GAAKP,GAAE0uH,GACT1uH,GAAEqxH,GAAKrxH,GAAEgvH,GACThvH,GAAEsxH,IAAMtxH,GAAE0tH,GACV1tH,GAAEuxH,GAAKvxH,GAAEgvH,GACThvH,GAAEwxH,GAAKxxH,GAAE0tH,GACT1tH,GAAEyxH,IAAMzxH,GAAEgvH,GACVhvH,GAAE0xH,GAAK1xH,GAAE0tH,GACT1tH,GAAE2xH,GAAK3xH,GAAE0tH,GACT1tH,GAAE4xH,GAAK5xH,GAAEgvH,GACThvH,GAAE6xH,GAAK7xH,GAAE2tH,GACT3tH,GAAE8xH,GAAK9xH,GAAEgvH,GACThvH,GAAE+xH,GAAK/xH,GAAE0tH,GACT1tH,GAAEgyH,GAAKhyH,GAAE0tH,GACT1tH,GAAEiyH,GAAKjyH,GAAE0tH,GACT1tH,GAAEkyH,GAAKlyH,GAAE0tH,GACT1tH,GAAEmyH,IAAMnyH,GAAEgvH,GACVhvH,GAAEoyH,GAAKpyH,GAAEgvH,GACThvH,GAAEqyH,GAAKryH,GAAE0tH,GACT1tH,GAAEsyH,GAAKtyH,GAAE0tH,GACT1tH,GAAEuyH,GAAKvyH,GAAE0tH,GACT1tH,GAAEmP,GAAKnP,GAAEgvH,GACThvH,GAAEwyH,GAAKxyH,GAAEgvH,GACThvH,GAAEyyH,GAAKzyH,GAAE0tH,GACT1tH,GAAE6E,GAAK7E,GAAE0tH,GACT1tH,GAAE0yH,GAAK1yH,GAAE8tH,IACT9tH,GAAE2yH,GAAK3yH,GAAE0tH,GACT1tH,GAAE4yH,GAAK5yH,GAAE0tH,GACT1tH,GAAEnhB,GAAKmhB,GAAE0tH,GACT1tH,GAAE6yH,IAAM7yH,GAAE2tH,GACV3tH,GAAE8yH,GAAK9yH,GAAE0tH,GACT1tH,GAAE+yH,GAAK/yH,GAAE0tH,GACT1tH,GAAEgzH,IAAMhzH,GAAEgvH,GACVhvH,GAAEizH,GAAKjzH,GAAE8tH,IACT9tH,GAAEkzH,GAAKlzH,GAAE0tH,GACT1tH,GAAEmzH,GAAKnzH,GAAE6uH,GACT7uH,GAAEozH,GAAKpzH,GAAE0tH,GACT1tH,GAAEqzH,GAAKrzH,GAAE0tH,GACT1tH,GAAEszH,GAAKtzH,GAAEquH,GACTruH,GAAEuzH,GAAKvzH,GAAEgvH,GACThvH,GAAEwzH,GAAKxzH,GAAE8tH,IACT9tH,GAAEyzH,GAAKzzH,GAAE8tH,IACT9tH,GAAE0zH,GAAK1zH,GAAE0tH,GACT1tH,GAAEkF,GAAKlF,GAAE0tH,GACT1tH,GAAE2zH,GAAK3zH,GAAEgvH,GACThvH,GAAE4zH,GAAK5zH,GAAE0vH,GACT1vH,GAAE6zH,GAAK7zH,GAAE0tH,GACT1tH,GAAErmD,GAAKqmD,GAAEgvH,GACThvH,GAAE8zH,GAAK9zH,GAAE0tH,GACT1tH,GAAE+zH,GAAK/zH,GAAE0tH,GACT1tH,GAAEg0H,GAAKh0H,GAAE6vH,GACT7vH,GAAEi0H,GAAKj0H,GAAE8tH,IACT9tH,GAAEk0H,GAAKl0H,GAAE0tH,GACT1tH,GAAEm0H,GAAKn0H,GAAEgvH,GACThvH,GAAEo0H,IAAMp0H,GAAE0tH,GACV1tH,GAAEq0H,GAAKr0H,GAAEgvH,GACThvH,GAAEs0H,GAAKt0H,GAAE0tH,GACT1tH,GAAEu0H,GAAKv0H,GAAE8tH,IACT9tH,GAAEw0H,GAAKx0H,GAAEgvH,GACThvH,GAAEy0H,IAAMz0H,GAAEgvH,GACVhvH,GAAE00H,GAAK10H,GAAEgvH,GACThvH,GAAE20H,GAAK30H,GAAE2tH,GACT,UCvTe,SAASiH,GAAqBzjK,GAK3C,MAAe,UAAXA,EACKA,EAkBX,SAAoCk8H,GAClC,IAAI7mI,EAAQ6mI,EAAY7mI,MAAMquK,IAE9B,IAAKruK,EACH,MAAM,IAAIp3B,UAAU,mBAAmBwjB,OAAOy6I,IAGhD,OAAO7mI,EAAM,EACf,CAvBSsuK,CAA2B3jK,EACpC,CAYA,IAAI0jK,GAAmB,gBC3BvB,SAAS,GAAkB78L,EAAQkK,GAAS,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CAAE,IAAI2hC,EAAapvB,EAAMvS,GAAI2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EAAOuxB,EAAW0D,cAAe,EAAU,UAAW1D,IAAYA,EAAW2D,UAAW,GAAMj/B,OAAO4J,eAAe5H,EAAQs5B,EAAW9/B,IAAK8/B,EAAa,CAAE,CAc5T,IAAIqC,GAA2B,WAC7B,SAASA,EAAYxC,EAAQ17B,IAjB/B,SAAyB4uC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1C,UAAU,oCAAwC,CAkBpJ,CAAgBf,KAAMslC,GAEtB,IAAIE,EAAUF,EAAY+lI,mBAAmBvoI,GAE7C,GAAuB,IAAnB0C,EAAQ/jC,OACV,MAAM,IAAIw6J,WAAW,uBAAyBn5H,GAGhD,GAAI17B,GAA4B,aAAjBA,EAAQnG,KACrB,MAAM,IAAIg7J,WAAW,uCAGvBj8J,KAAK2xE,EAAI+0H,GAAoBH,GAAqB/gK,EAAQ,IAC5D,CA3BF,IAAsByQ,EAAaG,EAAYC,EA+C7C,OA/CoBJ,EA6BP3Q,EA7BgC+Q,EAkCzC,CAAC,CACHlzC,IAAK,qBACLS,MAAO,SAA4B4hC,GAKjC,MAJuB,iBAAZA,IACTA,EAAU,CAACA,IAGNA,EAAQ/9B,QAAO,SAAUq7B,GAC9B,OAAO4jK,GAAoBH,GAAqBzjK,GAClD,GACF,KA5C+BsT,EA6BP,CAAC,CACzBjzC,IAAK,SACLS,MAAO,SAAgB0gC,GACrB,OAAOtkC,KAAK2xE,EAAErtC,EAChB,MAjC0E,GAAkB2R,EAAYv1C,UAAW01C,GAAiBC,GAAa,GAAkBJ,EAAaI,GAAc1uC,OAAO4J,eAAe0kC,EAAa,YAAa,CAAErP,UAAU,IA+CrPtB,CACT,CApC+B,GChB/B,SAAS,GAAQ1I,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAE/U,SAASmK,GAAQvU,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAASy1B,GAAcn9B,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAIylC,GAAQp/B,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW0P,GAAQp/B,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAEhN,SAASuK,GAAeC,EAAK9lC,GAAK,OAUlC,SAAyB8lC,GAAO,GAAIrlC,MAAMgpB,QAAQqc,GAAM,OAAOA,CAAK,CAV3BC,CAAgBD,IAQzD,SAA+BA,EAAK9lC,GAAK,IAAI2jC,EAAY,MAAPmC,EAAc,KAAyB,oBAAXZ,QAA0BY,EAAIZ,OAAOC,WAAaW,EAAI,cAAe,GAAU,MAANnC,EAAY,OAAQ,IAAkDyC,EAAID,EAAlDH,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKvC,EAAKA,EAAGnjC,KAAKslC,KAAQG,GAAMG,EAAKzC,EAAGpG,QAAQ8I,QAAoBL,EAAKhlC,KAAKolC,EAAG9jC,QAAYtC,GAAKgmC,EAAK7lC,SAAWH,GAA3DimC,GAAK,GAAkE,CAAE,MAAO3lC,GAAO4lC,GAAK,EAAMC,EAAK7lC,CAAK,CAAE,QAAU,IAAW2lC,GAAsB,MAAhBtC,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIuC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAR/bM,CAAsBR,EAAK9lC,IAI5F,SAAqC4xC,EAAGyF,GAAU,IAAKzF,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAOuF,GAAkBvF,EAAGyF,GAAS,IAAI93C,EAAI8G,OAAOjH,UAAU4tB,SAASxsB,KAAKoxC,GAAGlxC,MAAM,GAAI,GAAc,WAANnB,GAAkBqyC,EAAEhiC,cAAarQ,EAAIqyC,EAAEhiC,YAAYyG,MAAM,GAAU,QAAN9W,GAAqB,QAANA,EAAa,OAAOkB,MAAM6c,KAAKs0B,GAAI,GAAU,cAANryC,GAAqB,2CAA2C8M,KAAK9M,GAAI,OAAO43C,GAAkBvF,EAAGyF,EAAS,CAJ7TC,CAA4BxR,EAAK9lC,IAEnI,WAA8B,MAAM,IAAIP,UAAU,4IAA8I,CAFvD8mC,EAAoB,CAM7J,SAAS4Q,GAAkBrR,EAAKhmC,IAAkB,MAAPA,GAAeA,EAAMgmC,EAAI3lC,UAAQL,EAAMgmC,EAAI3lC,QAAQ,IAAK,IAAIH,EAAI,EAAGu3C,EAAO,IAAI92C,MAAMX,GAAME,EAAIF,EAAKE,IAAOu3C,EAAKv3C,GAAK8lC,EAAI9lC,GAAM,OAAOu3C,CAAM,CAQtL,SAAS,GAAkBlvC,EAAQkK,GAAS,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CAAE,IAAI2hC,EAAapvB,EAAMvS,GAAI2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EAAOuxB,EAAW0D,cAAe,EAAU,UAAW1D,IAAYA,EAAW2D,UAAW,GAAMj/B,OAAO4J,eAAe5H,EAAQs5B,EAAW9/B,IAAK8/B,EAAa,CAAE,CAWrT,IAAI0jK,GAAQ,CAAC,SAAU,SAAU,OAAQ,MAAO,OAAQ,QAAS,UAAW,QAE/EC,GAAiB,CAAC,OAAQ,UAE1BC,GAAe,CAAC,OAAQ,QAAS,UAEjCC,GAAwB,CAAC,SAAU,YAOnCliK,GAAkC,WAQpC,SAASA,IACP,IAAIY,EAAU9jC,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,GAC9E0F,EAAU1F,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GApCvF,SAAyBs0C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1C,UAAU,oCAAwC,CAsCpJ,CAAgBf,KAAM4kC,GAEtB,IAAImiK,EAAU3/L,EAAQ2/L,QAClBljM,EAAQuD,EAAQvD,MAChBo7L,EAAgB73L,EAAQ63L,cAK5B,GAJAj/L,KAAK+mM,QAAU,SACf/mM,KAAK6D,MAAQ,OACb7D,KAAKi/L,cAAgB,cAEL9+L,IAAZ4mM,EAAuB,CACzB,GAAIH,GAAej6L,QAAQo6L,GAAW,EACpC,MAAM,IAAI9qC,WAAW,6BAA+B13I,OAAOwiL,IAG7D/mM,KAAK+mM,QAAUA,CACjB,CAGA,QAAc5mM,IAAV0D,EAAqB,CACvB,GAAIgjM,GAAal6L,QAAQ9I,GAAS,EAChC,MAAM,IAAIo4J,WAAW,2BAA6B13I,OAAO1gB,IAG3D7D,KAAK6D,MAAQA,CACf,CAGA,QAAsB1D,IAAlB8+L,EAA6B,CAC/B,GAAI6H,GAAsBn6L,QAAQsyL,GAAiB,EACjD,MAAM,IAAIhjC,WAAW,mCAAqC13I,OAAO06K,IAGnEj/L,KAAKi/L,cAAgBA,CACvB,CAeA,GAXuB,iBAAZz5J,IACTA,EAAU,CAACA,IAIbA,EAAQljC,KAAKy8L,MAEb/+L,KAAK8iC,OAAS8B,EAAmBymI,mBAAmB7lI,EAAS,CAC3Dy5J,cAAej/L,KAAKi/L,gBACnB,IAEEj/L,KAAK8iC,OACR,MAAM,IAAInhC,MAAM,iCAId2jC,GAAY+lI,mBAAmBrrK,KAAK8iC,QAAQrhC,OAAS,EACvDzB,KAAKwkC,YAAc,IAAIc,GAAYtlC,KAAK8iC,QAExCtgC,QAAQyxD,KAAK,IAAK1vC,OAAOvkB,KAAK8iC,OAAQ,8BAIpB,oBAAT+B,MAAwBA,KAAKO,cACtCplC,KAAKgnM,aAAe,IAAIniK,KAAKO,aAAaplC,KAAK8iC,QAC/C9iC,KAAKinM,gBAAkBjnM,KAAKgnM,aAAaE,kBAAkBD,iBAE3DjnM,KAAKinM,gBAAkB,OAGzBjnM,KAAK8iC,OAAS,GAAc9iC,KAAK8iC,OAAQ,CACvCm8J,cAAej/L,KAAKi/L,eAExB,CAxGF,IAAsBhpJ,EAAaG,EAAYC,EAmU7C,OAnUoBJ,EAuHPrR,EAvHoBwR,EAuHA,CAAC,CAChCjzC,IAAK,SACLS,MAAO,WACL,IACIujM,EAAoBhgK,GADDigK,GAAgB1lM,WACkB,GACrD4iC,EAAS6iK,EAAkB,GAC3BjpC,EAAOipC,EAAkB,GAE7B,OAAOnnM,KAAKq8E,QAAQ/3C,EAAQ45H,GAAMjnI,QAAQ,MAAOj3B,KAAKgpK,aAAa9gK,KAAKoI,IAAIg0B,IAC9E,GAyBC,CACDnhC,IAAK,gBACLS,MAAO,WACL,IACIyjM,EAAoBlgK,GADAigK,GAAgB1lM,WACkB,GACtD4iC,EAAS+iK,EAAkB,GAC3BnpC,EAAOmpC,EAAkB,GAEzB77G,EAAOxrF,KAAKq8E,QAAQ/3C,EAAQ45H,GAC5BopC,EAAa97G,EAAK7+E,QAAQ,OAE9B,GAAI26L,EAAa,EACf,MAAO,CAAC,CACNrmM,KAAM,UACN2C,MAAO4nF,IAIX,IAAIp3C,EAAQ,GAsBZ,OApBIkzJ,EAAa,GACflzJ,EAAM9xC,KAAK,CACTrB,KAAM,UACN2C,MAAO4nF,EAAKxpF,MAAM,EAAGslM,KAIzBlzJ,EAAQA,EAAM7vB,OAAOvkB,KAAKipK,oBAAoB/gK,KAAKoI,IAAIg0B,IAAS9f,KAAI,SAAU23C,GAC5E,OAAOr1B,GAAcA,GAAc,CAAC,EAAGq1B,GAAO,CAAC,EAAG,CAChD+hG,KAAMA,GAEV,KAEIopC,EAAa,EAAe97G,EAAK/pF,OAAS,GAC5C2yC,EAAM9xC,KAAK,CACTrB,KAAM,UACN2C,MAAO4nF,EAAKxpF,MAAMslM,EAAa,KAI5BlzJ,CACT,GAYC,CACDjxC,IAAK,UACLS,MAAO,SAAiBA,EAAOs6J,GAmB7B,ILvOwBp7H,EKuOpBykK,GLvOoBzkK,EKuOS9iC,KAAK8iC,OLtOnC+7J,GAAY/7J,IKsO+B9iC,KAAK6D,OAAOq6J,GAG1D,GAA4B,iBAAjBqpC,EACT,OAAOA,EAIT,GAAqB,SAAjBvnM,KAAK+mM,QAEP,IAAe,IAAXnjM,IAA2B,IAAXA,EAAc,CAChC,IAAIi4B,EAAU0rK,EAAa,WAAWhjL,QAAkB,IAAX3gB,EAAe,GAAK,IAAMsE,KAAKoI,IAAI1M,KAEhF,GAAIi4B,EACF,OAAOA,CAEX,MACK,GAAc,IAAVj4B,GAAyB,IAAVA,EAAa,CACnC,IAAI4jM,EAAWD,EAAa,OAAOhjL,OAAiB,IAAV3gB,EAAc,GAAK,IAAMsE,KAAKoI,IAAI1M,KAE5E,GAAI4jM,EACF,OAAOA,CAEX,MACK,GAAc,IAAV5jM,GACH2jM,EAAa3yL,QACf,OAAO2yL,EAAa3yL,QAQ1B,IAiLc0vB,EAjLVmjK,EAAqBF,GAiLXjjK,EAjLmC1gC,EAkL9C0gC,EAAS,GAAgB,IAAXA,GALvB,SAAwBA,GACtB,OAAO,EAAIA,IAAW,GACxB,CAGuCojK,CAAepjK,GAlLU,OAAS,WAGnE,MAAkC,iBAAvBmjK,EACFA,EASFA,EAHUznM,KAAKwkC,aAAexkC,KAAKwkC,YAAYshI,OAAO59J,KAAKoI,IAAI1M,KAAW,UAGxC6jM,EAAmB1+H,KAC9D,GAQC,CACD5lE,IAAK,eACLS,MAAO,SAAsB0gC,GAC3B,OAAOtkC,KAAKgnM,aAAehnM,KAAKgnM,aAAahhK,OAAO1B,GAAUnO,OAAOmO,EACvE,GAQC,CACDnhC,IAAK,sBACLS,MAAO,SAA6B0gC,GAGlC,OAAOtkC,KAAKgnM,cAAgBhnM,KAAKgnM,aAAa99B,cAAgBlpK,KAAKgnM,aAAa99B,cAAc5kI,GAAU,CAAC,CACvGrjC,KAAM,UACN2C,MAAO5D,KAAKgpK,aAAa1kI,IAE7B,GAOC,CACDnhC,IAAK,kBACLS,MAAO,WACL,MAAO,CACLk/B,OAAQ9iC,KAAK8iC,OACbj/B,MAAO7D,KAAK6D,MACZkjM,QAAS/mM,KAAK+mM,QACdE,gBAAiBjnM,KAAKinM,gBAE1B,IAhU8D7wJ,GAAY,GAAkBH,EAAYv1C,UAAW01C,GAAiBC,GAAa,GAAkBJ,EAAaI,GAAc1uC,OAAO4J,eAAe0kC,EAAa,YAAa,CAAErP,UAAU,IAmUrPhC,CACT,CA9SsC,GAiUtCA,GAAmBymI,mBAAqB,SAAU7lI,GAChD,IAAIp+B,EAAU1F,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAGnF,GAAuB,iBAAZ8jC,EACTA,EAAU,CAACA,QACN,IAAKzjC,MAAMgpB,QAAQya,GACxB,MAAM,IAAIzkC,UAAU,8BAGtB,OAAOykC,EAAQ/9B,QAAO,SAAUq7B,GAC9B,OAAO,GAAcA,EAAQ17B,EAC/B,GACF,EAOAw9B,GAAmB+iK,ULtWZ,SAAuBC,GAC5B,IAAKA,EACH,MAAM,IAAIjmM,MAAM,yBAKlBk9L,GAAY+I,EAAW9kK,QAAU8kK,EACjC9I,GAAsB8I,EAAW9kK,OAAOqR,eAAiByzJ,EAAW9kK,MACtE,EKmWA8B,GAAmBijK,iBL7XZ,SAA0B/kK,GAC/BgB,GAAgBhB,CAClB,EKiYA8B,GAAmBm6J,iBAAmBA,GAKtCn6J,GAAmBU,YAAcA,GAIjC,IAAIwiK,GAAa,0BAEjB,SAASC,GAAU7pC,GACjB,GAAsB,WAAlB,GAAQA,GACV,MAAM,IAAIn9J,UAAU+mM,IAGtB,GAAoB,iBAAT5pC,EACT,MAAM,IAAIjC,WAAW,GAAG13I,OAAOujL,GAAY,MAAMvjL,OAAO25I,IAO1D,GAJ8B,MAA1BA,EAAKA,EAAKz8J,OAAS,KACrBy8J,EAAOA,EAAKl8J,MAAM,EAAGk8J,EAAKz8J,OAAS,IAGjCklM,GAAMh6L,QAAQuxJ,GAAQ,EACxB,MAAM,IAAIjC,WAAW,GAAG13I,OAAOujL,GAAY,MAAMvjL,OAAO25I,IAG1D,OAAOA,CACT,CAMA,IAAI8pC,GAAe,4BAEnB,SAASC,GAAYrkM,GAGnB,GAFAA,EAAQuG,OAAOvG,GAEXuG,OAAOywH,WACJzwH,OAAOywH,SAASh3H,GACnB,MAAM,IAAIq4J,WAAW,GAAG13I,OAAOyjL,GAAc,MAAMzjL,OAAO3gB,IAI9D,OAAOA,CACT,CAoBA,SAASwjM,GAAgB/lM,GACvB,GAAIA,EAAKI,OAAS,EAChB,MAAM,IAAIV,UAAU,+BAGtB,MAAO,CAACknM,GAAY5mM,EAAK,IAAK0mM,GAAU1mM,EAAK,IAC/C,CCxdA,SAAS,GAAQu7B,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAI/U,SAAS,GAAkBjzB,EAAQkK,GAAS,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CAAE,IAAI2hC,EAAapvB,EAAMvS,GAAI2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EAAOuxB,EAAW0D,cAAe,EAAU,UAAW1D,IAAYA,EAAW2D,UAAW,GAAMj/B,OAAO4J,eAAe5H,EAAQs5B,EAAW9/B,IAAK8/B,EAAa,CAAE,CAW5T,IAAIilK,GAAqB,WACvB,SAASA,KAdX,SAAyBlyJ,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1C,UAAU,oCAAwC,CAepJ,CAAgBf,KAAMkoM,GAEtBloM,KAAKqhC,MAAQ,CAAC,CAChB,CAdF,IAAsB4U,EAAaG,EAAYC,EA8D7C,OA9DoBJ,EAgBPiyJ,EAhBoB9xJ,EAgBb,CAAC,CACnBjzC,IAAK,MACLS,MAAO,WAGL,IAFA,IAAIy9B,EAAQrhC,KAAKqhC,MAER/5B,EAAO5F,UAAUD,OAAQ4P,EAAO,IAAItP,MAAMuF,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/E6J,EAAK7J,GAAQ9F,UAAU8F,GAGzB,IAAK,IAAIy9B,EAAK,EAAGkjK,EAAQ92L,EAAM4zB,EAAKkjK,EAAM1mM,OAAQwjC,IAAM,CACtD,IAAI9hC,EAAMglM,EAAMljK,GAEhB,GAAuB,WAAnB,GAAQ5D,GACV,OAGFA,EAAQA,EAAMl+B,EAChB,CAEA,OAAOk+B,CACT,GACC,CACDl+B,IAAK,MACLS,MAAO,WACL,IAAK,IAAIgvF,EAAQlxF,UAAUD,OAAQ4P,EAAO,IAAItP,MAAM6wF,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxhF,EAAKwhF,GAASnxF,UAAUmxF,GAO1B,IAJA,IAAIjvF,EAAQyN,EAAKo8D,MACb26H,EAAU/2L,EAAKo8D,MACfpsC,EAAQrhC,KAAKqhC,MAERgnK,EAAM,EAAGC,EAASj3L,EAAMg3L,EAAMC,EAAO7mM,OAAQ4mM,IAAO,CAC3D,IAAIllM,EAAMmlM,EAAOD,GAEW,WAAxB,GAAQhnK,EAAMl+B,MAChBk+B,EAAMl+B,GAAO,CAAC,GAGhBk+B,EAAQA,EAAMl+B,EAChB,CAEA,OAAOk+B,EAAM+mK,GAAWxkM,CAC1B,IA3D8DwyC,GAAY,GAAkBH,EAAYv1C,UAAW01C,GAAiBC,GAAa,GAAkBJ,EAAaI,GAAc1uC,OAAO4J,eAAe0kC,EAAa,YAAa,CAAErP,UAAU,IA8DrPshK,CACT,CAtDyB,GCfzB,SAAS,GAAQtrK,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAE/U,SAAS2rK,GAAgCr1J,EAAGs1J,GAAkB,IAAIt2H,EAAuB,oBAAX1rC,QAA0B0M,EAAE1M,OAAOC,WAAayM,EAAE,cAAe,GAAIg/B,EAAI,OAAQA,EAAKA,EAAGpwE,KAAKoxC,IAAIrU,KAAK3qB,KAAKg+D,GAAK,GAAInwE,MAAMgpB,QAAQmoB,KAAOg/B,EAExN,SAAqCh/B,EAAGyF,GAAU,IAAKzF,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGyF,GAAS,IAAI93C,EAAI8G,OAAOjH,UAAU4tB,SAASxsB,KAAKoxC,GAAGlxC,MAAM,GAAI,GAAc,WAANnB,GAAkBqyC,EAAEhiC,cAAarQ,EAAIqyC,EAAEhiC,YAAYyG,MAAM,GAAU,QAAN9W,GAAqB,QAANA,EAAa,OAAOkB,MAAM6c,KAAKs0B,GAAI,GAAU,cAANryC,GAAqB,2CAA2C8M,KAAK9M,GAAI,OAAO,GAAkBqyC,EAAGyF,EAAS,CAFlM,CAA4BzF,KAAOs1J,GAAkBt1J,GAAyB,iBAAbA,EAAEzxC,OAAqB,CAAMywE,IAAIh/B,EAAIg/B,GAAI,IAAI5wE,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAK4xC,EAAEzxC,OAAe,CAAEkmC,MAAM,GAAe,CAAEA,MAAM,EAAO/jC,MAAOsvC,EAAE5xC,KAAQ,CAAG,CAAE,MAAM,IAAIP,UAAU,wIAA0I,CAI3lB,SAAS,GAAkBqmC,EAAKhmC,IAAkB,MAAPA,GAAeA,EAAMgmC,EAAI3lC,UAAQL,EAAMgmC,EAAI3lC,QAAQ,IAAK,IAAIH,EAAI,EAAGu3C,EAAO,IAAI92C,MAAMX,GAAME,EAAIF,EAAKE,IAAOu3C,EAAKv3C,GAAK8lC,EAAI9lC,GAAM,OAAOu3C,CAAM,CA2D/K,SAAS4vJ,KAMd,MADsF,YAA/C,oBAAT5jK,KAAuB,YAAc,GAAQA,QAClB,mBAAxBA,KAAKK,cACxC,CCxEA,SAAS,GAAQtI,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAEhU,SAAS8rK,GAAcl2K,GACpC,OAQF,SAAkBA,GAChB,YAA2BryB,IAApB,GAAQqyB,IAAoC,OAAXA,GAAmBA,EAAOthB,cAAgBy3L,EACpF,CAVSroM,CAASkyB,KAAYzwB,MAAMgpB,QAAQyH,EAAOo2K,QACjD7mM,MAAMgpB,QAAQyH,EAAOq2K,YACrB9mM,MAAMgpB,QAAQyH,EAAOs2K,UAAsC,iBAAnBt2K,EAAOs2K,SAAwB/mM,MAAMgpB,QAAQyH,EAAOszJ,SAAoC,iBAAlBtzJ,EAAOszJ,QACrH/jL,MAAMgpB,QAAQyH,EAAOu2K,QACI,mBAAlBv2K,EAAOw2K,OAChB,CACA,IAAIL,GAAqB,CAAC,EAAEz3L,YCTrB,IAAIqrJ,GAAS,GAETD,GAAO,GAAKC,GAEZL,GAAM,GAAKI,GAEX2sC,GAAO,EAAI/sC,GAGXt7E,GAAQ,MAAQs7E,GAGhBv7E,GAAO,SAAeu7E,GAE1B,SAASgtC,GAAiBhrC,GAC/B,OAAQA,GACN,IAAK,SACH,OAAO,EAET,IAAK,SACH,OAAO3B,GAET,IAAK,OACH,OAAOD,GAET,IAAK,MACH,OAAOJ,GAET,IAAK,OACH,OAAO+sC,GAET,IAAK,QACH,OAAOroH,GAET,IAAK,OACH,OAAOD,GAEb,CCpCe,SAASwoH,GAAmBC,GAEzC,YAAoBjpM,IAAhBipM,EAAKC,OACAD,EAAKC,OAIPH,GAAiBE,EAAKlrC,MAAQkrC,EAAKE,WAAa,CACzD,CCTO,SAASC,GAAiBj2K,GAC/B,MACO,UADCA,EAEGprB,KAAKukE,MAGLvkE,KAAKorB,KAElB,CAEO,SAASk2K,GAAgCl2K,GAC9C,MACO,UADCA,EAIG,EAKA,EAEb,CCtBA,SAAS,GAAQsJ,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAIhU,SAAS6sK,GAAeL,EAAM1lM,GAC3C,IAKIgmM,EALAC,EAAWjmM,EAAKimM,SAChB99H,EAAYnoE,EAAKmoE,UACjBmB,EAAMtpE,EAAKspE,IACX48H,EAASlmM,EAAKkmM,OACdt2K,EAAQ5vB,EAAK4vB,MAiFjB,OA9EIq2K,IACEA,EAAShmM,IAAMgmM,EAASzrC,QAC1BwrC,EAAUN,EAAK,iBAAiB7kL,OAAOolL,EAAShmM,IAAMgmM,EAASzrC,aAInD/9J,IAAZupM,QAEqBvpM,IAAnBipM,EAAKh5L,WAIgB,mBAFvBs5L,EAAUN,EAAKh5L,aAGbs5L,EAAUA,EAAQ18H,EAAK48H,SAKbzpM,IAAZupM,IACFA,EAAUN,EAAKM,SAKQ,WAArB,GAAQA,KAERA,EADEC,GAAYA,EAAShmM,SAA+BxD,IAAzBupM,EAAQC,EAAShmM,IACpC+lM,EAAQC,EAAShmM,IAEjB+lM,EAAiB,SAIR,mBAAZA,IACTA,EAAUA,EAAQ79H,EAAW,CAC3B+9H,OAAQA,EACRC,kBAAmB,SAA2BC,EAAQC,GACpD,OAAOC,GAAmBF,EAAQC,GAAYJ,GAAYA,EAASL,SAAU,CAC3Eh2K,MAAOA,GAEX,UAMYnzB,IAAZupM,GACEN,EAAKz7L,OAML+7L,EALEN,EAAKz7L,KAAKk+D,EAAW,CACvBmB,IAAKA,EACL48H,OAAQA,IAGE,EAGA,uBAKAzpM,IAAZupM,IACEC,EACEP,EAAKE,UAAYK,EAASL,WAC5BI,EAAUM,GAAmBZ,EAAKE,SAAUK,EAASL,SAAU,CAC7Dh2K,MAAOA,KAKXo2K,EAAU,QAKEvpM,IAAZupM,GACFlnM,QAAQyxD,KAAK,2DAA6Dj5C,KAAKC,UAAUmuL,EAAM,KAAM,IAGhGM,CACT,CAEA,SAASM,GAAmBF,EAAQC,EAAU5kM,GAC5C,IAQI8kM,EARA32K,EAAQnuB,EAAMmuB,MACd42K,EAAehB,GAAiBY,GAepC,GALEG,EAAiBf,GADF,QAAba,EACgCD,EAEAC,QAGf5pM,IAAjB+pM,QAAiD/pM,IAAnB8pM,EAChC,OAAOC,EAAeD,GAAkB,EAAIT,GAAgCl2K,GAEhF,CCjHA,SAAS,GAAQd,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAIpV,SAAS,GAAgBurB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CA4BjM,SAASutK,GAAQvB,EAAOwB,EAAe1mM,GACpD,IAAIspE,EAAMtpE,EAAKspE,IACX48H,EAASlmM,EAAKkmM,OACdt2K,EAAQ5vB,EAAK4vB,MACby1K,EAAQrlM,EAAKqlM,MACbsB,EAAc3mM,EAAK2mM,YAEvBzB,EAwGF,SAA4BA,EAAOG,GACjC,OAAOH,EAAMnhM,QAAO,SAAUnC,GAC5B,IAAI44J,EAAO54J,EAAM44J,KACborC,EAAWhkM,EAAMgkM,SAKrB,QAHAprC,EAAOA,GAAQorC,IAINP,EAAMp8L,QAAQuxJ,IAAS,CAOlC,GACF,CAzHUosC,CAAmB1B,EAAOG,GAElC,IAAIK,EAmBN,SAAkBR,EAAOwB,EAAejlM,GACtC,IAAI6nE,EAAM7nE,EAAM6nE,IACZ48H,EAASzkM,EAAMykM,OACft2K,EAAQnuB,EAAMmuB,MAGlB,GAAqB,IAAjBs1K,EAAMnnM,OACR,OAIF,IAAIH,EAAIipM,GAAa3B,EAAOwB,EAAe,CACzCp9H,IAAKA,EACL48H,OAAQA,GAAUQ,EAAgB,EAClC92K,MAAOA,IAGT,IAAW,IAAPhyB,EACF,OAGF,IAAI8nM,EAAOR,EAAMtnM,GAKjB,GAAI8nM,EAAKoB,YAAa,CAMpB,GAA8B,IAJFjB,GAAiBj2K,EAAjBi2K,CAAwBrhM,KAAKoI,IAAI85L,GAAiBjB,GAAmBC,GAAQA,EAAKoB,aAAepB,EAAKoB,aAI/FlpM,EAAI,EACrC,OAAOsnM,EAAMtnM,EAAI,EAErB,CAEA,OAAO8nM,CACT,CAzDaqB,CAAS7B,EAAOwB,EAAe,CACxCp9H,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,IAGT,OAAI+2K,EACEjB,EAGK,CAFQR,EAAMA,EAAMj8L,QAAQy8L,GAAQ,GAEzBA,EADHR,EAAMA,EAAMj8L,QAAQy8L,GAAQ,IAItC,MAACjpM,OAAWA,EAAWyoM,EAAM,IAG/BQ,CACT,CAoDA,SAASmB,GAAa3B,EAAOwB,EAAehjM,GAC1C,IAAI9F,EAAII,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,EACxEgoM,EAAUD,GAAeb,EAAMtnM,GA9GrC,SAAuBqI,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CA8Ghd,CAAc,CACnDggM,SAAUf,EAAMtnM,EAAI,GACpBuqE,UAAWzkE,EAAQ4lE,IAAsB,IAAhBo9H,GACxBhjM,IAEH,YAAgBjH,IAAZupM,GAMAxhM,KAAKoI,IAAI85L,GAAiBV,EALrBpoM,EAAI,EAUTA,IAAMsnM,EAAMnnM,OAAS,EAChBH,EAIFipM,GAAa3B,EAAOwB,EAAehjM,EAAS9F,EAAI,EACzD,CC3He,SAAS,GAA2B48J,EAAMryF,EAAWnoE,GAClE,IAAIspE,EAAMtpE,EAAKspE,IACX15C,EAAQ5vB,EAAK4vB,MAGjB,GAAK41K,GAAiBhrC,GAAtB,CAMA,IAAIwsC,EAA2C,IAAzBxB,GAAiBhrC,GACnC0rC,EAAS/9H,EAAYmB,EACrB29H,EAAgBziM,KAAKoI,IAAIu7D,EAAYmB,GACrC49H,EAAgBrB,GAAiBj2K,EAAjBi2K,CAAwBoB,EAAgBD,GAAmBA,EAE/E,OAAId,EACEgB,EAAgB,EAEXD,EAAgBC,EAgB7B,SAAwCt3K,EAAOo3K,GAC7C,OAAQ,EAAIlB,GAAgCl2K,IAAUo3K,EAAkB,CAC1E,CAlB6CG,CAA+Bv3K,EAAOo3K,GAItEC,EAAgBC,EAAgB,IAKlCD,EAAgBC,GAG3B,SAAoCt3K,EAAOo3K,GACzC,OAAOlB,GAAgCl2K,GAASo3K,CAClD,CAL4CI,CAA2Bx3K,EAAOo3K,EAnB5E,CAoBF,CCpCA,IACWK,GAAW,QAaP,SAASC,GAAoBtqH,EAAM0oH,EAAM1lM,GACtD,IAAIimM,EAAWjmM,EAAKimM,SAChBsB,EAAWvnM,EAAKunM,SAChBj+H,EAAMtpE,EAAKspE,IACX48H,EAASlmM,EAAKkmM,OACdt2K,EAAQ5vB,EAAK4vB,MACbu4C,EAAY6U,EAAKnpD,QAAUmpD,EAAKnpD,UAAYmpD,EAE5CwqH,EAA6B,SAAoChtC,GACnE,OAAO,GAA4BA,EAAMryF,EAAW,CAClDmB,IAAKA,EACL15C,MAAOA,GAEX,EAgBI63K,EA0FC,SAA6B/B,EAAMv9H,EAAWvmE,GACnD,IAAI0nE,EAAM1nE,EAAM0nE,IACZ48H,EAAStkM,EAAMskM,OACft2K,EAAQhuB,EAAMguB,MACdq2K,EAAWrkM,EAAMqkM,SAErB,GAAIP,EAAM,CACR,IAAIgC,EAlDD,SAA0BC,EAAmBx/H,EAAW1mE,GAC7D,IAAI6nE,EAAM7nE,EAAM6nE,IACZ48H,EAASzkM,EAAMykM,OACft2K,EAAQnuB,EAAMmuB,MACdq2K,EAAWxkM,EAAMwkM,SAMjBD,EAAUD,GAAe4B,EAAmB,CAC9Cx/H,UAAWA,EACXmB,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,EACPq2K,SAAUA,IAGZ,QAAgBxpM,IAAZupM,EACF,OAGF,OAAIE,EAMK/9H,EAAsB,IAAV69H,EAAiB,EAQpB,IAAZA,GAAiB79H,IAAcmB,EAC1B+9H,GAGFl/H,EAAsB,IAAV69H,CAEvB,CAQwB4B,CAAiBlC,EAAMv9H,EAAW,CACpDmB,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,EACPq2K,SAAUA,IAGZ,QAAsBxpM,IAAlBirM,EACF,OAGF,OAAOA,EAAgBp+H,CACzB,CACE,OAAI48H,EAGK/9H,EAAYmB,EAAM,EAGlB+9H,EAGb,CAvHyBQ,CAAoB3B,EAASR,EAAO6B,EAAUp/H,EAAW,CAC9E+9H,OAAQA,EACR58H,IAAKA,EACL15C,MAAOA,EACPq2K,SAAUC,EAASD,EAAWP,IAIhC,QAAyBjpM,IAArBgrM,EAAJ,CAMA,IAAIK,EAEJ,GAAIpC,IACEA,EAAK4B,sBACPQ,EAAmBpC,EAAK4B,oBAAoBn/H,EAAW,CACrDq/H,2BAA4BA,EAC5B3B,iBAAkBA,GAClBv8H,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,UAIcnzB,IAArBqrM,GAAgC,CAElC,IAAIttC,EAAOkrC,EAAKlrC,MAAQkrC,EAAKE,SAEzBprC,IAKFstC,EAAmBN,EAA2BhtC,GAElD,CAGF,YAAyB/9J,IAArBqrM,EACKL,EAGFjjM,KAAK4B,IAAI0hM,EAAkBL,EAjClC,CAkCF,CC3FA,IAAI,GAAc,CAAC,EACZ,SAAS,GAAcroK,GAC5B,OAAO,GAAYA,EACrB,CACO,SAAS,GAAc8kK,GAC5B,IAAKA,EACH,MAAM,IAAIjmM,MAAM,gDAKlB,GAAYimM,EAAW9kK,QAAU8kK,CACnC,CCcA,ICMA,IACEgB,MDPF,CAAgB,CACdU,SAAU,OACT,CACDA,SAAU,UACT,CACDA,SAAU,UACT,CACDA,SAAU,QACT,CACDA,SAAU,OACT,CACDA,SAAU,QACT,CACDA,SAAU,SACT,CACDA,SAAU,SCPVxjB,OAAQ,QCpCV,SAAS,GAAQtzJ,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAgChN,OAAe,GAAc,GAAc,CAAC,EAAG,IAAQ,CAAC,EAAG,CAEzDgsK,MAAO,GAAMA,MAAMnhM,QAAO,SAAU2hM,GAClC,MAAyB,WAAlBA,EAAKE,QACd,MCRF,IAAgB,CAGdD,OAAQ,EAERnrC,KAAM,OACL,CAGD9tJ,UAAW,EAEXq7L,kBAAmB,KAGnBpC,OAAQ,EAERnrC,KAAM,UACL,CAED9tJ,UAAW,KAGXi5L,OAAQ9sC,GAER2B,KAAM,UACL,CAED9tJ,UAAW,IAAMmsJ,GAOjBiuC,YAAa,EAGbnB,OAAQ9sC,GAER2B,KAAM,UACL,CAED9tJ,UAAW,KAAOmsJ,GAGlB8sC,OAAQ,GAAM/sC,GAGd4B,KAAM,aACL,CAED9tJ,UAAW,KAAOmsJ,GAClBmvC,qBAAsB,KAAOnvC,GAG7B8sC,OAAQ/sC,GAER4B,KAAM,QACL,CAED9tJ,UAAW,KAAO,GAAK8rJ,GAGvBmtC,OAAQntC,GAERgC,KAAM,OACL,CAED9tJ,UAAW,IAAM8rJ,GAGjBmtC,OAAQJ,GAER/qC,KAAM,QACL,CAED9tJ,UAAW,IAAM64L,GAGjBI,OAAQzoH,GAERs9E,KAAM,SACL,CAED9tJ,UAAW,KAAOwwE,GAGlByoH,OAAQ1oH,GAERu9E,KAAM,SC/GR,IACE2qC,UAAW8C,GACX7C,QAAS,OACTC,MAAO,CAAC,MAAO,SAAU,OAAQ,MAAO,OAAQ,QAAS,SCoB3D,IACEF,UAAW8C,GACX7C,QAAS,YACTC,MAAO,CAAC,MAAO,SAAU,OAAQ,MAAO,OAAQ,QAAS,SCfpD,SAASlnH,GAAQj+E,GACtB,OAAOA,aAAiB0zB,KAAO1zB,EAAQ,IAAI0zB,KAAK1zB,EAClD,CCdA,IAAIglM,GAAQ,CAAC,CACXU,SAAU,UACT,CACDA,SAAU,UACT,CACDA,SAAU,SAIR3jK,GAAa,CAAC,EAEdimK,GAAc,CAChBlC,QAAS,SAAiB79H,EAAWnoE,GACtBA,EAAKkmM,OAIlB,OAAOC,EAHiBnmM,EAAKmmM,mBAGJ,MAC3B,EACA7jK,OAAQ,SAAgBpiC,EAAOk/B,GAiB7B,OAfK6C,GAAW7C,KACd6C,GAAW7C,GAAU,CAAC,GAKnB6C,GAAW7C,GAAQ+oK,WAEtBlmK,GAAW7C,GAAQ+oK,SAAW,IAAIhnK,KAAKK,eAAepC,EAAQ,CAC5D89C,MAAO,QACPs7E,IAAK,aAKFv2H,GAAW7C,GAAQ+oK,SAAS7lK,OAAO67C,GAAQj+E,GACpD,GAKEkoM,GAAkB,CACpBpC,QAAS,SAAiB79H,EAAW1mE,GAGnC,OAFaA,EAAMykM,QAYT/9H,GAFY,IAAIv0C,KAAK,IAAIA,KAAKu0C,GAAW4V,cAAe,GAAGlqD,UAAY,IAE1C,KAOjB,IAAID,KAAK,IAAIA,KAAKu0C,GAAW4V,cAAgB,EAAG,GAAGlqD,UAE/Cs0C,GAAa,GAEzC,EACA7lC,OAAQ,SAAgBpiC,EAAOk/B,GAkB7B,OAhBK6C,GAAW7C,KACd6C,GAAW7C,GAAU,CAAC,GAKnB6C,GAAW7C,GAAQipK,eAEtBpmK,GAAW7C,GAAQipK,aAAe,IAAIlnK,KAAKK,eAAepC,EAAQ,CAChE69C,KAAM,UACNC,MAAO,QACPs7E,IAAK,aAKFv2H,GAAW7C,GAAQipK,aAAa/lK,OAAO67C,GAAQj+E,GACxD,GAME6kM,KACFG,GAAMtmM,KAAKspM,GAAaE,IAKxBlD,GAAMtmM,KAAK,CACTgnM,SAAU,OACT,CACDA,SAAU,QACT,CACDA,SAAU,SACT,CACDA,SAAU,SAId,QACEV,MAAOA,GACP9iB,OAAQ,CACR,OACA,aAMA,SAEA,UCnIF,SAAS,GAAQtzJ,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGovK,IAAU,CAAC,EAAG,CAE3DpD,MAAO,CAAC,CACNU,SAAU,QACT/kL,OAAOynL,GAAQpD,SCXpB,SAAS,GAAQp2K,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGovK,IAAU,CAAC,EAAG,CAE3DpD,MAAOoD,GAAQpD,MAAMnhM,QAAO,SAAU2hM,GACpC,MAAyB,WAAlBA,EAAKE,QACd,MCXF,SAAS,GAAQ92K,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGqvK,IAAgB,CAAC,EAAG,CAEjErD,MAAO,CAAC,CACNU,SAAU,QACT/kL,OAAO0nL,GAAcrD,SCX1B,SAAS,GAAQp2K,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAIhN,OAAe,GAAc,GAAc,CAAC,EAAGovK,IAAU,CAAC,EAAG,CAE3DpD,MAAOoD,GAAQpD,MAAMnhM,QAAO,SAAU2hM,GACpC,MAAyB,WAAlBA,EAAKE,QACd,IACC9kL,KAAI,SAAU4kL,GACb,MAAyB,WAAlBA,EAAKE,SAAwB,GAAc,GAAc,CAAC,EAAGF,GAAO,CAAC,EAAG,CAC7EM,QAASntC,KACN6sC,CACP,MCjBF,IACER,MAAO,CAAC,CACNU,SAAU,UACT,CACDA,SAAU,UACT,CACDA,SAAU,QACT,CACDA,SAAU,OACT,CACDA,SAAU,SACT,CACDA,SAAU,SAEZxjB,OAAQ,CACR,OACA,aAMA,SAEA,UCxBF,SAAS,GAAQtzJ,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGsvK,IAAO,CAAC,EAAG,CAExDtD,MAAO,CAAC,CACNU,SAAU,QACT/kL,OAAO2nL,GAAKtD,SCXjB,SAAS,GAAQp2K,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGsvK,IAAO,CAAC,EAAG,CAExDtD,MAAOsD,GAAKtD,MAAMnhM,QAAO,SAAU2hM,GACjC,MAAyB,WAAlBA,EAAKE,QACd,MCXF,SAAS,GAAQ92K,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CAEpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CAEzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAAiK,OAApJT,KAAOy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAGhN,OAAe,GAAc,GAAc,CAAC,EAAGuvK,IAAa,CAAC,EAAG,CAE9DvD,MAAO,CAAC,CACNU,SAAU,QACT/kL,OAAO4nL,GAAWvD,SCXvB,SAAS,GAAQhsK,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAI/U,SAAS,GAAewK,EAAK9lC,GAAK,OAUlC,SAAyB8lC,GAAO,GAAIrlC,MAAMgpB,QAAQqc,GAAM,OAAOA,CAAK,CAV3B,CAAgBA,IAQzD,SAA+BA,EAAK9lC,GAAK,IAAI2jC,EAAY,MAAPmC,EAAc,KAAyB,oBAAXZ,QAA0BY,EAAIZ,OAAOC,WAAaW,EAAI,cAAe,GAAU,MAANnC,EAAY,OAAQ,IAAkDyC,EAAID,EAAlDH,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKvC,EAAKA,EAAGnjC,KAAKslC,KAAQG,GAAMG,EAAKzC,EAAGpG,QAAQ8I,QAAoBL,EAAKhlC,KAAKolC,EAAG9jC,QAAYtC,GAAKgmC,EAAK7lC,SAAWH,GAA3DimC,GAAK,GAAkE,CAAE,MAAO3lC,GAAO4lC,GAAK,EAAMC,EAAK7lC,CAAK,CAAE,QAAU,IAAW2lC,GAAsB,MAAhBtC,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIuC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOH,CAAM,CAR/b,CAAsBF,EAAK9lC,IAAM,GAA4B8lC,EAAK9lC,IAEnI,WAA8B,MAAM,IAAIP,UAAU,4IAA8I,CAFvD,EAAoB,CAI7J,SAAS,GAA4BmyC,EAAGyF,GAAU,GAAKzF,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAO,GAAkBA,EAAGyF,GAAS,IAAI93C,EAAI8G,OAAOjH,UAAU4tB,SAASxsB,KAAKoxC,GAAGlxC,MAAM,GAAI,GAAiE,MAAnD,WAANnB,GAAkBqyC,EAAEhiC,cAAarQ,EAAIqyC,EAAEhiC,YAAYyG,MAAgB,QAAN9W,GAAqB,QAANA,EAAoBkB,MAAM6c,KAAKs0B,GAAc,cAANryC,GAAqB,2CAA2C8M,KAAK9M,GAAW,GAAkBqyC,EAAGyF,QAAzG,CAA7O,CAA+V,CAE/Z,SAAS,GAAkBvR,EAAKhmC,IAAkB,MAAPA,GAAeA,EAAMgmC,EAAI3lC,UAAQL,EAAMgmC,EAAI3lC,QAAQ,IAAK,IAAIH,EAAI,EAAGu3C,EAAO,IAAI92C,MAAMX,GAAME,EAAIF,EAAKE,IAAOu3C,EAAKv3C,GAAK8lC,EAAI9lC,GAAM,OAAOu3C,CAAM,CAQtL,SAAS,GAAkBlvC,EAAQkK,GAAS,IAAK,IAAIvS,EAAI,EAAGA,EAAIuS,EAAMpS,OAAQH,IAAK,CAAE,IAAI2hC,EAAapvB,EAAMvS,GAAI2hC,EAAWvxB,WAAauxB,EAAWvxB,aAAc,EAAOuxB,EAAW0D,cAAe,EAAU,UAAW1D,IAAYA,EAAW2D,UAAW,GAAMj/B,OAAO4J,eAAe5H,EAAQs5B,EAAW9/B,IAAK8/B,EAAa,CAAE,CAgB5T,IAseImpK,GAneAC,GAAuB,WAKzB,SAASA,IACP,IAAI7mK,EAAU9jC,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,GAG9EmtF,GADOntF,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC5DmtF,UA9BxB,SAAyB74C,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIl1C,UAAU,oCAAwC,CAgCpJ,CAAgBf,KAAMqsM,GAGC,iBAAZ7mK,IACTA,EAAU,CAACA,IAMbxlC,KAAK8iC,O1BpCM,SAAsB0C,EAAS8mK,GAI5C,IAAK,IAA0DC,EAAtDC,EAAYjE,GAAgC/iK,KAAmB+mK,EAAQC,KAAa7kK,MAAO,CAClG,IAAI7E,EAASypK,EAAM3oM,MAEnB,GAAI0oM,EAAsBxpK,GACxB,OAAOA,EAKT,IAFA,IAAIsR,EAAQtR,EAAOj3B,MAAM,KAElBuoC,EAAM3yC,OAAS,GAIpB,GAHA2yC,EAAMq5B,MAGF6+H,EAFJxpK,EAASsR,EAAM3gB,KAAK,MAGlB,OAAOqP,CAGb,CAEA,MAAM,IAAInhC,MAAM,8DAA8D4iB,OAAOihB,EAAQ/R,KAAK,OACpG,C0BYkBg5K,CAAajnK,EAAQjhB,OAAO8nL,EAAQtN,oBAAqB,IAEnD,oBAATl6J,MAELA,KAAKO,eACPplC,KAAKgnM,aAAe,IAAIniK,KAAKO,aAAaplC,KAAK8iC,UAQlC,IAAb+rD,GACF7uF,KAAK0sM,uBAAyB7nK,KAAKD,mBACnC5kC,KAAK2sM,gBAAkB9nK,KAAKS,cAE5BtlC,KAAK0sM,uBAAyB9nK,GAC9B5kC,KAAK2sM,gBAAkB/nK,GAA2BU,aAIpDtlC,KAAK4sM,wBAA0B,IAAI1E,GAEnCloM,KAAK6sM,iBAAmB,IAAI3E,EAC9B,CA/DF,IAAsBjyJ,EAAaG,EAAYC,EA0c7C,OA1coBJ,EAuFPo2J,EAvFoBj2J,EAuFX,CAAC,CACrBjzC,IAAK,SACLS,MAAO,SAAgBmxB,EAAOlxB,EAAOuD,GA2gBzC,IAAiB0lM,EA1gBN1lM,IACCvD,GA0gBiB,iBADZipM,EAzgBajpM,KA0gBW6kM,GAAcoE,IAzgB7C1lM,EAAUvD,EACVA,OAAQ1D,GAERiH,EAAU,CAAC,GAIVvD,IACHA,EAAQ,IAGW,iBAAVA,IACTA,EC7GO,SAAwBA,GACrC,OAAQA,GAEN,IAAK,UACL,IAAK,QACH,OAAO,GAET,IAAK,eACH,OAAOkpM,GAET,IAAK,cAmCL,QAEE,OAAO,GAjCT,IAAK,OACL,IAAK,mBACH,OAAOC,GAET,IAAK,OACH,OAAOd,GAET,IAAK,WACH,OAAOe,GAET,IAAK,cACH,OAAOd,GAET,IAAK,kBACH,OAAOe,GAET,IAAK,UACH,OAAOlB,GAET,IAAK,cACH,OAAOmB,GAET,IAAK,iBACH,OAAOlB,GAET,IAAK,qBACH,OAAOmB,GAET,IAAK,uBACH,OAAOC,GAMb,CD4DgBC,CAAezpM,IAGzB,IAOImpE,EAPAnB,EAibV,SAAsB92C,GACpB,GAAIA,EAAM7jB,cAAgBomB,MAiBC,WAApB,GADa9E,EAhB2BuC,IAiBkB,mBAAnBvC,EAAO+E,QAhBnD,OAAOxC,EAAMwC,UAejB,IAAsB/E,EAZpB,GAAqB,iBAAVuC,EACT,OAAOA,EAMT,MAAM,IAAIpzB,MAAM,8CAA8C4iB,OAAO,GAAQwQ,GAAQ,MAAMxQ,OAAOwQ,GACpG,CA9bsBw4K,CAAax4K,GAGzBy4K,EAAkBxtM,KAAKytM,UAAU5pM,EAAMilM,SAAWjlM,EAAMiiL,QACxDA,EAAS0nB,EAAgB1nB,OACzB4nB,EAAaF,EAAgBE,gBAOfvtM,IAAd0D,EAAMmpE,MACRA,EAAMnpE,EAAMmpE,UAIF7sE,IAAR6sE,QAAqC7sE,IAAhBiH,EAAQ4lE,MAC/BA,EAAM5lE,EAAQ4lE,UAGJ7sE,IAAR6sE,IACFA,EAAM11C,KAAK01C,OAIb,IAAIo9H,GAAiBp9H,EAAMnB,GAAa,IAEpC+9H,EAASxiM,EAAQwiM,QAAUQ,EAAgB,EAC3CuD,EAicV,SAAqB7nB,EAAQ8nB,EAAWC,EAAYjE,GAClD,IAAI+D,EAAW7nB,EAAO94G,KAAO4gI,GAAaA,EAAU5gI,IAEpD,OAAI2gI,EAEsB,iBAAbA,EACFA,EAQL/D,EACK+D,EAAS/D,OAET+D,EAASG,KAKhBD,GAAcA,EAAWrxC,QAAUqxC,EAAWrxC,OAAO5nJ,QAChDi5L,EAAWrxC,OAAO5nJ,aAD3B,CAGF,CA1dqBm5L,CAAYjoB,EAAQ,GAAc9lL,KAAK8iC,QAAQkqC,IAAK,GAAchtE,KAAK8iC,QAAc,KAAG8mK,GAavG,GAAI/lM,EAAMmlM,OAAQ,CAChB,IAAIA,EAASnlM,EAAMmlM,OAAO,CACxBh8H,IAAKA,EACL0T,KAAM,IAAIppD,KAAKu0C,GACfusE,KAAMvsE,EACNmiI,QAAS5D,EACTtnK,OAAQ9iC,KAAK8iC,SAGf,QAAe3iC,IAAX6oM,EAGF,OAAOA,CAEX,CAGA,IAAID,EA4YV,SAAyCkF,EAAcnoB,EAAQ6nB,GAG7D,IAAI5E,EAAQphM,OAAO0J,KAAKy0K,GAiBxB,OAZI6nB,GACF5E,EAAMzmM,KAAK,OAKT2rM,IACFlF,EAAQkF,EAAaxmM,QAAO,SAAUy2J,GACpC,MAAgB,QAATA,GAAkB6qC,EAAMp8L,QAAQuxJ,IAAS,CAClD,KAGK6qC,CACT,CAjakBmF,CAEZrqM,EAAMklM,MAAOjjB,EAAQ6nB,GAMjBr6K,EAAQlsB,EAAQksB,OAASzvB,EAAMyvB,MAa/B66K,EAAY,GAVDhE,GAGftmM,EAAMglM,WAAahlM,EAAM+kM,OAAS,GAAaA,MAAOwB,EAAe,CACnEp9H,IAAKA,EACL+7H,MAAOA,EACPz1K,MAAOA,EACPs2K,OAAQA,EACRS,aAAa,IAE0B,GACrCV,EAAWwE,EAAU,GACrB/E,EAAO+E,EAAU,GACjBlD,EAAWkD,EAAU,GAErBC,EAAgBpuM,KAAKquM,kBAAkBxiI,EAAWu9H,EAAMgB,EAAe,CACzEtkB,OAAQA,EACR4nB,WAAYA,EACZC,SAAUA,EACV3gI,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,KACH,GAEN,OAAIlsB,EAAQ4jM,oBAQH,CAACoD,EAPepD,GAAoBn/H,EAAWu9H,EAAM,CAC1D6B,SAAUA,EACVtB,SAAUA,EACV38H,IAAKA,EACL48H,OAAQA,EACRt2K,MAAOA,KAKJ86K,CACT,GACC,CACDjrM,IAAK,oBACLS,MAAO,SAA2BioE,EAAWu9H,EAAMgB,EAAejlM,GAChE,IAAI26B,EAAQ9/B,KAER8lL,EAAS3gL,EAAM2gL,OACf4nB,EAAavoM,EAAMuoM,WACnBC,EAAWxoM,EAAMwoM,SACjB3gI,EAAM7nE,EAAM6nE,IACZ48H,EAASzkM,EAAMykM,OACft2K,EAAQnuB,EAAMmuB,MAGlB,GAAK81K,EAAL,CAIA,GAAIA,EAAKpjK,OACP,OAAOojK,EAAKpjK,OAAO6lC,EAAW7rE,KAAK8iC,OAAQ,CACzCwmK,SAAU,SAAkBprC,EAAMt6J,GAEhC,OAAOk8B,EAAMwuK,YAAY1qM,EAAOs6J,EAAM,CACpC4nB,OAAQA,EACR8jB,OAAQA,GAEZ,EACA58H,IAAKA,EACL48H,OAAQA,IAKZ,IAAI1rC,EAAOkrC,EAAKlrC,MAAQkrC,EAAKE,SAE7B,IAAKprC,EACH,MAAM,IAAIv8J,MAAM,sFAAsF4iB,OAAOvJ,KAAKC,UAAUmuL,KAK9H,GAAa,QAATlrC,EACF,OAAOyvC,EAIT,IAAIY,EAASrmM,KAAKoI,IAAI85L,GAAiBjB,GAAmBC,GAYtDA,EAAKoB,cAEP+D,EAAShF,GAAiBj2K,EAAjBi2K,CAAwBgF,EAASnF,EAAKoB,aAAepB,EAAKoB,aAGrE,IAAIgE,GAAsB,EAAItmM,KAAKiS,KAAKiwL,GAAiBb,GAAiBj2K,EAAjBi2K,CAAwBgF,GAejF,OAR2B,IAAvBC,IAEAA,EADE5E,EACmB,GAEC,GAIlB8D,GACN,IAAK,OACL,IAAK,QACL,IAAK,SAEH,OAAO1tM,KAAK+oK,aAAa2kC,GAAY1nK,OAAOwoK,EAAoBtwC,GAElE,QAGE,OAAOl+J,KAAKsuM,YAAYE,EAAoBtwC,EAAM,CAChD4nB,OAAQA,EACR8jB,OAAQA,IA1Ed,CA6EF,GAUC,CACDzmM,IAAK,cACLS,MAAO,SAAqBA,EAAOs6J,EAAM54J,GACvC,IAAIwgL,EAASxgL,EAAMwgL,OACf8jB,EAAStkM,EAAMskM,OACnB,OAAO5pM,KAAKyuM,kBAAkB3oB,EAAQ5nB,EAAMt6J,EAAO,CACjDgmM,OAAQA,IACP3yK,QAAQ,MAAOj3B,KAAKgpK,aAAa9gK,KAAKoI,IAAI1M,IAC/C,GAaC,CACDT,IAAK,oBACLS,MAAO,SAA2B8qM,EAAiBxwC,EAAMt6J,EAAO4B,GAC9D,IAAIokM,EAASpkM,EAAMokM,OASnB,GANa5pM,KAAK8iC,OAMa,iBAL/B4rK,EAAkBA,EAAgBxwC,IAMhC,OAAOwwC,EAMT,IACIC,EAAkBD,EADO,IAAV9qM,EAAcgmM,EAAS,SAAW,OAAShmM,EAAQ,EAAI,OAAS,WAC5B8qM,EAEvD,MAA+B,iBAApBC,EACFA,EAOFA,EAHU3uM,KAAKqlC,iBAAiBygI,OAAO59J,KAAKoI,IAAI1M,MAGjB+qM,EAAgB5lI,KACxD,GAQC,CACD5lE,IAAK,eACLS,MAAO,SAAsB0gC,GAC3B,OAAOtkC,KAAKgnM,aAAehnM,KAAKgnM,aAAahhK,OAAO1B,GAAUnO,OAAOmO,EACvE,GAOC,CACDnhC,IAAK,eACLS,MAAO,SAAsB8pM,GAG3B,OAAO1tM,KAAK4sM,wBAAwBtjM,IAAItJ,KAAK8iC,OAAQ4qK,IAAe1tM,KAAK4sM,wBAAwB7yD,IAAI/5I,KAAK8iC,OAAQ4qK,EAAY,IAAI1tM,KAAK0sM,uBAAuB1sM,KAAK8iC,OAAQ,CACzKj/B,MAAO6pM,IAEX,GAMC,CACDvqM,IAAK,iBACLS,MAAO,WAGL,OAAO5D,KAAK6sM,iBAAiBvjM,IAAItJ,KAAK8iC,SAAW9iC,KAAK6sM,iBAAiB9yD,IAAI/5I,KAAK8iC,OAAQ,IAAI9iC,KAAK2sM,gBAAgB3sM,KAAK8iC,QACxH,GAWC,CACD3/B,IAAK,YACLS,MAAO,WACL,IAAI8pM,EAAahsM,UAAUD,OAAS,QAAsBtB,IAAjBuB,UAAU,GAAmBA,UAAU,GAAK,GAG3D,iBAAfgsM,IACTA,EAAa,CAACA,IAgBhBA,GAZAA,EAAaA,EAAWlpL,KAAI,SAAUkpL,GACpC,OAAQA,GACN,IAAK,OACL,IAAK,YACH,MAAO,OAET,QACE,OAAOA,EAEb,KAGwBnpL,OAAO,QAI/B,IAFA,IAEkEgoL,EAF9D3E,EAAa,GAAc5nM,KAAK8iC,QAE3B0pK,EA/cf,SAAyCt5J,EAAGs1J,GAAkB,IAAIt2H,EAAuB,oBAAX1rC,QAA0B0M,EAAE1M,OAAOC,WAAayM,EAAE,cAAe,GAAIg/B,EAAI,OAAQA,EAAKA,EAAGpwE,KAAKoxC,IAAIrU,KAAK3qB,KAAKg+D,GAAK,GAAInwE,MAAMgpB,QAAQmoB,KAAOg/B,EAAK,GAA4Bh/B,KAAOs1J,GAAkBt1J,GAAyB,iBAAbA,EAAEzxC,OAAqB,CAAMywE,IAAIh/B,EAAIg/B,GAAI,IAAI5wE,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAK4xC,EAAEzxC,OAAe,CAAEkmC,MAAM,GAAe,CAAEA,MAAM,EAAO/jC,MAAOsvC,EAAE5xC,KAAQ,CAAG,CAAE,MAAM,IAAIP,UAAU,wIAA0I,CA+chkB,CAAgC2sM,KAAsBnB,EAAQC,KAAa7kK,MAAO,CACrG,IAAIinK,EAAcrC,EAAM3oM,MAExB,GAAIgkM,EAAWgH,GACb,MAAO,CACLlB,WAAYkB,EACZ9oB,OAAQ8hB,EAAWgH,GAGzB,CACF,IAvc8Dx4J,GAAY,GAAkBH,EAAYv1C,UAAW01C,GAAiBC,GAAa,GAAkBJ,EAAaI,GAAc1uC,OAAO4J,eAAe0kC,EAAa,YAAa,CAAErP,UAAU,IA0crPylK,CACT,CA1b2B,GAicvB,GAAgB,KAMpBA,GAAQtN,iBAAmB,WACzB,OAAO,EACT,EAOAsN,GAAQxE,iBAAmB,SAAU/kK,GACnC,OAAO,GAAgBA,CACzB,EAOAupK,GAAQwC,iBAAmB,SAAUjH,GACnC,GAAIwE,GACF,OAAO5pM,QAAQhB,MAAM,gIAGvB4qM,IAAgC,EAChCC,GAAQxE,iBAAiBD,EAAW9kK,QACpCupK,GAAQ1E,UAAUC,EACpB,EAQAyE,GAAQ1E,UAAY,SAAUC,GAC5B,GAAcA,GACdhjK,GAA2B+iK,UAAUC,EACvC,EASAyE,GAAQvpK,OAASupK,GAAQ1E,UAQzB0E,GAAQyC,UAAY,SAAUhsK,EAAQnrB,EAAMmuK,GAC1C,IAAI8hB,EAAa,GAAc9kK,GAE1B8kK,IACH,GAAc,CACZ9kK,OAAQA,IAEV8kK,EAAa,GAAc9kK,IAG7B8kK,EAAWjwL,GAAQmuK,CACrB,EE7hBAumB,GAAQ1E,UChBR,CACC,OAAU,KACV,KAAQ,CACP,KAAQ,CACP,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,oBACP,MAAS,uBAGX,QAAW,CACV,SAAY,sBACZ,QAAW,iBACX,KAAQ,uBACR,KAAQ,CACP,IAAO,qBACP,MAAS,uBAEV,OAAU,CACT,IAAO,0BACP,MAAS,6BAGX,MAAS,CACR,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,CACP,IAAO,eACP,MAAS,kBAEV,OAAU,CACT,IAAO,oBACP,MAAS,wBAGX,KAAQ,CACP,SAAY,mBACZ,QAAW,cACX,KAAQ,oBACR,KAAQ,CACP,IAAO,kBACP,MAAS,oBAEV,OAAU,CACT,IAAO,uBACP,MAAS,0BAGX,IAAO,CACN,SAAY,OACZ,aAAc,WACd,QAAW,MACX,KAAQ,SACR,SAAU,gBACV,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,oBACP,MAAS,uBAGX,KAAQ,CACP,QAAW,YACX,KAAQ,CACP,IAAO,gBACP,MAAS,kBAEV,OAAU,CACT,IAAO,qBACP,MAAS,wBAGX,OAAU,CACT,QAAW,cACX,KAAQ,CACP,IAAO,kBACP,MAAS,oBAEV,OAAU,CACT,IAAO,uBACP,MAAS,0BAGX,OAAU,CACT,QAAW,QACX,KAAQ,CACP,IAAO,mBACP,MAAS,qBAEV,OAAU,CACT,IAAO,wBACP,MAAS,4BAIZ,MAAS,CACR,KAAQ,CACP,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,aACR,OAAU,mBAEX,QAAW,CACV,SAAY,sBACZ,QAAW,iBACX,KAAQ,uBACR,KAAQ,iBACR,OAAU,uBAEX,MAAS,CACR,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,aACR,OAAU,mBAEX,KAAQ,CACP,SAAY,YACZ,QAAW,YACX,KAAQ,aACR,KAAQ,gBACR,OAAU,sBAEX,IAAO,CACN,SAAY,OACZ,aAAc,WACd,QAAW,MACX,KAAQ,SACR,SAAU,gBACV,KAAQ,aACR,OAAU,mBAEX,KAAQ,CACP,QAAW,YACX,KAAQ,aACR,OAAU,mBAEX,OAAU,CACT,QAAW,cACX,KAAQ,eACR,OAAU,qBAEX,OAAU,CACT,QAAW,QACX,KAAQ,aACR,OAAU,oBAGZ,OAAU,CACT,KAAQ,CACP,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,aACR,OAAU,mBAEX,QAAW,CACV,SAAY,sBACZ,QAAW,iBACX,KAAQ,uBACR,KAAQ,iBACR,OAAU,uBAEX,MAAS,CACR,SAAY,gBACZ,QAAW,WACX,KAAQ,iBACR,KAAQ,aACR,OAAU,mBAEX,KAAQ,CACP,SAAY,YACZ,QAAW,YACX,KAAQ,aACR,KAAQ,gBACR,OAAU,sBAEX,IAAO,CACN,SAAY,OACZ,aAAc,WACd,QAAW,MACX,KAAQ,SACR,SAAU,gBACV,KAAQ,aACR,OAAU,mBAEX,KAAQ,CACP,QAAW,YACX,KAAQ,aACR,OAAU,mBAEX,OAAU,CACT,QAAW,cACX,KAAQ,eACR,OAAU,qBAEX,OAAU,CACT,QAAW,QACX,KAAQ,aACR,OAAU,oBAGZ,IAAO,CACN,IAAO,CACN,QAAW,QACX,OAAU,YACV,KAAQ,gBAGV,KAAQ,CACP,KAAQ,CACP,IAAO,UACP,MAAS,YAEV,MAAS,CACR,IAAO,UACP,MAAS,aAEV,KAAQ,WACR,IAAO,CACN,IAAO,UACP,MAAS,YAEV,KAAQ,CACP,IAAO,WACP,MAAS,aAEV,OAAU,WACV,OAAU,WACV,IAAO,SAER,YAAa,CACZ,KAAQ,CACP,IAAO,UACP,MAAS,YAEV,MAAS,CACR,IAAO,UACP,MAAS,aAEV,KAAQ,CACP,IAAO,aACP,MAAS,eAEV,IAAO,CACN,IAAO,UACP,MAAS,YAEV,KAAQ,CACP,IAAO,WACP,MAAS,aAEV,OAAU,CACT,IAAO,aACP,MAAS,eAEV,OAAU,CACT,IAAO,cACP,MAAS,mBD3PZ0E,GAAQwC,iBEjBR,CACC,OAAU,KACV,KAAQ,CACP,KAAQ,CACP,SAAY,YACZ,QAAW,YACX,KAAQ,YACR,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,cACP,MAAS,iBAGX,QAAW,CACV,SAAY,eACZ,QAAW,eACX,KAAQ,eACR,KAAQ,CACP,IAAO,kBACP,MAAS,oBAEV,OAAU,CACT,IAAO,iBACP,MAAS,oBAGX,MAAS,CACR,SAAY,aACZ,QAAW,aACX,KAAQ,aACR,KAAQ,CACP,IAAO,gBACP,MAAS,kBAEV,OAAU,CACT,IAAO,eACP,MAAS,kBAGX,KAAQ,CACP,SAAY,YACZ,QAAW,YACX,KAAQ,YACR,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,cACP,MAAS,iBAGX,IAAO,CACN,SAAY,YACZ,QAAW,QACX,KAAQ,WACR,KAAQ,CACP,IAAO,cACP,MAAS,gBAEV,OAAU,CACT,IAAO,aACP,MAAS,gBAGX,KAAQ,CACP,QAAW,YACX,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,cACP,MAAS,iBAGX,OAAU,CACT,QAAW,cACX,KAAQ,CACP,IAAO,iBACP,MAAS,mBAEV,OAAU,CACT,IAAO,gBACP,MAAS,mBAGX,OAAU,CACT,QAAW,MACX,KAAQ,CACP,IAAO,iBACP,MAAS,mBAEV,OAAU,CACT,IAAO,gBACP,MAAS,oBAIZ,MAAS,CACR,KAAQ,CACP,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,cACR,OAAU,cAEX,QAAW,CACV,SAAY,YACZ,QAAW,YACX,KAAQ,YACR,KAAQ,CACP,IAAO,eACP,MAAS,iBAEV,OAAU,CACT,IAAO,cACP,MAAS,iBAGX,MAAS,CACR,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,cACR,OAAU,cAEX,KAAQ,CACP,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,cACR,OAAU,cAEX,IAAO,CACN,SAAY,YACZ,QAAW,QACX,KAAQ,WACR,KAAQ,CACP,IAAO,cACP,MAAS,gBAEV,OAAU,CACT,IAAO,aACP,MAAS,gBAGX,KAAQ,CACP,QAAW,YACX,KAAQ,cACR,OAAU,cAEX,OAAU,CACT,QAAW,cACX,KAAQ,eACR,OAAU,eAEX,OAAU,CACT,QAAW,MACX,KAAQ,eACR,OAAU,gBAGZ,OAAU,CACT,KAAQ,CACP,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,WACR,OAAU,WAEX,QAAW,CACV,SAAY,YACZ,QAAW,YACX,KAAQ,YACR,KAAQ,WACR,OAAU,WAEX,MAAS,CACR,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,YACR,OAAU,YAEX,KAAQ,CACP,SAAY,WACZ,QAAW,WACX,KAAQ,WACR,KAAQ,WACR,OAAU,WAEX,IAAO,CACN,SAAY,YACZ,QAAW,QACX,KAAQ,WACR,KAAQ,WACR,OAAU,WAEX,KAAQ,CACP,QAAW,YACX,KAAQ,WACR,OAAU,WAEX,OAAU,CACT,QAAW,cACX,KAAQ,WACR,OAAU,WAEX,OAAU,CACT,QAAW,MACX,KAAQ,WACR,OAAU,YAGZ,IAAO,CACN,IAAO,CACN,QAAW,MACX,OAAU,cACV,KAAQ,aAGV,KAAQ,CACP,KAAQ,QACR,MAAS,QACT,KAAQ,QACR,IAAO,OACP,KAAQ,OACR,OAAU,OACV,OAAU,OACV,IAAO,OAER,aAAc,CACb,KAAQ,UACR,MAAS,UACT,KAAQ,UACR,IAAO,CACN,IAAO,UACP,MAAS,YAEV,KAAQ,UACR,OAAU,WACV,OAAU,YAEX,YAAa,CACZ,KAAQ,CACP,IAAO,WACP,MAAS,aAEV,MAAS,CACR,IAAO,YACP,MAAS,cAEV,KAAQ,CACP,IAAO,WACP,MAAS,aAEV,IAAO,CACN,IAAO,UACP,MAAS,YAEV,KAAQ,CACP,IAAO,WACP,MAAS,aAEV,OAAU,CACT,IAAO,aACP,MAAS,eAEV,OAAU,CACT,IAAO,aACP,MAAS,kBF/PZ,MA8EME,GAAmB5pM,IAAsE,IAArE,aAAE8/I,EAAe,GAAE,MAAElqI,EAAK,OAAE+nB,EAAS,QAAO,gBAAEksK,GAAiB7pM,EACvF,MAAM,EAAC2pJ,EAAU,EAACC,IAAgB/oJ,EAAAA,EAAAA,WAAS,IACrC,EAACipM,EAAW,EAACC,IAAiBlpM,EAAAA,EAAAA,WAAS,IAE3CszJ,gBAAgB,uBAAEnP,KAChB3jJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAGT,QAAExoF,EAAO,UAAEyyH,EAAS,KAAErtJ,EAAI,gBAAEstJ,EAAe,eAAEC,EAAc,OAAEC,EAAM,SAAEC,EAAQ,QAAEC,EAAO,UAAEC,GAAc3J,EACtG+J,IAAmBN,EAkBnBygD,EAF+B,IAAI9C,GAAd,UAAXvpK,EAAiC,QAAuB,SAE5CkD,OAAOuoH,EAAgBrrE,WAAa,WAG1DtzC,EAAQ,CACZy1G,WAAYniD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMkpH,GAAAA,IAAWC,MAAM,UAAUhiH,KAAK,OACnEiiH,aAActsD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMqpH,EAAAA,IAAgBF,MAAM,UAAUhiH,KAAK,OAC1EmiH,eAAgBxsD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMupH,GAAAA,GAAYJ,MAAM,UAAUhiH,KAAK,OACxEpqB,QAAS+/E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMwpH,EAAAA,IAAiBL,MAAM,UAAUhiH,KAAK,QAGxE,SAAS0hH,EAAS3pJ,GAAiB,IAAhB,UAAE4pJ,GAAW5pJ,EAC9B,IAAK4pJ,EAAW,MAAO,GAGvB,MAAMC,EAAgBp5D,KAAAA,SAAmBm5D,GAmBzC,OAAOhsD,EAAAA,cAAA,OAAKksD,wBAAyB,CAAEC,OAAQF,IACjD,CAmBA,OACEjsD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEzpD,UAAY,2BAA0BwrG,EAAahkJ,OACnDkC,IAAK4X,EACL80I,aA1EmBC,KACvBf,GAAa,EAAK,EA0EdgB,aAvEmBC,KACvBjB,GAAa,EAAM,EAuEflrJ,MAdAirJ,GAAaE,EACR,CAAE0uC,WAAY,UAAW3tH,OAAQ,WAEjC,CAAE2tH,WAAY,SAYnBh5L,KAAO,IAAEsqJ,EAAiB,OAAS,IACnCiB,QA1BoB94H,IAExB,GADAA,EAAExkB,iBACEq8I,EAAgB,CAClB,MAAMogD,EAA2B,UAAXtsK,EAAsB,SAAQmiH,EAAayJ,WAAazJ,EAAayJ,UAC3FlzC,EAAAA,EAAAA,UAAS4zF,GACTJ,GAAgB,EAClB,IAsBKlgD,GACC5rD,EAAAA,cAAA,OACEzpD,UAAU,uCACV51C,MAAO,CACLgG,MAAOmlJ,EAAiB,OAAS,SAGnC9rD,EAAAA,cAAA,UAAQzpD,UAAU,8CAA8Cw2G,QA/ErD5B,KACnBlE,EAAuBqE,GACvB0gD,GAAc,EAAM,GA8EVhsG,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,IAAS9/C,MAAM,UAAUhiH,KAAK,SAK3D21D,EAAAA,cAAA,OAAKzpD,UAAY,kCAAiCx4C,KAAS2uC,EAAM3uC,IACjEiiG,EAAAA,cAAA,OAAKzpD,UAAU,mCACbypD,EAAAA,cAAA,aAAmB,UAAXpgE,GAAsB8rH,EAAYA,EAAYD,GACtDzrD,EAAAA,cAAC+rD,EAAS,CAACC,UAAsB,UAAXpsH,GAAsBwrH,EAAYA,EAAYzyH,IAEpEqnE,EAAAA,cAAA,QAAMr/F,MAAO4qJ,EAAS,CAAE4B,UAAW,SAAUd,MAAO,WAAc,CAAEe,WAAY,OAAQf,MAAO,YAAc4/C,IAG/GjsG,EAAAA,cAAA,OAAKzpD,UAAU,kCAAkCu1G,GAAkB9rD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3xB,MAAM,cAEjH,EAIP,OApMsB7rJ,IAA0B,IAAzB,gBAAEsrM,GAAiBtrM,EACxC,MAAM,OAAEo/B,IAAW+rH,EAAAA,EAAAA,MAGjByK,gBAAgB,oBAAE9H,KAChBhrJ,EAAAA,EAAAA,YAAW69G,EAAAA,IAkBf,OAhBA/9G,EAAAA,EAAAA,YAAU,KAGgB,oBAAX4H,QAA0BA,OAAOuK,aAE1BvK,OAAOuK,eAEbC,kBACD9J,SAAS0gM,WAElB1gM,SAAS0gM,UAAUz/I,OAGJ,GAClB,IAGDqzC,EAAAA,cAAAA,EAAAA,SAAA,KAEIA,EAAAA,cAAA,OAAKzpD,UAAU,sBACZ+3G,EAAoB/pJ,QAAQw9I,IAAkBA,EAAawJ,SAAQhtJ,OAAS,GAC3EyhG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,6BACZ,IACDypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,oBAAoBu/B,eAAe,gBACnD,KAIRsuH,EACE/pJ,QAAQw9I,IAAkBA,EAAawJ,SACvCjqI,KAAI,CAACygI,EAAclqI,IAClBmoF,EAAAA,cAACA,EAAAA,SAAc,CAAC//F,IAAM,gBAAe4X,KACnCmoF,EAAAA,cAAC6rG,GAAgB,CAAC9pD,aAAcA,EAAclqI,MAAOA,EAAO+nB,OAAQA,EAAQksK,gBAAiBA,QAMtGx9C,EAAoB/pJ,QAAQw9I,GAAiBA,EAAawJ,SAAQhtJ,OAAS,GAC1EyhG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,6BACZ,IACDypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAA,YAAMA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qBAAqBu/B,eAAe,yBAC1D,KAIRsuH,EACE/pJ,QAAQw9I,GAAiBA,EAAawJ,SACtCjqI,KAAI,CAACygI,EAAclqI,IAClBmoF,EAAAA,cAACA,EAAAA,SAAc,CAAC//F,IAAM,gBAAe4X,KACnCmoF,EAAAA,cAAC6rG,GAAgB,CAAC9pD,aAAcA,EAAclqI,MAAOA,EAAO+nB,OAAQA,EAAQksK,gBAAiBA,QAMvE,IAA/Bx9C,EAAoB/vJ,QACnByhG,EAAAA,cAAA,OAAKzpD,UAAY,gCAAgC51C,MAAO,CAAE0rM,UAAW,WACnErsG,EAAAA,cAAA,aAAO,0BAKd,cG7BP,OAxD8BssG,KAC5B,MAAM,EAACC,EAAa,EAACT,IAAmBhpM,EAAAA,EAAAA,WAAS,IAE/CszJ,gBAAgB,oBAAE9H,EAAmB,4BAAEtH,GAA6B,SACpEsP,IACEhzJ,EAAAA,EAAAA,YAAW69G,EAAAA,IACTqrF,EAA0Bl+C,EAAoB/pJ,QAAQw9I,IAAkBA,EAAawJ,SAAQhtJ,OA6BnG,OAJA6E,EAAAA,EAAAA,YAAU,KACRkzJ,EAAS4hC,cAAcqU,EAAa,GACnC,CAACA,IAGFvsG,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,OAAKzpD,UAAY,sBAAqBg2J,GAAgB,YAAax/C,QA7BzC94H,IAC5BA,EAAExkB,iBACFq8L,GAAiBS,GAEbA,GACFvlD,GACF,GAwBIhnD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,yBAAyB81G,MAAO,QAAS1rJ,MAAO,CAAEksE,OAAQ,WAAa3pC,KAAMupK,GAAAA,IAAQpiK,KAAK,OACpHmiK,EAA0B,IAAMl2C,EAASp1I,YACxC8+E,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,YAAOwsG,KAIZD,GACCvsG,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eA7BC14K,IAAO,IAAD24K,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAChCn5K,EAAExkB,iBAGAwkB,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,GAAY,QAAZC,EAATD,EAAWhiM,kBAAU,IAAAiiM,GAAW,QAAXC,EAArBD,EAAuBn1J,iBAAS,IAAAo1J,GAAhCA,EAAkChzL,SAAS,2BAC3Cma,SAAS,QAAR84K,EAAD94K,EAAGxtB,cAAM,IAAAsmM,GAAY,QAAZC,EAATD,EAAWniM,kBAAU,IAAAoiM,GAAW,QAAXC,EAArBD,EAAuBt1J,iBAAS,IAAAu1J,GAAhCA,EAAkCnzL,SAAS,uBAC3Cma,SAAS,QAARi5K,EAADj5K,EAAGxtB,cAAM,IAAAymM,GAAY,QAAZC,EAATD,EAAWtiM,kBAAU,IAAAuiM,GAAW,QAAXC,EAArBD,EAAuBz1J,iBAAS,IAAA01J,GAAhCA,EAAkCtzL,SAAS,4BAI7CktI,IACA8kD,GAAgB,GAAM,GAmBhB9rG,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAACqtG,GAAa,CAACvB,gBAAiBA,MAIlC,qFC1DNruK,GAAY,CAAC,WAAY,WAAY,YAAa,OAAQ,WAAY,WAAY,MAMlFsa,GAAe,CACjBlhC,UAAU,EACVk8F,GAAIu6F,GAAA,GAEFC,GAAuB,cAAiB,SAAU/sM,EAAM0sB,GAC1D,IAAIsgL,EAAWhtM,EAAKgtM,SAChB32L,EAAWrW,EAAKqW,SAChB0/B,EAAY/1C,EAAK+1C,UACjBqnD,EAAOp9F,EAAKo9F,KACZi7F,EAAWr4L,EAAKq4L,SAChB4U,EAAWjtM,EAAKitM,SAChB16F,EAAKvyG,EAAKuyG,GACVpiG,GAAQ,QAA8BnQ,EAAMi9B,IAGhD,OADA+vK,GAAW,SAAmBA,EAAU,YACpB,gBAAoBE,GAAA,GAAiB,QAAS,CAAC,EAAG/8L,EAAO,CAC3EitF,KAAMA,EACN1wE,IAAKA,EACL2rK,SAAUA,EACV9lF,GAAIA,EACJl8F,SAAUA,EACV42L,SAAUA,EACVl3J,UAAW,KAAWA,EAAWi3J,EAAU32L,GAAY,cAE3D,IACA02L,GAAQt1J,YAAc,UACtBs1J,GAAQx1J,aAAeA,GACvB,UCjCI,GAAY,CAAC,KAAM,QAAS,WAAY,WAAY,YAAa,iBAAkB,WAAY,WAAY,SAAU,qBAMrH41J,GAA2B,cAAiB,SAAUntM,EAAM0sB,GAC9D,IAAIzsB,EAAKD,EAAKC,GACVqsC,EAAQtsC,EAAKssC,MACblyB,EAAWpa,EAAKoa,SAChB4yL,EAAWhtM,EAAKgtM,SAChBj3J,EAAY/1C,EAAK+1C,UACjBq3J,EAAiBptM,EAAKotM,eACtBC,EAAWrtM,EAAKqtM,SAChBh3L,EAAWrW,EAAKqW,SAChB9U,EAASvB,EAAKuB,OACd+rM,EAAoBttM,EAAKstM,kBACzBn9L,GAAQ,QAA8BnQ,EAAM,IAG5CutM,GAAgB,cAAmB9wM,EAAW,YAClD,OAAoB,gBAAoB+wM,EAAA,GAAU,QAAS,CACzD9gL,IAAKA,GACJvc,EAAO,CACR4lC,UAAW,KAAWA,EAAWw3J,KAClB,gBAAoBC,EAAA,EAASpV,OAAQ,CACpDn4L,GAAIA,EACJo4L,SAAU,KACV92L,OAAQA,EACR8U,SAAUA,EACVo3L,cAAeT,EACfz6F,GAAI,IACHjmE,GAAqB,gBAAoBkhK,EAAA,EAASE,KAAM,CACzD1sM,KAAMqsM,EACNM,cAAeL,EACfF,eAAgBA,GACfhzL,GACL,IACA+yL,GAAY11J,YAAc,cAC1B01J,GAAYS,KAAOJ,EAAA,EAASI,KAC5BT,GAAYU,SAAWL,EAAA,EAASK,SAChCV,GAAYW,QAAUN,EAAA,EAASM,QAC/BX,GAAY7e,OAASkf,EAAA,EAASlf,OAC9B,6CCqEA,OAtG0Bn+K,IACxB,MAAM,SAAEimB,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,IAC1B1mC,GAAW4nB,EAAAA,EAAAA,gBACX,EAACksG,EAAgB,EAACC,IAAsB1rM,EAAAA,EAAAA,UAC5C2rM,GAAAA,GAAcC,GAAAA,MAEV,EAACC,EAAS,EAACC,IAAe9rM,EAAAA,EAAAA,WAAS,IACnC,EAAC+rM,EAAwB,EAACC,IAA8BhsM,EAAAA,EAAAA,WAAS,IAGhEisM,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKC,EAAiBC,IAAsBH,EAAAA,GAAAA,IAC5C,kBACAI,GAAAA,IAGIC,EAAmB,CACvB,4BACA,sBACA,uBACA,6BACA,UACA,iBAEIC,EAAuB,CAC3B,aAAa,YAAa,6BAA8B,4BAA6B,4BACrF,2BAA4B,oBAC5B,qBAAsB,qBAAsB,sBAAuB,sBAAuB,yBAI5FnsM,EAAAA,EAAAA,YAAU,KACJq3E,SAAAA,EAAUynB,WACRotG,EAAiBllM,SAASqwE,EAASynB,UACrC0sG,GAAY,GAEZA,GAAY,GAEhB,GACC,CAACn0H,KAEJr3E,EAAAA,EAAAA,YAAU,KAER,MAAMosM,EAA6BD,EAAqBhlM,MAAM2hC,GAC5DuuC,EAASynB,SAASz5F,WAAWyjC,KAE/B4iK,GAA4BU,EAA2B,GACtD,CAAC/0H,KAEJr3E,EAAAA,EAAAA,YAAU,KACR,MAAMqsM,GAAOC,EAAAA,GAAAA,GAAuBj1H,EAASynB,UAC7CssG,EAAmBC,GAAAA,GAAcgB,GAAM,GACtC,CAACh1H,IAkBJ,OACEulB,EAAAA,cAAA,OAAKr/F,MAAO,CAACL,QAAS,OAAQilL,WAAY,SAAUc,WAAY,UAC9DrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMysK,GAAAA,IAAStjD,MAAM,UAEpCrsD,EAAAA,cAAC2tG,GAAW,CACViC,YAAU,EACV9iK,MAAOyhK,EACPsB,KAAMl/L,EAAMjL,IAAM,OAAS,KAC3BjF,GAAIkQ,EAAMm/L,OAAS,GAAM,oBACzB/iD,QAASA,KACPrhJ,SAASsO,KAAK+1L,OAAO,GAItBtrM,OAAO0J,KAAKsgM,GAAAA,IAAentL,KAAI0uL,GAC9BhwG,EAAAA,cAAA,KACE//F,IAAK+vM,EACLjjD,QAASA,IA/BqB9nI,WACxC+pL,OAAgB/xM,GAChBmyM,OAAmBnyM,IACnBgzM,EAAAA,EAAAA,IAAaD,GAEb,UACQp5K,EAASwnH,cAAc,CAC3Bh5I,KAAM,CAAE22J,SAA0B,UAAhBi0C,EAA0B,MAAQ,QAExD,CAAE,MAAO1xM,GACPgB,QAAQhB,MAAM,uCAAwCA,EACxD,GAoByB4xM,CAAkCF,GACjDz5J,UAAU,4BAETk4J,GAAAA,GAAcuB,OAKnB,cClFV,MAAMG,GAA4B3vM,IAAmC,IAAlC,gBAAE4vM,EAAe,QAAErjD,GAASvsJ,EAC7D,OACEw/F,EAAAA,cAAA,UACEzpD,UAAU,0BACV51C,MAAO,CACL65L,WAAY,eAEdztC,QAASA,GAET/sD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+5F,GAAc,CAAC5B,mBAAoBiY,EAAiB/lK,KAAK,OAAO+tJ,YAAY,sBAAsB9J,gBAAgB,wBACnHtuF,EAAAA,cAAA,OAAKzpD,UAAU,iBAAiB65J,EAAgB,MAE3C,EA2bb,OAvbqBz/L,IAAW,IAAD0/L,EAAAC,EAAAjV,EAAAkV,EAC7B,MAAM91H,GAAW4nB,EAAAA,EAAAA,gBAEX,SACJzrE,EAAQ,KACRqqF,EAAI,QACJ+0C,EAAO,SACPM,EACAF,gBAAgB,MAAEr8F,EAAK,iBAAEq1F,GAAkB,sBAC3CohD,EAAqB,yBACrBC,IACEntM,EAAAA,EAAAA,YAAW69G,EAAAA,KAET,OAAEvhF,IAAW+rH,EAAAA,EAAAA,MACb,EAACzmE,EAAU,EAACwrH,IAAgB5tM,EAAAA,EAAAA,WAAS,IACrC,EAAC6tM,EAAW,EAACC,IAAiB9tM,EAAAA,EAAAA,WAAS,IACvC,EAAC+tM,EAAW,EAACC,IAAiBhuM,EAAAA,EAAAA,WAAS,IACvC,EAACipM,EAAW,EAACC,IAAiBlpM,EAAAA,EAAAA,WAAS,IACvC,EAACiuM,EAAY,EAACnxI,IAAkB98D,EAAAA,EAAAA,UAAS,OAEzC,EAACkuM,EAAW,EAACC,IAAiBnuM,EAAAA,EAAAA,WAAS,IACvC,EAACouM,EAAW,EAACC,IAAiBruM,EAAAA,EAAAA,WAAS,IACvC,EAACsuM,EAAe,EAACC,IAAqBvuM,EAAAA,EAAAA,WAAS,IAC/C,EAACwuM,EAAmB,EAACC,IAAyBzuM,EAAAA,EAAAA,WAAU,IACxD,EAAC0uM,EAAsB,EAACC,IAA6B3uM,EAAAA,EAAAA,WAAS,IAWpEM,EAAAA,EAAAA,YAAU,KACJ4tM,GAVaU,MACjB,MAAMC,EAAejmM,SAASilB,cAAc,iFAExCghL,GACFA,EAAarzL,OAEf,EAKEozL,EACF,GACC,CAACV,IAEJ,MAYM3iB,EAAcA,IAAMqiB,GAAa,GASjCkB,EAAc,CAClB,qBACA,oBACA,2BACA,0BACA,wBACA,yBAGFxuM,EAAAA,EAAAA,YAAU,KAEJq3E,SAAAA,EAAUynB,WACZtiC,EAAe6a,EAASynB,SAASv5F,MAAM,KAAgB,UAAXi3B,EAAqB,EAAI,IAErEgyK,EAAYxnM,SAASqwE,EAASynB,UAAY0uG,GAAc,GAASA,GAAc,GACjF,GACC,CAACn2H,KAEJr3E,EAAAA,EAAAA,YAAU,KACR,IAAIinK,GAAc,EAOlB,OALEymC,KADEl6K,IAAYqqF,GAASopD,IAMlB,KACLA,GAAc,CAAI,CACnB,GACA,CAACzzI,EAAUqqF,KAEd79G,EAAAA,EAAAA,YAAU,KACR,IAAIinK,GAAc,EAClB,GAAIwmC,IAAexmC,EAGjB,MA3CwBplJ,WAC1B,MAAM85C,QAAYnoC,EAASkvH,sBAC3B2rD,GAA0B,GACrB1yI,GACL0xI,EAAyB,IAAKD,KAA0BzxI,GAAM,EAqC5D+mF,GAEO,KACLukB,GAAc,CAAI,CAEtB,GACC,CAACwmC,KAEJztM,EAAAA,EAAAA,YAAU,KACR,MAAMyuM,GAAkB3e,EAAAA,GAAAA,IAA2Bsd,GACnDe,EAAsBM,EAAgB,GACrC,CAACrB,IA+DJ,MAsBMsB,EAAmBA,KACvBX,GAAc,EAAK,EAkCrB,OAhBA/tM,EAAAA,EAAAA,YAAU,KACHgsJ,IAEDA,GAAoB,IAAMA,EAAmB,IAC/CkH,EAASy7C,uBAAuB,IAAKl/C,GAAAA,EAAO,GAAIm/C,WAAY5iD,IACnDA,GAAoB,KAAOA,EAAmB,IACvDkH,EAASy7C,uBAAuB,IAAKl/C,GAAAA,EAAO,GAAIm/C,WAAY5iD,IACnDA,GAAoB,KAAOA,EAAmB,IACvDkH,EAASy7C,uBAAuB,IAAKl/C,GAAAA,EAAO,GAAIm/C,WAAY5iD,IACnDA,GAAoB,KAAOA,EAAmB,IACvDkH,EAASy7C,uBAAuB,IAAKl/C,GAAAA,EAAO,GAAIm/C,WAAY5iD,IACnDA,GAAoB,KAAOA,EAAmB,KACvDkH,EAASy7C,uBAAuB,IAAKl/C,GAAAA,EAAO,GAAIm/C,WAAY5iD,IAC9D,GACC,CAACA,IAGFpvD,EAAAA,cAAAA,EAAAA,SAAA,KACK6wG,GAAgB5vF,GAAUA,SAAAA,EAAMogC,OAAWpgC,SAAgB,QAAZovF,EAAJpvF,EAAMG,kBAAU,IAAAivF,GAAhBA,EAAkBtuM,OAE9Di+F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,QACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI64F,SAAgB,QAAZqvF,EAAJrvF,EAAMG,kBAAU,IAAAkvF,GAAhBA,EAAkBvuM,OAAS,aAAe,KAClDi+F,EAAAA,cAAA,OAAKzpD,UAAU,aAAa61H,IAAK6lC,EAAY1nE,IAAK55H,EAAMuhM,YACxDlyG,EAAAA,cAAA,OAAKzpD,UAAU,mBAAmB61H,ICzRlD,q6BDyRuE7hC,IAAK55H,EAAMuhM,cAItElyG,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAY,qBAAmBy6J,EAAa,OAAS,SACvD,IACDhxG,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eA1MD14K,IAAO,IAAD64K,EAAAqF,EACL,QAA7BrF,EAAA74K,EAAExtB,OAAOmE,WAAW8sC,iBAAS,IAAAo1J,GAA7BA,EAA+BhzL,SAAS,yBAAwD,QAAjCq4L,EAAIl+K,EAAExtB,OAAOmE,WAAW8sC,iBAAS,IAAAy6J,GAA7BA,EAA+Br4L,SAAS,uBAI/Gm3L,GAAc,EAAM,GAsMNjxG,EAAAA,cAAA,OAAKzpD,UAAU,wBAAwB51C,MAAO,CAAEb,SAAU,WAAYqmF,OAAQ,cAC5E6Z,EAAAA,cAACq3F,EAAmB,MACpBr3F,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,2BAA2BrT,KAAMkvK,EAAAA,UAMpEpyG,EAAAA,cAAA,OAAKzpD,UAAU,wBACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACjvI,UAAU,oCAAoCnuB,GAAG,cACrD43E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACx1C,MAAO,CAAEylL,YAAa,QAAUljJ,KAAMmvK,EAAAA,IAAahoK,KAAK,KAAKgiH,MAAM,SAAS,QAGjGrsD,EAAAA,cAAA,UAAQzpD,UAAU,uBAAuBw2G,QAhNnBulD,KACMrB,GAAnCD,EAAuD,GAgN9ChxG,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAU,qBACV51C,MAAO,CACL0rJ,MAAO,WAETnpH,KAAMkvK,EAAAA,QAKVpyG,EAAAA,cAAA,WACEA,EAAAA,cAACuyG,GAAgB,CAAC7sM,KAAK,KAGzBs6F,EAAAA,cAAA,UACEzpD,UAAU,iBACVw2G,QAASA,KACPskD,GAAkB,EAAK,GAGd,OAAVt3I,GAA+B,QAAjBshI,EAAIxoC,GAAAA,EAAO94F,UAAM,IAAAshI,GAAbA,EAAepc,MACtB,IAAVllH,EACEimC,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM2vH,GAAAA,EAAO94F,GAAOklH,MAAOt+K,MAAO,CAAEylL,YAAa,UAAY7vI,UAAU,wBAExFypD,EAAAA,cAAA,OAAKosE,IAAKvZ,GAAAA,EAAO94F,GAAOklH,MAAO10C,IAAKsoB,GAAAA,EAAO94F,GAAOtlD,KAAM8hC,UAAU,wBAElE,KACJypD,EAAAA,cAAA,OAAKr/F,MAAO,CAAE0rJ,MAAOtyF,EAAQ84F,GAAAA,EAAO94F,GAAO4gI,aAAe,KAAOvrC,IAGnEpvD,EAAAA,cAACwyG,GAAW,CAAClX,WAAY8V,EAAgB7V,yBAjFlBA,KAC/B8V,GAAkB,EAAM,IAkFfG,GAAyBF,GAAsB,GAAKA,EAAqB,KACxEtxG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,wCACZ+6J,EAAqB,EACpBtxG,EAAAA,cAACmwG,GAAyB,CAACC,gBAAiBkB,EAAoBvkD,QAAS+kD,IAEzE9xG,EAAAA,cAAA,UAAQzpD,UAAU,oEAAoEw2G,QAAS+kD,GAC7F9xG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,kBAIrEggE,EAAAA,cAAA,OAAKzpD,UAAU,uCACZ+6J,EAAqB,EACpBtxG,EAAAA,cAACmwG,GAAyB,CAACC,gBAAiBkB,EAAoBvkD,QAAS+kD,IAEzE9xG,EAAAA,cAAA,UAAQzpD,UAAU,oEAAoEw2G,QAAS+kD,GAC7F9xG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,mBAOzEggE,EAAAA,cAACssG,GAAqB,CAACt2C,QAASA,EAASy8C,iBAAkBpmC,EAAAA,IAE3DrsE,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAACguG,EAAAA,EAAQ,CAAC4B,YAAU,GAClB5vG,EAAAA,cAACguG,EAAAA,EAASpV,OAAM,CAAC98D,QAAQ,UAAUr7H,GAAG,kBACpCu/F,EAAAA,cAAA,WACKg2D,GAAaA,EAAQmW,gBACtBnsE,EAAAA,cAAA,OACEzpD,UAAU,gBACV51C,MAAO,CACLorK,SAAU,OACV2mC,UAAW,QACXC,eAAgB,cAElBvmC,IAAKpW,EAAQmW,gBACb5hC,IAAI,iBAGNvqC,EAAAA,cAAA,OAAKzpD,UAAU,gBAAgBg0F,IAAI,eAAe6hC,IAAKC,EAAAA,MAK7DrsE,EAAAA,cAACguG,EAAAA,EAASE,KAAI,KACZluG,EAAAA,cAACguG,EAAAA,EAASI,KAAI,KACZpuG,EAAAA,cAACwlF,EAAAA,GAAI,CAACjvI,UAAU,gBAAgBnuB,GAAG,cACjC43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,4BAA4Bu/B,eAAe,mBAGpEggE,EAAAA,cAACguG,EAAAA,EAASI,KAAI,KACZpuG,EAAAA,cAACwlF,EAAAA,GAAI,CAACjvI,UAAU,gBAAgBnuB,GAAG,mBACjC43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,0BAA0Bu/B,eAAe,gBACxD,KAEVggE,EAAAA,cAACguG,EAAAA,EAASI,KAAI,KACZpuG,EAAAA,cAACwlF,EAAAA,GAAI,CAACjvI,UAAU,gBAAgBnuB,GAAG,IAAI2kI,QAnLjC9nI,UACxBgP,EAAExkB,iBAEF,MAAMq6D,EAAM,IAAI11C,KAEhB,GAAIy8K,EACF,UAGQj6K,EACHwnH,cAAc,CAAEh5I,KAAM,CAAEwtM,WAAY9oI,KACpCpuC,KAAK9E,EAASysH,UACd3nH,MAAK48E,EAAAA,EAAAA,IAAS,MAEjBw4F,GAAc,EAChB,CAAE,MAAO78K,GACP30B,QAAQhB,MAAM21B,GACd68K,GAAc,EAChB,CACF,GAiKoB9wG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,sBAAsBu/B,eAAe,kBASxEggE,EAAAA,cAAC6yG,GAAgB,CACf78C,QAASA,EACT/wE,KAAMisH,EACNnZ,QAASoZ,EACT7X,aAvK0Br0K,UAClCwrL,EAAyB,IACpBD,EACH,CAAC7qD,IAAW6qD,EAAsB7qD,WAElB/uH,EAAS8uH,oBAAoBC,GAAU6qD,EAAsB7qD,GAG/E,EAgKQwtC,UAAWqd,KAIfxwG,EAAAA,cAAA,OAAKzpD,UAAU,eAAe51C,MAAO,CAAEL,QAAS,OAAQiuL,eAAgB,kBACtEvuF,EAAAA,cAAA,OAAKzpD,UAAU,QACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI64F,SAAgB,QAAZsvF,EAAJtvF,EAAMG,kBAAU,IAAAmvF,GAAhBA,EAAkBxuM,OAAS,aAAe,KAClDi+F,EAAAA,cAAA,OAAKzpD,UAAU,aAAa61H,IAAK6lC,EAAY1nE,IAAK55H,EAAMuhM,cAI5DlyG,EAAAA,cAAA,OAAKzpD,UAAU,SACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI,oBAAqBmuB,UAAU,gBACvCypD,EAAAA,cAAA,OAAKzpD,UAA2B,cAAhBw6J,EAA8B,WAAa,IACzD/wG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,gBAGjEggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI,oBAAqBmuB,UAAU,gBACvCypD,EAAAA,cAAA,OAAKzpD,UAA2B,cAAhBw6J,EAA8B,WAAa,IACzD/wG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,gBAGjEggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI,SAAUznB,MAAO,CAAEK,OAAQ,UACnCg/F,EAAAA,cAAA,cACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,cAI/DggE,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACk2G,MAAO,QAAS1rJ,MAAO,CAAEksE,OAAQ,WAAa3pC,KAAM4vK,EAAAA,IAAQzoK,KAAK,KAAK0iH,QAASA,IAAMi/C,GAAeD,KACrH/rG,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBA,IAAMX,GAAc,IACvDhsG,EAAAA,cAAA,OACEzpD,UAAU,kBACV51C,MAAO,CACLL,QAASyrM,EAAa,OAAS,OAC/B/qM,OAAQ+qM,EAAa,cAAgB,QAGvC/rG,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI,qBACR43E,EAAAA,cAAA,OAAKzpD,UAA2B,cAAhBw6J,EAA8B,WAAa,IACzD/wG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,gBAGjEggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAI,qBACR43E,EAAAA,cAAA,OAAKzpD,UAA2B,cAAhBw6J,EAA8B,WAAa,IACzD/wG,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,oBAQzEggE,EAAAA,cAACyuF,EAAAA,EAAK,CAACxpG,KAAMC,EAAWypG,OAAQN,EAAaO,UAAQ,GACnD5uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,CAAChgG,GAAI,KACf/S,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,cAG/DggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KAAEn4J,GAAYopE,EAAAA,cAACgzG,IAAkB,CAACC,SAtT9C,CACLC,WAAY,QACZC,iBAAkB,OAClBC,cAAe,CACbx8K,EAASu6F,IAAIgI,KAAKk6E,mBAAmBC,YACrC18K,EAASu6F,IAAIgI,KAAKo6E,kBAAkBD,YACpC,CACEE,SAAU,gBACVC,aAAc,YACdC,YAAa,UACbC,aAAc,eAIlBC,UAAW,CACTC,4BAA6B5uL,UAC3ByrL,GAAa,GAEb,MAAMoD,QAAwBl9K,EAASyiH,aACjC06D,QAA2Bn9K,EAAS0hH,oBAGpC07D,GAFM,IAAI5/K,MAEeC,UAA8C,KAAlC0/K,aAAkB,EAAlBA,EAAoBz+B,gBAAuBy+B,SAAAA,EAAoBz+B,aAEtGw+B,GAAmBC,GAAsBA,EAAmBhyM,SAAiC,IAAvBiyM,IACxE17F,EAAAA,EAAAA,IAAS,cACTw4F,GAAc,WAERl6K,EAASysH,SACfytD,GAAc,IAEdjmC,EAAAA,GAAAA,GAAkB,CAChBpf,QACEzrD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,qBACHu/B,eAAe,+HAInBrH,QACEqnE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,0BAA2B,IAC1FggE,EAAAA,cAAA,KAAGpC,KAAK,YACNoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,4BAA4Bu/B,eAAe,aAC7D,IACLggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,4CAA4Cu/B,eAAe,iCAKtFs4E,EAAAA,EAAAA,IAAS,KACX,IAmQwE27F,aAAcr9K,EAASuiG,QAC7Fn5B,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACX/vF,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qCAAqCu/B,eAAe,2BAA4B,IACrGggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,sBAAsB2kI,QAASshC,GACtCruF,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,iBAOtE,cElcP,OAxBsBk0K,KACpB,MAAM,QAAEhzF,EAAO,KAAED,IAAS39G,EAAAA,EAAAA,YAAW69G,EAAAA,KAC/B,EAACgzF,EAAW,EAACC,IAAiBtxM,EAAAA,EAAAA,WAAS,GAU7C,OARAM,EAAAA,EAAAA,YAAU,MACH89G,GAAWD,GACVA,EAAKG,aAAyC,IAA3BH,EAAKG,WAAWr/G,QACrCqyM,GAAc,EAElB,GACC,CAAClzF,EAASD,IAGXjhB,EAAAA,cAAAA,EAAAA,SAAA,KACGm0G,GACCn0G,EAAAA,cAACgsE,GAAAA,EAAK,CAAClwC,QAAS,UAAWn7H,MAAO,CAAEurK,aAAc,IAChDlsE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iBAAiBu/B,eAAe,qDAAsD,IAC3GggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,mBAAkB43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,kBAAwB,IAACggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,0BAA0Bu/B,eAAe,eAGvL,cC8BP,OArDuBq0K,KACrB,MAAM55H,GAAW4nB,EAAAA,EAAAA,gBAEX,EAACiyG,EAAU,EAACC,IAAgBzxM,EAAAA,EAAAA,WAAS,GAe3C,OAbAM,EAAAA,EAAAA,YAAU,KACR,GAAsB,oBAAX4H,OAAwB,CACnB,CAAC,IAAK,qBAAsB,oBAAqB,qBAAsB,qBAE3EZ,SAASqwE,EAASynB,UAC1BqyG,GAAa,GAEbA,GAAa,EAGjB,IACC,CAAC95H,IAGFulB,EAAAA,cAAA,OACEzpD,UAAU,kBACV51C,MAAO,CACLL,QAASg0M,EAAY,OAAS,OAC9BhmB,gBAAiB,UACjB+d,UAAW,SACX9mB,WAAY,SACZgJ,eAAgB,SAChBimB,UAAW,OACXC,OAAQ,OACRtzM,QAAS,cACTuzM,SAAU,SAGZ10G,EAAAA,cAAA,WACEA,EAAAA,cAAA,YAAM,kBACSA,EAAAA,cAAA,SAAG,UAAU,WAAQA,EAAAA,cAAA,SAAG,qDAAqD,uBAG9FA,EAAAA,cAAA,OACEr/F,MAAO,CACL2tL,gBAAiB,YACjBntL,QAAS,iBACTiuL,aAAc,SAGhBpvF,EAAAA,cAAA,KAAGpC,KAAK,+DAA+Dj9F,MAAO,CAAEysJ,WAAY,QAAU3mJ,OAAO,UAAU,eAIrH,YCVV,OAjCsCjG,IAAe,IAAd,KAAEgB,GAAMhB,EAC7C,MAAM,QAAEw1J,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,IACzB1mC,GAAW4nB,EAAAA,EAAAA,gBAEX,EAACiyG,EAAU,EAACC,IAAgBzxM,EAAAA,EAAAA,WAAS,IAE3CM,EAAAA,EAAAA,YAAU,KACR,MACMuxM,EAAcl6H,aAAQ,EAARA,EAAUynB,SAC9BqyG,GAFwB,CAAC,aAAc,aAEThqM,MAAM2hC,GAASyoK,aAAW,EAAXA,EAAalsM,WAAWyjC,KAAO,GAC3E,CAACuuC,IAWJ,OARE65H,IACC9yM,IAASswL,GAAAA,GAAKC,YACbvwL,IAASswL,GAAAA,GAAKE,OACdxwL,IAASswL,GAAAA,GAAKG,SACdzwL,IAASswL,GAAAA,GAAKI,UACd1wL,IAASswL,GAAAA,GAAKM,0BACdp8B,aAAO,EAAPA,EAASyf,kBAAmBqc,GAAAA,GAAKI,UAOnClyF,EAAAA,cAAA,OAAK+sD,QAASA,KAAMz0C,EAAAA,EAAAA,UAAS,YAAa,CAAEvkF,SAAS,IAASwiB,UAAU,iBACtEypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACk2G,MAAM,UAAUnpH,KAAM0xK,EAAAA,MACvC50G,EAAAA,cAAA,KAAGzpD,UAAU,sBAAsB,yBAN9B,IAOD,ECzBV,MAAMu4I,GAAStuL,IAAoB,IAAD29G,EAAA02F,EAAA,IAAlB,UAAE3C,GAAW1xM,EAC3B,MAAMi6E,GAAW4nB,EAAAA,EAAAA,gBACX,KAAE4e,EAAI,QAAE+0C,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAE/B,EAACmzF,EAAU,EAACC,IAAgBzxM,EAAAA,EAAAA,WAAS,IACrC,OAAE9B,EAAM,MAAED,IAAU4yL,EAAAA,GAAAA,KACpBmhB,EAAmC,oBAAX9pM,OAA+B,QAATmzG,EAAGnzG,cAAM,IAAAmzG,GAAc,QAAd02F,EAAN12F,EAAQ71C,oBAAY,IAAAusI,OAAd,EAANA,EAAsBtsI,QAAS,iBAAgBytF,aAAO,EAAPA,EAAS9d,UAAY,GAqD3H,OAnDA90I,EAAAA,EAAAA,YAAU,KAER,MA8BMuxM,EAAcl6H,aAAQ,EAARA,EAAUynB,SAExBoyG,GAhCkB,CACtB,SACA,UACA,qBACA,sBACA,sBACA,uBACA,eACA,gBACA,2BACA,4BACA,4BACA,6BACA,+BACA,gCACA,aACA,YACA,qBACA,sBACA,4BACA,2BACA,oBACA,qBACA,sBACA,uBACA,6BACA,8BACA,aAKiC/pM,MAAM2hC,GAASyoK,EAAYlsM,WAAWyjC,KACzEqoK,EAAaD,EAAU,GACtB,CAAC75H,KAEJr3E,EAAAA,EAAAA,YAAU,KACR,GAAwB,oBAAbsI,UAA4B4oM,EAAW,CAChD,MAAMS,EAAYh0M,EAAQ,KAC1B2K,SAASsO,KAAKrZ,MAAMq0M,WAAaD,EAAY,OAAS,MACxD,CAEA,MAAO,KACmB,oBAAbrpM,WACTA,SAASsO,KAAKrZ,MAAMq0M,WAAa,MACnC,CACD,GACA,CAACV,EAAWvzM,IAGbi/F,EAAAA,cAAAA,EAAAA,SAAA,KACGs0G,GACCt0G,EAAAA,cAAA,OAAKzpD,UAAU,SAAS/0C,KAAK,UAC3Bw+F,EAAAA,cAACi1G,GAAW,CAAC/C,UAAWA,IACxBlyG,EAAAA,cAACk0G,GAAa,MACdl0G,EAAAA,cAACq0G,GAAc,SAGhBS,GAAkB90G,EAAAA,cAACk1G,GAA6B,CAAC1zM,MAAMw0J,aAAO,EAAPA,EAASx0J,OAAQswL,GAAAA,GAAKK,UAC/E,EAQPrD,GAAO/2I,aAAe,CACpBm6J,UAAY,IAGd,sBCuHA,OAzMe1xM,IAAoB,IAAnB,UAAE0xM,GAAW1xM,EAC3B,MAAMi6E,GAAW4nB,EAAAA,EAAAA,gBACX,EAACiyG,EAAU,EAACC,IAAgBzxM,EAAAA,EAAAA,WAAS,GAoC3C,OAhCAM,EAAAA,EAAAA,YAAU,KAER,MAyBMuxM,EAAcl6H,aAAQ,EAARA,EAAUynB,SACxBoyG,GA1BkB,CACtB,SACA,UACA,qBACA,sBACA,sBACA,uBACA,eACA,gBACA,2BACA,4BACA,4BACA,6BACA,+BACA,aACA,YACA,qBACA,sBACA,4BACA,2BACA,oBACA,qBACA,sBACA,wBAGiC/pM,MAAK2hC,GAAQyoK,EAAYlsM,WAAWyjC,KACvEqoK,EAAaD,EAAU,GACtB,CAAC75H,IAGFulB,EAAAA,cAAAA,EAAAA,SAAA,KACGs0G,GACCt0G,EAAAA,cAAA,OAAKzpD,UAAU,UACbypD,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,QAAMzpD,UAAU,QACdypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,KACP43E,EAAAA,cAAA,OACEzpD,UAAU,aACV61H,IAAK+oC,GAAAA,EACL5qE,IAAK2nE,MAKXlyG,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,MAAIzpD,UAAU,yCACZypD,EAAAA,cAAA,UACEA,EAAAA,cAAA,QAAMx+F,KAAK,UACR,IACDw+F,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,yBACHu/B,eAAe,qBAGnBggE,EAAAA,cAAA,MAAIzpD,UAAU,yCACZypD,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,UACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,kBACHu/B,eAAe,eAIrBggE,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,SACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,cACHu/B,eAAe,aAMzBggE,EAAAA,cAAA,UACEA,EAAAA,cAAA,QAAMx+F,KAAK,UACR,IACDw+F,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,kBACHu/B,eAAe,cAGnBggE,EAAAA,cAAA,MAAIzpD,UAAU,yCACZypD,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,qBACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,mBACHu/B,eAAe,gBAIrBggE,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,qBACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,mBACHu/B,eAAe,kBAMzBggE,EAAAA,cAAA,UACEA,EAAAA,cAAA,QAAMx+F,KAAK,UACR,IACDw+F,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,iBACHu/B,eAAe,aAGnBggE,EAAAA,cAAA,MAAIzpD,UAAU,yCACZypD,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,YACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,iBACHu/B,eAAe,kBAS7BggE,EAAAA,cAAA,MAAIzpD,UAAU,gBACZypD,EAAAA,cAAA,UACEA,EAAAA,cAAA,KACE,aAAW,WACXpC,KAAK,gDAELoC,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMkyK,GAAAA,QAG3Bp1G,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAG,aAAW,UAAUpC,KAAK,kCAC3BoC,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmyK,GAAAA,QAG3Br1G,EAAAA,cAAA,UACEA,EAAAA,cAAA,KACE,aAAW,WACXpC,KAAK,0CAELoC,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMoyK,GAAAA,UAM/Bt1G,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAA,WAA6BA,EAAAA,cAACuyG,GAAgB,CAACzC,QAAQ,KACvD9vG,EAAAA,cAAA,OACEzpD,UAAU,oBAGVypD,EAAAA,cAAA,OAAKzpD,UAAU,aAAY,KAAOypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACjDtqK,GAAG,mBACHu/B,eAAe,cACf,oBACFggE,EAAAA,cAAA,MAAIzpD,UAAU,cACZypD,EAAAA,cAAA,UACEA,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,yBACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,wBACHu/B,eAAe,qBAIrBggE,EAAAA,cAAA,MAAIr/F,MAAO,CAAEylL,YAAa,QACxBpmF,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,uBACN,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,sBACHu/B,eAAe,wBAUhC,0JCjNP,SAAS,GAAQtG,GAAkC,OAAO,GAAU,mBAAqB4J,QAAU,iBAAmBA,OAAOC,SAAW,SAAU7J,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqB4J,QAAU5J,EAAI1rB,cAAgBs1B,QAAU5J,IAAQ4J,OAAO9lC,UAAY,gBAAkBk8B,CAAK,EAAG,GAAQA,EAAM,CAC/U,SAAS,GAAQpK,EAAQslB,GAAkB,IAAIzmC,EAAO1J,OAAO0J,KAAKmhB,GAAS,GAAI7qB,OAAOq/B,sBAAuB,CAAE,IAAI+Q,EAAUpwC,OAAOq/B,sBAAsBxU,GAASslB,IAAmBC,EAAUA,EAAQtwC,QAAO,SAAUw/B,GAAO,OAAOt/B,OAAOu/B,yBAAyB1U,EAAQyU,GAAKv1B,UAAY,KAAKL,EAAK/O,KAAKL,MAAMoP,EAAM0mC,EAAU,CAAE,OAAO1mC,CAAM,CACpV,SAAS,GAAc1H,GAAU,IAAK,IAAIrI,EAAI,EAAGA,EAAII,UAAUD,OAAQH,IAAK,CAAE,IAAI+1B,EAAS,MAAQ31B,UAAUJ,GAAKI,UAAUJ,GAAK,CAAC,EAAGA,EAAI,EAAI,GAAQqG,OAAO0vB,IAAS,GAAIxlB,SAAQ,SAAU1O,GAAO,GAAgBwG,EAAQxG,EAAKk0B,EAAOl0B,GAAO,IAAKwE,OAAOswC,0BAA4BtwC,OAAOuwC,iBAAiBvuC,EAAQhC,OAAOswC,0BAA0B5gB,IAAW,GAAQ1vB,OAAO0vB,IAASxlB,SAAQ,SAAU1O,GAAOwE,OAAO4J,eAAe5H,EAAQxG,EAAKwE,OAAOu/B,yBAAyB7P,EAAQl0B,GAAO,GAAI,CAAE,OAAOwG,CAAQ,CACzf,SAAS,GAAgBizB,EAAKz5B,EAAKS,GAA4L,OAAnLT,EAC5C,SAAwB9C,GAAO,IAAI8C,EACnC,SAAsB4xB,EAAO+iK,GAAQ,GAAuB,WAAnB,GAAQ/iK,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAIgjK,EAAOhjK,EAAMyR,OAAOwxJ,aAAc,QAAa73L,IAAT43L,EAAoB,CAAE,IAAI91H,EAAM81H,EAAKj2L,KAAKizB,EAAO+iK,GAAQ,WAAY,GAAqB,WAAjB,GAAQ71H,GAAmB,OAAOA,EAAK,MAAM,IAAIlhE,UAAU,+CAAiD,CAAE,OAAiB,WAAT+2L,EAAoB3hK,OAAShsB,QAAQ4qB,EAAQ,CADnV,CAAa10B,EAAK,UAAW,MAAwB,WAAjB,GAAQ8C,GAAoBA,EAAMgzB,OAAOhzB,EAAM,CAD1E,CAAeA,MAAiBy5B,EAAOj1B,OAAO4J,eAAeqrB,EAAKz5B,EAAK,CAAES,MAAOA,EAAO8N,YAAY,EAAMi1B,cAAc,EAAMC,UAAU,IAAkBhK,EAAIz5B,GAAOS,EAAgBg5B,CAAK,CAkB3O,QAAe,cAAgB,CAC7Bue,YAAa,4BACbs9J,OAAQ,yBACRr9J,UAAW,CACTs9J,eAAgB,UAElBC,iBAAkB,SAA0B9kM,EAAO+kM,EAAaC,EAAe3iF,GAC7E,IAAIzqG,EAAQyqG,EAAStrH,QAAO,SAAUq3D,EAAK62I,GACzC,YAA0B,IAAfA,EAAKrtL,QACT5X,EAAMklM,aAA2B,UAAZD,EAAKn1M,IAGzBkQ,EAAMklM,aAA2B,UAAZD,EAAKn1M,IAAsD,KAApCm1M,EAAKrtL,MAAM,GAAGkqC,kBACrDsM,EAEFA,EAAI19C,OAAOu0L,EAAKrtL,MAAMjH,KAAI,SAAU0I,GACzC,OAAO,GAAc,GAAc,CAAC,EAAGA,GAAO,CAAC,EAAG,CAChDvpB,GAAIm1M,EAAKn1M,GACToX,MAAO+9L,EAAK/9L,OAEhB,KAGGknD,CACT,GAAG,IACC+2I,EAAmBnlM,EAAM6kM,eAAiB7kM,EAAM6kM,eAAejtL,GAASA,EAC5E,MAAO,CACLA,MAAOutL,EACPC,UAAWD,EAAiBv3M,OAAS,EAEzC,EACA+3L,OAAQ,SAAgB3lL,EAAO+kM,EAAantL,GAK1C,OAHyBA,aAAiB1pB,MAAQ0pB,EAAMjH,KAAI,SAAU0I,GACpE,OAAOA,EAAKtpB,KACd,IAAK,CAAC6nB,IACoB7gB,QAAO,SAAUq3D,EAAK8J,GAC9C,OAAOA,EAAM9J,EACf,GAAG22I,EACL,mGCjDE9jK,IAAK,eAAiB,oBAEtBokK,GAEJ,SAAU5gB,GAGR,SAAS4gB,IAGP,OAFA,QAAgBl5M,KAAMk5M,IAEf,QAA2Bl5M,MAAM,QAAgBk5M,GAAkBj3M,MAAMjC,KAAM0B,WACxF,CAuBA,OA7BA,QAAUw3M,EAAkB5gB,IAQ5B,QAAa4gB,EAAkB,CAAC,CAC9B/1M,IAAK,SACLS,MAAO,WACL,IAAI88B,EAAc1gC,KAAK6T,MACnB4X,EAAQiV,EAAYjV,MACpBwtL,EAAYv4K,EAAYu4K,UACxBzf,EAAS94J,EAAY84J,OACrBp5K,EAAYsgB,EAAYtgB,UACxBq5B,EAAY/Y,EAAY+Y,UAC5B,OAAO,gBAAoB,MAAO,CAChCA,UAAW,KAAW3E,GAAG,IAAK2E,IAC7B,gBAAoB,SAAU,CAC/BA,UAAW3E,GAAG,UAAWmkK,GAAa,oBACtChpD,QAAS,WACP,OAAOupC,EAAO/tK,EAChB,EACA1R,UAAWk/L,GACV74L,EAAU,UACf,KAGK84L,CACT,CA/BA,CA+BE,EAAAr0G,YAEF,QAAgBq0G,GAAkB,YAAa,CAC7CztL,MAAO,YAAkB,YAAkByjC,WAC3C+pJ,UAAW,SAAe/pJ,WAC1BsqI,OAAQ,SAAetqI,WACvB9uC,UAAW,SAAe8uC,WAC1BzV,UAAW,cAGb,QAAgBy/J,GAAkB,eAAgB,CAChDz/J,UAAW,KAGb,QAAe,EAAA0/J,GAAA,GAAa,CAC1B/5J,MAAO,qBADT,CAEG85J,ICpBH,GAAeE,IAJc,SAAgCvlM,GAC3D,OAAO,gBAAoBwlM,GAAA,EAAsBxlM,EAAO,gBAAoB,GAAkBA,GAChG,4BCtCO,MAAMylM,GAAwC,CACjD,cAAe,CACb,CAACr6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,eAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAEtB,kBAAmB,CACjB,CAACv6C,GAAAA,GAASs6C,SAAU,kBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAIbC,GAAsC,CAC/C,MAAS,CACP,CAACx6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,OAAU,CACR,CAACv6C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,KAAQ,CACN,CAACv6C,GAAAA,GAASs6C,SAAU,OACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,4BAA6B,CAC3B,CAACv6C,GAAAA,GAASs6C,SAAU,4BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAEtB,mBAAoB,CAClB,CAACv6C,GAAAA,GAASs6C,SAAU,mBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,qBAAsB,CACpB,CAACv6C,GAAAA,GAASs6C,SAAU,qBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,oBAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,SAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,4CAA6C,CAC3C,CAACv6C,GAAAA,GAASs6C,SAAU,4CACpB,CAACt6C,GAAAA,GAASu6C,SAAU,8CAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,mCAAoC,CAClC,CAACv6C,GAAAA,GAASs6C,SAAU,mCACpB,CAACt6C,GAAAA,GAASu6C,SAAU,uCAIbE,GAAsC,CAC/C,aAAgB,CACd,CAACz6C,GAAAA,GAASs6C,SAAU,eACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,iBAAoB,CAClB,CAACv6C,GAAAA,GAASs6C,SAAU,mBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kBAEtB,wBAAyB,CACvB,CAACv6C,GAAAA,GAASs6C,SAAU,wBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,0BAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,IAAO,CACL,CAACv6C,GAAAA,GAASs6C,SAAU,MACpB,CAACt6C,GAAAA,GAASu6C,SAAU,OAEtB,KAAQ,CACN,CAACv6C,GAAAA,GAASs6C,SAAU,OACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,mBAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,aAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAIbG,GAAyC,CAClD,YAAe,CACb,CAAC16C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,KAAQ,CACN,CAACv6C,GAAAA,GAASs6C,SAAU,OACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,OAAU,CACR,CAACv6C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,aAAgB,CACd,CAACv6C,GAAAA,GAASs6C,SAAU,eACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,gBAAmB,CACjB,CAACv6C,GAAAA,GAASs6C,SAAU,kBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,aAAgB,CACd,CAACv6C,GAAAA,GAASs6C,SAAU,eACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,OAAU,CACR,CAACv6C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,SAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,kBAAmB,CACjB,CAACv6C,GAAAA,GAASs6C,SAAU,kBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,oBAEtB,uBAAwB,CACtB,CAACv6C,GAAAA,GAASs6C,SAAU,uBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,8BAEtB,mBAAoB,CAClB,CAACv6C,GAAAA,GAASs6C,SAAU,mBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,mBAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,oBAEtB,sBAAuB,CACrB,CAACv6C,GAAAA,GAASs6C,SAAU,sBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,0BAEtB,2BAA4B,CAC1B,CAACv6C,GAAAA,GAASs6C,SAAU,2BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,oCAEtB,6BAA8B,CAC5B,CAACv6C,GAAAA,GAASs6C,SAAU,6BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kCAEtB,4BAA6B,CAC3B,CAACv6C,GAAAA,GAASs6C,SAAU,4BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,mCAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iBAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,6BAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,OAAU,CACR,CAACv6C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,eAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,cAAiB,CACf,CAACv6C,GAAAA,GAASs6C,SAAU,gBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAIbI,GAAqC,CAC9C,wCAAyC,CACvC,CAAC36C,GAAAA,GAASs6C,SAAU,wCACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kDAEtB,8BAA+B,CAC7B,CAACv6C,GAAAA,GAASs6C,SAAU,8BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,+BAEtB,wCAAyC,CACvC,CAACv6C,GAAAA,GAASs6C,SAAU,wCACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kDAEtB,uCAAwC,CACtC,CAACv6C,GAAAA,GAASs6C,SAAU,uCACpB,CAACt6C,GAAAA,GAASu6C,SAAU,wCAEtB,uBAAwB,CACtB,CAACv6C,GAAAA,GAASs6C,SAAU,uBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,qCAAsC,CACpC,CAACv6C,GAAAA,GAASs6C,SAAU,qCACpB,CAACt6C,GAAAA,GAASu6C,SAAU,qCAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,uBAEtB,wBAAyB,CACvB,CAACv6C,GAAAA,GAASs6C,SAAU,wBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,0BAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,qBAEtB,yBAA0B,CACxB,CAACv6C,GAAAA,GAASs6C,SAAU,yBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iCAEtB,6CAA8C,CAC5C,CAACv6C,GAAAA,GAASs6C,SAAU,6CACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sDAEtB,cAAiB,CACf,CAACv6C,GAAAA,GAASs6C,SAAU,gBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,iDAAkD,CAChD,CAACv6C,GAAAA,GAASs6C,SAAU,iDACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iDAEtB,2CAA4C,CAC1C,CAACv6C,GAAAA,GAASs6C,SAAU,2CACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yCAIbK,GAAmC,CAC5C,MAAS,CACP,CAAC56C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,OAAU,CACR,CAACv6C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,SAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAIbM,GAAsC,CAC/C,MAAS,CACP,CAAC76C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,aAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kBAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,SAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAIbO,GAAmC,CAC5C,OAAU,CACR,CAAC96C,GAAAA,GAASs6C,SAAU,SACpB,CAACt6C,GAAAA,GAASu6C,SAAU,WAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAIbQ,GAAmC,CAC5C,iBAAkB,CAChB,CAAC/6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iBAEtB,qBAAsB,CACpB,CAACv6C,GAAAA,GAASs6C,SAAU,qBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAIbS,GAAuC,CAChD,2BAA4B,CAC1B,CAACh7C,GAAAA,GAASs6C,SAAU,2BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,yBAEtB,aAAgB,CACd,CAACv6C,GAAAA,GAASs6C,SAAU,eACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,iBAAkB,CAChB,CAACv6C,GAAAA,GAASs6C,SAAU,iBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kBAEtB,cAAiB,CACf,CAACv6C,GAAAA,GAASs6C,SAAU,gBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iBAEtB,kBAAmB,CACjB,CAACv6C,GAAAA,GAASs6C,SAAU,kBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,wBAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,SAAY,CACV,CAACv6C,GAAAA,GAASs6C,SAAU,WACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,aAEtB,YAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,yBAA0B,CACxB,CAACv6C,GAAAA,GAASs6C,SAAU,yBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,4BAEtB,qBAAsB,CACpB,CAACv6C,GAAAA,GAASs6C,SAAU,qBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,kBAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,kBAAmB,CACjB,CAACv6C,GAAAA,GAASs6C,SAAU,kBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,sBAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,YAEtB,WAAc,CACZ,CAACv6C,GAAAA,GAASs6C,SAAU,aACpB,CAACt6C,GAAAA,GAASu6C,SAAU,uBAEtB,UAAa,CACX,CAACv6C,GAAAA,GAASs6C,SAAU,YACpB,CAACt6C,GAAAA,GAASu6C,SAAU,UAEtB,IAAO,CACL,CAACv6C,GAAAA,GAASs6C,SAAU,MACpB,CAACt6C,GAAAA,GAASu6C,SAAU,OAEtB,cAAiB,CACf,CAACv6C,GAAAA,GAASs6C,SAAU,gBACpB,CAACt6C,GAAAA,GAASu6C,SAAU,eAEtB,MAAS,CACP,CAACv6C,GAAAA,GAASs6C,SAAU,QACpB,CAACt6C,GAAAA,GAASu6C,SAAU,0BAEtB,6BAA8B,CAC5B,CAACv6C,GAAAA,GAASs6C,SAAU,6BACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gCAEtB,cAAe,CACb,CAACv6C,GAAAA,GAASs6C,SAAU,cACpB,CAACt6C,GAAAA,GAASu6C,SAAU,gBAEtB,eAAgB,CACd,CAACv6C,GAAAA,GAASs6C,SAAU,eACpB,CAACt6C,GAAAA,GAASu6C,SAAU,iCAEtB,KAAQ,CACN,CAACv6C,GAAAA,GAASs6C,SAAU,OACpB,CAACt6C,GAAAA,GAASu6C,SAAU,cAEtB,QAAW,CACT,CAACv6C,GAAAA,GAASs6C,SAAU,UACpB,CAACt6C,GAAAA,GAASu6C,SAAU,uBC7hBpBn6B,GAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGd8nG,GAAc97K,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC1B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,qBACL6jH,EAAoB,gBACpB6rB,EAAe,gBACfC,EAAe,cACfC,EAAa,YACbC,EAAW,eACXC,EAAc,KACd1wD,EAAI,KACJnuH,GACEw+K,EAEJ,OACEv8E,EAAAA,cAAC68E,GAAAA,EAAW,CACVnuG,SAAUA,EACVouG,IAAKnsB,EACL7jH,MAAOA,EACPo/E,KAAMA,EACNswD,gBAAiBA,EACjBC,gBAAiBA,EACjBC,cAAeA,EACfC,YAAaA,EACbC,eAAgBA,EAChBh3C,YAAa7nI,GACb,EAscN,OA5b8B4S,IAC5B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAE/B,EAACsmM,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,IAErD,EAAC+U,EAAM,EAACw7C,IAAYvwD,EAAAA,EAAAA,UAAS,mBAK7Bq0M,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,MACpBggM,GAAahgM,EAAAA,EAAAA,SAAO,IAEpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAG5B2rC,EAAgB,UAAS13J,IACzB23K,EAAuBP,EACxB,IAAGA,UAAmB1f,IACvBA,EAEEkgB,EAAqB/kM,IACzB/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/B,IAAKH,EAAW5lM,QAAS,OAAO,KAEhC2lM,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,SACxB4lM,EAAW5lM,SAAU,CAAK,CAC3B,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKC,EAAiBC,IAAsBH,EAAAA,GAAAA,IAC5C,kBACAI,GAAAA,KAMI,EAACqI,EAAW,EAACC,IAAiB70M,EAAAA,EAAAA,UAAS,WAEvC,EAAC80M,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAW1DgJ,EAAoBA,CAAC9jL,EAAG0/B,KAE5B,GADA1/B,EAAExkB,iBACEkkD,IAAS+jJ,EAKb,OAHAC,EAAchkJ,GACdy7I,EAAmBz7I,GAEXA,GACN,IAAK,SAIL,IAAK,QACHN,EAAS,mBACT27I,OAAgB/xM,GAChB,MACF,IAAK,gBACHo2D,EAAS,uBACT27I,OAAgB/xM,GAChB,MACF,QACEo2D,EAAS,mBAEb,GAIFjwD,EAAAA,EAAAA,YAAU,KACRu0M,EAAcxI,GAEZ97I,EADsB,UAApB87I,GAE2B,WAApBA,EADA,kBAGoB,kBAApBA,EACA,sBAEA,kBACX,GACC,CAACA,KAGJ/rM,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MA4DMiJ,EAA4B/jL,IAAO,IAAD24K,EAEtC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAC3CsmJ,EAAYtmJ,eACZ,CAAC,EACC+oJ,GACHC,KAAUH,EAAqBC,KAC/BG,KAAUH,GAEbN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,GAIjB,EAACv6B,EAAQ,EAACg7B,IAAcx1M,EAAAA,EAAAA,WAAS,IAGvCM,EAAAA,EAAAA,YAAU,KACR+4K,GAAa13G,aACN,KACL03G,GAAa13G,YAAY,IAE1B,IA8DH,OACEu7B,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAWhqD,GAAS,kBACpB69L,YAAaA,GAAe,CAAC,EAC7B6C,oBAzJwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAC1CopJ,EAAYppJ,eACZ,CAAC,EAGCspJ,GACJ3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SACrCglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EACxBo6M,GACHP,KAAUH,EAAqBQ,KAC/BJ,KAAUI,GACPG,EAAgBlB,IAAevI,EAC/B0J,GACJ9J,GACsB,WAApBI,GACoB,kBAApBA,EAGE2J,EAAgBV,KAAUI,EAAa,CAC3CO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAIxD1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EAkGzB/6B,aAAcA,GACdmB,QAASA,GAETt9E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OACEzpD,UAAY,iBAAgB4sI,YAAuBA,aAEnDnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,UACEzpD,UAAU,gCACVw2G,QArOEywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAiOY73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAEzCrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAI3CrmF,EAAAA,cAAA,OACEzpD,UAAY,2BAAyBqhK,EAAc,OAAS,SAG5D53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,mBAAmBu/B,eAAe,qBAAqB,KAChFggE,EAAAA,cAAA,OAAKzpD,UAAU,yCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,sCAAuCu/B,eAAgB,gBACjFr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,2BACVmmJ,eArE8BjtL,IAC9C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMyvL,EAA0B,IAAKzvL,GAQrC,OANEysL,GAAuCzsL,EAAK63F,QAC5C40F,GAAuCzsL,EAAK63F,OAAOjiF,KAEnD65K,EAAwB53F,MACtB40F,GAAuCzsL,EAAK63F,OAAOjiF,IAEhD65K,CAAuB,IAGhC,OADoBp/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KA2DNx5G,EAAAA,cAAA,OAAKzpD,UAAU,uCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,oCAAqCu/B,eAAgB,cAC/Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,yBACVmmJ,eAhG2BjtL,IAC3C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM0vL,EAAuB,IAAK1vL,GAQlC,OANEwsL,GAAoCxsL,EAAK63F,QACzC20F,GAAoCxsL,EAAK63F,OAAOjiF,KAEhD85K,EAAqB73F,MACnB20F,GAAoCxsL,EAAK63F,OAAOjiF,IAE7C85K,CAAoB,IAG7B,OADoBr/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAsFNx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,mCAAoCu/B,eAAgB,aAC9Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,wBACVmmJ,eA5H2BjtL,IAC3C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM2vL,EAAuB,IAAK3vL,GAQlC,OANEusL,GAAoCvsL,EAAK63F,QACzC00F,GAAoCvsL,EAAK63F,OAAOjiF,KAEhD+5K,EAAqB93F,MACnB00F,GAAoCvsL,EAAK63F,OAAOjiF,IAE7C+5K,CAAoB,IAI7B,OADoBt/I,KAAQm/I,EAAe,CAAC,QAAS,SAAU,CAAC,MAAO,QACrD,EA+GFrnJ,SAAS,SAGb6tC,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,oCAAqCu/B,eAAgB,cAC/Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,kCACVmmJ,eAnJ4BjtL,GACrCA,EAAMjH,KAAK0I,IAChB,MAAM4vL,EAAU,IACX5vL,GAIL,OAFIosL,GAAsCpsL,EAAK63F,QAAUu0F,GAAsCpsL,EAAK63F,OAAOjiF,KACzGg6K,EAAQ/3F,MAAQu0F,GAAsCpsL,EAAK63F,OAAOjiF,IAAW5V,GACxE4vL,CAAO,OA+IJ55G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKlFggE,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAGrEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAA2B,kBAAfmhK,GAAiD,UAAfA,EAA0B,SAAW,GACnF3qD,QAAS94H,GAAK8jL,EAAkB9jL,EAAG,UACnCvzB,MAAM,UAENs/F,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,aAGtEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAA0B,kBAAfmhK,EAAiC,SAAW,GACvD3qD,QAAS94H,GAAK8jL,EAAkB9jL,EAAG,iBACnCvzB,MAAM,iBAENs/F,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qCAAqCu/B,eAAe,oBAG7EggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAA0B,UAAfmhK,EAAyB,SAAW,GAC/C3qD,QAAS94H,GAAK8jL,EAAkB9jL,EAAG,SACnCvzB,MAAM,SAENs/F,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,eAO3EggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QAAwB,UAAfk6B,EAAyBH,EAAuBjgB,IAG3Dt3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAcpB,KAEpBt8E,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,0BCpgBL,MAAMwvK,GACnB,4BAAOC,CAAsBxqL,EAAQ4c,EAAMrsC,EAAO,IAChD,IAAIk6M,EACA7vK,EACA8vK,EACAt5M,EACAmX,EACAtZ,EAEJ,GAAI2tC,GAWF,GAVA8tK,EAAW9tK,EAAKziC,QAAQ,MAEN,IAAduwM,EACFD,EAAe7tK,GAEf6tK,EAAe7tK,EAAKptC,MAAM,EAAGk7M,GAC7B9vK,EAAYgC,EAAKptC,MAAMk7M,EAAW,IAGpCt5M,EAAQ4uB,EAAOyqL,GACXr5M,QACF,GAAMwpC,GAA+B,iBAAVxpC,GAAuC,iBAAVA,EAEjD,GAA8C,mBAA1C+D,OAAOjH,UAAU4tB,SAASxsB,KAAK8B,GACxC,IAAKmX,EAAQ,EAAGtZ,EAASmC,EAAMnC,OAAQsZ,EAAQtZ,EAAQsZ,IACrDgiM,GAAOC,sBAAsBp5M,EAAMmX,GAAQqyB,EAAWrqC,QAE/CqqC,GACT2vK,GAAOC,sBAAsBp5M,EAAOwpC,EAAWrqC,QAN/CA,EAAKT,KAAKsB,QAUdb,EAAKT,KAAKkwB,GAGZ,OAAOzvB,CACT,EClCa,MAAMo6M,GACnB,WAAAjsM,CAAYksM,EAAW,GAAI/rM,EAAO,GAAIjK,EAAU,CAAC,GACzCrF,MAAMgpB,QAAQ1Z,KAClBjK,EAAUiK,EACVA,EAAO,IAGTrR,KAAKo9M,SAAWA,EAChBp9M,KAAKqR,KAAOA,EACZrR,KAAKoH,QAAUO,OAAO8xB,OAAO,CAC3B4jL,eAAe,EACf7zM,MAAM,GACLpC,EACL,CAEA,MAAA87D,CAAOxM,EAAQ,IACb,GAAc,KAAVA,EACF,OAAO12D,KAAKo9M,SAGd,MAAMjwK,EAAU,GAEhB,IAAK,IAAI7rC,EAAI,EAAGA,EAAItB,KAAKo9M,SAAS37M,OAAQH,IAAK,CAC7C,MAAM4rB,EAAOltB,KAAKo9M,SAAS97M,GAE3B,GAAyB,IAArBtB,KAAKqR,KAAK5P,OAAc,CAC1B,MAAM67M,EAAQH,GAAYI,QAAQrwL,EAAMwpC,EAAO12D,KAAKoH,QAAQi2M,eAExDC,GACFnwK,EAAQ7qC,KAAK,CAAE4qB,OAAMowL,SAEzB,MACE,IAAK,IAAIx1M,EAAI,EAAGA,EAAI9H,KAAKqR,KAAK5P,OAAQqG,IAAK,CACzC,MAAM01M,EAAiBT,GAAOC,sBAAsB9vL,EAAMltB,KAAKqR,KAAKvJ,IAEpE,IAAIwoC,GAAQ,EAEZ,IAAK,IAAIg/B,EAAI,EAAGA,EAAIkuI,EAAe/7M,OAAQ6tE,IAAK,CAC9C,MAAMguI,EAAQH,GAAYI,QAAQC,EAAeluI,GAAI5Y,EAAO12D,KAAKoH,QAAQi2M,eAEzE,GAAIC,EAAO,CACThtK,GAAQ,EAERnD,EAAQ7qC,KAAK,CAAE4qB,OAAMowL,UAErB,KACF,CACF,CAEA,GAAIhtK,EACF,KAEJ,CAEJ,CAMA,OAJItwC,KAAKoH,QAAQoC,MACf2jC,EAAQ3jC,MAAK,CAACjB,EAAGC,IAAMD,EAAE+0M,MAAQ90M,EAAE80M,QAG9BnwK,EAAQ3oB,KAAIgX,GAAUA,EAAOtO,MACtC,CAEA,cAAOqwL,CAAQrwL,EAAMwpC,EAAO2mJ,GAC1BnwL,EAAOiJ,OAAOjJ,GACdwpC,EAAQvgC,OAAOugC,GAET2mJ,IACJnwL,EAAOA,EAAKuwL,oBACZ/mJ,EAAQA,EAAM+mJ,qBAGhB,MAAMC,EAAUP,GAAYQ,kBAAkBzwL,EAAMwpC,GAEpD,QAAMgnJ,IAKFxwL,IAASwpC,EACJ,EAILgnJ,EAAQj8M,OAAS,EACPi8M,EAAQA,EAAQj8M,OAAS,GAAKi8M,EAAQ,GAA3C,EAIF,EAAIA,EAAQ,GACrB,CAEA,wBAAOC,CAAkBzwL,EAAMwpC,GAC7B,MAAMknJ,EAAUlnJ,EAAM7qD,MAAM,IAC5B,IAAI6xM,EAAU,GA4Bd,OA1B6BP,GAAYU,qBAAqB3wL,EAAMwpC,GAE/C7kD,SAAQ,CAACisM,EAAeC,KAC3C,IAAIhjM,EAAQ+iM,EAAgB,EAE5BJ,EAAQK,GAAgB,CAACD,GAEzB,IAAK,IAAIx8M,EAAI,EAAGA,EAAIs8M,EAAQn8M,OAAQH,IAAK,CACvC,MAAM08M,EAASJ,EAAQt8M,GAIvB,GAFAyZ,EAAQmS,EAAKvgB,QAAQqxM,EAAQjjM,IAEd,IAAXA,EAAc,CAChB2iM,EAAQK,IAAgB,EAExB,KACF,CAEAL,EAAQK,GAAcz7M,KAAKyY,GAE3BA,GACF,KAGF2iM,EAAUA,EAAQj2M,QAAOw2M,IAAmC,IAAlBA,MAEpCP,EAAQj8M,QAIPi8M,EAAQl0M,MAAK,CAACjB,EAAGC,IACL,IAAbD,EAAE9G,OACG8G,EAAE,GAAKC,EAAE,IAGlBD,EAAIA,EAAEA,EAAE9G,OAAS,GAAK8G,EAAE,KACxBC,EAAIA,EAAEA,EAAE/G,OAAS,GAAK+G,EAAE,MAGvB,EACL,CAEA,2BAAOq1M,CAAqB3wL,EAAMwpC,GAChC,MAAMv+B,EAAQu+B,EAAM,GAEpB,OAAOxpC,EAAKrhB,MAAM,IAAI2Y,KAAI,CAACw5L,EAAQjjM,IAC7BijM,IAAW7lL,GAIRpd,IACNtT,QAAOsT,IAAmB,IAAVA,GACrB,iEChIF,MAAMmjM,GAAiBA,CAAC39L,EAAOC,KAE7B,MAAM,QAAEo2C,EAAO,eAAEunJ,EAAc,cAAEC,EAAa,gBAAEC,EAAe,iBAAEC,GAAqB99L,EAQtF,OAAQA,EAAOvf,MACb,IAAK,WACH,MAAMs9M,EAAgC,IAAf3nJ,EAAU,GAC3B4nJ,EAAcD,EAAgB,GAC9BE,EAASl+L,EAAMm+L,gBAAgB18M,MAAMu8M,EAAeC,GAC1D,MAAO,IAAKj+L,EAAOo+L,WAAY/nJ,EAASgoJ,eAAgBH,GAC1D,IAAK,mBACH,MAGMtxK,EAHW,IAAIgwK,GAAY58L,EAAMs+L,WAAY,CAAC,SAAU,CAC5DxB,eAAe,IAEQn6I,OAAOi7I,EAAepqK,QAEzC+qK,EAAiB3xK,EAAQnrC,MAAM,EAAG,IACxC,MAAO,IACFue,EACHq4L,YAAauF,EACbO,gBAAiBvxK,EACjByxK,eAAgBE,EAChBH,WAAY,GAEhB,IAAK,mBACH,MAAMI,EAA+C,IAAvBV,EAAkB,GAC1CW,EAAqBD,EAAuB,GAC5CE,EAAgBb,EAAcp8M,MAAM+8M,EAAsBC,GAEhE,MAAO,IACFz+L,EACHs+L,WAAYT,EACZM,gBAAiBN,EACjBO,WAAYN,EACZO,eAAgBK,GAEpB,IAAK,oBACH,MAAO,IACF1+L,EACH+9L,iBAAkBA,GAGtB,QACE,MAAM,IAAI38M,MAAM,uBACpB,EA8oBIu9M,GAAgB,CAEpB,CACE/7M,IAAK,qBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,oCAAoCu/B,eAAe,uBAC9Et/B,MAAO,sBAET,CACET,IAAK,YACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,cACrEt/B,MAAO,aAET,CACET,IAAK,iBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gCAAgCu/B,eAAe,mBAC1Et/B,MAAO,mBAILu7M,GAAmB,CAEvB,CACEh8M,IAAK,cACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,gBACvEt/B,MAAO,eAET,CACET,IAAK,UACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,YACnEt/B,MAAO,WAET,CACET,IAAK,cACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,gBACvEt/B,MAAO,eAET,CACET,IAAK,iBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gCAAgCu/B,eAAe,mBAC1Et/B,MAAO,kBAET,CACET,IAAK,iBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gCAAgCu/B,eAAe,mBAC1Et/B,MAAO,kBAET,CACET,IAAK,iBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gCAAgCu/B,eAAe,mBAC1Et/B,MAAO,kBAET,CACET,IAAK,kBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,oBAC3Et/B,MAAO,oBAILw7M,GAAe,CAEnB,CACEj8M,IAAK,SACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,WAClEt/B,MAAO,UAET,CACET,IAAK,kBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,oBAC3Et/B,MAAO,mBAET,CACET,IAAK,WACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,0BAA0Bu/B,eAAe,aACpEt/B,MAAO,YAET,CACET,IAAK,UACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,YACnEt/B,MAAO,YAILy7M,GAAkB,CAEtB,CACEl8M,IAAK,aACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,4BAA4Bu/B,eAAe,eACtEt/B,MAAO,cAET,CACET,IAAK,oBACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,mCAAmCu/B,eAAe,sBAC7Et/B,MAAO,qBAET,CACET,IAAK,SACLwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,WAClEt/B,MAAO,WAIX,SAAS07M,GAA0BnzM,EAAS+lC,EAAQv8B,GAClD,GAAsB,oBAAXzH,OAAwB,OAEnC,MAAMpF,EAAOqD,EAAQC,wBACfoC,EAAYN,OAAOgzC,aAAetyC,SAAS45B,gBAAgBh6B,UAC3D+wM,EAAaz2M,EAAKF,IAAM4F,EAG9BN,OAAOwH,SAAS,CACd9M,IAAK22M,EAAartK,EAClBv8B,SAAUA,GAAY,UAE1B,CAEA,OAxvB0C9B,IACxC,MAAM,OAAEivB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,MAC5B,QAAEqK,EAAO,gBAAEsmD,EAAe,SAAE1lL,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,IACpD4/D,GAAqBD,EAAAA,GAAAA,GAAWlhJ,IAChC,gCAAE28K,EAA+B,oBAAEC,GAAwBF,GAE3D,EAACj/L,EAAM,EAACR,IAAY1D,EAAAA,EAAAA,YAAW6hM,GAAgB,CACnDS,WAAY,EACZ/F,YAAa,GACbiG,WAAY,GACZH,gBAAiB,GACjBE,eAAgB,GAChBN,mBAAkBmB,KAGd,WAAEd,EAAU,YAAE/F,EAAW,eAAEgG,EAAc,gBAAEF,EAAe,iBAAEJ,GAAqB/9L,GACjF,EAACo/L,EAAuB,EAACC,IAA6B55M,EAAAA,EAAAA,UAASs4M,EAAmB,EAAI,IACtF,EAACuB,EAAsB,EAACC,IAA4B95M,EAAAA,EAAAA,UAAS,KAC7D,EAAC+5M,EAAgB,EAACC,IAAsBh6M,EAAAA,EAAAA,WAAS,IACjD,EAACi6M,EAAoB,EAAC59B,IAA0Br8K,EAAAA,EAAAA,UAAS,KACzD,EAAC80M,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IAEzC,EAAC06K,EAAQ,EAACw/B,IAAcl6M,EAAAA,EAAAA,UAAS,CACrCm6M,OAAQ,CAAC,EACTC,UAAW,CAAC,EACZC,MAAO,CAAC,EACRjqD,SAAU,CAAC,KAINkqD,EAAWC,IAAgBpO,EAAAA,GAAAA,IAAc,OAAQqO,GAAAA,KACjDvO,EAAcC,IAAmBC,EAAAA,GAAAA,IAAc,eAAgBC,GAAAA,KAC/DqO,EAAmBC,IAAwBvO,EAAAA,GAAAA,IAAc,eAAgBwO,GAAAA,IAE1EvwL,GAAM5V,EAAAA,EAAAA,QAAO,MAKbomM,EAAsB,CAAE,GAAElB,IAAkC,UAAX58K,EAAqB,sBAAwB,gBAuD9Fo4K,EAA4B/jL,IAAO,IAAD24K,EAEtC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAM2yK,EAAiBl5M,OAAOoe,QAAQ26J,GAAS91K,QAAO,CAACU,EAAG5H,KAAuB,IAApBP,EAAK29M,GAASp9M,EACzE,MAAMq9M,EAAap5M,OAAO0J,KAAKyvM,GAAUr5M,QAAQw1B,GAAM6jL,EAAS7jL,KAMhE,OAJI8jL,EAAWt/M,OAAS,IACtB6J,EAAInI,GAAO49M,GAGNz1M,CAAG,GACT,CAAC,GAGE01M,EAAsB,IACvB/O,EACH3/I,eAAgBuuJ,GAIZ1F,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE+oJ,GAAsBC,KAAUH,EAAqB6F,EAAoB1uJ,kBAAoBipJ,KAAUyF,EAAoB1uJ,gBAGjIwoJ,GAAeO,GAAsBnJ,EAAgB8O,GAErDjG,GAAe,EAAM,EAMjBkG,EAAgBA,CAACC,EAAYz5M,EAAQ05M,KACzCjB,GAAYkB,IAAW,IAClBA,EACH,CAACF,GAAa,IACTE,EAAYF,GACf,CAACz5M,GAAS05M,OAGdZ,EAAa,EAAE,GAqDjBj6M,EAAAA,EAAAA,YAAU,KAAO,IAADs8K,EACdP,GAAuBnpB,SAAyB,QAAlB0pB,EAAP1pB,EAASlI,wBAAgB,IAAA4xB,OAAlB,EAAPA,EAA2BO,kBAAmB,GAAG,GACvE,CAACjqB,KAGJ5yJ,EAAAA,EAAAA,YAAU,KAAO,IAADu8K,EACd,IAAIw+B,EAAkBp9B,EAAmBx8K,QAAQg1I,IAAYwjE,EAAoB3yM,SAASmvI,EAAOrtB,QAG7FkvF,IACF+C,EAAkBA,EAAgB55M,QAAQg1I,GAAWojE,EAAsBpyM,MAAM6zM,GAAiBA,EAAalyF,OAASqtB,EAAOrtB,UAYjI,GAR4BznH,OAAOkX,OAAO6hK,GAASjzK,MAAMyzM,GAAev5M,OAAOkX,OAAOqiM,GAAYzzM,MAAMhG,GAAWA,QAGjH45M,EAAkBA,EAAgB55M,QAAQg1I,GAnErBA,KACvB,MAAM8kE,EAAa,CACjB,qBAAsB,CAAC,EAAG,MAC1BC,UAAW,CAAC,KAAO,MACnB,iBAAkB,CAAC,KAAQnjB,MAG7B,IAAK,MAAMojB,KAAgB/gC,EAAQy/B,OACjC,GAAIz/B,EAAQy/B,OAAOsB,IACbF,EAAWE,GAAc,IAAMhlE,EAAOkoC,sBAAwBloC,EAAOkoC,qBAAuB48B,EAAWE,GAAc,GACvH,OAAO,EAKb,OAAO,CAAK,EAqDDC,CAAgBjlE,IAlDDA,KAC1B,IAAK,MAAMklE,KAAmBjhC,EAAQ0/B,UAAW,CACN,IAADwB,EAAxC,GAAIlhC,EAAQ0/B,UAAUuB,IACa,QAAjCC,EAAInlE,EAAO4nC,8BAAsB,IAAAu9B,GAA7BA,EAA+Bt0M,SAASq0M,GAC1C,OAAO,CAGb,CAEA,OAAO,CAAK,EAyC0BE,CAAmBplE,IAtCnCA,KACtB,IAAK,MAAMqlE,KAAephC,EAAQ2/B,MAChC,GAAI3/B,EAAQ2/B,MAAMyB,IACZrlE,EAAO8nC,cAAgBu9B,EACzB,OAAO,CAGb,EA+BoEC,CAAetlE,IA5B1DA,KACzB,IAAK,MAAMulE,KAAkBthC,EAAQtqB,SACnC,GAAIsqB,EAAQtqB,SAAS4rD,IACfvlE,EAAO+nC,iBAAmBw9B,EAC5B,OAAO,CAGb,EAqB8FC,CAAkBxlE,MAI5Gyc,SAAyB,QAAlB2pB,EAAP3pB,EAASlI,wBAAgB,IAAA6xB,GAAzBA,EAA2Bq/B,cAAe,CAE5C,MAAMC,GAAuBl8B,EAAAA,GAAAA,IAAqB/sB,EAAQlI,iBAAiBkxD,cAAeb,GAE1F,IAAIe,EAAe,EAEf9B,GAAaA,IAAc3B,IAC7ByD,EAAe9B,GAGjBvgM,EAAS,CACP9e,KAAM,mBACNm9M,cAAe+D,EACf9D,gBAAiB+D,IAEnBriM,EAAS,CACP9e,KAAM,mBACNk9M,eAAgBvF,GAEpB,IACC,CAACl4B,EAASu/B,EAAqBJ,EAAuBvB,KAGzDh4M,EAAAA,EAAAA,YAAU,KACJg6M,GACFvgM,EAAS,CACP9e,KAAM,WACN21D,QAAS0pJ,GAEb,GACC,CAACA,EAAW5B,KAGfp4M,EAAAA,EAAAA,YAAU,MACkB,IAAtBm6M,GACFb,EAA0B,GAE1B7/L,EAAS,CACP9e,KAAM,oBACNq9M,kBAAkB,MAEW,IAAtBmC,IACTb,EAA0B,GAE1B7/L,EAAS,CACP9e,KAAM,oBACNq9M,kBAAkB,IAEtB,GACC,CAACmC,KAGJn6M,EAAAA,EAAAA,YAAU,KACR,IAAI+7M,EAAa,CACflC,OAAQ,CAAC,EACTC,UAAW,CAAC,EACZC,MAAO,CAAC,EACRjqD,SAAU,CAAC,GAIb,IAAK,IAAIjzJ,KAAO8uM,aAAY,EAAZA,EAAc3/I,eACxB+vJ,EAAWl/M,IACb8uM,EAAa3/I,eAAenvD,GAAK0O,SAASo4D,IACxCo4I,EAAWl/M,GAAK8mE,IAAe,CAAI,IAKzCi2I,EAAWmC,EAAW,GACrB,CAACpQ,KAKJ3rM,EAAAA,EAAAA,YAAU,KACc,oBAAX4H,UACoC,IAAzCA,OAAO0tG,QAAQr7F,MAAM+hM,iBAA4BhC,KACnDN,GAAmB,GACnBxrM,YAAW,KACO,OAAhB4b,EAAIxb,SAAoB0qM,GAA0BlvL,EAAIxb,QAAS,IAAK,OAAO,GAC1E,KACHJ,YAAW,KACTwrM,GAAmB,EAAM,GACxB,KAEP,GACC,CAAC5vL,EAAIxb,WAERtO,EAAAA,EAAAA,YAAU,KAER,GAAMwzB,EAAU,CACd,MAAMmjH,EAAgB90H,UAEpB,MAAM85C,QAAYnoC,EAAS0wH,uBAAuBi1D,IAC5C,WAAE8C,EAAa,KAAOtgJ,aAAG,EAAHA,EAAK35D,OAAQ,CAAC,EAEpCu3M,GAAwB1+B,EAAAA,GAAAA,GAAyB8C,EAAoBs+B,GAC3EzC,EAAyBD,EAAsB,EAGjD5iE,GACF,IACC,CAACnjH,IAKJ,MAAM0oL,EAAqB5D,EAAep6L,KAAKi+L,IAE7C,MAAMC,EAAcz+B,EAAmBj8H,MAAMk+H,GAAcA,EAAU92D,OAASqzF,EAAcrzF,OAE1E,IAADuzF,EAAjB,OAAID,EAEAx/G,EAAAA,cAAA,MAAIzpD,UAAU,gBAAgBt2C,IAAKs/M,EAAc9+M,IAC/Cu/F,EAAAA,cAAC0/G,GAAAA,EAAW,CACVhxI,SAAU6wI,EAAc9+M,GACxBq8K,IAAK0iC,EAAY19B,oBACjBh1I,MAAO0yK,EAAY1yK,MACnBo/E,KAAMszF,EAAYtzF,KAClBi5D,OAAQq6B,EAAY59B,cACpBiB,SAAU28B,SAAkC,QAAvBC,EAAXD,EAAa39B,6BAAqB,IAAA49B,OAAvB,EAAXA,EAAoC3yK,MAC9C84F,YAAa,UACbo/C,YAAaw6B,EAAYh+B,0BACzByD,kBAAmBu6B,EAAY79B,0BAC/BuD,YAAaq6B,EAAcr6B,YAC3BG,gBAAgB,EAChBlG,uBAAwBA,KAKvB,IACT,IACC56K,QAAQ0wB,GAAoB,OAAVA,IAErB,OACE+qE,EAAAA,cAAAA,EAAAA,SAAA,KACG68G,GAAmB78G,EAAAA,cAACuqE,GAAAA,EAAc,MACnCvqE,EAAAA,cAAA,OACEzpD,UAAU,oDACV51C,MAAO,CAAEL,QAAS,OAAQiuL,eAAgB,gBAAiBxiB,SAAU,QAAS2oC,SAAU,OAAQplB,IAAK,SAErGtvF,EAAAA,cAAA,QAAM2/G,WAAW,GAAGppK,UAAU,qBAAqBj5B,OAAO,GAAG9b,KAAK,SAASgpK,SAAWv2I,GAAMA,EAAExkB,iBAAkB9O,MAAO,CAACorK,SAAU,QAAS6zC,UAAW,SACpJ5/G,EAAAA,cAAA,SACEjiG,KAAK,SACLi5L,YAAa3xB,EAAc,CAAE5kK,GAAI,kDAAmDu/B,eAAgB,wBACpG0rI,aAAa,MACbm0C,YAAY,MACZC,eAAe,MACfC,WAAW,QACX/0C,SAAS,GACTc,UAAU,MACVv1H,UAAU,sBACVvnB,SAAWiF,GACTpX,EAAS,CACP9e,KAAM,mBACNk9M,eAAgBhnL,EAAExtB,OAAO/F,QAG7BA,MAAOg1M,IAET11G,EAAAA,cAAA,UAAQjiG,KAAK,SAAS+uC,MAAM,4BAA4ByJ,UAAU,uBAAuB51C,MAAO,CAACK,OAAO,SACtGg/F,EAAAA,cAAA,OACE,cAAY,OACZggH,UAAU,QACV,cAAY,MACZ,YAAU,SACVzpK,UAAU,oCACV/0C,KAAK,MACLy+M,MAAM,6BACN5nB,QAAQ,eAERr4F,EAAAA,cAAA,QACEzzD,KAAK,eACLgD,EAAE,wVAIPmmK,EAAYn3M,OAAS,GACpByhG,EAAAA,cAAA,UACEjiG,KAAK,QACLgvJ,QAAU94H,GACRpX,EAAS,CACP9e,KAAM,mBACNk9M,eAAgB,KAGpBnuK,MAAM,0BACNyJ,UAAU,sBACV2pK,OAAO,IAEPlgH,EAAAA,cAAA,OACE,cAAY,OACZggH,UAAU,QACV,cAAY,MACZ,YAAU,QACVzpK,UAAU,mCACV/0C,KAAK,MACLy+M,MAAM,6BACN5nB,QAAQ,eAERr4F,EAAAA,cAAA,QACEzzD,KAAK,eACLgD,EAAE,uaAMZywD,EAAAA,cAAA,WACGu8G,GACCv8G,EAAAA,cAAA,OAAKzpD,UAAU,yBACbypD,EAAAA,cAACmgH,GAAAA,EAAY,CACXz/M,MAAOg9M,EAAoBjB,GAC3Bv4M,QAASw5M,EACT1uL,SA/XoBiF,IAChC,MAAMvzB,EAAQuzB,EAAEvzB,MAChBg8M,EAA0BgB,EAAoBj0M,QAAQ/I,IACtDsuM,EAAgB,MAChBqO,EAAa,GAIXxgM,EAAS,CACP9e,KAAM,oBACNq9M,kBAAkB,IAStBoC,EAA+B,iBAAV98M,GAAsC,wBAAVA,EAA+C,EA6WpF61C,UAAU,gCAGb,MAIPypD,EAAAA,cAAA,OAAKzpD,UAAU,+CAA+CrpB,IAAKA,GACjE8yE,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,yDACbypD,EAAAA,cAAA,UAAQzpD,UAAU,gCAAgCw2G,QAtW/BqzD,KACtBxI,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAiWU73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CACL0rJ,MAAO,UACPg6B,WAAY,WAGhBrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CACL0rJ,MAAO,UACPg6B,WAAY,YAKlBrmF,EAAAA,cAAA,OAAKzpD,UAAY,2BAAyBqhK,EAAc,OAAS,SAC/D53G,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gDAAgDu/B,eAAe,sBAAsB,KAE5GggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,WAClEr/B,MAAO,CACLurK,aAAc,YAGlBlsE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,MAAIzpD,UAAU,2BACXylK,GAAc16L,KAAI,CAAC69E,EAAQtnF,IAC1BmoF,EAAAA,cAAA,MAAI//F,IAAK4X,EAAO0+B,UAAU,2BACxBypD,EAAAA,cAAA,SAAOzpD,UAAU,4BACfypD,EAAAA,cAAA,SACEzpD,UAAU,8BACVx4C,KAAK,WACLs8L,QAAS7c,EAAQy/B,OAAO99G,EAAOz+F,SAAU,EACzCsuB,SAAWtf,GAAUquM,EAAc,SAAU5+G,EAAOz+F,MAAOgP,EAAMjJ,OAAO4zL,WAE1Er6F,EAAAA,cAAA,QAAMzpD,UAAU,gCAAgC4oD,EAAO1O,aAOnEuP,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,cACrEr/B,MAAO,CACLurK,aAAc,YAGlBlsE,EAAAA,cAAA,MAAIzpD,UAAU,2BACX0lK,GAAiB36L,KAAI,CAAC69E,EAAQtnF,IAC7BmoF,EAAAA,cAAA,MAAI//F,IAAK4X,EAAO0+B,UAAU,2BACxBypD,EAAAA,cAAA,SAAOzpD,UAAU,4BACfypD,EAAAA,cAAA,SACEzpD,UAAU,8BACVx4C,KAAK,WACLs8L,QAAS7c,EAAQ0/B,UAAU/9G,EAAOz+F,SAAU,EAC5CsuB,SAAWtf,GAAUquM,EAAc,YAAa5+G,EAAOz+F,MAAOgP,EAAMjJ,OAAO4zL,WAE7Er6F,EAAAA,cAAA,QAAMzpD,UAAU,gCAAgC4oD,EAAO1O,YAMjEuP,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,UACjEr/B,MAAO,CACLurK,aAAc,YAGlBlsE,EAAAA,cAAA,MAAIzpD,UAAU,2BACX2lK,GAAa56L,KAAI,CAAC69E,EAAQtnF,IACzBmoF,EAAAA,cAAA,MAAI//F,IAAK4X,EAAO0+B,UAAU,2BACxBypD,EAAAA,cAAA,SAAOzpD,UAAU,4BACfypD,EAAAA,cAAA,SACEzpD,UAAU,8BACVx4C,KAAK,WACLs8L,QAAS7c,EAAQ2/B,MAAMh+G,EAAOz+F,SAAU,EACxCsuB,SAAWtf,GAAUquM,EAAc,QAAS5+G,EAAOz+F,MAAOgP,EAAMjJ,OAAO4zL,WAEzEr6F,EAAAA,cAAA,QAAMzpD,UAAU,gCAAgC4oD,EAAO1O,YAMjEuP,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gDAAgDu/B,eAAe,sBAC1Fr/B,MAAO,CACLurK,aAAc,YAGlBlsE,EAAAA,cAAA,MAAIzpD,UAAU,2BACX4lK,GAAgB76L,KAAI,CAAC69E,EAAQtnF,IAC5BmoF,EAAAA,cAAA,MAAI//F,IAAK4X,EAAO0+B,UAAU,2BACxBypD,EAAAA,cAAA,SAAOzpD,UAAU,4BACfypD,EAAAA,cAAA,SACEzpD,UAAU,8BACVx4C,KAAK,WACLs8L,QAAS7c,EAAQtqB,SAAS/zD,EAAOz+F,SAAU,EAC3CsuB,SAAWtf,GAAUquM,EAAc,WAAY5+G,EAAOz+F,MAAOgP,EAAMjJ,OAAO4zL,WAE5Er6F,EAAAA,cAAA,QAAMzpD,UAAU,gCAAgC4oD,EAAO1O,aAQnEuP,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,UAAUu/B,eAAe,YAAY,KAE5DggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,2CACP43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,MAAMu/B,eAAe,UAI9CggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,0DAA0DmuB,UAAW,UAC5EypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,UAAUu/B,eAAe,cAIlDggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,2CACP43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,eAO/EggE,EAAAA,cAAA,OAAKzpD,UAAU,YACbypD,EAAAA,cAAA,MAAIzpD,UAAU,iBAAiB+oK,IAGjCt/G,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAC29E,GAAAA,EAAU,CACT89B,WAAYA,EACZ4E,kBAAmB,GACnBC,gBAAiB9E,EAAgBj9M,OACjCgiN,mBAAoB,EACpBvxL,SA/gBgBwxL,IACpBA,IAAe/E,IACjBW,GAA0BlvL,EAAIxb,QAAS,IAAK,UAC5C2rM,EAAamD,GACb3jM,EAAS,CACP9e,KAAM,WACN21D,QAAS8sJ,IAEb,EAwgBQC,gBAAgB,oDAChBC,UAAU,sBACVC,WAAW,sBACXC,UAAU,gDACVC,cAAc,sFACdC,oBAAkB,EAClBC,aACE/gH,EAAAA,cAAA,QAAMzpD,UAAU,uBACdypD,EAAAA,cAAA,OACE,cAAY,OACZggH,UAAU,QACV,cAAY,MACZ,YAAU,eACVzpK,UAAU,gDACV/0C,KAAK,MACLy+M,MAAM,6BACN5nB,QAAQ,eAERr4F,EAAAA,cAAA,QACEzzD,KAAK,eACLgD,EAAE,qPAKVyxK,aACEhhH,EAAAA,cAAA,KAAGzpD,UAAU,sBAAsB,aAAW,YAAYqnD,KAAK,KAC7DoC,EAAAA,cAAA,OACE,cAAY,OACZggH,UAAU,QACV,cAAY,MACZ,YAAU,gBACVzpK,UAAU,iDACV/0C,KAAK,MACLy+M,MAAM,6BACN5nB,QAAQ,eAERr4F,EAAAA,cAAA,QACEzzD,KAAK,eACLgD,EAAE,oSAQf,ECnqBP,MAAM4sI,GAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGdysI,GAAezgN,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC3B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,oBACLg1I,EAAmB,0BACnBN,EAAyB,0BACzBG,EAAyB,cACzBC,EAAa,sBACbC,EAAqB,KACrB31D,EAAI,KACJnuH,GACEw+K,EAEJ,OACEv8E,EAAAA,cAAC0/G,GAAAA,EAAW,CACVhxI,SAAUA,EACVouG,IAAKgF,EACLh1I,MAAOA,EACPo/E,KAAMA,EACNi5D,OAAQvD,EACRiB,SAAUhB,EACVj8C,YAAa7nI,EACbinL,YAAaxD,EACbyD,kBAAmBtD,EACnB8D,QAAe,MACf,EA4YN,OAlY8B90K,IAC5B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAC/B,QAAEqlJ,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAEzB,EAAC81F,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,IACpDo+M,IAAiBjS,EAAAA,GAAAA,IAAc,WAAYI,GAAAA,KAC3C8R,IAAoBlS,EAAAA,GAAAA,IAAc,cAAewO,GAAAA,IAKlDtG,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,OAEpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAC5B2rC,EAAgB,UAAS13J,IACzB23K,EAAuBP,EACxB,IAAGA,UAAmB1f,IACvBA,EAEEkgB,EAAqB/kM,IACzB/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/BJ,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,QAAQ,CACjC,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAC1C,YACAwO,GAAAA,KAMI,EAAC6D,EAAU,EAACC,IAAgBz+M,EAAAA,EAAAA,UAASs+M,IAAkB,IACvD,EAACxJ,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAgB1DyS,EAAuBvtL,IAC3BA,EAAExkB,iBACsC,WAApCwkB,EAAExtB,OAAOggB,WAAWyrB,MAAMxxC,QAG9B6gN,GAAcD,GACdtS,OAAgB/xM,GAChBokN,GAAmBC,GAAU,GAI/Bl+M,EAAAA,EAAAA,YAAU,KACRm+M,EAAaH,EAAe,GAC3B,CAACA,KAGJh+M,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MAuDMiJ,EAA2B/jL,IAAM,IAAD24K,EAEpC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAC3CsmJ,EAAYtmJ,eACZ,CAAC,EACC+oJ,GACHC,KAAUH,EAAqBC,KAC/BG,KAAUH,GAEbN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,GAGjB,EAAC4J,EAAW,EAACC,IAAiB5+M,EAAAA,EAAAA,WAAS,IAE7CM,EAAAA,EAAAA,YAAU,KACJ4yJ,GAAWA,EAAQlI,iBACrB4zD,GAAc,GACL1rD,IAAYA,EAAQlI,kBAC7B4zD,GAAc,EAChB,GACC,CAAC1rD,IA6CJ,OACEh2D,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,kBACV6zI,YAAaA,GAAe,CAAC,EAC7B6C,oBAlIwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAC1CopJ,EAAYppJ,eACZ,CAAC,EAGCspJ,GACJ3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SACrCglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EACxBo6M,GACHP,KAAUH,EAAqBQ,KAC/BJ,KAAUI,GACPG,EAAgB0I,IAAcF,EAC9BvI,GAAa9J,IAAgBqS,EAC7BtI,EAAgBV,KAAUI,EAAa,CAC3CO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAIxD1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EAgFzB/6B,aAAcA,IAEdn8E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OACEzpD,UAAY,iBAAgB4sI,YAAuBA,aAEnDnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,UACEzpD,UAAU,gCACVw2G,QAzLEywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAqLY73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAEzCrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAI3CrmF,EAAAA,cAAA,OACEzpD,UAAY,2BAAyBqhK,EAAc,OAAS,SAG5D53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,oBAAoBu/B,eAAe,sBAAsB,KAClFggE,EAAAA,cAAA,OAAKzpD,UAAU,0CACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,sCAAsCu/B,eAAe,gBAChFr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,4BACVmmJ,eA/F6BjtL,IAC7C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMyvL,EAA0B,IAAKzvL,GAQrC,OANEysL,GAAuCzsL,EAAK63F,QAC5C40F,GAAuCzsL,EAAK63F,OAAOjiF,KAEnD65K,EAAwB53F,MACtB40F,GAAuCzsL,EAAK63F,OAAOjiF,IAEhD65K,CAAuB,IAGhC,OADoBp/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAqFNx5G,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,2BAA4Bu/B,eAAgB,aACtEr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,yBACVmmJ,eA1FyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM23L,EAAsB,IAAK33L,GAQjC,OANE0sL,GAAmC1sL,EAAK63F,QACxC60F,GAAmC1sL,EAAK63F,OAAOjiF,KAE/C+hL,EAAoB9/F,MAClB60F,GAAmC1sL,EAAK63F,OAAOjiF,IAE5C+hL,CAAmB,IAG5B,OADoBtnJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAgFNx5G,EAAAA,cAAA,OAAKzpD,UAAU,mCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,qCAAsCu/B,eAAgB,uBAChFr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,mCACVmmJ,eApF2BjtL,GACpCA,EAAMjH,KAAK0I,IAChB,MAAM4vL,EAAU,IACX5vL,GAIL,OAFIosL,GAAsCpsL,EAAK63F,QAAUu0F,GAAsCpsL,EAAK63F,OAAOjiF,KACzGg6K,EAAQ/3F,MAAQu0F,GAAsCpsL,EAAK63F,OAAOjiF,IAAW5V,GACxE4vL,CAAO,OAgFJ55G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKlFggE,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAErEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,IAAcH,EAAmB,GAAK,SACjDp0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,MAAMu/B,eAAe,UAG7CyhL,GACCzhH,EAAAA,cAAA,MAAIzpD,UAAU,8DAMZypD,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAG,iEACHmuB,UAAW4qK,EAAmB,SAAW,IAEzCnhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,UAAUu/B,eAAe,cAOpDggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,IAAcH,EAAmB,SAAW,GACvDp0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,eAO/EggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QAAS8jC,EAAY/J,EAAuBjgB,IAG9Ct3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAcujC,KAEpBjhH,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,cC7XpB,OAnFoB15B,IAClB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,KACJrI,EAAI,MACJxmG,EAAK,WACLukM,EAAU,SACVC,EAAQ,SACRnzI,EAAQ,IACRxT,EAAG,YACH0qE,EAAW,cACXw/C,GACEz0K,EAEJ,OACEqvF,EAAAA,cAAA,OACEzpD,UAAU,wCACVt2C,IAAKi7D,EACL,cAAawT,GAEbsxB,EAAAA,cAAA,OAAKzpD,UAAU,qDACZumI,EACC98E,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,WAAU8jG,KACnBlsB,EAAAA,cAAA,OACEosE,IAAM,GAAE0Q,sDACRvyC,IAAI,MAIRvqC,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,WAAU8jG,KACnBlsB,EAAAA,cAAA,OACEosE,IAAI,wIACJ7hC,IAAI,OAKZvqC,EAAAA,cAAA,OAAKzpD,UAAU,mDACbypD,EAAAA,cAAA,OAAKzpD,UAAU,kEACX6uI,GACAplF,EAAAA,cAAC0lF,GAAAA,EAAQ,CACP7O,aAAc/pI,EACdq2I,aAAc,UACdC,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,IAIjB5lC,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,WAAU8jG,IACf31E,UAAU,qDAETzJ,IAGLkzD,EAAAA,cAAA,OAAKzpD,UAAU,2DACZstE,IAASxmG,GAAS2iF,EAAAA,cAAA,YAAO6jB,GACzBxmG,IAAUwmG,GAAQ7jB,EAAAA,cAAA,YAAO3iF,GACzBwmG,GAAQxmG,GACP2iF,EAAAA,cAAA,YACG6jB,EAAK,KAAGxmG,IAIdwkM,GACC7hH,EAAAA,cAAA,QAAMzpD,UAAU,2DACbsrK,EAASC,eAAe,MAAO,IAChC9hH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,cAG9D6hL,GAAYD,GAAc5hH,EAAAA,cAAA,QAAMzpD,UAAU,QAAO,KACjDqrK,GACC5hH,EAAAA,cAAA,QAAMzpD,UAAU,+DACbvxC,KAAKukE,MAAMq4I,GAAY,IAAE,IAAI5hH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,iBAI7F,ECxDV,MAAMm8I,GAAeC,IAAcC,EAAAA,EAAkBltG,MAAOktG,EAAAA,EAAkB7nG,QAExEutI,GAAevhN,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC3B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,oBACLk1K,EAAmB,KACnB91F,EAAI,KACJnuH,EAAI,YACJkkN,EAAW,uBACXC,EAAsB,uBACtBC,EAAsB,sBACtBC,GACE7lC,EAEJ,OACEv8E,EAAAA,cAACqiH,GAAW,CACV3zI,SAAUA,EACVouG,IAAKklC,EACLl1K,MAAOA,EACPo/E,KAAMA,EACN0Z,YAAa7nI,EACb8lH,KAAMo+F,EACN5kM,MAAO6kM,EACPN,WAAYO,EACZN,SAAUO,GACV,EA4VN,OAlV8BzxM,IAC5B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAE/B,EAACsmM,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,GAKrDq0M,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,OACpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAC5B2rC,EAAgB,UAAS13J,IACzB23K,EAAuBP,EAAc,IAAGA,UAAmB1f,IAAiBA,EAE5EkgB,EAAsB/kM,IAC1B/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/BJ,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,QAAQ,CACjC,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IAAc,eAAgBC,GAAAA,KAC/DkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAAc,YAAawO,GAAAA,KAKjE,EAAC6D,EAAU,EAACC,IAAgBz+M,EAAAA,EAAAA,UAASs+M,IAAkB,IACvD,EAACxJ,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAgB1DyS,EAAuBvtL,IAC3BA,EAAExkB,iBACsC,WAApCwkB,EAAExtB,OAAOggB,WAAWyrB,MAAMxxC,QAG9B6gN,GAAcD,GACdtS,OAAgB/xM,GAChBokN,GAAmBC,GAAU,GAI/Bl+M,EAAAA,EAAAA,YAAU,KACRm+M,EAAaH,EAAe,GAC3B,CAACA,KAGJh+M,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MA+CMiJ,EAA4B/jL,IAAO,IAAD24K,EAEtC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAAiBsmJ,EAAYtmJ,eAAiB,CAAC,EACxF+oJ,GAAuBC,KAAUH,EAAqBC,KAA+BG,KAAUH,GAErGN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,EAmEvB,OAEE73G,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,kBACV6zI,YAAaA,GAAe,CAAC,EAC7B6C,oBAlIwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAAiBopJ,EAAYppJ,eAAiB,CAAC,EAGvFspJ,GAAgB3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SAASglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EAC1Fo6M,GAA2BP,KAAUH,EAAqBQ,KAA+BJ,KAAUI,GACnGG,EAAgB0I,IAAcF,EAC9BvI,GAAc9J,IAAgBqS,EAC9BtI,EAAgBV,KAAUI,EAAa,CAAEO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAGrG1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EAwFzB/6B,aAAcA,IAGdn8E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OAAKzpD,UAAY,iBAAgB4sI,YAAuBA,aACtDnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,UAAQzpD,UAAU,gCAAgCw2G,QAtL9CywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAiLY73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAY,IAAGqhK,EAAuB,OAAT,QAAmB10K,KAAMm2K,EAAAA,IAAe14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAC7HrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAY,IAAEqhK,EAAc,OAAS,QAAU10K,KAAMo2K,EAAAA,IAAa34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAG5HrmF,EAAAA,cAAA,OAAKzpD,UAAY,2BAAyBqhK,EAAc,OAAS,SAC/D53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,0CAA0Cu/B,eAAe,sBAAsB,KACxGggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,sBAAuBu/B,eAAgB,SAAWr/B,MAAO,CAAEurK,aAAc,YAC5GlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,qBACVmmJ,eAlGsBjtL,IACtC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMs4L,EAAoB,IAAKt4L,GAQ/B,OANE2sL,GAAiC3sL,EAAK63F,QACtC80F,GAAiC3sL,EAAK63F,OAAOjiF,KAE7C0iL,EAAkBzgG,MAChB80F,GAAiC3sL,EAAK63F,OAAOjiF,IAE1C0iL,CAAiB,IAG1B,OADoBjoJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAwFNx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,yBAA0Bu/B,eAAgB,YAAcr/B,MAAO,CAAEurK,aAAc,YAClHlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,wBACVmmJ,eAzFyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMu4L,EAAuB,IAAKv4L,GAQlC,OANE4sL,GAAoC5sL,EAAK63F,QACzC+0F,GAAoC5sL,EAAK63F,OAAOjiF,KAEhD2iL,EAAqB1gG,MACnB+0F,GAAoC5sL,EAAK63F,OAAOjiF,IAE7C2iL,CAAoB,IAG7B,OADoBloJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KA+ENx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,sBAAuBu/B,eAAgB,SAAWr/B,MAAO,CAAEurK,aAAc,YAC5GlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,qBACVmmJ,eAhFsBjtL,IACtC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMw4L,EAAoB,IAAKx4L,GAQ/B,OANE6sL,GAAiC7sL,EAAK63F,QACtCg1F,GAAiC7sL,EAAK63F,OAAOjiF,KAE7C4iL,EAAkB3gG,MAChBg1F,GAAiC7sL,EAAK63F,OAAOjiF,IAE1C4iL,CAAiB,IAG1B,OADoBnoJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAsENx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,iCAAkCu/B,eAAgB,oBAAsBr/B,MAAO,CAAEurK,aAAc,YAClIlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,4BACVmmJ,eAAgBjtL,GACd8xC,KAAQ9xC,EAAO,CAAC,QAAS,SAAU,CAAC,MAAO,YAIjDy3E,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,sBAAuBu/B,eAAgB,SAAWr/B,MAAO,CAAEurK,aAAc,YAC5GlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,qBACVmmJ,eAhFsBjtL,IACtC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMy4L,EAAoB,IAAKz4L,GAQ/B,OANE8sL,GAAiC9sL,EAAK63F,QACtCi1F,GAAiC9sL,EAAK63F,OAAOjiF,KAE7C6iL,EAAkB5gG,MAChBi1F,GAAiC9sL,EAAK63F,OAAOjiF,IAE1C6iL,CAAiB,IAG1B,OADoBpoJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAsENx5G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKlFggE,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAErEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KAAGpC,KAAK,IAAIrnD,UAAY+qK,EAAa,GAAK,SAAUv0D,QAASy0D,GAC3DxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,aAGtEggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KAAGpC,KAAK,IAAIrnD,UAAY+qK,EAAa,SAAW,GAAIv0D,QAASy0D,GAC3DxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,eAO3EggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QAAU8jC,EAAa/J,EAAuBjgB,IAGhDt3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAcqkC,KAEpB/hH,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,ECvTpB,OAlFmB15B,IACjB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,SACJqB,EAAQ,UACRE,EAAS,SACTG,EAAQ,OACRE,EAAM,UACNE,EAAS,WACTu0D,EAAU,SACV7zG,EAAQ,IACRxT,EAAG,YACH0qE,EAAW,cACXw/C,GACEz0K,EAEJ,OACEqvF,EAAAA,cAAA,OACEzpD,UAAU,uCACVt2C,IAAKi7D,EACL,cAAawT,GAEbsxB,EAAAA,cAAA,OAAKzpD,UAAU,oDACZumI,EACC98E,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,UAAS8jG,KAClBlsB,EAAAA,cAAA,OACEosE,IAAM,GAAE0Q,sDACRvyC,IAAI,MAIRvqC,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,UAAS8jG,KAClBlsB,EAAAA,cAAA,OACEosE,IAAI,+HACJ7hC,IAAI,OAKZvqC,EAAAA,cAAA,OAAKzpD,UAAU,kDACbypD,EAAAA,cAAA,OAAKzpD,UAAU,iEACX6uI,GACAplF,EAAAA,cAAC0lF,GAAAA,EAAQ,CACP7O,aAAc/pI,EACdq2I,aAAc,SACdC,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,IAGjB5lC,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,UAAS8jG,IACd31E,UAAU,oDAETzJ,KAGHygF,GAAYE,GAAaG,GAAYE,GAAUE,IAC/ChuB,EAAAA,cAAA,OAAKzpD,UAAU,qDACbypD,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,cAAQA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qBAAqBu/B,eAAe,WAAW,QAE/D,IAAdytF,GAAsBztB,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,iBACvFutF,GAAYvtB,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,gBAC3E4tF,GAAY5tB,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,cAC3E8tF,GAAU9tB,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,sBAAsBu/B,eAAe,cACxEguF,GAAahuB,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,iBAInFuiJ,GACCviF,EAAAA,cAAA,OAAKzpD,UAAU,yDACbypD,EAAAA,cAAA,cAAQA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,aAAa,KAAU,IAAEuiJ,IAI9F,ECjDV,MAAMpG,GAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGdkuI,GAAcliN,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC1B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,mBACL61K,EAAkB,qBAClBC,EAAoB,KACpB12F,EAAI,KACJnuH,EAAI,eACJ8kN,EAAc,gBACdC,EAAe,eACfC,EAAc,aACdC,EAAY,gBACZC,GACE1mC,EAEJ,OACEv8E,EAAAA,cAACkjH,GAAU,CACTx0I,SAAUA,EACVouG,IAAK6lC,EACL71K,MAAOA,EACPo/E,KAAMA,EACNq2D,WAAYqgC,EACZh9E,YAAa7nI,EACbwvH,SAAUs1F,EACVp1F,UAAWq1F,EACXl1F,SAAUm1F,EACVj1F,OAAQk1F,EACRh1F,UAAWi1F,GACX,EAqVN,OA3U4BtyM,IAC1B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAE/B,EAACsmM,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,GAKrDq0M,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,OACpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAC5B2rC,EAAgB,UAAS13J,0HACzB23K,EAAuBP,EACxB,IAAGA,UAAmB1f,IACvBA,EAEEkgB,EAAqB/kM,IACzB/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/BJ,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,QAAQ,CACjC,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAC1C,YACAwO,GAAAA,KAMI,EAAC6D,EAAU,EAACC,IAAgBz+M,EAAAA,EAAAA,UAASs+M,IAAkB,IACvD,EAACxJ,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAgB1DyS,EAAuBvtL,IAC3BA,EAAExkB,iBACsC,WAApCwkB,EAAExtB,OAAOggB,WAAWyrB,MAAMxxC,QAG9B6gN,GAAcD,GACdtS,OAAgB/xM,GAChBokN,GAAmBC,GAAU,GAI/Bl+M,EAAAA,EAAAA,YAAU,KACRm+M,EAAaH,EAAe,GAC3B,CAACA,KAGJh+M,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MAuDMiJ,EAA4B/jL,IAAO,IAAD24K,EAEtC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAC3CsmJ,EAAYtmJ,eACZ,CAAC,EACC+oJ,GACHC,KAAUH,EAAqBC,KAC/BG,KAAUH,GAEbN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,EAmCvB,OACE73G,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,iBACV6zI,YAAaA,GAAe,CAAC,EAC7B6C,oBA7GwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAC1CopJ,EAAYppJ,eACZ,CAAC,EAGCspJ,GACJ3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SACrCglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EACxBo6M,GACHP,KAAUH,EAAqBQ,KAC/BJ,KAAUI,GACPG,EAAgB0I,IAAcF,EAC9BvI,GAAa9J,IAAgBqS,EAC7BtI,EAAgBV,KAAUI,EAAa,CAC3CO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAIxD1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EA2DzB/6B,aAAcA,IAEdn8E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OACEzpD,UAAY,iBAAgB4sI,YAAuBA,aAErDnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BAEbypD,EAAAA,cAAA,UACEzpD,UAAU,gCACVw2G,QArKIywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAiKU73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAEzCrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAI3CrmF,EAAAA,cAAA,OAAKzpD,UAAY,2BAAyBqhK,EAAc,OAAS,SAC7D53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,kCAAkCu/B,eAAe,qBAAqB,KAC/FggE,EAAAA,cAAA,OAAKzpD,UAAU,wCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAC5kK,GAAI,sCAAuCu/B,eAAgB,gBAChFr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,2BACVmmJ,eAlF6BjtL,IAC7C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMyvL,EAA0B,IAAKzvL,GAQrC,OANEysL,GAAuCzsL,EAAK63F,QAC5C40F,GAAuCzsL,EAAK63F,OAAOjiF,KAEnD65K,EAAwB53F,MACtB40F,GAAuCzsL,EAAK63F,OAAOjiF,IAEhD65K,CAAuB,IAGhC,OADoBp/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAwENx5G,EAAAA,cAAA,OAAKzpD,UAAU,iCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAC5kK,GAAI,0BAA2Bu/B,eAAgB,aACpEr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,wBACVmmJ,eA7EyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM23L,EAAsB,IAAK33L,GAQjC,OANE0sL,GAAmC1sL,EAAK63F,QACxC60F,GAAmC1sL,EAAK63F,OAAOjiF,KAE/C+hL,EAAoB9/F,MAClB60F,GAAmC1sL,EAAK63F,OAAOjiF,IAE5C+hL,CAAmB,IAG5B,OADoBtnJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAmENx5G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKpFggE,EAAAA,cAAA,MAAIzpD,UAAU,uBAAuB51C,MAAO,CAAE0lL,WAAY,SACxDrmF,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAErEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,GAAK,SAC5Bv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,aAGtEggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,SAAW,GAClCv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,cAMzEggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QAAS8jC,EAAY/J,EAAuBjgB,KAI9Ct3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAcglC,KAEpB1iH,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,ECnVpB,OA7DsB15B,IACpB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,SACJzxC,EAAQ,SACR/L,EAAQ,IACRxT,EAAG,WACHioJ,EAAU,KACV94K,EAAI,YACJu7F,EAAW,cACXw/C,GACEz0K,EAEJ,OACEqvF,EAAAA,cAAA,OACEzpD,UAAU,0CACVt2C,IAAKi7D,EACL,cAAawT,IAEX02G,GACAplF,EAAAA,cAAC0lF,GAAAA,EAAQ,CACP7O,aAAc/pI,EACdq2I,aAAc,YACdC,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,IAGjB5lC,EAAAA,cAAA,OAAKzpD,UAAU,uDACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,YAAW8jG,KACpBlsB,EAAAA,cAAA,OACEosE,IAAM,GAAE0Q,sDACRvyC,IAAI,OAIVvqC,EAAAA,cAAA,OAAKzpD,UAAU,qDACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,YAAW8jG,IAChB31E,UAAU,uDAETzJ,GAEHkzD,EAAAA,cAAA,OAAKzpD,UAAU,6DACZkkC,GAEHulB,EAAAA,cAAA,QAAMzpD,UAAU,qDACblM,aAAI,EAAJA,EAAM9Z,KAAK,QAEb4yL,aAAU,EAAVA,EAAY5kN,QAAS,IAAK8rC,aAAI,EAAJA,EAAM9rC,QAAS,GACxCyhG,EAAAA,cAAA,QAAMzpD,UAAU,QAAO,KAEzBypD,EAAAA,cAAA,QAAMzpD,UAAU,6DACb4sK,aAAU,EAAVA,EAAY5yL,KAAK,QAGlB,ECvBV,MAAM4rJ,GAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGd4uI,GAAgB5iN,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC5B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,aACLu2K,EAAY,iBACZC,EAAgB,KAChBp3F,EAAI,KACJnuH,GACEw+K,EAEJ,OACEv8E,EAAAA,cAACujH,GAAa,CACZ70I,SAAUA,EACVouG,IAAKumC,EACLv2K,MAAOA,EACPo/E,KAAMA,EACNzxC,SAAU6oI,EACV19E,YAAa7nI,GACb,EAiVN,OAvUgC4S,IAC9B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAE/B,EAACsmM,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,GAKrDq0M,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,OACpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAC5B2rC,EAAgB,UAAS13J,IACzB23K,EAAuBP,EAAc,IAAGA,UAAmB1f,IAAiBA,EAE5EkgB,EAAqB/kM,IACzB/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/BJ,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,QAAQ,CACjC,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAC1C,YACAwO,GAAAA,KAMI,EAAC6D,EAAU,EAACC,IAAgBz+M,EAAAA,EAAAA,UAASs+M,IAAkB,IACvD,EAACxJ,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAgB1DyS,EAAuBvtL,IAC3BA,EAAExkB,iBACsC,WAApCwkB,EAAExtB,OAAOggB,WAAWyrB,MAAMxxC,QAG9B6gN,GAAcD,GACdtS,OAAgB/xM,GAChBokN,GAAmBC,GAAU,GAI/Bl+M,EAAAA,EAAAA,YAAU,KACRm+M,EAAaH,EAAe,GAC3B,CAACA,KAGJh+M,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MAuDMiJ,EAA4B/jL,IAAO,IAAD24K,EAEtC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAC3CsmJ,EAAYtmJ,eACZ,CAAC,EACC+oJ,GACHC,KAAUH,EAAqBC,KAC/BG,KAAUH,GAEbN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,EAmCvB,OACE73G,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,oBACV6zI,YAAaA,GAAe,CAAC,EAC7B6C,oBA7GwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAC1CopJ,EAAYppJ,eACZ,CAAC,EAGCspJ,GACJ3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SACrCglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EACxBo6M,GACHP,KAAUH,EAAqBQ,KAC/BJ,KAAUI,GACPG,EAAgB0I,IAAcF,EAC9BvI,GAAa9J,IAAgBqS,EAC7BtI,EAAgBV,KAAUI,EAAa,CAC3CO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAIxD1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EA2DzB/6B,aAAcA,IAEdn8E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OACEzpD,UAAY,iBAAgB4sI,YAAuBA,aAEnDnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,UACEzpD,UAAU,gCACVw2G,QApKEywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GAgKY73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAEzCrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAI3CrmF,EAAAA,cAAA,OACEzpD,UAAY,2BACVqhK,EAAc,OAAS,SAGzB53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wCAAwCu/B,eAAe,wBAAwB,KACxGggE,EAAAA,cAAA,OAAKzpD,UAAU,qBACfypD,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAM40E,EAAc,CAAE5kK,GAAI,yBAA0Bu/B,eAAgB,SAAWr/B,MAAO,CAAEurK,aAAc,YAC7GlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,sBACVmmJ,eAjFyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMw5L,EAAmB,IAAKx5L,GAQ9B,OANE2sL,GAAiC3sL,EAAK63F,QACtC80F,GAAiC3sL,EAAK63F,OAAOjiF,KAE7C4jL,EAAiB3hG,MACf80F,GAAiC3sL,EAAK63F,OAAOjiF,IAE1C4jL,CAAgB,IAGzB,OADoBnpJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAuENx5G,EAAAA,cAAA,OAAKzpD,UAAU,iCACfypD,EAAAA,cAACu5G,GAAAA,EAAO,CACJ9oH,KAAM40E,EAAc,CAAE5kK,GAAI,6BAA8Bu/B,eAAgB,aACxEr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,0BACVmmJ,eA3E6BjtL,IAC7C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMy5L,EAAuB,IAAKz5L,GAQlC,OANE+sL,GAAqC/sL,EAAK63F,QAC1Ck1F,GAAqC/sL,EAAK63F,OAAOjiF,KAEjD6jL,EAAqB5hG,MACnBk1F,GAAqC/sL,EAAK63F,OAAOjiF,IAE9C6jL,CAAoB,IAG7B,OADoBppJ,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAiENx5G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKlFggE,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAErEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,GAAK,SAC5Bv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,aAGtEggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,SAAW,GAClCv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,eAO3EggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QAAS8jC,EAAY/J,EAAuBjgB,IAG9Ct3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAc0lC,KAEpBpjH,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,ECvTpB,OA3EmB15B,IACjB,MAAM,IACJmsK,EAAG,MACHhwI,EAAK,KACLo/E,EAAI,gBACJuwD,EAAe,cACfC,EAAa,YACbC,EAAW,gBACXH,EAAe,SACf9tG,EAAQ,IACRxT,EAAG,YACH0qE,GACEj1H,EAEJ,OACEqvF,EAAAA,cAAA,OACEzpD,UAAU,wCACVt2C,IAAKi7D,EACL,cAAawT,GAEbsxB,EAAAA,cAAA,OAAKzpD,UAAU,sFACbypD,EAAAA,cAAA,OAAKzpD,UAAU,iBACbypD,EAAAA,cAAC6lF,GAAAA,EAAW,CACVlrJ,IAAK6hJ,EACLsJ,MAAOhJ,EACPiJ,UAAU,EACVC,SAAS,EACTjlL,MAAM,OACNC,OAAO,OACPilL,SACEjmF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAQzpD,UAAU,+EAChBypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,aAAarT,KAAMgjJ,EAAAA,MAC9ClmF,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,iBAEjEggE,EAAAA,cAAA,UAAQzpD,UAAU,+EAChBypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,aAAarT,KAAMgjJ,EAAAA,MAC9ClmF,EAAAA,cAAA,QAAMzpD,UAAU,WACdypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,2BAA2Bu/B,eAAe,uBAQ7EggE,EAAAA,cAAA,OAAKzpD,UAAU,mDACbypD,EAAAA,cAAA,OAAKzpD,UAAU,iEACbypD,EAAAA,cAAC0lF,GAAAA,EAAQ,CACPvC,aAAc,SACdtM,aAAc/pI,EACds2I,UAAW10G,EACXwwG,YAAahzD,EACb0Z,YAAaA,IAGf5lC,EAAAA,cAACwlF,EAAAA,GAAI,CACHp9J,GAAK,UAAS8jG,IACd31E,UAAU,qDAETkmI,IAGLz8E,EAAAA,cAAA,OAAKzpD,UAAU,yDACZmmI,GAEH18E,EAAAA,cAAA,cAAYzpD,UAAU,qDACpBypD,EAAAA,cAAA,SAAI28E,GACJ38E,EAAAA,cAAA,YAAM,KAASlzD,KAGf,ECxCV,MAAMqvI,GAAeC,IACnBC,EAAAA,EAAkBltG,MAClBktG,EAAAA,EAAkB7nG,QAGdkvI,GAAcljN,IAAc,IAAb,IAAE+7K,GAAK/7K,EAC1B,MAAM,SACJkuE,EAAQ,MACR5hC,EAAK,qBACL6jH,EAAoB,gBACpB6rB,EAAe,gBACfC,EAAe,cACfC,EAAa,YACbC,EAAW,KACXzwD,EAAI,KACJnuH,GACEw+K,EAEJ,OACEv8E,EAAAA,cAAC2jH,GAAU,CACTj1I,SAAUA,EACVouG,IAAKnsB,EACL7jH,MAAOA,EACPo/E,KAAMA,EACNswD,gBAAiBA,EACjBC,gBAAiBA,EACjBC,cAAeA,EACfC,YAAaA,EACb/2C,YAAa7nI,GACb,EAwYN,OA9X6B4S,IAC3B,MAAM,aAAEwyK,EAAY,WAAE6zB,GAAermM,GAE/B,EAACsmM,EAAkB,EAACC,IAAwBp0M,EAAAA,EAAAA,WAAS,GAKrDq0M,GAAoB7/L,EAAAA,EAAAA,QAAO,MAC3B8/L,GAAiB9/L,EAAAA,EAAAA,QAAO,MACxB+/L,GAAa//L,EAAAA,EAAAA,QAAO,OACpB,OAAEsoB,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAC5B2rC,EAAgB,UAAS13J,IAEzB43K,EAAqB/kM,IACzB/G,SAASilB,cAAc,QAAQhwB,MAAMkR,eAAiBY,CAAQ,GAQhErP,EAAAA,EAAAA,YAAU,KACR,MAAMq0M,EAA2BA,KAC/BJ,EAAW3lM,QAAUJ,YAAW,KAC9B4lM,GAAqB,EAAM,GAC1B,IAAI,EAeT,OAbA3+F,EAAAA,cAAczqB,QAAO7rF,IAAiB,IAAhB,OAAEqb,GAAQrb,EACf,QAAXqb,GACFk6L,EAAmB,QACnBN,GAAqB,GACrBO,IACA3iM,aAAaqiM,EAAkBzlM,UACX,SAAX4L,IACT45L,GAAqB,GACrBpiM,aAAaqiM,EAAkBzlM,SACjC,IAEF+lM,IAEO,KACLD,EAAmB,QACnB1iM,aAAaqiM,EAAkBzlM,SAC/BoD,aAAasiM,EAAe1lM,SAC5BoD,aAAauiM,EAAW3lM,QAAQ,CACjC,GACA,IAKH,MAAOq9L,EAAcC,IAAmBC,EAAAA,GAAAA,IACtC,eACAC,GAAAA,KAEKkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAC1C,YACAwO,GAAAA,KAMI,EAAC6D,EAAU,EAACC,IAAgBz+M,EAAAA,EAAAA,UAASs+M,IAAkB,IACvD,EAACxJ,EAAY,EAACC,IAAkB/0M,EAAAA,EAAAA,WAAS,IACzC,EAAC4yM,EAAY,EAACoC,IAAkBh1M,EAAAA,EAAAA,UAASisM,GAAgB,CAAC,GAgB1DyS,EAAuBvtL,IAC3BA,EAAExkB,iBACsC,WAApCwkB,EAAExtB,OAAOggB,WAAWyrB,MAAMxxC,QAG9B6gN,GAAcD,GACdtS,OAAgB/xM,GAChBokN,GAAmBC,GAAU,GAI/Bl+M,EAAAA,EAAAA,YAAU,KACRm+M,EAAaH,EAAe,GAC3B,CAACA,KAGJh+M,EAAAA,EAAAA,YAAU,KACR00M,EAAe/I,EAAa,GAC3B,CAACA,IAGJ,MAuDMiJ,EAA2B/jL,IAAM,IAAD24K,EAEpC,GAA2B,UAAvB34K,SAAS,QAAR24K,EAAD34K,EAAGxtB,cAAM,IAAAmmM,OAAR,EAADA,EAAW5hK,SAAoB,OAGnC,MAAMitK,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpE8oJ,EAA4BxC,SAAAA,EAAatmJ,eAC3CsmJ,EAAYtmJ,eACZ,CAAC,EACC+oJ,GACHC,KAAUH,EAAqBC,KAC/BG,KAAUH,GAEbN,GAAeO,GAAsBnJ,EAAgB0G,GAErDmC,GAAe,EAAM,EA+DvB,OACE73G,EAAAA,cAACq9E,EAAAA,EAAa,CACZx7G,UAAU,6BACV6zI,YAAaA,GAAe,CAAC,EAC7B6C,oBAzIwBC,IAE1BhB,EAAmB,UAGnBJ,EAAe1lM,QAAUJ,YAAW,KAClCkmM,EAAmB,OAAO,GACzB,GAGHM,EAAeU,GAGf,MAAMP,EAAsBlJ,EAAeA,EAAa3/I,eAAiB,CAAC,EACpEqpJ,EAA4BD,EAAYppJ,eAC1CopJ,EAAYppJ,eACZ,CAAC,EAGCspJ,GACJ3J,aAAY,EAAZA,EAAcv7I,UAAUglJ,aAAW,EAAXA,EAAahlJ,SACrCglJ,aAAW,EAAXA,EAAahlJ,MAAMj1D,QAAS,EACxBo6M,GACHP,KAAUH,EAAqBQ,KAC/BJ,KAAUI,GACPG,EAAgB0I,IAAcF,EAC9BvI,GAAa9J,IAAgBqS,EAC7BtI,EAAgBV,KAAUI,EAAa,CAC3CO,UAAW,CAAEhlJ,YAAa,EAAGilJ,UAAU,EAAMx7B,QAAS,MAIxD1oK,aAAaqiM,EAAkBzlM,SAE3BgnM,EAEFvB,EAAkBzlM,QAAUJ,YAAW,KACrC09L,EAAgBwJ,EAAY,GAC3B,KACMG,GAEAC,GAEAE,GAAiBD,GAIrB5B,GACHjI,EAAgBwJ,GAGpBtB,GAAqB,EAAM,EAuFzB/6B,aAAcA,IAEdn8E,EAAAA,cAACi5G,GAAAA,EAAS,CACRC,iBAAiB,EACjBp7B,aAAc,CACZkZ,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,kDAE9FsrD,OAAQ0U,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMi2K,EAAAA,MAC/Bj9J,MAAO8jD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,QAGhCnsG,EAAAA,cAACo5G,GAAAA,EAAQ,KACPp5G,EAAAA,cAAA,OACEzpD,UAAY,iBAAgB4sI,YAAuBA,oBAA+BA,oBAElFnjF,EAAAA,cAAC0sG,EAAAA,QAAmB,CAACC,eAAgBqL,GACnCh4G,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,UACEzpD,UAAU,gCACVw2G,QAhMEywB,KACTo6B,GAGHI,IACAH,GAAe,IAHfA,GAAe,EAIjB,GA4LY73G,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,iBACnDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAGqhK,EAAuB,OAAT,QAC7B10K,KAAMm2K,EAAAA,IACN14M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,WAEzCrmF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdI,UAAY,IAAEqhK,EAAc,OAAS,QACrC10K,KAAMo2K,EAAAA,IACN34M,MAAO,CAAE0rJ,MAAO,UAAWg6B,WAAY,YAI3CrmF,EAAAA,cAAA,OACEzpD,UAAY,2BACVqhK,EAAc,OAAS,SAGzB53G,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,mBAAmBu/B,eAAe,qBAAqB,KAChFggE,EAAAA,cAAA,OAAKzpD,UAAU,yCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,sCAAuCu/B,eAAgB,gBACjFr/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,2BACVmmJ,eArE4BjtL,IAC5C,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAMyvL,EAA0B,IAAKzvL,GAQrC,OANEysL,GAAuCzsL,EAAK63F,QAC5C40F,GAAuCzsL,EAAK63F,OAAOjiF,KAEnD65K,EAAwB53F,MACtB40F,GAAuCzsL,EAAK63F,OAAOjiF,IAEhD65K,CAAuB,IAGhC,OADoBp/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KA2DNx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,oCAAqCu/B,eAAgB,cAC/Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACb1mD,MAAO,GACPslD,UAAU,yBACVmmJ,eAhGyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM0vL,EAAuB,IAAK1vL,GAQlC,OANEwsL,GAAoCxsL,EAAK63F,QACzC20F,GAAoCxsL,EAAK63F,OAAOjiF,KAEhD85K,EAAqB73F,MACnB20F,GAAoCxsL,EAAK63F,OAAOjiF,IAE7C85K,CAAoB,IAG7B,OADoBr/I,KAAQm/I,EAAgB,CAAC,QAAS,SAAU,CAAC,MAAO,QACtD,KAsFNx5G,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,mCAAoCu/B,eAAgB,aAC9Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,wBACVmmJ,eA3HyBjtL,IACzC,MAAMixL,EAAiBjxL,EAAMjH,KAAK0I,IAChC,MAAM2vL,EAAuB,IAAK3vL,GAQlC,OANEusL,GAAoCvsL,EAAK63F,QACzC00F,GAAoCvsL,EAAK63F,OAAOjiF,KAEhD+5K,EAAqB93F,MACnB00F,GAAoCvsL,EAAK63F,OAAOjiF,IAE7C+5K,CAAoB,IAI7B,OADoBt/I,KAAQm/I,EAAe,CAAC,QAAS,SAAU,CAAC,MAAO,QACrD,EA8GFrnJ,SAAS,SAGb6tC,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACu5G,GAAAA,EAAO,CACN9oH,KAAM40E,EAAc,CAAE5kK,GAAI,oCAAqCu/B,eAAgB,cAC/Er/B,MAAO,CAAEurK,aAAc,YAEzBlsE,EAAAA,cAACvvC,EAAAA,EAAc,CACbpB,UAAU,kCACVmmJ,eAjJ0BjtL,GACnCA,EAAMjH,KAAK0I,IAChB,MAAM4vL,EAAU,IACX5vL,GAIL,OAFIosL,GAAsCpsL,EAAK63F,QAAUu0F,GAAsCpsL,EAAK63F,OAAOjiF,KACzGg6K,EAAQ/3F,MAAQu0F,GAAsCpsL,EAAK63F,OAAOjiF,IAAW5V,GACxE4vL,CAAO,OA6IJ55G,EAAAA,cAACg2G,GAAgB,CACfl4B,aAAc,CACZ5hI,MAAOmpH,EAAc,CAAE5kK,GAAI,gCAAiCu/B,eAAgB,sBAKlFggE,EAAAA,cAAA,MAAIzpD,UAAU,wBACZypD,EAAAA,cAAA,MAAIzpD,UAAU,4DACZypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,cAErEggE,EAAAA,cAAA,MAAIzpD,UAAU,8DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,GAAK,SAC5Bv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,aAGtEggE,EAAAA,cAAA,MAAIzpD,UAAU,6DACZypD,EAAAA,cAAA,KACEpC,KAAK,IACLrnD,UAAW+qK,EAAY,SAAW,GAClCv0D,QAASy0D,GAETxhH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6BAA6Bu/B,eAAe,eAO3EggE,EAAAA,cAACu9E,EAAAA,EAAS,CACRxpH,YAAa,EACbilJ,UAAQ,EACRx7B,QACE8jC,EAAa,GAAEtK,4BAAqC1f,IAAkB,sBAAqBA,MAI/Ft3F,EAAAA,cAACy9E,GAAAA,EAAI,CAACC,aAAcgmC,KAEpB1jH,EAAAA,cAAC29E,GAAAA,EAAU,CACTC,WAAW,EACXC,UAAU,EACVC,aAAc,CACZv2J,SAAUy4E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM66I,EAAAA,IAAe1zI,KAAK,OACrD1O,KAAMqkE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM86I,EAAAA,IAAgB3zI,KAAK,YAK5C,cC3RpB,OAxJsB15B,IACpB,MAAM,QAAE86I,GAAY96I,GACd,OAAEivB,IAAW+rH,EAAAA,EAAAA,MACb,QAAEqK,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KACzB,EAACyiG,EAAY,EAACC,IAAkB/gN,EAAAA,EAAAA,UAAS,WACzC,EAACghN,EAAM,EAACC,IAAYjhN,EAAAA,EAAAA,UAAS,OAE5Bo+M,EAAe8C,IAAoB/U,EAAAA,GAAAA,IAAc,WAAYI,GAAAA,KAC7DN,EAAcC,IAAmBC,EAAAA,GAAAA,IAAc,eAAgBC,GAAAA,KAC/DkS,EAAgBC,IAAqBpS,EAAAA,GAAAA,IAAc,YAAawO,GAAAA,KAChE0D,EAAkB8C,IAAuBhV,EAAAA,GAAAA,IAAc,cAAewO,GAAAA,KAE7Er6M,EAAAA,EAAAA,YAAU,KACR,GAAI4yJ,GAAWA,EAAQygB,UAAW,CAChC,MAAMA,GAAYmO,EAAAA,GAAAA,GAAe5uB,EAAQygB,WACzCstC,EAASttC,EACX,IACC,CAACzgB,IAEJ,MAAM9xJ,EAAU,CACd,CACEjE,IAAK,cAAewwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACzCtqK,GAAG,kCACHu/B,eAAe,YACbt/B,MAAO,sBAEb,CACET,IAAK,SAAUwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACpCtqK,GAAG,iCACHu/B,eAAe,WACbt/B,MAAO,UAEb,CACET,IAAK,UAAWwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrCtqK,GAAG,kCACHu/B,eAAe,YACbt/B,MAAO,WAEb,CACET,IAAK,UAAWwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrCtqK,GAAG,kCACHu/B,eAAe,YACbt/B,MAAO,WAEb,CACET,IAAK,SAAUwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACpCtqK,GAAG,iCACHu/B,eAAe,WACbt/B,MAAO,UAEb,CACET,IAAK,YAAawwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACvCtqK,GAAG,oCACHu/B,eAAe,cACbt/B,MAAO,aAEb,CACET,IAAK,SAAUwwF,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CACpCtqK,GAAG,iCACHu/B,eAAe,WACbt/B,MAAO,WAUTokL,EAAa/mL,GACb+lN,GAASA,EAAMvvL,eAAex2B,GACzB+lN,EAAM/lN,GAAMwyB,KAAK,QAEjB,KAaLmd,EAAU,CACdw2K,mBAAoBlkH,EAAAA,cAACmkH,GAAgC,CAAChhC,aAAc,YACpEihC,OAAQpkH,EAAAA,cAACqkH,GAAqB,CAAClhC,aAAc,UAAW6zB,WAAYlyB,EAAW,YAAc,0BAC7Fw/B,QAAStkH,EAAAA,cAACukH,GAAqB,CAACphC,aAAc,UAAW6zB,WAAYlyB,EAAW,YAAc,0BAC9F0/B,QAASxkH,EAAAA,cAACykH,GAAqB,CAACthC,aAAc,UAAW6zB,WAAYlyB,EAAW,YAAc,0BAC9F4/B,OAAQ1kH,EAAAA,cAAC2kH,GAAoB,CAACxhC,aAAc,SAAU6zB,WAAYlyB,EAAW,WAAa,0BAC1F8/B,UAAW5kH,EAAAA,cAAC6kH,GAAuB,CAAC1hC,aAAc,YAAa6zB,WAAYlyB,EAAW,cAAgB,0BACtGggC,OAAQ9kH,EAAAA,cAAC+kH,GAAoB,CAAC5hC,aAAc,UAAW6zB,WAAYlyB,EAAW,YAAc,2BAoB9F,OARA1hL,EAAAA,EAAAA,YAAU,KAENygN,EADoB,YAAlB3C,IAAoD,IAArBC,EAClB,qBAEAD,GAAiB,SAClC,GACC,CAACA,IAGFlhH,EAAAA,cAAA,WAASzpD,UAAU,WACjBypD,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,UAAKyrD,GACLzrD,EAAAA,cAAA,OAAKzpD,UAAU,+BACbypD,EAAAA,cAAA,QACEr/F,MAAO,CACLysJ,WAAY,OACZ8e,aAAc,QACd5rK,QAAS,QACT+rJ,MAAO,YAGTrsD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,oCACHu/B,eAAe,wBAInBggE,EAAAA,cAACguG,GAAAA,EAAQ,CACPttM,MAAOkjN,EACPoB,OAAK,EACLh6C,UAAQ,EACRohC,WAAS,EACTlpK,KAAK,eACLh/B,QAASA,EACT8qB,SA3CV,SAAuBiF,EAAG7uB,GACxB6uB,EAAExkB,iBACFo0M,EAAez+M,EAAK1E,OAEpBsjN,EAAiB5+M,EAAK1E,OACtBsuM,OAAgB/xM,GAChBokN,OAAkBpkN,EACpB,EAqCUs5C,UAAU,iBACV0uK,QAAQ,KAIWv3K,EAAQk2K,IAEzB,0BCrHd,OA3CkBsB,KAChB,MAAM,QAAElvD,EAAO,QAAE90C,EAAO,KAAED,IAAS39G,EAAAA,EAAAA,YAAW69G,EAAAA,IAGxCgkG,GAAe7tM,EAAAA,EAAAA,WACD8tM,EAAAA,GAAAA,iBAAgB,CAClC13K,QAASA,IAAMy3K,EAAazzM,UAW9B,OAAIwvG,IAAY80C,EAEZh2D,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEr/F,MAAO,CACL0rM,UAAW,SACX3+C,UAAW,OACXwe,aAAc,OACdia,SAAU,SAEb,gBAQLnmF,EAAAA,cAACqlH,GAAAA,EAAgB,CACfrvD,QAASA,EACTsvD,gBAAgB,EAChBptE,OAAQj3B,EAAKG,WAAW82B,QACxB,8DC6HN,OA7JsB13I,IAAoC,IAAnC,UAAEknL,EAAS,eAAE69B,GAAgB/kN,EAUlD,MAAMglN,EAAiB99B,GACjBA,SAAAA,EAAW2C,OAAOZ,SAAlB/B,MAA6BA,GAAAA,EAAW2C,OAAOV,UAE/C3pF,EAAAA,cAAA,OAAKzpD,UAAU,2CAA0CypD,EAAAA,cAAA,cAAS0nF,EAAU2C,OAAOT,cAAc,IAAElC,EAAU2C,OAAOhiC,cAGjH,KA2BHo9D,EAAY/9B,GAEd1nF,EAAAA,cAAA,OAAKzpD,UAAU,4CACZgvK,EAAez4K,OAYhB44K,EAAoBh+B,GACnBA,EAAUgF,KAIb1sF,EAAAA,cAAA,OAAKzpD,UAAU,4CAA2CypD,EAAAA,cAAA,cAASulH,EAAeI,UAAU,KAAU,IAAEj+B,EAAUgF,MAH3G,KAqDLk5B,EAAiBl+B,GAChBA,EAAUj3F,KAIbuP,EAAAA,cAAA,OAAKzpD,UAAU,oDAAmDypD,EAAAA,cAAA,cAASulH,EAAeM,gBAAgB,KAAU,IAAEn+B,EAAUj3F,MAHzH,KAOX,OAAIi3F,aAAqBC,GAAAA,GAAsBD,aAAqBE,GAAAA,EAEhE5nF,EAAAA,cAAA,OAAKzpD,UAAU,sCACZkvK,IACAD,EAAc99B,GACdg+B,EAAiBh+B,GApDDA,KACrB,MAAMo+B,EAAiBp+B,EAAU7nL,KAAKtB,OACtC,IAAKmpL,EAAU7nL,MAAQimN,EAAiB,EACtC,OAAO,KAET,IAAIC,EAAc,KACdD,EAAiB,IAEnBC,EAAe,SADID,EAAiB,UAGtC,MAAME,EAAa,GACnB,IAAK,IAAI5nN,EAAI,EAAGA,EAAI,EAAGA,IACX,IAANA,EACF4nN,EAAW5mN,KAAK4gG,EAAAA,cAAA,OAAK//F,IAAK7B,GAAIspL,EAAU7nL,KAAKzB,GAAI2nN,IAGjDC,EAAW5mN,KAAK4gG,EAAAA,cAAA,OAAK//F,IAAK7B,GAAIspL,EAAU7nL,KAAKzB,KAIjD,OACE4hG,EAAAA,cAAA,OAAKzpD,UAAU,8CACbypD,EAAAA,cAAA,OAAKzpD,UAAU,oDAAmDypD,EAAAA,cAAA,cAASulH,EAAeU,sBAAsB,MAChHjmH,EAAAA,cAAA,OAAKzpD,UAAU,6CACZyvK,GAEC,EA2BHE,CAAcx+B,IAIZA,aAAqBG,GAAAA,EAE1B7nF,EAAAA,cAAA,OAAKzpD,UAAU,sCACZkvK,IA5GU/9B,IACXA,SAAAA,EAAWlqG,KAAKA,KAEhBwiB,EAAAA,cAAA,OAAKzpD,UAAU,2CAA0CypD,EAAAA,cAAA,cAAS0nF,EAAUlqG,KAAKC,OAG9E,KAuGFkB,CAAQ+oG,GACRg+B,EAAiBh+B,GACjBk+B,EAAcl+B,IAIZA,aAAqBI,GAAAA,EAE1B9nF,EAAAA,cAAA,OAAKzpD,UAAU,sCACZkvK,IACAD,EAAc99B,GACdg+B,EAAiBh+B,GACjBk+B,EAAcl+B,IAKZ,IACT,EClHF,OAzCuBlnL,IAAgC,IAA/B,KAAE+/I,EAAI,gBAAE4lE,GAAiB3lN,EAO/C,MAAMggJ,EAAaD,EAAKC,WAOlB4lE,EAAkB,GAExB,OAAK5lE,GAAcA,EAAWjiJ,OAAS,EAEnCyhG,EAAAA,cAAA,WAAK,0CAAuCA,EAAAA,cAAC7pD,EAAAA,EAAe,CAAC,cAAY,OAAOjT,KAAMmjL,EAAAA,IAAQh8K,KAAK,OAAO21D,EAAAA,cAAA,QAAMzpD,UAAU,WAAU,QAAW,qBAInJiqG,EACGl6I,MACC,CAACjB,EAAGC,KAAC,IAAAghN,EAAAC,EAAAC,EAAAC,EAAA,OACH,IAAIryL,KAAyB,QAArBkyL,EAAS,QAATC,EAAClhN,EAAEglL,cAAM,IAAAk8B,OAAA,EAARA,EAAUv9B,kBAAU,IAAAs9B,EAAAA,EAAI,MACjC,IAAIlyL,KAAyB,QAArBoyL,EAAS,QAATC,EAACnhN,EAAE+kL,cAAM,IAAAo8B,OAAA,EAARA,EAAUz9B,kBAAU,IAAAw9B,EAAAA,EAAI,KAAK,IAEzC73M,SAAQ,CAAC+4K,EAAW7vK,KACnBuuM,EAAgBhnN,KACd4gG,EAAAA,cAAC0mH,GAAa,CACZnB,eAAgBY,EAAgBz+B,EAAU3pL,MAC1CkC,IAAK4X,EACL6vK,UAAWA,IAEd,IAGE0+B,EAAe,sCCtCxB,MAAMO,GACJ3mH,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,qBACHu/B,eAAe,kVAmVrB,OAvUoBrvB,IAMlB,MAAMw1M,EAAkB,CAAC,GACnB,cAAE9gD,EAAa,OAAEzlI,IAAW+rH,EAAAA,EAAAA,MAEL9tC,EAAAA,EAAAA,gBAAe,cAoBvB+oG,sBAAsB1pC,MAAM34K,QAAQa,GAASA,EAAK8E,KAAK01B,SAAWA,IAAQjxB,SAAQnO,IAAe,IAAd,KAAE0J,GAAM1J,EAC9G,MAAMurL,EAAc7hL,EAAK8oH,SAAS6zF,aAClC,IACG38M,EAAK4iC,QACL45I,GAAAA,GAAat8K,SAAS2hL,KACtB7hL,EAAK8oH,SAAS8zF,WAEf,OAAO,KAETX,EAAgBj8M,EAAK8oH,SAAS6zF,cAAgB,CAC5C/5K,MAAO5iC,EAAK4iC,MACZ64K,UAAWz7M,EAAK8oH,SAAS8zF,WACzBjB,gBAAiB37M,EAAK8oH,SAAS+zF,kBAC/Bd,sBAAuB/7M,EAAK8oH,SAASg0F,yBACtC,IAGH,MAAM,SAAEpwL,EAAQ,QAAEsqF,EAAO,KAAED,IAAS39G,EAAAA,EAAAA,YAAW69G,EAAAA,KACzC,EAAC8lG,EAAa,EAACC,IAAmBpkN,EAAAA,EAAAA,WAAS,IAC3C,EAACu9I,EAAM,EAAC8mE,IAAYrkN,EAAAA,EAAAA,UAAS,KAC7B,EAACskN,EAAa,EAACC,IAAmBvkN,EAAAA,EAAAA,UAAS,OAC3C,EAACwkN,EAAc,EAACC,IAAoBzkN,EAAAA,EAAAA,WAAS,IAE7C,EAACs1B,EAAK,EAACutD,IAAW7iF,EAAAA,EAAAA,UAAS,MAE3BmO,EAAeA,IAAM00E,EAAQ,MAgEnC,IAlCAviF,EAAAA,EAAAA,YAAU,KACR,IAAIinK,GAAc,EAElB,IAAInpD,EAAJ,CAIA,GAAItqF,EACF,IACmB3R,WACf,MAAMuiM,QAAkB5wL,EAASmpH,gBAAgB9+B,EAAKxkF,UAAUxG,KAC3Do0I,IACH88C,EAASK,GACTN,GAAgB,GAChBK,GAAiB,GACnB,EAEFE,EACF,CAAE,MAAOxzL,GACP30B,QAAQhB,MAAM,KAAM21B,GACfo2I,IACH68C,GAAgB,GAChBK,GAAiB,GAErB,CAGF,MAAO,KACLl9C,GAAc,CAAI,CAvBpB,CAwBC,GACA,CAACzzI,EAAUsqF,IAIV+lG,EACF,OAAOjnH,EAAAA,cAAA,WAAKA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC3BtqK,GAAG,kBACHu/B,eAAe,iBAoMnB,OACEggE,EAAAA,cAAA,WAASzpD,UAAU,mBACjBypD,EAAAA,cAAA,OAAKzpD,UAAU,0BAvDb13C,MAAMgpB,QAAQw4H,IAAUA,EAAM9hJ,OAAS,IAAM8hJ,EAAM9hJ,QAAU,EAE7DyhG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnBtqK,GAAG,2BACHu/B,eAAe,kBAGjBggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnBtqK,GAAG,6BACHu/B,eAAe,oBAEjBggE,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CACHjvI,UAAU,oHACVnuB,GAAG,kBACJ,IACG,IAAI43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,qBACHu/B,eAAe,YAInBggE,EAAAA,cAACwlF,EAAAA,GAAI,CACHjvI,UAAU,mHACVnuB,GAAG,mBACJ,IACG,IAAI43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,uBACHu/B,eAAe,kBAOjBnhC,MAAMgpB,QAAQw4H,IAAUA,EAAM9hJ,OAAS,EAC1C,KAGLyhG,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,qBACHu/B,eAAe,mGAYrBggE,EAAAA,cAAA,OAAKzpD,UAAU,mEAxIGmxK,MACpB,IAAK7oN,MAAMgpB,QAAQw4H,IAAUA,EAAM9hJ,OAAS,EAC1C,OAxDE+oN,EAEAtnH,EAAAA,cAAA,OAAKzpD,UAAU,yBACbypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,4BACHu/B,eAAe,qEAMrBggE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnBtqK,GAAG,2BACHu/B,eAAe,kBAGjBggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnBtqK,GAAG,6BACHu/B,eAAe,oBAEjBggE,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CACHjvI,UAAU,oHACVnuB,GAAG,kBACJ,IACG,IAAI43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,qBACHu/B,eAAe,YAInBggE,EAAAA,cAACwlF,EAAAA,GAAI,CACHjvI,UAAU,mHACVnuB,GAAG,mBACJ,IACG,IAAI43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,uBACHu/B,eAAe,gBAKtB2mL,IAeL,MAAMgB,EAAoB,GAkE1B,OAjEAA,EAAkBvoN,KAAKunN,IACvBtmE,EAAM1xI,SAAQ,CAACiyI,EAAY/oI,KACzB8vM,EAAkBvoN,KAChB4gG,EAAAA,cAAA,OACEzpD,UAAU,sBACVt2C,IAAM,eAAc4X,KAAS+oI,EAAWngJ,MAExCu/F,EAAAA,cAAA,OAAKzpD,UAAU,mCACbypD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,wBAAuBw4H,EAAWngJ,MAC3Cu/F,EAAAA,cAAA,QAAMzpD,UAAU,WAAUypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACzCtqK,GAAG,mBACHu/B,eAAe,UAEjBggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmjL,EAAAA,IAAQh8K,KAAK,QAEtC21D,EAAAA,cAAA,UAAK4gD,EAAW/+B,OAChB7hB,EAAAA,cAACm5F,GAAAA,EAAM,CACL5iJ,UAAU,gDACV1/B,WAAYuwM,EACZr6D,QAAS94H,GAAK0xD,EAAQ9tE,KAErBuvM,aAAY,EAAZA,EAAcvvM,SAAUA,EACvBmoF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,YAAMA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,qBACHu/B,eAAe,WACf,KACFggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,IAAS9hK,KAAK,QAGvC21D,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,YAAMA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACrBtqK,GAAG,0BACHu/B,eAAe,gBACf,KACFggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmsJ,EAAAA,IAAWt4I,MAAI,EAAC1M,KAAK,SAIlD21D,EAAAA,cAAC4nH,GAAAA,EAAO,CACNxvL,KAAMA,IAASvgB,EACf7E,SAAU/B,EACV42M,UAAWA,KAnLKliI,EAAQ,MAWjBmiI,EAAChoE,EAAQjoI,KACtBuvM,IAGJC,EAAgB,CAAEvnE,SAAQjoI,UAC1B+e,EAAS6pH,iBAAiBX,GAAQpkH,MAChC,KACE2kH,EAAMtgJ,OAAO8X,EAAO,GACpBsvM,GAAQ52G,EAAAA,GAAAA,GAAK8vC,IACbgnE,EAAgB,KAAK,IAEvB,KACEA,EAAgB,KAAK,IAExB,EA4JWS,CAAWlnE,EAAWngJ,GAAIoX,EAAM,EAElClX,MAAO,CAAEonN,aAAc,UACvB19K,KAAM,OACN29K,cAAe3iD,EAAc,CAAE5kK,GAAI,qBAAsBu/B,eAAgB,WACzE0N,QAASsyD,EAAAA,cAAA,MAAIr/F,MAAO,CAACQ,QAAS,gBAAgB6+F,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC7DtqK,GAAG,yCACHu/B,eAAe,qDACf,QAGNggE,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAACioH,GAAc,CACb9B,gBAAiBA,EACjB5lE,KAAMK,MAIb,IAGI+mE,CAAiB,EAkEnBD,IAEK,qCCxNd,OAjI2BQ,KACzB,MAAM,QAAElyD,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAEzB,EAACgnG,EAAkB,EAACC,IAAwBtlN,EAAAA,EAAAA,WAAS,IACrD,EAACulN,EAAe,EAACC,IAAqBxlN,EAAAA,EAAAA,UAAS,OAE/C,EAACylN,EAAU,EAACC,IAAgB1lN,EAAAA,EAAAA,WAAS,GA8B3C,OA5BAM,EAAAA,EAAAA,YAAU,KAER,GAAI4yJ,SAAAA,EAASlI,iBAAkB,CAC7B,MAAM,YACJxL,EAAW,iBACXmmE,EAAgB,UAChBC,EAAS,cACTlxC,GACExhB,EAAQlI,iBAaZ,GAVE26D,IAAqBE,GAAAA,EAAa39J,SAClC09J,EAAUnqN,OAASoqN,GAAAA,EAAa7pC,UAAUvgL,QAE1CiqN,GAAa,GAGXhxC,GACF4wC,GAAqB,GAGnB9lE,EAAa,CACf,IAAI9kE,EAAOorI,KAAM,IAAIx0L,KAAKkuH,EAAYtiE,WAAWl9C,OAAO,iBACxDwlL,EAAkB9qI,EACpB,CACF,IACC,CAACw4E,IAGFh2D,EAAAA,cAAA,OAAKzpD,UAAU,wBAEbypD,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnBtqK,GAAG,yCACHu/B,eAAe,gBAGjBggE,EAAAA,cAAA,eACEA,EAAAA,cAAA,OACEosE,IACE,2KAGJpsE,EAAAA,cAAA,OAAKzpD,UAAU,mBACbypD,EAAAA,cAAA,WACEA,EAAAA,cAACwlF,EAAAA,GAAI,CACHjvI,UAAU,uBACVnuB,GAAI,mCAEJ43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,6CAA6Cu/B,eAAe,4BAEnFggE,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,yDACHu/B,eAAe,0LAOpBmoL,IAAsBI,GACrBvoH,EAAAA,cAACwlF,EAAAA,GAAI,CACH7kL,MAAO,CAAEkoN,UAAW,cACpB9qN,KAAK,SACLw4C,UAAU,mDACVnuB,GAAI,mCAEH,IACD43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,qBAKnBmoL,GACAnoH,EAAAA,cAACwlF,EAAAA,GAAI,CACH7kL,MAAO,CAAEkoN,UAAW,cACpB9qN,KAAK,SACLw4C,UAAU,mDACVnuB,GAAI,2BAEH,IACAmgM,EAAYvoH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC5BtqK,GAAG,wCACHu/B,eAAe,sBACZggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,kDAAkDu/B,eAAe,kCAKhGmoL,GACCnoH,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,WACEA,EAAAA,cAAA,SAAGA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAClBtqK,GAAG,gCACHu/B,eAAe,cACf,KAAGqoL,IAEProH,EAAAA,cAACwlF,EAAAA,GAAI,CACH7kL,MAAO,CAAEkoN,UAAW,aAAcC,SAAU,SAC5C/qN,KAAK,SACLw4C,UAAU,iDACVnuB,GAAI,2BAEH,IACAmgM,EAAYvoH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAC5BtqK,GAAG,wCACHu/B,eAAe,sBACZggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CACpBtqK,GAAG,wCACHu/B,eAAe,yBAMrB,0BChHV,OAnBA,WACE,MAAM,EAACJ,EAAO,EAACmpL,IAAajmN,EAAAA,EAAAA,UAAS,SAC/Bo/F,EAAWqW,EAAAA,cAAc99B,SAASynB,SAcxC,OAZA9+F,EAAAA,EAAAA,YAAU,KACc,oBAAX4H,QACLk3F,EAASv5F,MAAM,KAAKyB,SAAS,SAC/B2+M,EAAU,SAKZA,EAAU,QACZ,GACC,CAAC7mH,IAEGtiE,CACT,ECDA,MA+IMopL,GAAgBxoN,IAA+B,IAADyoN,EAAA,IAA7B,SAAEC,EAAQ,WAAE3mC,GAAY/hL,EAC7C,MAAM,EAAC2oN,EAAmB,EAACC,IAAyBtmN,EAAAA,EAAAA,UAAS,IACvD,EAACumN,EAAsB,EAACC,IAA4BxmN,EAAAA,EAAAA,UAAS,IAE7D,EAACymN,EAAoB,EAACC,IAA0B1mN,EAAAA,EAAAA,UAAS,KAExDo+M,EAAe8C,IAAoB/U,EAAAA,GAAAA,IAAc,mBAAoBI,GAAAA,KACtE,eAAEj5C,IAAmB9yJ,EAAAA,EAAAA,YAAW69G,EAAAA,IAEhCvhF,EAAS6pL,KAGTC,GAAgBC,EAAAA,GAAAA,GAAc/pL,IASpCx8B,EAAAA,EAAAA,YAAU,KACR,GAAI89M,EAAe,CACjB,MAAM0I,EAAgBrnC,EAAWznH,WAAW9wC,GAASA,EAAK/pB,MAAQihN,IAClEoI,EAAyBM,EAC3B,IACC,CAAC1I,IA0BJ,OAnBA99M,EAAAA,EAAAA,YAAU,KAAO,IAADymN,EAEd,MAAMC,GANwBjnC,EAM6C,QAAlCgnC,EAACtnC,EAAW8mC,UAAsB,IAAAQ,OAAA,EAAjCA,EAAmCp1M,KALtEi1M,EAAcnlN,QAAQylB,GAASA,EAAK64J,WAAaA,KAK8B,IANxDA,MAQ9B2mC,EAAuBM,EAAW,GACjC,CAACT,EAAuBzpL,EAAQ2pL,KAEnCnmN,EAAAA,EAAAA,YAAU,KAIR,MAAM2mN,EAA+BR,EAAoBhlN,QAAQylB,IAAI,IAAAggM,EAAA,OACtC,QADsCA,EACnE5zD,EAAepI,sBAAc,IAAAg8D,OAAA,EAA7BA,EAA+Bz/M,MAAM2oJ,GAAaA,EAAShnC,OAASliG,EAAKkiG,MAAK,IAG1E+9F,EAAajlN,KAAKukE,MAAOwgJ,EAA6BxrN,OAASgrN,EAAoBhrN,OAAU,KACnG6qN,EAAsBa,EAAW,GAChC,CAAC7zD,EAAepI,eAAgBu7D,IAGjCvpH,EAAAA,cAAA,OAAKzpD,UAAU,UACbypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,oBAEvD,SAAbkpL,EACClpH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,oBACHu/B,eAAe,sFAInBggE,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,oBACHu/B,eAAe,+LAOrBggE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,gBACHu/B,eAAe,gSAQnBggE,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,gBAAgBu/B,eAAe,8DAK5DggE,EAAAA,cAAA,OAAKzpD,UAAU,eACbypD,EAAAA,cAAA,aACEA,EAAAA,cAACu5G,GAAAA,EAAO,CAAC9oH,KAAMuP,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,eAAiBr/B,MAAO,CAAEurK,aAAc,YACpHlsE,EAAAA,cAAA,UACGuiF,EAAWjhK,KAAI,CAAC0I,EAAMnS,IACrBmoF,EAAAA,cAAA,MACE//F,IAAK4X,EACLrW,KAAK,SACLurJ,QAASA,IAxFOl1I,KAC5ByxM,EAAyBzxM,GACzBmsM,EAAiBzhC,EAAW1qK,GAAO5X,IAAK,YAAY,EAsFzBiqN,CAAqBryM,GACpC0+B,UAAW1+B,IAAUwxM,EAAwB,oBAAsB,YAElEr/L,EAAKiuB,iBAKd+nD,EAAAA,cAAA,YACEA,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,gCACbypD,EAAAA,cAAA,aAAS,GAAEmpH,OAEbnpH,EAAAA,cAAA,OAAKzpD,UAAU,8BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,WACbypD,EAAAA,cAAA,aAAS,GAAmC,QAAnCipH,EAAE1mC,EAAW8mC,UAAsB,IAAAJ,OAAA,EAAjCA,EAAmChxK,eAE9C+nD,EAAAA,cAACmqH,GAAAA,EAAW,CAACruF,QAAQ,OAAOhyD,IAAKq/I,OAIvCnpH,EAAAA,cAAA,OAAKzpD,UAAU,oBACZgzK,EAAoBjoM,KAAK0I,GACxBg2E,EAAAA,cAACoqH,GAAY,CACXnqN,IAAK+pB,EAAKvpB,GACVA,GAAIupB,EAAKvpB,GACTyrH,KAAMliG,EAAKkiG,KACXp/E,MAAO9iB,EAAK8iB,MACZmyI,MAAOj1J,EAAKi1J,MACZorC,SAAUrgM,EAAKqgM,SACfC,aAActgM,EAAKsgM,aACnBC,QAASvgM,EAAKugM,eAQpB,EAIJH,GAAgBz5M,IACpB,MAAM,KAAEu7G,EAAI,MAAEp/E,EAAK,MAAEmyI,EAAK,SAAEorC,EAAQ,QAAEE,EAAO,aAAED,EAAY,YAAE13M,GAAgBjC,GAEvE,eAAEylJ,EAAc,SAAEE,IAAahzJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAE1C,EAACqpG,EAAY,EAACC,IAAkB3nN,EAAAA,EAAAA,WAAS,GAyB/C,OARAM,EAAAA,EAAAA,YAAU,KAER,GAAIgzJ,EAAepI,eAAgB,CACjC,MAAMw8D,EAAcp0D,EAAepI,eAAezjJ,MAAM2oJ,GAAaA,EAAShnC,OAASA,IACvFu+F,EAAeD,EACjB,IACC,CAACp0D,EAAepI,iBAGjBhuD,EAAAA,cAAA,OAAKzpD,UAAU,wBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,YACbypD,EAAAA,cAAA,SAAO9tD,MAAM,mBACX8tD,EAAAA,cAAA,SAAOjiG,KAAK,WAAWs8L,QAASmwB,EAAaz9D,QAAU94H,GA1BlChP,WACvBulM,QAEIp0D,EAAejD,eAAe,CAAEjnC,KAAMA,WAGtCkqC,EAAepD,YAAY,CAC/B9mC,KAAMA,EACNp/E,MAAOA,UAEHwpH,EAASo0D,yBAAyB59K,EAAOo/E,GACjD,EAemEy+F,KAC7D3qH,EAAAA,cAAA,QAAM9tD,MAAM,gBAIhB8tD,EAAAA,cAAA,OAAKzpD,UAAU,mBACbypD,EAAAA,cAAA,OAAKosE,IAAK6S,GAAS,qFAAsF10C,IAAK8/E,KAGhHrqH,EAAAA,cAAA,OAAKzpD,UAAU,WACbypD,EAAAA,cAAA,UAAKlzD,GACLkzD,EAAAA,cAAA,OAAKzpD,UAAU,SACZ+zK,GACCtqH,EAAAA,cAAA,KAAGpC,KAAM0sH,EAAc5sH,UAAQ,EAACC,IAAI,sBAAsBl3F,OAAO,UAC/Du5F,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM0nL,EAAAA,IAAYvgL,KAAK,OAAO,IAAC21D,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,kBAAkBu/B,eAAe,cAGzGuqL,GACCvqH,EAAAA,cAAA,KAAGpC,KAAM2sH,EAAS5sH,IAAI,sBAAsBl3F,OAAO,UACjDu5F,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAM2nL,EAAAA,IAAOxgL,KAAK,OAAO,IAAC21D,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,cAAcu/B,eAAe,YAKjG,EAIV,OA/VyB8qL,KACvB,MAAM,cAAEzlD,IAAkB1Z,EAAAA,EAAAA,MACpB,gBAAE2wD,IAAoBh5M,EAAAA,EAAAA,YAAW69G,EAAAA,KACjC,sBAAE4pG,GAA0BzO,EAE5B/5B,EAAa,CACjB,OAAQ,CACN,CACE9tK,KAAM,YACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,mBACJu/B,eAAgB,cAElB//B,IAAK,aAEP,CACEwU,KAAM,YACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,mBACJu/B,eAAgB,cAElB//B,IAAK,aAEP,CACEwU,KAAM,YACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,mBACJu/B,eAAgB,cAElB//B,IAAK,aAEP,CACEwU,KAAM,YACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,mBACJu/B,eAAgB,cAElB//B,IAAK,aAEP,CACEwU,KAAM,aACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,oBACJu/B,eAAgB,eAElB//B,IAAK,cAEP,CACEwU,KAAM,aACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,oBACJu/B,eAAgB,eAElB//B,IAAK,cAEP,CACEwU,KAAM,aACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,oBACJu/B,eAAgB,eAElB//B,IAAK,eAGT+qN,MAAO,CACL,CACEv2M,KAAM,8BACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,iCACJu/B,eAAgB,8BAElB//B,IAAK,uBAEP,CACEwU,KAAM,gBACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,uBACJu/B,eAAgB,kBAElB//B,IAAK,iBAEP,CACEwU,KAAM,oBACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,2BACJu/B,eAAgB,sBAElB//B,IAAK,qBAEP,CACEwU,KAAM,uBACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,0BACJu/B,eAAgB,uBAElB//B,IAAK,wBAEP,CACEwU,KAAM,aACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,oBACJu/B,eAAgB,eAElB//B,IAAK,cAEP,CACEwU,KAAM,kBACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,yBACJu/B,eAAgB,oBAElB//B,IAAK,mBAEP,CACEwU,KAAM,WACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,kBACJu/B,eAAgB,aAElB//B,IAAK,YAEP,CACEwU,KAAM,aACNwjC,YAAaotH,EAAc,CACzB5kK,GAAI,oBACJu/B,eAAgB,eAElB//B,IAAK,gBAKX,OACE+/F,EAAAA,cAAAA,EAAAA,SAAA,KAC6B,SAA1B+qH,EACC/qH,EAAAA,cAACgpH,GAAa,CAACE,SAAS,OAAO3mC,WAAYA,EAAW,UAEtDviF,EAAAA,cAACgpH,GAAa,CAACE,SAAS,QAAQ3mC,WAAYA,EAAkB,QAE/D,EC5GP,OAxC4B,CAC1B,CACE9tK,KAAMurF,EAAAA,cAAA,KAAGpC,UAAM,GAAQoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CACtCtqK,GAAG,wBACHu/B,eAAe,aAEjBirL,MAAO,UACPv9K,QAASsyD,EAAAA,cAACkrH,GAAa,CAACz/D,QAASzrD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,eAE/F,CACEvrB,KAAMurF,EAAAA,cAAA,KAAGpC,UAAM,GAAQoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CACtCtqK,GAAG,2BACHu/B,eAAe,gBAEjBirL,MAAO,aACPv9K,QAASsyD,EAAAA,cAACkoH,GAAkB,OAE9B,CACEzzM,KAAMurF,EAAAA,cAAA,KAAGpC,UAAM,GAAQoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CACtCtqK,GAAG,0BACHu/B,eAAe,eAEjBirL,MAAO,YACPv9K,QAASsyD,EAAAA,cAACklH,GAAS,OAErB,CACEzwM,KAAMurF,EAAAA,cAAA,KAAGpC,UAAM,GAAQoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CACtCtqK,GAAG,6BACHu/B,eAAe,kBAEjBirL,MAAO,cACPv9K,QAASsyD,EAAAA,cAACmrH,GAAW,CAACC,iBAAiB,KAEzC,CACE32M,KAAMurF,EAAAA,cAAA,KAAGpC,UAAM,GAAQoC,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,oBAC1FirL,MAAO,iBACPv9K,QAASsyD,EAAAA,cAACgpH,GAAa,sDC5CvB,GAAY,CAAC,WAAY,OAAQ,SAAU,WAAY,YAAa,MASpEqC,GAA2B,cAAiB,SAAU7qN,EAAM0sB,GAC9D,IAAIsgL,EAAWhtM,EAAKgtM,SAChBnjK,EAAO7pC,EAAK6pC,KACZihL,EAAS9qN,EAAK8qN,OACdC,EAAW/qN,EAAK+qN,SAChBh1K,EAAY/1C,EAAK+1C,UACjBi1K,EAAUhrN,EAAKuyG,GACfpR,OAAwB,IAAZ6pH,EAAqB,MAAQA,EACzC7tL,GAAO,QAA8Bn9B,EAAM,IAE3C4uB,GAAS,SAAmBo+K,EAAU,aACtCie,EAAYr8L,EAEhB,OADIm8L,IAAUE,EAAYr8L,EAAS,aACf,gBAAoBuyE,GAAW,QAAS,CAAC,EAAGhkE,EAAM,CACpEzQ,IAAKA,EACLqpB,UAAW,KAAWA,EAAWk1K,EAAWphL,GAAQjb,EAAS,IAAMib,EAAMihL,GAAUl8L,EAAS,aAEhG,IACAi8L,GAAYpzK,YAAc,cAC1BozK,GAAYtzK,aAxBO,CACjBwzK,UAAU,EACVD,QAAQ,EACR9pN,KAAM,SAsBR,sBClBA,MA4FMkqN,GAAezpN,IAAwC,IAAtC,KAAClE,EAAI,UAAEqzK,EAAS,aAAEu6C,GAAa1pN,EACpD,MAAM,eAAE2pN,EAAc,gBAAEC,EAAe,SAAEj1L,EAAQ,QAAEo/H,EAAO,SAAEM,IAAYhzJ,EAAAA,EAAAA,YACtE69G,EAAAA,KAGI,EAAC2qG,EAAY,EAACC,IAAkBjpN,EAAAA,EAAAA,UAAS,KACzC,EAACylB,EAAM,EAACyjM,IAAYlpN,EAAAA,EAAAA,UAAS,KAC7B,EAACmpN,EAAa,EAACC,IAAmBppN,EAAAA,EAAAA,UACtCylB,EAAM7gB,QAAO,CAACw7E,EAAM1c,KAAI,IAAW0c,EAAM,CAAC1c,EAAK/lE,KAAK,KAAU,CAAC,KAE3D,EAAC0rN,EAAS,EAACC,IAAetpN,EAAAA,EAAAA,UAAS,IACnCupN,GAAkB/0M,EAAAA,EAAAA,QAAOiR,EAAMhqB,SAC/B,EAACgG,EAAO,EAAC+nN,IAAaxpN,EAAAA,EAAAA,UAAS,WAC/B,EAACypN,EAAS,EAACC,IAAe1pN,EAAAA,EAAAA,UAAS,MAEnC2pN,GAAYn1M,EAAAA,EAAAA,QAAO,CAAC,GACpBo1M,GAAcp1M,EAAAA,EAAAA,QAAO,MAErB+wJ,GAAO1c,EAAAA,EAAAA,MAGbvoJ,EAAAA,EAAAA,YAAU,KACR,MAAMupN,EAAgBpkM,EAAMhqB,OAC5B,GAAI8tN,EAAgB36M,SAAWi7M,EAAgBN,EAAgB36M,SACzDg7M,EAAYh7M,SAAWg7M,EAAYh7M,QAAQ4Q,cAAe,CAC5D,MAAM7f,EAAYiqN,EAAYh7M,QAAQ4Q,cACtC7f,EAAU6I,UAAY7I,EAAU4J,YAClC,CAEFggN,EAAgB36M,QAAUi7M,CAAa,GACtC,CAACpkM,EAAMhqB,UAEV6E,EAAAA,EAAAA,YAAU,KACRmlB,EAAM5Z,SAAQqb,IACRiiM,EAAajiM,EAAKvpB,KAAOgsN,EAAU/6M,QAAQsY,EAAKvpB,KAClDgsN,EAAU/6M,QAAQsY,EAAKvpB,IAAI6d,OAC7B,GACA,GACD,CAAC2tM,KAEJ7oN,EAAAA,EAAAA,YAAU,KACRuoN,EAAa5tN,EAAMwqB,EAAM,GACxB,CAACA,EAAOxqB,KAEXqF,EAAAA,EAAAA,YAAU,KACR,GAAI4yJ,EAAQj4J,IAA0B,IAAjBwqB,EAAMhqB,OAAc,CACvC,IAAIgqB,EACJ,GAAK1pB,MAAMgpB,QAAQmuI,EAAQj4J,IAWzBwqB,EAAQytI,EAAQj4J,OAXiB,CACjC,MAAM85J,GAAc,IAAIzjI,MAAOw4L,qBAQ/BrkM,EAAQ,CAPQ,CACd9nB,IAAIosN,EAAAA,GAAAA,KACJp4M,KAAMuhJ,EAAQj4J,GACdi0I,WAAW,EACXx0D,KAAMq6E,GAIV,CAGAm0D,EAASzjM,EACX,IACC,CAACytI,EAAQj4J,KAEZ,MAAM+uN,EAAgB7nM,UACpB,GAAsB,IAAlBgP,EAAExtB,OAAO/F,MAAa,CACxB,MAAMm3J,GAAc,IAAIzjI,MAAOw4L,qBACzBG,EAAU,CACdtsN,IAAIosN,EAAAA,GAAAA,KACJp4M,KAAMq3M,EACN95E,WAAW,EACXx0D,KAAMq6E,GAGRm0D,GAASgB,IACP,MAAMC,EAAY,GAAA5rM,QAAAkvF,EAAAA,GAAAA,GAAOy8G,GAAS,CAAED,IAMpC,OAJAn2L,EAASwnH,cAAc,CACrBh5I,KAAM,CAAE,CAACrH,GAAOkvN,KAGXA,CAAY,IAGrBlB,EAAe,IAEf,UACQz1D,EAAS42D,kBAAkBl3D,EACnC,CAAE,MAAO/hI,GACP30B,QAAQhB,MAAM21B,EAChB,CACF,GAkBIk5L,EAAiBA,KAErB,IAAIC,EAAc7kM,EACdA,EAAMhe,MAAKyf,GAAqB,IAAbA,EAAKvV,SAC1B24M,EAAc7kM,EAAMjH,KAAI0I,GAAqB,IAAbA,EAAKvV,KAAa03M,EAAWniM,IAC7DoiM,EAAY,IACZJ,EAASoB,IAGX,MAAMC,EAAsB9kM,EAAM7gB,QAChC,CAACw7E,EAAM1c,KAAI,IAAW0c,EAAM,CAAC1c,EAAK/lE,KAAK,KACvC,CAAC,GAEHyrN,EAAgBmB,GAEhBz2L,EAASwnH,cAAc,CACrBh5I,KAAM,CAAC,CAACrH,GAAQqvN,IAChB,EAGEE,EAAaA,CAACr5L,EAAGxzB,KACrBwzB,EAAEtkB,kBACF,IAAI09M,EAAsB9kM,EAAM7gB,QAC9B,CAACw7E,EAAM1c,KAAI,IAAW0c,EAAM,CAAC1c,EAAK/lE,KAAK,KACvC,CAAC,GAGH2rN,EAAY7jM,EAAMhkB,QAAOylB,GAAQA,EAAKvpB,KAAOA,IAAI,IACjD4sN,EAAoB5sN,IAAM,EAC1ByrN,EAAgBmB,EAAoB,EAgBhCt8M,EAAgBA,CAACkjB,EAAGl2B,KACX,SAATk2B,EAAEh0B,KAA0B,OAARlC,GACtB+uN,EAAc74L,GAGH,SAATA,EAAEh0B,KAA0B,QAARlC,GACtBovN,GACF,EAOF,OACEntH,EAAAA,cAAA,OAAKzpD,UAAU,aACbypD,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,KAAGzpD,UAAU,gCACD,UAATx4C,EACCiiG,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAI,qBACJu/B,eAAgB,aAGlBggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAI,6CACJu/B,eAAgB,sCAIJ,IAAjBzX,EAAMhqB,QACLyhG,EAAAA,cAAA,OAAKzpD,UAAU,sCACbypD,EAAAA,cAAA,UACEzpD,UACa,WAAXhyC,EACI,mCACA,gBAENwoJ,QAASA,KACPu/D,EAAU,SAAS,GAGrBtsH,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,0BACHu/B,eAAe,YAGnBggE,EAAAA,cAAA,UACEzpD,UACa,SAAXhyC,EACI,mCACA,gBAENwoJ,QAASA,KACPu/D,EAAU,OAAO,GAGnBtsH,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,6BACHu/B,eAAe,eAGnBggE,EAAAA,cAAA,UACEzpD,UACa,QAAXhyC,EACI,sDACA,mCAENwoJ,QAASA,KACPu/D,EAAU,MAAM,GAGlBtsH,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,uBACHu/B,eAAe,WAMR,GAAhBzX,EAAMhqB,OACLyhG,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,2BACZhuB,EACEhkB,QAAOylB,GACS,WAAXzlB,GAA6BylB,EAAKgoH,UACvB,SAAXztI,GAA0BylB,EAAKgoH,YAGpC1wH,KAAI,CAAC0I,EAAMnS,IAERmoF,EAAAA,cAAA,OACEzpD,UACY,IAAV1+B,EACI,sCACA,iBAEN5X,IAAK+pB,EAAKvpB,IAEVu/F,EAAAA,cAAA,OAAKzpD,UAAU,wBACbypD,EAAAA,cAAA,SAAOzpD,UAAU,mBACfypD,EAAAA,cAAA,SACEjiG,KAAK,WACLs8L,QAASrwK,EAAKgoH,UACdhjH,SAAUiF,GApKLs5L,EAACt5L,EAAGjK,KAC/B,MAAMgoH,EAAY/9G,EAAExtB,OAAO4zL,QACrB0yB,EAAU,IAAK/iM,EAAMgoH,UAAWA,GAEtCg6E,GAASgB,IACP,MAAMC,EAAeD,EAAU1rM,KAAIksM,GAAaxjM,EAAKvpB,KAAO+sN,EAAS/sN,GAAKssN,EAAUS,IAMpF,OAJA52L,EAASwnH,cAAc,CACrBh5I,KAAM,CAAE,CAACrH,GAAOkvN,KAGXA,CAAY,GACnB,EAwJmCM,CAAqBt5L,EAAGjK,GACvCy6J,UAAWxwJ,GAAKljB,EAAckjB,EAAG,SAEnC+rE,EAAAA,cAAA,QAAMzpD,UAAU,eAEjB01K,EAAajiM,EAAKvpB,IACjBu/F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEzpD,UAAU,gBACVk3K,iBAAiB,EACjBvgM,IAAKyjC,IACCA,IACF87J,EAAU/6M,QAAQsY,EAAKvpB,IAAMkwD,EAC7BA,EAAGgpC,YAAc3vE,EAAKvV,KACxB,EAEF9T,MACEqpB,EAAKgoH,UACD,CACE07E,eAAgB,eAChB37K,QAAS,IAEX,CAAC,EAEP47K,OAAQ15L,GAAKk5L,IACb1oC,UAAWxwJ,GAAKljB,EAAckjB,EAAG,QACjC25L,QAAS35L,GA/IP45L,EAAC55L,EAAGxzB,KAC9BwzB,EAAEtkB,kBACF,MAAMm+M,EAAU75L,EAAE85L,cAAcp0H,YAEhCqyH,GAASgB,GACcA,EAAU1rM,KAAIksM,GACjC/sN,IAAO+sN,EAAS/sN,GAAK,IAAK+sN,EAAU/4M,KAAMq5M,GAAYN,KAIxD,EAqIoCK,CAAoB55L,EAAGjK,EAAKvpB,OAI9Cu/F,EAAAA,cAAA,SACEzpD,UAAU,aACVy3K,cAAe/5L,GAAKq5L,EAAWr5L,EAAGjK,EAAKvpB,IACvCE,MACEqpB,EAAKgoH,UACD,CAAE07E,eAAgB,eAAgB37K,QAAS,IAC3C,CAAC,GAGN/nB,EAAKvV,OAIZurF,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,KAAGzpD,UAAU,4BAA4BvsB,EAAKwzD,MAC9CwiB,EAAAA,cAACiuH,GAAW,CACVC,OAAQlkM,EAAKvpB,GACb8rN,SAAUA,EACVC,YAAaA,EACbc,WAAYA,EACZ12L,SAAUA,EACV74B,KAAMA,EACNiuN,SAAUA,EACVzjM,MAAOA,QAMnBy3E,EAAAA,cAAA,OAAK9yE,IAAKw/L,MAId1sH,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,cACEzpD,UAAU,oDACV51C,MAAO,CAAE+sJ,UAAW,SAAUwe,aAAc,WAE5ClsE,EAAAA,cAAA,SACY,UAATjiG,EACCiiG,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAI,mBACJu/B,eAAiB,uIAInBggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAI,mBACJu/B,eAAiB,+DAO7BggE,EAAAA,cAAA,SACEzpD,UAAU,kCACVx4C,KAAK,OACL2C,MAAOorN,EACP98L,SAvLeiF,IACnB83L,EAAe93L,EAAExtB,OAAO/F,MAAM,EAuL1BitN,OAAQ15L,GAAK64L,EAAc74L,GAC3BwwJ,UAAWxwJ,GAAKljB,EAAckjB,EAAG,OACjC+iK,YACW,UAATj5L,EACIsqK,EAAKhD,cAAc,CACjB5kK,GAAI,qBACJu/B,eAAgB,aAElBqoI,EAAKhD,cAAc,CACjB5kK,GAAI,sBACJu/B,eAAgB,gBAItB,EAMJiuL,GAAc7rN,IAA8E,IAA7E,OAAE8rN,EAAM,SAAE3B,EAAQ,YAAEC,EAAW,WAAEc,EAAU,SAAE12L,EAAQ,KAAE74B,EAAI,SAAEiuN,GAAU5pN,EAE1F,MAAM+rN,GAAY72M,EAAAA,EAAAA,QAAO,OACnB,EAAC82M,EAAiB,EAACC,IAAuBvrN,EAAAA,EAAAA,UAAS,CAAE4C,IAAK,EAAGD,KAAM,IAYnE6oN,EAAsBA,KAVGC,MAC7B,GAAIJ,EAAUz8M,QAAS,CACrB,MAAM9L,EAAOuoN,EAAUz8M,QAAQxI,wBAC/BmlN,EAAoB,CAClB3oN,IAAKE,EAAKiB,OAASmE,OAAOK,QAC1B5F,KAAMG,EAAKH,KAAOuF,OAAOE,SAE7B,GAIAqjN,GAGE/B,EADED,IAAa2B,EACHA,EAEA,KACd,EAwBF,OACEluH,EAAAA,cAACguG,EAAAA,EAAQ,CACPj7F,GAAIs4G,GACJ90K,UAAU,WACVw2G,QAAS94H,GAAKq6L,KAEdtuH,EAAAA,cAACguG,EAAAA,EAASpV,OAAM,CACdn4L,GAAK,kBAAiBytN,IACtB33K,UAAU,gBACV51C,MAAO,CACL65L,WAAY,OACZt5L,OAAQ,OACR6wC,QAASw6K,GAAY2B,EAAS,EAAI,MAEpCP,OAnCqBa,KACnB9iN,SAASwS,gBAAkBxS,SAASsO,MACtCwyM,EAAY,KACd,GAkCExsH,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMurL,EAAAA,OAGxBC,GAAAA,aACC1uH,EAAAA,cAAA,OACEzpD,UAAU,OACV51C,MAAO,CACL+E,IAAK0oN,EAAiB1oN,IACtBD,KAAM2oN,EAAiB3oN,KACvB3F,SAAU,aAGZkgG,EAAAA,cAACguG,EAAAA,EAASE,KAAI,KACZluG,EAAAA,cAACguG,EAAAA,EAASI,KAAI,CAACrhD,QAAS94H,GAAKq5L,EAAWr5L,EAAGi6L,IACzCluH,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,2BACHu/B,eAAe,UAGnBggE,EAAAA,cAACguG,EAAAA,EAASI,KAAI,CAACrhD,QAASA,KAhDhCy/D,EAAY,WAEZR,GAASgB,IACP,MAAMC,EAAeD,EAAUzoN,QAAOipN,GAAYU,IAAWV,EAAS/sN,KAKtE,OAHAm2B,EAASwnH,cAAc,CACrBh5I,KAAM,CAAC,CAACrH,GAAQkvN,KAEXA,CAAY,MAyCXjtH,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,6BACHu/B,eAAe,cAKvBt0B,SAASsO,MAEF,EAIf,OA3iB0BxZ,IAAsB,IAArB,YAAE22G,GAAa32G,EACxC,MAAM,EAAC4E,EAAK,EAACupN,IAAW7rN,EAAAA,EAAAA,UAAS,KAC3B,EAACsuK,EAAU,EAACw9C,IAAgB9rN,EAAAA,EAAAA,WAAS,GAErC+rN,GAAmB9rN,EAAAA,EAAAA,cAAY,CAAC+rN,EAAUC,KAC9CJ,GAAQK,IAAQ,IACXA,EACH,CAACF,GAAWC,KACX,GACF,IAoCGE,EAAiB7pN,IACrB,MAAM8pN,EAnCqB9pN,KAC3B,MAAM8pN,EAAKC,GAAAA,GAAWC,WA8BtB,OA7BiB3qN,OAAO0J,KAAK/I,GAEpBuJ,SAAS4vI,IAChB,IAAI8wE,EAAU,GACd,MAAMC,EAA0B,UAAZ/wE,EAAsB,QAAU,qBAC9Cr1E,EAAU,CAAC,OAAQ,OAAQ,UAC3BqmJ,EAAa,CAAC,OAAQ,OAAQ,aAEpCF,EAAQjwN,KAAK,CAACkwN,IAEVlqN,EAAKm5I,GAAShgJ,OAAS,IACzB8wN,EAAQjwN,KAAK8pE,GAEb9jE,EAAKm5I,GAAS5vI,SAAQqb,IACpB,MAAMupK,EAAMg8B,EAAWjuM,KAAI4sH,GACd,cAAXA,GACqB,IAAjBlkH,EAAKkkH,GACH,OACA,SACFlkH,EAAKkkH,KAEXmhF,EAAQjwN,KAAKm0L,EAAI,KAIrB,MAAMi8B,EAAKL,GAAAA,GAAWM,aAAaJ,GACnCF,GAAAA,GAAWO,kBAAkBR,EAAIM,EAAIF,EAAY,IAG5CJ,CAAE,EAIES,CAAoBvqN,GAC/B+pN,GAAAA,GAAeD,EAAI,iBAAiB,EAUtC,OAPA9rN,EAAAA,EAAAA,YAAU,KACJguK,GAA6B,IAAhBhsK,EAAK7G,QACpB0wN,EAAc7pN,GAEhBwpN,GAAa,EAAM,GAClB,CAACxpN,EAAMgsK,IAGRpxE,EAAAA,cAAC4vH,GAAAA,EAAc,CAAOz4G,eACpBnX,EAAAA,cAAA,WAASzpD,UAAU,aACjBypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAA,OACCzpD,UAAU,4BAETypD,EAAAA,cAAA,OACEzpD,UAAU,4DAEVypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,sBACHu/B,eAAe,cAEjBggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACI,UAAU,sCAAsCrT,KAAM2sL,GAAAA,IAAgBxjE,MAAM,UAAUhiH,KAAK,KAAK1pC,MAAO,CAAE0lL,WAAY,aAExIrmF,EAAAA,cAAA,UACEzpD,UAAU,kCACVw2G,QAASA,IAAM6hE,GAAa,IAE5B5uH,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAM4sL,GAAAA,IACNzlL,KAAK,KACLgiH,MAAM,cAIZrsD,EAAAA,cAAC0rH,GAAY,CAAC3tN,KAAK,QAAQqzK,UAAWA,EAAWu6C,aAAckD,IAC/D7uH,EAAAA,cAAC0rH,GAAY,CAAC3tN,KAAK,mBAAmBqzK,UAAWA,EAAWu6C,aAAckD,MAG/D,cCzDrB,OAvC2BkB,KACzB,MAAM,OAAEnwL,IAAW+rH,EAAAA,EAAAA,KACnB,OACE3rD,EAAAA,cAAA,WACEzpD,UAAU,uBACV51C,MAAO,CAAEM,OAAQ,mBAEjB++F,EAAAA,cAAC4d,EAAAA,YAAW,CACVpqD,MAAK,aAiBLn2B,OAAQj4B,GACNA,EAAK4qN,sBAAsB9yC,MAAM34K,QAAQkrM,GAASA,EAAKvlM,KAAK01B,SAAWA,IAAQte,KAAI,CAAA9gB,EAAW06D,KAAS,IAAnB,KAAEhxD,GAAM1J,EAC1F,OACEw/F,EAAAA,cAAA,OAAK//F,IAAKi7D,GACR8kC,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,UAASle,EAAKgiH,QAAShiH,EAAK4iC,OACnC,MAKN,0BC1Bd,MA6DMmjL,GAAahuN,IAAgC,IAA/B,WAAEqvJ,EAAU,UAAEC,GAAWtvJ,EAC3C,OAAKqvJ,EAKHtxD,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAK,UAASmpI,KAClBvxD,EAAAA,cAAA,OAAKosE,IAAM,GAAE9a,qDAA+D/mB,IAAI,QAAQ5pI,MAAO,CAACI,MAAO,YALlGi/F,EAAAA,cAAAA,EAAAA,SAAA,KAMA,EAILkwH,GAAe9tN,IAA4G,IAA3G,YAAE+tN,EAAW,oBAAEC,EAAmB,mBAAEC,EAAkB,sBAAEC,EAAqB,qBAAEC,GAAsBnuN,EACzH,MAAMouN,EAAuBA,KACvBH,EAAqBF,EAAY5xN,OAAS,EAC5C+xN,EAAsBD,EAAqB,IAE3CC,EAAsB,GACtBF,EAAoB,YACtB,EAGF,OACEpwH,EAAAA,cAAAA,EAAAA,SAAA,KACGmwH,EAAY7uM,KAAI,CAAC2vI,EAAUp5I,KAC1B,OAAQo5I,EAAS2C,cAAclzJ,OAC7B,IAAK,WACH,OACEs/F,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAM,YAAW4X,KACzBmoF,EAAAA,cAAC0wH,GAAU,CACTC,QAAU,YAAW94M,IACrB+4M,UAAW/4M,IAAUw4M,EACrBG,qBAAsBA,EACtBv/D,SAAUA,EACVs/D,qBAAsBA,KAI9B,IAAK,kBACH,OACEvwH,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAM,YAAW4X,KACzBmoF,EAAAA,cAAC6wH,GAAmB,CAClBF,QAAU,YAAW94M,IACrB+4M,UAAW/4M,IAAUw4M,EACrBG,qBAAsBA,EACtBv/D,SAAUA,EACVs/D,qBAAsBA,KAI9B,IAAK,gBACH,OACEvwH,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAM,YAAW4X,KACzBmoF,EAAAA,cAAC8wH,GAAiB,CAChBH,QAAU,YAAW94M,IACrB+4M,UAAW/4M,IAAUw4M,EACrBG,qBAAsBA,EACtBv/D,SAAUA,EACVs/D,qBAAsBA,KAIhC,IAED,EAKDG,GAAapuN,IAAmF,IAAlF,SAAE2uJ,EAAQ,UAAE2/D,EAAS,qBAAEJ,EAAoB,qBAAED,EAAoB,QAAEI,GAASruN,EAC9F,MAAM,OAAEs9B,IAAW+rH,EAAAA,EAAAA,MACb,SAAE0F,GAAaJ,GACf,EAAC8/D,EAAc,EAACC,IAAoBluN,EAAAA,EAAAA,WAAS,IAE7C,EAACmuN,EAAa,EAACC,IAAmBpuN,EAAAA,EAAAA,UAAS,MAE3CquN,EAAoBrvJ,IACxBovJ,EAAgBpvJ,GAChBkvJ,GAAiB,EAAK,EAQxB,OACEhxH,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAK0wN,GACZC,GACC5wH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAACiwH,GAAU,CAAC3+D,WAAYL,EAASK,WAAYC,UAAWN,EAASM,YAEjEvxD,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAmB,UAAXvsH,EAAqBqxH,EAASmgE,gBAAkBngE,EAASogE,oBAEnE96K,UAAU,6BAIdypD,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,UACEzpD,UAA4B,QAAjB06K,EAAyB,UAAY,GAChDlkE,QAASA,KACPokE,EAAiB,MAAM,GAGzBnxH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,kBAAkBu/B,eAAe,SAExDggE,EAAAA,cAAA,UACEzpD,UAA4B,OAAjB06K,EAAwB,UAAY,GAC/ClkE,QAASA,KACPokE,EAAiB,KAAK,GAGxBnxH,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iBAAiBu/B,eAAe,UAI3DggE,EAAAA,cAACsxH,GAAW,CACVC,eAAgB,OAChBf,qBAAsBA,EACtBO,cAAeA,EACfS,mBA5CgBC,KACH,OAAjBR,GACJV,EAAqB,CAAEzuJ,SAAUmvJ,EAAc5/D,SAAUA,GAAW,KA8CzD,EAITw/D,GAAsBntN,IAAmF,IAAlF,SAAEutJ,EAAQ,UAAE2/D,EAAS,qBAAEJ,EAAoB,qBAAED,EAAoB,QAAEI,GAASjtN,EACvG,MAAM,OAAEk8B,IAAW+rH,EAAAA,EAAAA,MACb,gBACJylE,EAAe,mBACfC,EAAkB,yBAClBK,EAAwB,yBACxBC,EAAwB,yBACxBC,EAAwB,yBACxBC,EAAwB,4BACxBC,EAA2B,4BAC3BC,EAA2B,4BAC3BC,EAA2B,4BAC3BC,EAA2B,uBAC3Bp+D,EAAsB,SACtBxC,EAAQ,WACRC,EAAU,UACVC,GACEN,GAEE,EAACsgE,EAAe,EAACW,IAAqBpvN,EAAAA,EAAAA,UAAS,SAC/C,EAACiuN,EAAc,EAACC,IAAoBluN,EAAAA,EAAAA,WAAS,IAC7C,EAACqvN,EAAe,EAACC,IAAqBtvN,EAAAA,EAAAA,UAAS,MAE/CuvN,EAAmB,CACvB,EAAGX,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,GAGCS,EAA0B,CAC9B,EAAGR,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,GAGCM,EAA8BC,IACX,YAAnBjB,GAAmD,cAAnBA,IAEpCa,EAAkBI,GAElBjC,EAAqB,CAAEzuJ,SAAU0wJ,EAAenhE,SAAUA,IAGxD6gE,EADEM,IAAkB3+D,EACF,UAEA,aAGpBm9D,GAAiB,GAAK,EAGlByB,EAAmB56M,GACA,YAAnB05M,GAAgC15M,IAAUg8I,EACrC,UACqB,cAAnB09D,GAAkC15M,IAAUs6M,EAC9C,YAEA,GAIX,OACEnyH,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAK0wN,GACZC,GACC5wH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAACiwH,GAAU,CAAC3+D,WAAYA,EAAYC,UAAWA,IAC/CvxD,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAmB,UAAXvsH,EAAqBwxL,EAAkBC,GAEjD96K,UAAU,6BAIdypD,EAAAA,cAAA,OAAKzpD,UAAU,2BACZm7K,GACC1xH,EAAAA,cAAA,UACEzpD,UAAWk8K,EAAgB,GAC3B1lE,QAASA,KACPwlE,EAA2B,EAAE,GAGnB,UAAX3yL,EAAqB8xL,EAA2BI,GAGpDH,GACC3xH,EAAAA,cAAA,UACEzpD,UAAWk8K,EAAgB,GAC3B1lE,QAASA,KACPwlE,EAA2B,EAAE,GAGnB,UAAX3yL,EAAqB+xL,EAA2BI,GAGpDH,GACC5xH,EAAAA,cAAA,UACEzpD,UAAWk8K,EAAgB,GAC3B1lE,QAASA,KACPwlE,EAA2B,EAAE,GAGnB,UAAX3yL,EAAqBgyL,EAA2BI,GAGpDH,GACC7xH,EAAAA,cAAA,UACEzpD,UAAWk8K,EAAgB,GAC3B1lE,QAASA,KACPwlE,EAA2B,EAAE,GAGnB,UAAX3yL,EAAqBiyL,EAA2BI,KAKzDjyH,EAAAA,cAACsxH,GAAW,CACVC,eAAgBA,EAChBR,cAAeA,EACf2B,cACqB,cAAnBnB,EACK,GAAa,UAAX3xL,EAAqByyL,EAAiBx+D,GAA0By+D,EAAwBz+D,KAC3F,GAEN28D,qBAAsBA,KAInB,EAITM,GAAoBntN,IAAmF,IAAlF,SAAEstJ,EAAQ,UAAE2/D,EAAS,qBAAEJ,EAAoB,qBAAED,EAAoB,QAAEI,GAAShtN,EACrG,MAAM,OAAEi8B,IAAW+rH,EAAAA,EAAAA,MACb,EAACslE,EAAa,EAACC,IAAmBpuN,EAAAA,EAAAA,UAAS,IAajD,OACEk9F,EAAAA,cAACywH,EAAAA,SAAQ,CAACxwN,IAAK0wN,GACZC,GACC5wH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAACiwH,GAAU,CAAC3+D,WAAYL,EAASK,WAAYC,UAAWN,EAASM,YACjEvxD,EAAAA,cAAA,OACEksD,wBAAyB,CACvBC,OAAmB,UAAXvsH,EAAqBqxH,EAASmgE,gBAAkBngE,EAASogE,oBAEnE96K,UAAU,6BAGdypD,EAAAA,cAAA,YAAUhxE,SAzBEtf,IACpBwhN,EAAgBxhN,EAAMjJ,OAAO/F,MAAM,EAwBO+T,KAAK,gBAAgBw2J,KAAK,IAAI0nD,KAAK,QAEvE3yH,EAAAA,cAACsxH,GAAW,CACVC,eAAgB,OAChBR,cAAeE,EAAa1yN,OAAS,EACrCizN,mBA1BuBoB,KAC/BrC,EAAqB,CACnBzuJ,SAAUmvJ,EACV5/D,SAAUJ,EAASI,UACnB,EAuBMm/D,qBAAsBA,KAInB,EAITqC,GAAkBA,KACtB,MAAM,SAAEj8L,EAAQ,eAAEw/H,IAAmB9yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1C,EAAC2xG,EAAoB,EAACC,IAA0BjwN,EAAAA,EAAAA,UAAS,IACzD,EAACgxJ,EAAe,EAACk/D,IAAqBlwN,EAAAA,EAAAA,UAAS,IAC/C,EAACixJ,EAAc,EAACk/D,IAAoBnwN,EAAAA,EAAAA,UAAS,GAUnD,OARAM,EAAAA,EAAAA,YAAU,KACR,MAAM,aAAEuwJ,EAAY,eAAEG,EAAc,cAAEC,GAAkBqC,EAAe1C,uBAEvEq/D,EAAuBp/D,GACvBq/D,EAAkBl/D,GAClBm/D,EAAiBl/D,EAAc,GAC9B,CAACn9H,IAGFopE,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMgwL,EAAAA,IAAU7oL,KAAK,KAAKgiH,MAAO,YAClDrsD,EAAAA,cAAA,WACEA,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qBAAqBu/B,eAAe,gBAE3DggE,EAAAA,cAAA,UACG8yH,EAAoB,MAAIh/D,KAI/B9zD,EAAAA,cAAA,YACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,uBAAuBu/B,eAAe,4CAC3DggE,EAAAA,cAAA,WACAA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,8BAA8Bu/B,eAAe,oBAAoB,IAAE+zH,EAAe,IACvG/zD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,qBAAqBu/B,eAAe,cAEvD,EAKJsxL,GAAc6B,IAAiG,IAAhG,eAAE5B,EAAc,mBAAEC,EAAkB,cAAET,EAAa,cAAE2B,EAAa,qBAAElC,GAAsB2C,EAC7G,MAOM,EAACC,EAAgB,EAACC,IAAsBvwN,EAAAA,EAAAA,UAAS,MA2BvD,OANAM,EAAAA,EAAAA,YAAU,KACe,YAAnBmuN,GACF8B,EArB2BC,MAG7B,OAFgBtuN,KAAKukE,MAAsB,EAAhBvkE,KAAKqmC,WAG9B,KAAK,EACH,OAAO20D,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,aAC9E,KAAK,EACH,OAAOggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,iBAC9E,KAAK,EACH,OAAOggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,aAC9E,KAAK,EACH,OAAOggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,eAC9E,KAAK,EACH,OAAOggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,UAC9E,QACE,OAAOggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,+BAA+Bu/B,eAAe,aAC9E,EAKqBszL,GACrB,GACC,CAAC/B,IAGFvxH,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,wBACO,YAAnBg7K,GACCvxH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMqwL,GAAAA,IAAelnE,MAAO,YAC7CrsD,EAAAA,cAAA,YAAOozH,GAAwB,KAIf,cAAnB7B,GACCvxH,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMswL,EAAAA,IAAennE,MAAO,YAC7CrsD,EAAAA,cAAA,YACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,mCAC/D,IACP0yL,GACC1yH,EAAAA,cAAAA,EAAAA,SAAA,KACG,IACDA,EAAAA,cAAA,WACAA,EAAAA,cAAA,QAAMzpD,UAAU,mCACdypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,qBAAqB,IAAE0yL,MAQvG3B,EACC/wH,EAAAA,cAAA,UAAQ+sD,QAhEU0mE,KAClBjC,GACFA,IAEFhB,GAAsB,GA6DhBxwH,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMwwL,EAAAA,IAAsBrpL,KAAK,KAAKgiH,MAAO,aAGhErsD,EAAAA,cAAA,UAAQnpF,UAAQ,GACdmpF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMwwL,EAAAA,IAAsBrpL,KAAK,KAAKgiH,MAAO,aAG9D,EAGV,OAxemBsnE,KACjB,MAAM,eAAEv9D,EAAc,SAAEE,EAAQ,QAAEN,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KACnD,EAACyyG,EAAiB,EAACxD,IAAuBttN,EAAAA,EAAAA,UAAS,WACnD,EAACutN,EAAmB,EAACC,IAAyBxtN,EAAAA,EAAAA,UAAS,GAEvDqtN,EAAc/5D,EAAepH,YAAc,GAoBjD,OANA5rJ,EAAAA,EAAAA,YAAU,KACR,MAAM,qBAAE6wJ,EAAoB,sBAAEE,GAA0BiC,EAAepC,gCACvEs8D,EAAsBr8D,GACtBm8D,EAAoBj8D,EAAsB,GACzC,IAGDn0D,EAAAA,cAAA,OAAKzpD,UAAU,qCACbypD,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,sBAAsBu/B,eAAe,iBAC1DggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMgwL,EAAAA,IAAU7mE,MAAO,UAAW1rJ,MAAO,CAAE0lL,WAAY,YAE1ErmF,EAAAA,cAAA,OAAKzpD,UAAU,wBACbypD,EAAAA,cAAA,YACwB,WAArB4zH,GACC5zH,EAAAA,cAAAA,EAAAA,SAAA,KACG,IACAqwH,EAAqB,EAAE,IAAEF,EAAY5xN,OAAQ,MAIpDyhG,EAAAA,cAACmqH,GAAAA,EAAW,CAACruF,QAAQ,OAAOhyD,IAA0B,WAArB8pJ,EAAiCvD,EAAqBF,EAAY5xN,OAAU,IAAM,QAIvHyhG,EAAAA,cAAA,OAAKzpD,UAAU,oBACS,WAArBq9K,GACC5zH,EAAAA,cAACkwH,GAAY,CACXE,oBAAqBA,EACrBG,qBA1CmBtrM,UAAmC,IAA5B,SAAE68C,EAAQ,SAAEuvF,GAAU7wJ,EACxD,MAAMqzN,EAASxD,IAAuBF,EAAY5xN,OAAS,EAI3D,SAFM63J,EAAe9C,sBAAsB,CAAExxF,WAAUuvF,aAEnDwiE,EAAQ,CACV,MAAM,cAAE9/D,GAAkBqC,EAAe1C,6BAEnC4C,EAASw9D,2BAA2B//D,EAAeiC,EAC3D,GAkCQq6D,mBAAoBA,EACpBC,sBAAuBA,EACvBH,YAAa/5D,EAAepH,YAAc,KAGxB,aAArB4kE,GAAmC5zH,EAAAA,cAAC6yH,GAAe,OAElD,ECrEH,MAAMkB,IAAeryN,EAAAA,EAAAA,eAAc,MC+K1C,OA9JkBsyN,KAChB,MAAM,YAAE78G,IAAgB7zG,EAAAA,EAAAA,YAAWywN,KAC7B,SAAEn9L,EAAQ,KAAEqqF,EAAI,QAAEC,EAAO,QAAE80C,EAAO,eAAEI,IAAmB9yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAClE,EAACj8B,EAAU,EAACwrH,IAAgB5tM,EAAAA,EAAAA,WAAS,IACrC,EAACmxN,EAAe,EAACC,IAAqBpxN,EAAAA,EAAAA,WAAS,GAC/C23E,GAAW4nB,EAAAA,EAAAA,gBAEjBj/F,EAAAA,EAAAA,YAAU,MACI,IAAZ89G,GAAqBgzG,GAAkB,EAAM,GAC5C,CAAChzG,IAQJ,IAAKA,GAAWD,IAAS+0C,EACvB,OACEh2D,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEr/F,MAAO,CACL0rM,UAAW,SACX3+C,UAAW,OACXwe,aAAc,OACdia,SAAU,SAGZnmF,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAe,sEACfggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CACjBtqK,GAAG,WACHu/B,eAAe,OAEhB,IACDggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,YAAW43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACnCtqK,GAAG,+BACHu/B,eAAe,gBACR,IAACggE,EAAAA,cAAC+qE,GAAAA,EAAgB,CACzBtqK,GAAG,iDACHu/B,eAAe,4CAOzB,IAAKkhF,IAAYD,EAGf,OADA3I,EAAAA,EAAAA,IAAS,KACF,KAGT,SAAS67G,IAGe,WAAlB15I,EAASt4B,MAGbn3C,OAAOwH,SAAS,EAAG,EACrB,CAEA,OACEwtF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACo0H,GAAAA,EAAa,CACZC,GAAIJ,EACJ7sM,QAAS,IACTo0D,WAAW,SACX84I,QAASA,KACPH,GAAa,EAEfI,UAAWA,KACTJ,GAAa,EAEfK,OAAQA,KACNL,GAAa,EAEfM,SAAUA,KACRN,GAAa,EAEfO,eAAa,GAEb10H,EAAAA,cAACuqE,GAAAA,EAAc,QAGfrpD,IAAYk1C,EAAe7G,gBAC3BvvD,EAAAA,cAAA,eACEA,EAAAA,cAAC20H,GAAAA,EAAG,CAAC7nL,MAAM,cACXkzD,EAAAA,cAAA,WACEzpD,UAAU,kBACV51C,MAAO,CAAE2tL,gBAAiB,UAE1BtuF,EAAAA,cAAA,OAAKzpD,UAAU,+BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,yBAAyB51C,MAAO,CAAEI,MAAO,SACtDi/F,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CAACtqK,GAAG,eAAeu/B,eAAe,OAClDg2H,GAAWA,EAAQ6S,UAAa,KAAI7S,EAAQ6S,YAAc,GAAG,KAGhE7oE,EAAAA,cAAA,UAAQ+sD,QAxFH94H,IACjBA,EAAExkB,iBACFihM,GAAa,EAAK,GAuFJ1wG,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAM0xL,EAAAA,IACNvqL,KAAK,KACLgiH,MAAM,aAGVrsD,EAAAA,cAACyuF,EAAAA,EAAK,CAACxpG,KAAMC,EAAWypG,OAhGlBN,IAAMqiB,GAAa,GAgGoB9hB,UAAQ,EAACvkJ,KAAK,MACzD21D,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,KACV/yG,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,wBACHu/B,eAAe,4CAIrBggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,8BACHu/B,eAAe,mDAGnBggE,EAAAA,cAAC+vH,GAAkB,MACnB/vH,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,8BACHu/B,eAAe,kFAEf,IAEFggE,EAAAA,cAACwlF,EAAAA,GAAI,CAACp9J,GAAG,YACP43E,EAAAA,cAAC+qE,GAAAA,EAAgB,CACftqK,GAAG,4BACHu/B,eAAe,eAO3BggE,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAC2zH,GAAU,MACX3zH,EAAAA,cAAC60H,GAAiB,CAChBj+L,SAAUA,EACVo/H,QAASA,EACT7+C,YAAaA,KAGjBnX,EAAAA,cAAC+8E,GAAAA,EAAkB,SAK1B,ECtEP,OAjF0BpsK,IACxB,MAAM,KAAEswG,EAAI,QAAE+0C,EAAO,SAAEp/H,EAAQ,SAAE0/H,IAAahzJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAEnD,EAAC2zG,EAAc,EAACC,IAAoBjyN,EAAAA,EAAAA,WAAS,IAEnDM,EAAAA,EAAAA,YAAU,KAAO,IAADitM,EACTpvF,IAAqC,KAA7BA,SAAgB,QAAZovF,EAAJpvF,EAAMG,kBAAU,IAAAivF,OAAZ,EAAJA,EAAkBtuM,UAC7Bu2G,EAAAA,EAAAA,UAAS,IAAK,CAAEvkF,SAAS,GAC3B,GACC,CAACktF,KAEJ79G,EAAAA,EAAAA,YAAU,KACiB6hB,WACjB+wI,IAAY8+D,SACVE,EAAwBh/D,aAAO,EAAPA,EAASxS,WACzC,EAGFyxE,EAAkB,GACjB,IAEH,MAAMD,EAA0B/vM,UAC9B,GAAI6vM,EAAe,OACnBC,GAAiB,GACjB,MAAMG,QAAmBt+L,EAAS2hH,gBAE9B28E,GAAc,GAAK1xE,GAAc,SAC7B8S,EAAS6+D,4BAGbD,EAAa,SACT5+D,EAAS8+D,iCACjB,GAIKC,EAAUC,IAAermB,EAAAA,GAAAA,IAAc,MAAOI,GAAAA,KAG/C,EAACkmB,EAAY,EAACC,IAAkB1yN,EAAAA,EAAAA,UAAS,GAGzC2yN,EAAOC,GAAoBp0M,KAAKq0M,GAAQA,EAAI1K,QAmBlD,OATA7nN,EAAAA,EAAAA,YAAU,KAEJiyN,EACFI,EAAKrrN,SAASirN,EAASthM,QAAQ,MAAO,MAAQyhM,EAAeC,EAAKhsN,QAAQ4rN,EAASthM,QAAQ,MAAO,MAElGyhM,EAAe,EACjB,GACC,CAACH,IAGFr1H,EAAAA,cAAC+zH,GAAa5tM,SAAQ,CAACzlB,MAAO,IAAKiQ,IACjCqvF,EAAAA,cAAA,WAASzpD,UAAU,wBACjBypD,EAAAA,cAAA,OAAKv/F,GAAG,oBACNu/F,EAAAA,cAACg0H,GAAS,OAEZh0H,EAAAA,cAAA,OAAKv/F,GAAG,UACRu/F,EAAAA,cAAC41H,GAAAA,EAAI,CACHrtM,MA/EDmtM,GAAoBp0M,KAAI,CAACq0M,EAAK99M,KAAK,CACxCi1B,MAAO6oL,EAAIlhN,KACXohN,WAAYA,IAAMF,EAAIjoL,QAEtBztC,IAAK4X,EACLi+M,aAAc,eACdC,eAAgB,YA0EV/mM,SAAWnX,GA1BEA,KAEnBnM,SAASwS,cAAcqmE,OAEvB+wI,EAAYG,EAAK59M,GAAQ,QACzB29M,EAAe39M,EAAM,EAqBMm+M,CAAYn+M,GACjCrP,WAAW,EACXytN,eAAgBV,EAChBW,cAAel2H,EAAAA,cAAAA,EAAAA,SAAA,KAAE,KACjBm2H,UAAU,KAGQ,wglECjC5B,OA9DwBC,MAEtBhzN,EAAAA,EAAAA,YAAU,IACD,KACiB,oBAAX4H,QACTA,OAAOyvE,SAASqhC,QAClB,GAED,IAGD9b,EAAAA,cAAA,OACEr/F,MAAO,CACLL,QAAS,OACTiuL,eAAgB,SAChBhJ,WAAY,SACZvkL,OAAQ,QACRmlL,SAAU,OACVkmB,UAAW,SACXtgC,SAAU,QACVsqD,cAAe,SACf/mC,IAAK,OACLruL,OAAQ,WAGV++F,EAAAA,cAAA,WACEA,EAAAA,cAAC7pD,EAAAA,EAAe,CAACk2G,MAAO,UAAWnpH,KAAMozL,GAAAA,IAAOv/K,MAAI,EAAC1M,KAAK,QAG5D21D,EAAAA,cAAA,SAAG,KAEDA,EAAAA,cAAA,KAAGr/F,MAAO,CAAEwlL,SAAU,SACnB,IAAI,gDAEF,IAAI,KAETnmF,EAAAA,cAAA,WACAA,EAAAA,cAAA,WAAM,0IAONA,EAAAA,cAAA,WACAA,EAAAA,cAAA,WAAM,6EAGNA,EAAAA,cAAA,WACAA,EAAAA,cAAA,WAAM,2GAE0B,IAChCA,EAAAA,cAAA,KAAGpC,KAAK,yBAAwB,0BAChCoC,EAAAA,cAAA,WACAA,EAAAA,cAAA,WAAM,iHCvDd,MAAMu2H,GAAuB,CAC3BC,UAAW,KACXC,kBAAmB,KACnB1L,sBAAuB,QACvB2L,wBAAyB,KACzBC,iCAAkC,KAClCC,eAAgB,KAChBC,wBAAwB,EACxBC,yBAA0B,MAoF5B,OALqBC,KACnB,MAAM,EAACC,IAAiBl0N,EAAAA,EAAAA,WAAS,IAzDVm0N,MAEvB,GAAsB,oBAAXjsN,OACT,OAAOurN,GAGT,MAAMC,EAAYxrN,OAAOyvE,SAASuiC,SAASr0G,MAAM,KAAK,GAChDuuN,EAASlsN,OAAOyvE,SAASuiC,SAASr0G,MAAM,KAAK,GAOnD,IAAK6tN,EACH,OAAOD,GAGT,MAAMY,EAAsB/iD,GAAAA,EAA0BtvH,MAAMsyK,GAAQA,EAAIn3N,MAAQu2N,IAMhF,GAJkB,QAAdA,GAAkC,cAAXU,GAA2BC,IACpDZ,GAAqBM,wBAAyB,IAG3CM,EAEH,OADA73N,QAAQyxD,KAAK,oCAAqCylK,GAC3CD,GAIT,MAAM,IAAEt2N,EAAG,MAAES,EAAK,KAAE+vF,EAAI,cAAE4mI,EAAgB,QAAO,iBAAEC,EAAgB,2BAAEC,EAA0B,yBAAET,EAA2B,KAAI,MAAEz5M,EAAQ,MAAS85M,EAEnJ,MAAO,CACLX,UAAWv2N,EACXw2N,kBAAmB/1N,EACnB87M,oBAAqB/rH,EACrBs6H,sBAAyC,UAAlBsM,GAA+C,SAAlBA,EAA2BA,EAAgB,QAC/FX,wBAAyBY,EACzBX,iCAAkCY,EAClChb,gCAAiCua,EACjCF,eAAgBv5M,EAChBw5M,uBAAwBN,GAAqBM,uBAC9C,EAesCI,KACvC,OAAOD,CAAa,ECiEtB,OA7GgBrmN,IACd,MAAM,KAAEswG,EAAI,SAAErqF,EAAQ,QAAEsqF,EAAO,QAAE80C,EAAO,iBAAEsC,EAAgB,iBAAEpC,EAAgB,eAAEE,EAAc,SAAEE,IAAakhE,EAAAA,EAAAA,MACrGlb,EAAkBya,MAClB,uBAAEF,GAA2Bva,GAC7B,SAAE1hM,GAAajK,GAEf,EAAC8mN,EAAQ,EAACC,IAAc50N,EAAAA,EAAAA,WAAS,IACjC,EAAC04L,EAAY,EAACowB,IAAkB9oN,EAAAA,EAAAA,UAAS,OACzC,EAACi3D,EAAM,EAACu1F,IAAYxsJ,EAAAA,EAAAA,UAAS,OAC7B,EAAC0tM,EAAsB,EAACC,IAA4B3tM,EAAAA,EAAAA,UAAS4vL,GAAAA,IAG7DttL,GAAOy4G,EAAAA,EAAAA,gBAAe,cAY5B,IAAI1G,EAAyB,UAFdsyG,KAEwB,CAAE1tD,SAAU,QAASr7H,SAAUi3L,IAAoB,CAAE57D,SAAU,QAASr7H,SAAUk3L,IAQzH,OANAx0N,EAAAA,EAAAA,YAAU,KACHyzN,IACHv+G,EAAAA,EAAAA,UAAS,6BAA8B,CAAEvkF,SAAS,GACpD,GACC,CAAC8iM,IAGF72H,EAAAA,cAACmhB,EAAAA,GAAgBh7F,SAAQ,CACvBzlB,MAAO,CACLugH,OACArqF,WACAsqF,UACA80C,UACAyhE,UACAC,aACAl8B,cACAowB,iBACApb,wBACAC,2BACAn4C,mBACAgkD,kBACAviJ,QACAu1F,WACA8G,iBACAE,aAGDJ,SAAAA,EAAkB2hE,gBACjB73H,EAAAA,cAACo2H,GAAe,MAEhBp2H,EAAAA,cAAC4vH,GAAAA,EAAc,CAAOz4G,eACpBnX,EAAAA,cAAC8uF,GAAM,CAACojB,UAAW9sM,EAAK0yN,KAAKC,aAAajrL,SACxCwpH,EAASp1I,YACT8+E,EAAAA,cAACg4H,GAAAA,EAAO,CACNC,aAAc,CACZt3N,MAAO,CACL8wL,UAAW,yCAEbl7I,UAAW,WAEb2hL,uBAAuB,IAI3Bl4H,EAAAA,cAACwyG,GAAW,MAGZxyG,EAAAA,cAACyb,EAAAA,OAAM,CAACP,SAAS,KACflb,EAAAA,cAACg0H,GAAS,CAAC9nL,KAAM,aAAcirE,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUk3L,MAC3E53H,EAAAA,cAACg0H,GAAS,CAAC9nL,KAAM,mBAAoBirE,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUi3L,OAInF33H,EAAAA,cAACyb,EAAAA,OAAM,CAACP,SAAS,WACflb,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,WAAW69D,UAAWquH,GAAAA,EAAWjhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUk3L,MAChG53H,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,gBAAgB69D,UAAWsuH,GAAAA,EAAclhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUk3L,MACxG53H,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,UAAU69D,UAAWuuH,GAAAA,EAAkBnhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUk3L,MAEtG53H,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,iBAAiB69D,UAAWquH,GAAAA,EAAWjhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUi3L,MACtG33H,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,sBAAsB69D,UAAWsuH,GAAAA,EAAclhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUi3L,MAC9G33H,EAAAA,cAACm4H,GAAAA,EAAY,CAACjsL,KAAK,gBAAgB69D,UAAWuuH,GAAAA,EAAkBnhH,YAAa,CAAE4kD,SAAU,QAASr7H,SAAUi3L,OAI9G33H,EAAAA,cAACyb,EAAAA,OAAM,CAACP,SAAS,UACflb,EAAAA,cAACu4H,GAAAA,QAAW,CAACrsL,KAAK,gBAIpB8zD,EAAAA,cAAA,QAAMx+F,KAAK,eAAeoZ,GAG1BolF,EAAAA,cAAC+vF,GAAM,CAACp/K,MAAOA,KAGM,sHC7I/B,KACI,CACImiJ,OAAQ,CAAC,EAAG,IACZr+I,KAAM,OACNkkB,QAAS,iBACTgiK,aAAc,SACdC,WAAY,SACZ3b,MAAO4b,EAAAA,KAEX,CACI/nC,OAAQ,CAAC,GAAI,IACbr+I,KAAM,YACNkkB,QAAS,qEACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAO6b,EAAAA,GAEX,CACIhoC,OAAQ,CAAC,GAAI,KACbr+I,KAAM,MACNkkB,QAAS,kCACTgiK,aAAc,UACdC,WAAY,SACZ3b,MAAO8b,EAAAA,GAEX,CACIjoC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,cACNkkB,QAAS,+CACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAO+b,EAAAA,GAEX,CACIloC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,UACNkkB,QAAS,yIACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOgc,EAAAA,GAEX,CACInoC,OAAQ,CAAC,IAAK,KACdr+I,KAAM,QACNkkB,QAAS,uGACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOic,EAAAA,GAEX,CACIpoC,OAAQ,CAAC,IAAMqoC,KACf1mL,KAAM,QACNkkB,QAAS,6BACTgiK,aAAc,UACdC,WAAY,UACZ3b,MAAOmc,EAAAA,kECxCf,IAnBwBzqL,GACtBqvF,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAA,WAASzpD,UAAU,WACjBypD,EAAAA,cAAA,OAAKosE,IAAKosD,EAAAA,EAAMjiL,UAAU,iBAC1BypD,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,YACAA,EAAAA,cAAA,aAEDrvF,EAAMiK,8FClBN,MCwMM69M,EAAuCA,CAACziE,EAAS0iE,EAAWC,KACvE,MAAM,UAAE9vD,EAAS,SAAEC,EAAQ,OAAE5wB,GAAW8d,EAClC4iE,EAAe,GAAE/vD,GAAa,MAAMC,GAAY,KAEtD,IAAI/mB,EAAe,CACjB82E,WAAY,KACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,WACNuJ,MAAO,EACPmkJ,QAAS,YACTC,UAAW,GACX/yH,QAAS,GACTyyH,UAAW,GACXI,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GACVC,SAAUnhF,EACVohF,YAAY,EACZC,iBAAiB,EACjBC,cAAc,GAGhB,OAAQd,GACN,IAAK,yBACH32E,EAAa82E,WAAc,OAAM3gF,IACjC6J,EAAappH,QAAW,GAAEigM,GAAgB,oDAC1C72E,EAAao3E,aAAc,EAC3B,MACF,IAAK,cACHp3E,EAAa82E,WAAa,MAC1B92E,EAAappH,QAAW,GAAEigM,GAAgB,uCAC1C,MACF,IAAK,SACH72E,EAAa82E,WAAc,OAAM3gF,IACjC6J,EAAappH,QAAW,GAAEigM,GAAgB,gDAC1C72E,EAAao3E,aAAc,EAC3B,MACF,IAAK,QACHp3E,EAAa82E,WAAa,MAC1B92E,EAAappH,QAAW,GAAEigM,GAAgB,yCAC1C,MACF,IAAK,OACH72E,EAAa82E,WAAc,OAAM3gF,IACjC6J,EAAappH,QAAW,GAAEigM,GAAgB,0BAC1C72E,EAAao3E,aAAc,EAC3B,MACF,IAAK,kBACHp3E,EAAa82E,WAAc,OAAM3gF,KAAUygF,IAC3C52E,EAAappH,QAAW,GAAEigM,GAAgB,0BAAyBD,GAAW,cAC9E52E,EAAao3E,aAAc,EAC3B,MACF,IAAK,kBACHp3E,EAAa82E,WAAc,OAAM3gF,KAAUygF,IAC3C52E,EAAappH,QAAW,GAAEigM,GAAgB,0BAAyBD,GAAW,cAC9E52E,EAAao3E,aAAc,EAC3B,MACF,QAEE,OADA75N,QAAQhB,MAAM,kCACP,KAGX,OAAOyjJ,CAAY,EAYR03E,EAA6BA,CAACzjE,EAAS0jE,KAClD,MAAM,OAAExhF,EAAM,UAAE2wB,EAAS,SAAEC,GAAa9S,EA6BxC,MA1BqB,CACnB6iE,WAAY,MACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,WACNuJ,MAAO,EACPmkJ,QAAS,UACTC,UAAW,GACX/yH,QAAU,GAdS,GAAEkwI,GAAa,MAAMC,GAAY,KAc5Bj4H,QAAU,uCAAuC6oL,IACzEtuE,UAAW,GACXI,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GACVC,SAAUnhF,EACVohF,YAAY,EACZC,iBAAiB,EACjBC,cAAc,EAEG,iBCmKrB,MA5byBjjE,CAAC3/H,EAAUo/H,KAAa,IAADrI,EAAAC,EAAAC,EAC9C,MAAM,EAAChuI,EAAc,EAACsvI,IAAoBrsJ,EAAAA,EAAAA,WAAS,IAC7C,EAACoe,EAAW,EAACg3K,IAAiBp1L,EAAAA,EAAAA,WAAS,IACvC,EAAC62N,EAA8B,EAACxhE,IAAoCr1J,EAAAA,EAAAA,UAAS,KAC7E,EAAC82N,EAAsC,EAACxhE,IAA4Ct1J,EAAAA,EAAAA,UAAS,KAE7F,EAAC+2N,EAAW,EAACC,IAAiBh3N,EAAAA,EAAAA,UAAS,IACvC,EAACi3N,EAAY,EAACC,IAAkBl3N,EAAAA,EAAAA,UAAS,IACzC,EAACm3N,EAAe,EAACC,IAAqBp3N,EAAAA,EAAAA,UAAS,GAE/Cq3N,GAAe7iN,EAAAA,EAAAA,QAAO,MACtB8iN,GAAgB9iN,EAAAA,EAAAA,QAAO,MACvB+iN,GAAmB/iN,EAAAA,EAAAA,QAAO,OAE1B,EAACgjN,EAAmB,EAACC,IAAyBz3N,EAAAA,EAAAA,UAAS,IAEvD,EAAC03N,EAA2B,EAACC,IAAiC33N,EAAAA,EAAAA,WAAS,IACvE,EAAC43N,EAA4B,EAACC,IAAkC73N,EAAAA,EAAAA,WAAS,IACzE,EAAC83N,EAAuC,EAACC,IAA6C/3N,EAAAA,EAAAA,WAAS,GAE/F23E,GAAW4nB,EAAAA,EAAAA,eAEXuvG,EAAc,CAAC,YAAa,YAAa,WAAY,aAAc,YAGzExuM,EAAAA,EAAAA,YAAU,KAEJq3E,SAAAA,EAAUynB,UAAY0vG,EAAYxnM,SAASqwE,EAASynB,SAASv5F,MAAM,KAAK,IAC1EuvL,GAAc,GAEdA,GAAc,EAChB,GACC,CAACz9G,KAEJr3E,EAAAA,EAAAA,YAAU,KAIK6hB,WAAa,IAADwsI,EAAAC,EAAAC,EACvB,MAAMzZ,GAASthH,SAAc,QAAN66H,EAAR76H,EAAUuiG,YAAI,IAAAs4B,GAAW,QAAXC,EAAdD,EAAgBh1H,iBAAS,IAAAi1H,GAAa,QAAbC,EAAzBD,EAA2B3Z,mBAAW,IAAA4Z,OAA9B,EAARA,EAAwC17H,MAAO,KAC1DpW,GACCq4H,GAELiX,GAAiB,EAAK,EAGxB9wE,EAAM,GACL,CAACznD,SAAc,QAAN+2H,EAAR/2H,EAAUuiG,YAAI,IAAAw0B,GAAW,QAAXC,EAAdD,EAAgBlxH,iBAAS,IAAAmxH,GAAa,QAAbC,EAAzBD,EAA2B7V,mBAAW,IAAA8V,OAA9B,EAARA,EAAwC53H,IAAKpW,IAEjD,MAyTMi7M,EAAaA,CAACC,EAAUC,EAAgBC,KAExCF,EAASrpN,SACXoD,aAAaimN,EAASrpN,SAGxBqpN,EAASrpN,QAAUJ,YAAW,KAC5B2pN,GAAe,GACdD,EAAe,EA+CpB,OA5CA53N,EAAAA,EAAAA,YAAU,KACR,IAAKyc,EAAe,OAEpB,MAAMq7M,EAAazsM,aAAY,KAGL,oBAAXzjB,QAGDU,SAASw0M,QAKnBqa,GAAuBY,GAAgBA,EAAc,GACvD,GACC,KAEH,MAAO,KAEDhB,EAAazoN,SACfoD,aAAaqlN,EAAazoN,SAGxB0oN,EAAc1oN,SAChBoD,aAAaslN,EAAc1oN,SAGzB2oN,EAAiB3oN,SACnBoD,aAAaulN,EAAiB3oN,SAGhCgd,cAAcwsM,EAAW,CAC1B,GACA,CAACr7M,KAEJzc,EAAAA,EAAAA,YAAU,KACmB,IAAvBk3N,EA1K6Br1M,WACjC,GAAIu1M,EAA4B,OAChCC,GAA8B,GAE9B,MAAMW,EAA0B,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,OAE3F,IAAIC,EAA4B,IAAI97M,IAClCo6M,EACGr4M,KAAKygI,GAAiBA,EAAa82E,aACnCt0N,QAAQs0N,GAAeuC,EAAwBhxN,SAASyuN,MAG7D,GAAIwC,EAA0BhxL,MAAQ+wL,EAAwB78N,OAE5D,IAAK,MAAMwjJ,KAAgB43E,EAA8Bp1N,QAAQw9I,GAAiBq5E,EAAwBhxN,SAAS23I,EAAa82E,oBACxHjiM,EAASqwH,uBAAuB,CAAEqE,eAAgBvJ,EAAauJ,iBAIzE,MAAMgwE,EFyH6CC,KAwGrD,MAAMC,EAvGoB,CACxB,CACE3C,WAAa,KACbptE,QAAS,cACTC,UAAW,eACX/yH,QAAS,6DACTyyH,UAAW,gEACX+tE,aAAa,EACbL,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,KACbptE,QAAS,cACTC,UAAW,eACX/yH,QAAS,0EACTyyH,UAAW,sFACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,OAEd,CACEP,WAAa,KACbptE,QAAS,cACTC,UAAW,eACX/yH,QAAS,qFACTyyH,UAAW,gGACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,OAEd,CACEP,WAAa,KACbptE,QAAS,sBACTC,UAAW,2BACX/yH,QAAS,4EACTyyH,UAAW,+EACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,OAEd,CACEP,WAAa,KACbptE,QAAS,cACTC,UAAW,eACX/yH,QAAS,wEACTyyH,UAAW,6EACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,OAEd,CACEP,WAAa,MACbptE,QAAS,gCACTC,UAAW,0BACX/yH,QAAS,mDACTyyH,UAAW,iEACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,2BACTC,UAAW,wBACX/yH,QAAS,yCACTyyH,UAAW,mCACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,2BACTC,UAAW,wBACX/yH,QAAS,+EACTyyH,UAAW,0FACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,2BACTC,UAAW,wBACX/yH,QAAS,sEACTyyH,UAAW,6EACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,2BACTC,UAAW,wBACX/yH,QAAS,sFACTyyH,UAAW,kFACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,SAI+Bt0K,MAAMq6C,IAAYo8H,EAAyBzhL,IAAIqlD,EAAO05H,cAErG,OAAK2C,EAKgB,CACnB3C,WAAY2C,EAAmB3C,WAC/BvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS+vE,EAAmB/vE,QAC5BC,UAAW8vE,EAAmB9vE,UAC9B/yH,QAAS6iM,EAAmB7iM,QAC5ByyH,UAAWowE,EAAmBpwE,UAC9BuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,YAAaqC,EAAmBrC,YAChCC,SAAUoC,EAAmBpC,UAzBtB,IA2BU,EEhQWsC,CAAuCL,GAC9DC,SAEC1kM,EAAS+vH,uBAAuB20E,EAAoB,EAqJxDK,GACgC,KAAvBrB,GAnJuBr1M,WAClC,GAAIy1M,EAA6B,OACjCC,GAA+B,GAE/B,MAAMiB,EAA2B,CAAC,MAAO,MAAO,MAAO,MAAO,OAExDP,EAA4B,IAAI97M,IACpCo6M,EACGr4M,KAAKygI,GAAiBA,EAAa82E,aACnCt0N,QAAQs0N,GAAe+C,EAAyBxxN,SAASyuN,MAG9D,GAAIwC,EAA0BhxL,MAAQuxL,EAAyBr9N,OAE7D,IAAK,MAAMwjJ,KAAgB43E,EAA8Bp1N,QAAQw9I,GAAiB65E,EAAyBxxN,SAAS23I,EAAa82E,oBACzHjiM,EAASqwH,uBAAuB,CAAEqE,eAAgBvJ,EAAauJ,iBAIzE,MAAMgwE,EF0O8CC,KAsDtD,MAAMC,EArDoB,CACxB,CACE3C,WAAa,MACbptE,QAAS,0BACTC,UAAW,sCACX/yH,QAAS,8DACTyyH,UAAW,gFACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,0BACTC,UAAW,sCACX/yH,QAAS,oDACTyyH,UAAW,iEACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,0BACTC,UAAW,sCACX/yH,QAAS,oEACTyyH,UAAW,0GACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,0BACTC,UAAW,sCACX/yH,QAAS,uDACTyyH,UAAW,sEACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,QAEd,CACEP,WAAa,MACbptE,QAAS,0BACTC,UAAW,sCACX/yH,QAAS,iEACTyyH,UAAW,mFACX+tE,aAAa,EACbL,gBAAiB,GACjBM,SAAU,CAAE,SAI+Bt0K,MAAMq6C,IAAYo8H,EAAyBzhL,IAAIqlD,EAAO05H,cAErG,OAAK2C,EAKgB,CACnB3C,WAAY2C,EAAmB3C,WAC/BvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS+vE,EAAmB/vE,QAC5BC,UAAW8vE,EAAmB9vE,UAC9B/yH,QAAS6iM,EAAmB7iM,QAC5ByyH,UAAWowE,EAAmBpwE,UAC9BuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,YAAaqC,EAAmBrC,YAChCC,SAAUoC,EAAmBpC,UAzBtB,IA2BU,EE/TWyC,CAAwCR,GAC/DC,SAEC1kM,EAAS+vH,uBAAuB20E,EAAoB,EA8HxDQ,EACF,GACC,CAACxB,IAEG,CACLp5M,aACAg3K,gBACAg1B,kBAjVwBjoM,UACxB60M,GAAeiC,GAAcA,EAAY,IACzC,MAAMT,EFnHa,CACnBzC,WAAY,MACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVohE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,OACTC,UAAW,OACX/yH,QAAU,WAXuBm6H,EEoHgB+mE,EAAa,SFzG5B/mE,EAAS,EAAI,IAAM,iBAAiBA,UAAeA,EAAS,EAAI,IAAM,KACxG1H,UAAY,gBAAe0H,yBAA8BA,WACzD66B,SAAS,EACT8tC,SAAS,EACTO,wBAAwB,EACxBxwE,SAAU,KACVutE,aAAc,GACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,QAtBsBtmE,MEqHjC,MAAMmpE,EAA8BxD,EAAqCziE,EAAS,QAElF,UACQp/H,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,8BAA+BA,EAC/C,CACAw8N,EAAWX,EAAc,MAAO,IAAML,EAAc,KAEpD,UACQljM,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,wDAAyDA,EACzE,GAkUA49N,mBA/TyBj3M,UACzB+0M,GAAgB+B,GAAcA,EAAY,IAC1C,MAAMT,EF1Ga,CACnBzC,WAAY,KACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVohE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,OACTC,UAAW,OACX/yH,QAAU,WAXwBm6H,EE2GgBinE,EAAc,UFhG7BjnE,EAAS,EAAI,IAAM,iBAAiBA,UAAeA,EAAS,EAAI,IAAM,KACzG1H,UAAY,cAAa0H,yBAA8BA,WACvD66B,SAAS,EACT8tC,SAAS,EACTO,wBAAwB,EACxBxwE,SAAU,KACVutE,aAAc,GACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,OAtBuBtmE,YE4G5Bl8H,EAAS+vH,uBAAuB20E,GACtCR,EAAWV,EAAe,MAAO,IAAMJ,EAAe,IAAG,EA4TzDmC,sBAzT4Bl3M,UAC5Bi1M,GAAmB6B,GAAcA,EAAY,IAC7C,MAAMT,EFrFa,CACnBzC,WAAY,KACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVohE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,OACTC,UAAW,OACX/yH,QAAU,WAX2Bm6H,EEsFgBmnE,EAAiB,aF3EhCnnE,EAAS,EAAI,IAAM,iBAAiBA,UAAeA,EAAS,EAAI,IAAM,KAC5G1H,UAAY,gBAAe0H,yBAA8BA,WACzD66B,SAAS,EACT8tC,SAAS,EACTO,wBAAwB,EACxBxwE,SAAU,KACVutE,aAAc,GACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,OAtB0BtmE,YEuF/Bl8H,EAAS+vH,uBAAuB20E,GACtCR,EAAWT,EAAkB,MAAO,IAAMH,EAAkB,IAAG,EAsT/DkC,oBAnT0Bn3M,MAAOo3M,EAAUrmE,KAC3C,MAAMslE,EFhEoCe,KACvB,CACnBxD,WAAY,KACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,GACPmkJ,QAAS,aACTC,UAAW,mBACX/yH,QAAU,eAAc0jM,yBACxBjxE,UAAY,cAAaixE,2BACzB1uC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,KEyCkBkD,CAA8BD,GACpDJ,EAA8BxD,EAAqCziE,EAAS,cAAeqmE,GACjG,UACQzlM,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,8BAA+BA,EAC/C,CAEA,UACQs4B,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,2DAA4DA,EAC5E,GAuSAw1N,2BApSiC7uM,MAAO6tI,EAAQkD,KAChD,MAAMslE,EFpD2CxoE,KAC9B,CACnB+lE,WAAY,KACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,EACjB/6N,KAAM,iBACNuJ,MAAOwrJ,EACPrH,QAAS,aACTC,UAAW,eACX/yH,QAAU,4CAA2Cm6H,SACrD1H,UAAY,0CAAyC0H,SACrD66B,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,QE6BiBmD,CAAqCzpE,GAC3DmpE,EAA8BxD,EAAqCziE,EAAS,SAElF,UACQp/H,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,qDAAsDA,EACtE,CAEA,UACQs4B,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,+EAAgFA,EAChG,CAIA,GAA4B,UAFMs4B,EAASiiH,mCAEZ,CAC7B,MAAMyiF,EFqeW,CACnBzC,WAAa,MACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,EACjB/6N,KAAM,iBACNuJ,MAAO,GACPmkJ,QAAU,aACVC,UAAW,iBACX/yH,QAAU,gEACVyyH,UAAW,wEACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,QE1fT,UACQxiM,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,+DAAgEA,EAChF,CACF,GA4QAk+N,mBAzQyBv3M,MAAOw3M,EAAYlrE,KAC5C,MAAM+pE,EFpDkCoB,EAACD,EAAYlrE,KAClC,CACnBsnE,WAAa,MAAKtnE,IAClBjG,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,aACTC,UAAW,iBACX/yH,QAAU,wCAAuC8jM,sBACjDrxE,UAAY,wCAAuCqxE,wBACnD9uC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,KE6BkBsD,CAA6BD,EAAYlrE,GAC/DorE,EFxBa,CACnB9D,WAAa,KACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS,aACTC,UAAW,iBACX/yH,QAAU,0DACVyyH,UAAW,0DACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,GACXC,aAAa,EACbC,SAAU,CAAC,aEGLxiM,EAAS+vH,uBAAuB20E,SAChC1kM,EAAS+vH,uBAAuBg2E,EAAgC,EAsQtEp4C,kBAvOwBt/J,MAAO2gH,EAAaixC,EAAcqI,EAAalpB,KACvE,MAAMslE,EF/BiCsB,EAACh3F,EAAaixC,EAAcqI,KACrE,IAAIvmJ,EAAU,GACVyyH,EAAY,GACZK,EAAU,GACVC,EAAY,GAEhB,OAAQ9lB,GACN,IAAK,UACH6lB,EAAU,aACVC,EAAY,eACZ/yH,EAAW,4BAA2Bk+I,oBACtCzrB,EAAa,gCAA+ByrB,sBAC5C,MACF,IAAK,UACHprB,EAAU,aACVC,EAAY,iBACZ/yH,EAAW,6BAA4Bk+I,oBACvCzrB,EAAa,0BAAyByrB,yBACtC,MACF,IAAK,YACHprB,EAAU,aACVC,EAAY,iBACZ/yH,EAAW,8BAA6Bk+I,oBACxCzrB,EAAa,+BAA8ByrB,sBAC3C,MACF,IAAK,QACHprB,EAAU,aACVC,EAAY,iBACZ/yH,EAAW,gCAA+Bk+I,oBAC1CzrB,EAAa,mCAAkCyrB,sBAC/C,MACF,IAAK,SACHprB,EAAU,sBACVC,EAAY,oBACZ/yH,EAAW,6BAA4Bk+I,oBACvCzrB,EAAa,wBAAuByrB,sBACpC,MACF,IAAK,UACHprB,EAAU,OACVC,EAAY,OACZ/yH,EAAW,6BAA4Bk+I,oBACvCzrB,EAAa,0BAAyByrB,sBACtC,MACF,QAEE,OADAv3K,QAAQhB,MAAM,wBACP,KA2BX,MAxBqB,CACnBu6N,WAAa,OAAM35C,IACnB5zB,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAASA,EACTC,UAAW,GACX/yH,QAASA,EACTyyH,UAAW,GACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GAEO,EEzCWwD,CAA4Bh3F,EAAaixC,EAAcqI,GAEnF,UACQtoJ,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,2CAA4CA,EAC5D,CAEA,GAAoB,YAAhBsnI,EAA2B,CAC7B,MAAMq2F,EAA8BxD,EAAqCziE,EAAS,kBAAmB6gB,GACrG,UACQjgJ,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,+DAAgEA,EAChF,CACF,CAEA,GAAoB,WAAhBsnI,EAA0B,CAC5B,MAAMq2F,EAA8BxD,EAAqCziE,EAAS,kBAAmB6gB,GACrG,UACQjgJ,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,+DAAgEA,EAChF,CACF,GA+MAosN,yBA3M+BzlM,MAAO43M,EAAeC,KACrD,MAAMxB,EFuEwCyB,EAACF,EAAeC,KAC3C,CACnBjE,WAAa,MAAKiE,IAClBxxE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,aACTC,UAAW,iBACX/yH,QAAU,8BAA6BkkM,sBACvCzxE,UAAY,+BAA8ByxE,2BAC1ClvC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,KE9FkB2D,CAAmCF,EAAeC,SACxElmM,EAAS+vH,uBAAuB20E,EAAoB,EA0M1D0B,0BArQgC/3M,UAChC,MAAMq2M,EFyEa,CACnBzC,WAAa,KACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,WACTC,UAAW,cACX/yH,QAAU,sHACVyyH,UAAW,iIACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,IE9FJ6C,EAA8BxD,EAAqCziE,EAAS,UAElF,UACQp/H,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,oDAAqDA,EACrE,CAEA,UACQs4B,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,iEAAkEA,EAClF,GAwPA2+N,2BApPiCh4M,UACjC,MAAMq2M,EFmFa,CACnBzC,WAAa,MACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,WACTC,UAAW,cACX/yH,QAAS,qHACTyyH,UAAW,6HACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,IEvGV,UACQxiM,EAAS+vH,uBAAuB20E,EACxC,CAAE,MAAOh9N,GACPgB,QAAQhB,MAAM,qDAAsDA,EACtE,GA8OAyzM,uBAzM6B9sL,UAAgE,IAAzD,KAAExQ,EAAI,QAAEkkB,EAASm6H,QAASoqE,GAAW,WAAElrB,GAAYxxM,EACvF,MACM86N,EF6FsC96N,KAAwC,IAAvC,KAAEiU,EAAI,QAAEkkB,EAAO,eAAEwkM,GAAgB38N,EAyBhF,MAxBqB,CACnBq4N,WAAa,OAAMpkN,IACnB62I,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS,cACTC,UAAW,UACX/yH,QAAU,WAAUwkM,sCAAmD1oN,IACvE22I,UAAY,WAAU+xE,mCAAgD1oN,IACtEk5K,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GAEO,EEtHWgE,CAAiC,CAAE3oN,OAAMkkB,UAASwkM,eADvDn4N,KAAKoI,IAAI8vN,EAAalrB,WAEvCp7K,EAAS+vH,uBAAuB20E,EAAoB,EAuM1D+B,0BApMgCp4M,UAChC,MAAMq2M,EFqHa,CACnBzC,WAAa,KACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,GACjB/6N,KAAM,iBACNuJ,MAAO,EACPmkJ,QAAS,aACTC,UAAW,eACX/yH,QAAU,6EACVyyH,UAAW,wEACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,UE1IJxiM,EAAS+vH,uBAAuB20E,EAAoB,EAmM1DnjE,mCACAC,2CACA+8D,0BAjYgClwM,UAChC,MAAMq2M,EF6iBa,CACnBzC,WAAa,KACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,UACNuJ,MAAO,EACPmkJ,QAAU,wBACVC,UAAW,yBACX/yH,QAAU,8IACVyyH,UACE,mJACFuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,UEnkBJxiM,EAAS+vH,uBAAuB20E,EAAoB,EAgY1DlG,gCA7XsCnwM,UAqBtC,GAJyB00M,EACtBp1N,QAAQw9I,GAA6C,OAA5BA,EAAa82E,aACtCtuN,MAAMw3I,GAlBYp5E,KACnB,MAAM6U,EAAO,IAAIppD,KAAyB,IAApBu0C,EAAU+pF,SAE1B4qE,EAAc9/I,EAAK+/I,gBAAgB//I,EAAK6B,kBAAoB1W,EAAU8pF,YAAc,KAEpF+qE,EAAa,IAAIppM,KACvBopM,EAAWC,SAAS,EAAG,EAAG,EAAG,GAE7B,MAAMC,EAAW,IAAItpM,KAKrB,OAJAspM,EAASD,SAAS,GAAI,GAAI,GAAI,KAEVH,GAAeE,EAAWnpM,WAAaipM,GAAeI,EAASrpM,SAEjE,EAKMspM,CAAY57E,EAAasJ,mBAGjD,OAAO,KAGT,MAAMiwE,EFykBa,CACnBzC,WAAa,KACbvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,EACjB/6N,KAAM,UACNuJ,MAAO,EACPmkJ,QAAU,gBACVC,UAAW,eACX/yH,QAAU,8CACVyyH,UAAW,uCACXuiC,SAAS,EACT8tC,SAAS,EACTjwE,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,CAAC,aE9lBLxiM,EAAS+vH,uBAAuB20E,EAAoB,EAoW1DsC,2CAlJiD34M,UACjD,GAAI21M,EAAwC,OAE5C,MAAMiD,EAA0B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAQrE5B,EDrU0C6B,EAAC9nE,EAASulE,KAC5D,MAAM,OAAErjF,GAAW8d,EAoEbwlE,EAlEoB,CACxB,CACE3C,WAAa,MACbptE,QAAS,wBACTC,UAAW,GACX/yH,QAAS,oFACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,yFACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,yEACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,8DACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,2DACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,uDACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,IAEZ,CACEP,WAAa,MACbptE,QAAS,sBACTC,UAAW,GACX/yH,QAAS,2DACTyyH,UAAW,GACX0tE,gBAAiB,IACjBM,SAAU,KAIiCt0K,MAAMq6C,IAAYo8H,EAAyBzhL,IAAIqlD,EAAO05H,cAErG,OAAK2C,EAKgB,CACnB3C,WAAY2C,EAAmB3C,WAC/BvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS+vE,EAAmB/vE,QAC5BC,UAAW8vE,EAAmB9vE,UAC9B/yH,QAAS6iM,EAAmB7iM,QAC5ByyH,UAAWowE,EAAmBpwE,UAC9BI,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAUoC,EAAmBpC,SAC7BC,SAAUnhF,EACVohF,YAAY,EACZC,iBAAiB,EACjBC,cAAc,GA3BP,IA6BU,EC+NmBsE,CAAqC9nE,EAN/B,IAAIz2I,IAC5Cq6M,EACGt4M,KAAKygI,GAAiBA,EAAa82E,aACnCt0N,QAAQs0N,GAAegF,EAAwBzzN,SAASyuN,OAIxDoD,UAECrlM,EAASiwH,2BAA2Bo1E,GAC1CpB,GAA0C,GAAK,EAoI/CkD,8CAjIoD94M,MAAO+wI,EAAS0jE,EAAWsE,KAC/E,MAAM/B,ED7N6CgC,EAACjoE,EAAS0jE,EAAWsE,KAC1E,MAAM,OAAE9lF,GAAW8d,EA4BnB,MA1BqB,CACnB6iE,WAAY,MACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS,UACTC,UAAW,GACX/yH,QAAU,eAAc+gM,iBAAyBsE,cACjD5yE,UAAW,GACXI,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GACVC,SAAUnhF,EACVohF,YAAY,EACZC,iBAAiB,EACjBC,cAAc,EAEG,ECgMmByE,CAAwCjoE,EAAS0jE,EAAWsE,GAC1FE,EAAiCzE,EAA2BzjE,EAAS0jE,GAE3E,UACQ9iM,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,6DAA8DA,EAC9E,CAEA,UACQs4B,EAASiwH,2BAA2Bq3E,EAC5C,CAAE,MAAO5/N,GACPgB,QAAQhB,MAAM,0DAA2DA,EAC3E,GAoHA6/N,8CAjHoDl5M,MAAO+wI,EAAS0jE,EAAW0E,KAC/E,MAAMnC,EDvM6CoC,EAACroE,EAAS0jE,EAAW0E,KAC1E,MAAM,OAAElmF,GAAW8d,EA4BnB,MA1BqB,CACnB6iE,WAAY,MACZvtE,eAAgB,KAChBC,QAAQ,EACRmM,UAAU,EACVrM,gBAAiB,KACjB4M,eAAgB,KAChB6gE,gBAAiB,IACjB/6N,KAAM,eACNuJ,MAAO,EACPmkJ,QAAS,UACTC,UAAW,GACX/yH,QAAU,eAAc+gM,iBAAyB0E,qBACjDhzE,UAAW,GACXI,SAAU,KACVutE,aAAc,EACdC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,aAAa,EACbC,SAAU,GACVC,SAAUnhF,EACVohF,YAAY,EACZC,iBAAiB,EACjBC,cAAc,EAEG,EC0KmB6E,CAAwCroE,EAAS0jE,EAAW0E,GAC1FF,EAAiCzE,EAA2BzjE,EAAS0jE,GAE3E,UACQ9iM,EAASiwH,2BAA2Bo1E,EAC5C,CAAE,MAAO39N,GACPgB,QAAQhB,MAAM,6DAA8DA,EAC9E,CAEA,UACQs4B,EAASiwH,2BAA2Bq3E,EAC5C,CAAE,MAAO5/N,GACPgB,QAAQhB,MAAM,0DAA2DA,EAC3E,GAoGAggO,mDAhGyDr5M,UACzD,MAAMg3M,EAA8BxD,EAAqCziE,EAAS,gCAC5Ep/H,EAASiwH,2BAA2Bo1E,EAA4B,EAgGvE,sEChcI,MAAM7nD,EAA4B,CACvC,CACEmqD,YAAa,CAAC,SAAU,SACxBC,KAAM,wKACNtH,OAAQ,+BACRj3N,IAAK,SACLwwF,KAAM,sBACNguI,OAAQ,CAAC,eAAgB,kBACzBvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,iBACdC,KAAM,wKACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,gCACNguI,OAAQ,CAAC,YAAa,kBACtBvV,SAAU,6BACVxoN,MAAO,QACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,kBAC5BmH,OACE,yKACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,2KACNtH,OAAQ,yCACRj3N,IAAK,mBACLwwF,KAAM,sCACNguI,OAAQ,CAAC,WAAY,gBAAiB,gBACtCvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,wBAClBC,2BAA4B,KAC5BmH,OACE,gLACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,0JACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,4BACNguI,OAAQ,CAAC,gBAAiB,gBAC1BvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OACE,qLACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,kKACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,yBACNguI,OAAQ,CAAC,mBACTvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,UAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,4MACNtH,OAAQ,KACRj3N,IAAK,YACLwwF,KAAM,yBACNguI,OAAQ,GACRvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,+JACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,8BACNguI,OAAQ,CAAC,YAAa,iBAAkB,eAAgB,gBACxDvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,gBAClBC,2BAA4B,KAC5BmH,OACE,4KACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,YAAa,SAC3BC,KAAM,mKACNtH,OAAQ,KACRj3N,IAAK,kBACLwwF,KAAM,wCACNguI,OAAQ,GACRvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,oLACNtH,OAAQ,KACRj3N,IAAK,mBACLwwF,KAAM,qBACNguI,OAAQ,CAAC,sBACTvV,SAAU,6BACVxoN,MAAO,WACP22N,cAAe,OACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,yNACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,4BACNguI,OAAQ,CAAC,yBACTvV,SAAU,6BACVxoN,MAAO,eACP22N,cAAe,OACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,mKACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,kKACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,uBACNguI,OAAQ,CAAC,oBACTvV,SAAU,6BACVxoN,MAAO,QACP22N,cAAe,OACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,KACRC,gBAAiB,KACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,8JACNtH,OAAQ,4BACRj3N,IAAK,MACLwwF,KAAM,6BACNguI,OAAQ,CAAC,WAAY,kBACrBvV,SAAU,6BACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,WAClBC,2BAA4B,KAC5BmH,OACE,2JACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,6LACNtH,OAAQ,oCACRj3N,IAAK,cACLwwF,KAAM,uBACNguI,OAAQ,CAAC,WAAY,oBACrBvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,mBAClBC,2BAA4B,KAC5BmH,OACE,4LACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,6KACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,wBACNguI,OAAQ,CAAC,kBAAmB,kBAC5BvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,kBAClBC,2BAA4B,KAC5BmH,OACE,wLACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,iLACNtH,OAAQ,kCACRj3N,IAAK,YACLwwF,KAAM,oBACNguI,OAAQ,CAAC,iBAAkB,yBAA0B,kBACrDvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,iBAClBC,2BAA4B,iBAC5BmH,OACE,mLACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,2KACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,gCACNguI,OAAQ,CAAC,kBAAmB,kBAC5BvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,kBAClBC,2BAA4B,KAC5BmH,OACE,2LACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,gKACNtH,OAAQ,uCACRj3N,IAAK,iBACLwwF,KAAM,kBACNguI,OAAQ,CAAC,sBAAuB,kBAChCvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,kLACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,6KACNtH,OAAQ,8BACRj3N,IAAK,QACLwwF,KAAM,uCACNguI,OAAQ,CAAC,aAAc,qBAAsB,kBAC7CvV,SAAU,GACVxoN,MAAO,OACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,6KACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,iBACdC,KAAM,iLACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,mBACNguI,OAAQ,CAAC,oBAAqB,gBAAiB,kBAC/CvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,gBAC5BmH,OACE,gMACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,yRACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,kBACNguI,OAAQ,CAAC,eAAgB,uBAAwB,kBACjDvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,uRACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,0KACNtH,OAAQ,yCACRj3N,IAAK,mBACLwwF,KAAM,yBACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,mBACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,sKACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,GACbC,KAAM,4KACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,6BACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,8KACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,uLACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,wBACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,OACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,gLACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,6KACNtH,OAAQ,qCACRj3N,IAAK,eACLwwF,KAAM,kCACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,0MACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,2LACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,sBACNguI,OAAQ,CAAC,iBACTvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,gBAClBC,2BAA4B,KAC5BmH,OACE,yLACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,6LACNtH,OAAQ,kCACRj3N,IAAK,YACLwwF,KAAM,qBACNguI,OAAQ,CAAC,iBAAkB,uBAAwB,iBAAkB,iBACrEvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,iBAClBC,2BAA4B,KAC5BmH,OACE,6KACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,kLACNtH,OAAQ,sCACRj3N,IAAK,gBACLwwF,KAAM,yBACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,4KACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,0MACNtH,OAAQ,4BACRj3N,IAAK,MACLwwF,KAAM,oCACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,4MACFC,gBAAiB,KACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,mMACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,+BACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,oMACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,gMACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,6BACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,qKACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,oLACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,mBACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,uLACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,oLACNtH,OAAQ,uCACRj3N,IAAK,iBACLwwF,KAAM,kBACNguI,OAAQ,CAAC,uBACTvV,SAAU,GACVxoN,MAAO,OACP22N,cAAe,QACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OACE,sLACFC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,GACbC,KAAM,0KACNtH,OAAQ,mCACRj3N,IAAK,aACLwwF,KAAM,cACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,aACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,mLACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,SAAU,SACxBC,KAAM,0LACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,2BACNguI,OAAQ,CAAC,sBAAuB,aAAc,2BAA4B,sBAAuB,kBACjGvV,SAAU,GACVxoN,MAAO,eACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,mLACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,+JACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,cACNguI,OAAQ,CAAC,kBAAmB,kBAAmB,kBAC/CvV,SAAU,GACVxoN,MAAO,UACP22N,cAAe,OACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OACE,qKACFC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,GACbC,KAAM,8JACNtH,OAAQ,kCACRj3N,IAAK,YACLwwF,KAAM,6BACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,YACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OACE,6JACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,oKACNtH,OAAQ,6BACRj3N,IAAK,OACLwwF,KAAM,iBACNguI,OAAQ,CAAC,kBACTvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,iBAClBC,2BAA4B,KAC5BmH,OACE,4LACFC,gBAAiB,MACjBC,gBAAiB,SACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CAEEyH,YAAa,CAAC,UACdC,KAAM,qKACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,4BACNguI,OAAQ,CAAC,kBACTvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OAAQ,uKACRC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CAEEyH,YAAa,CAAC,SACdC,KAAM,oKACNtH,OAAQ,4BACRj3N,IAAK,MACLwwF,KAAM,YACNguI,OAAQ,GACRvV,SAAU,GACVxoN,MAAO,MACP22N,cAAe,OACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,wKACRC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,yLACNtH,OAAQ,4BACRj3N,IAAK,MACLwwF,KAAM,uBACNguI,OAAQ,CAAC,iBAAkB,YAC3BvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,WAClBC,2BAA4B,KAC5BmH,OAAQ,4LACRC,gBAAiB,MACjBC,gBAAiB,KACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,+KACNtH,OAAQ,iCACRj3N,IAAK,WACLwwF,KAAM,6BACNguI,OAAQ,CAAC,eAAgB,wBACzBvV,SAAU,GACVxoN,MAAO,YACP22N,cAAe,QACfC,iBAAkB,gBAClBC,2BAA4B,KAC5BmH,OAAQ,oKACRC,gBAAiB,MACjBC,gBAAiB,OACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,2KACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,UACNguI,OAAQ,CAAC,gBACTvV,SAAU,GACVxoN,MAAO,SACP22N,cAAe,QACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OAAQ,kLACRC,gBAAiB,MACjBC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,QACdC,KAAM,kMACNtH,OAAQ,gCACRj3N,IAAK,UACLwwF,KAAM,gBACNguI,OAAQ,CAAC,sBAAuB,0BAChCvV,SAAU,GACVxoN,MAAO,UACP22N,cAAe,QACfC,iBAAkB,eAClBC,2BAA4B,KAC5BmH,OAAQ,4MACRC,gBAAiB,MACjBC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,qKACNtH,OAAQ,kCACRj3N,IAAK,YACLwwF,KAAM,aACNguI,OAAQ,CAAC,YAAa,kBACtBvV,SAAU,GACVxoN,MAAO,eACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,sLACRC,gBAAiB,MACjBC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,kKACNtH,OAAQ,6BACRj3N,IAAK,OACLwwF,KAAM,OACNguI,OAAQ,CAAC,YAAa,kBACtBvV,SAAU,GACVxoN,MAAO,eACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,+JACRC,gBAAiB,MACjBC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,MAE5B,CACEyH,YAAa,CAAC,UACdC,KAAM,4KACNtH,OAAQ,kCACRj3N,IAAK,YACLwwF,KAAM,oBACNguI,OAAQ,CAAC,iBAAkB,wBAAyB,wBAAyB,iBAAkB,kBAC/FvV,SAAU,GACVxoN,MAAO,aACP22N,cAAe,QACfC,iBAAkB,KAClBC,2BAA4B,KAC5BmH,OAAQ,8KACRC,gBAAiB,MACjBC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,EACfzhN,MAAO,KACPy5M,yBAA0B,QAG3BxwN,MAAK,SAAUjB,EAAGC,GACjB,OAAOD,EAAEorF,OAASnrF,EAAEmrF,KAAO,EAAIprF,EAAEorF,KAAOnrF,EAAEmrF,MAAQ,EAAI,CACxD,sDCv8BF,IARkBjwF,IAAuB,IAAtB,MAACqhH,EAAK,QAAEkrC,GAAQvsJ,EACjC,OACEw/F,EAAAA,cAAA,UAAQzpD,UAAU,aAAaw2G,QAASA,GACrC,KAAMlrC,EACA,qDCWb,IAfmBrhH,IAAgB,IAAf,QAACusJ,GAAQvsJ,EAC3B,MAAMu+N,EACJ/+H,EAAAA,cAAA,OAAKj/F,MAAM,KAAKC,OAAO,KAAKq3L,QAAQ,YAAY9rJ,KAAK,OAAO0zK,MAAM,8BAChEjgH,EAAAA,cAAA,QAAMzwD,EAAE,g9CAAg9ChD,KAAK,iBAC79CyzD,EAAAA,cAAA,QAAMzwD,EAAE,g9CAAg9C+oJ,OAAO,kBAIn+C,OACEt4F,EAAAA,cAAA,UAAQzpD,UAAU,cAAcw2G,QAASA,GACtCgyE,EACM,4GCGb,MAlBiBC,KACb,MAAM,EAACC,EAAU,EAACC,IAAgBp8N,EAAAA,EAAAA,WAAS,GAW3C,MAAO,CACHm8N,EAVJ,SAAgB5hN,GAGR6hN,EADiB,kBAAV7hN,EACMA,GAEC4hN,EAEtB,EAKC,8GC2JL,MAjK4Bz+N,IAA0C,IAAzC,KAAEykF,EAAI,0BAAEk6I,GAA2B3+N,EAC9D,MAAM,EAAC65L,EAAQ,EAAC+kC,IAAct8N,EAAAA,EAAAA,WAAS,IACjC,SAAE8zB,EAAQ,QAAEo/H,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,IACnC1mC,GAAW4nB,EAAAA,EAAAA,gBACX,SAAEt4B,EAAQ,SAAEizC,EAAQ,KAAEwT,GAAS/1C,GAE/B,OAAE76C,IAAW+rH,EAAAA,EAAAA,KAgBb0zE,EAAep6M,UACnB,MAAMq/G,QAAgB1tG,EAASunH,oBAI7BihF,IAHG96F,EAIL,EAGIg7F,EAAsB,WAAUtiH,IAAsB,UAAXp9E,EAAqB,SAAW,cAAco2H,EAAQ9d,SAkBvG,OAPA90I,EAAAA,EAAAA,YAAU,KAEJ4yJ,IAAuC,IAA5BA,EAAQ3X,iBACrB+gF,GAAW,EACb,GACC,CAACppE,IAGFh2D,EAAAA,cAACyuF,EAAAA,EAAK,CAACl4I,UAAU,wBAAwB0uC,KAAMA,EAAM0pG,OAAQA,IAAMwwC,IAA6B90L,KAAK,KAAKwkJ,WAAW,GACnH7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,wCAAwCu/B,eAAe,sBAGhFggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,OACEzpD,UAAU,aACV51C,MAAO,CACL2tL,gBAAiB,aACjBlhC,WAAY,SAGdptD,EAAAA,cAAA,SAAOr/F,MAAO,CAAEysJ,WAAY,SAC1BptD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,8CAA8Cu/B,eAAe,uBAAwB,IACzGq6J,EAAUr6F,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,YAAYu/B,eAAe,OAAUggE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,aAAau/B,eAAe,SAGxHggE,EAAAA,cAACu/H,EAAAA,EAAKC,MAAK,CACT/+N,GAAK,iCACL81C,UAAU,mBACVx4C,KAAK,SAELs8L,QAASA,EACTrrK,SAAWiF,GAnEQhP,WACvBgP,EAAExtB,OAAO4zL,QACXglC,UAGsBzoM,EAAS4nH,qBAI7B4gF,GAAW,GAFX9/N,QAAQhB,MAAM,sCAIlB,EAwDyBivN,CAAqBt5L,OA+C5C+rE,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACVsK,GACCr6F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SAAOr/F,MAAO,CAAE0rM,UAAW,SACzBrsG,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mCAAmCu/B,eAAe,gBAEzEggE,EAAAA,cAAA,OAAKr/F,MAAO,CAAEL,QAAS,OAAQ4rK,aAAc,SAC3ClsE,EAAAA,cAAA,SACEjiG,KAAK,OACL4C,MAAO,CACL2tL,gBAAiB,OACjBnI,SAAU,OACVplL,MAAO,OAETqX,aAAcknN,EACdzoN,UAAU,IAEZmpF,EAAAA,cAAA,UACEr/F,MAAO,CAAE65L,WAAY,QACrBz8L,KAAK,SACLgvJ,QA7GK0yE,KACjBxoM,UAAUyoM,UAAUC,UAAUL,IAE9Bz0D,EAAAA,EAAAA,GAAkB,CAChBpf,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,4CAA4Cu/B,eAAe,qCACzFjiC,KAAM,WACN,GAyGUiiG,EAAAA,cAAC7pD,EAAAA,EAAe,CAACk2G,MAAO,UAAWnpH,KAAM08L,EAAAA,IAAQv1L,KAAK,SAI1D21D,EAAAA,cAAA,KAAGpC,KAAO,GAAa,UAAXh+D,EAAqB,SAAW,cAAco2H,EAAQ9d,SAAUzxI,OAAO,UACjFu5F,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,8CAA8Cu/B,eAAe,0BACzFiwJ,UAAU,OAMd,wBCxKZ,EAAe,IAA0B,6DCAzC,EAAe,IAA0B,4DCAzC,EAAe,IAA0B,4DCAzC,EAAe,IAA0B,iGCElC,MCAM4vC,EAAsBj1E,GAC5BA,GAA4B,IAAlBA,EAAOrsJ,OAIf,CACL,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,SACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,MAIZ,IAAIy1L,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEm6D,EAAOr6H,KAAK,cA9BpB,GCFE6vM,EAAyBv1E,GAC/BA,GAAkC,IAArBA,EAAUtsJ,OAIrB,CACL,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,YACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,MAIZ,IAAIy1L,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEo6D,EAAUt6H,KAAK,cA9BvB,GCFE8vM,EAAsBC,GAC5BA,EAIE,CACL,IAAIR,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,KAEVK,UAAWC,EAAAA,cAAcC,OACzB7lN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM6vI,QAXL,GCoGX,MA3FwBI,CACtBjsN,EACAovG,EACAxmG,EACAgkI,EACAs/E,EACAzjB,EACA0jB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAr2E,EACAC,EACAq2E,EACAZ,KAEA,MAAMa,EAAgB,CACpB,WC1BkCC,ED0BElkB,ECzBjCkkB,GAAwD,IAAhCA,EAAqB7iO,OAI5C,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,YACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACC6wH,EACA9/M,KAAI49H,IACH,IAAImiF,EAAcniF,EAAWoiF,OAAS,iBACtC,MAAMp2D,EAAShsB,EAAWgsB,QAAU,SAC9BzwF,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAYzqC,EAAWyqC,WAAa,GAC1C,IAAIF,EAAUvqC,EAAWuqC,SAAW,GAapC,OAVIvqC,EAAWsiF,SACbH,EAAe,GAAEniF,EAAWsiF,WAAWH,KAKrC13C,IAAcF,IAChBA,EAAU,WAGN,CACJ,IAAIq2C,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEy6E,IACT80D,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE4wI,OAAiB5mJ,MAE5B,IAAIslJ,EAAAA,QAAQ,CACVtvI,KAAOk5F,EAAa,OAAK83C,EAAAA,EAAAA,IAAqB93C,EAAWF,KAAa,SAG1EpoK,QAAAkvF,EAAAA,EAAAA,GACCgxH,EACAjgN,KACCogN,GACE,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIf,IAGNw3L,SArFI,IDyBP,MJ/B6BC,EI+BHnB,EJ9BvBmB,GAA8C,IAA3BA,EAAgBvjO,OAIlC,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,kBACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCuxH,EACAxgN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,YAAW,SACnBi1L,EAAW,gBAAe,SAC1BtnJ,EAAW,WAAU,aACrB8mJ,EAAe,GAAE,UACjB53C,EAAY,GAAE,QACdF,EAAU,WACRvqC,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE3jD,IACTkzL,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,MAGZ,IAAIJ,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEsxI,OAActnJ,OAAckvG,OAAeF,IACpDp/I,KAAM,SAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgxH,EAAajgN,KACdogN,GACE,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIf,IAGJw3L,SAzEI,II8BP,YEhCmCG,EFgCGjB,EE/BnCiB,GAA0D,IAAjCA,EAAsBzjO,OAI9C,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,wBACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCyxH,EACA1gN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,QAAO,SACf2tC,EAAW,WAAU,YACrBwnJ,EAAc,cAAa,aAC3BV,EAAe,GAAE,UACjB53C,EAAY,GAAE,QACdF,EAAU,WACRvqC,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM3jD,EACNkzL,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEwxI,OAAiBxnJ,OAAckvG,OAAeF,UAG3DpoK,QAAAkvF,EAAAA,EAAAA,GACCgxH,EACAjgN,KACCogN,GACE,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIf,IAGNw3L,SAzEI,IF+BP,WGjCkCK,EHiCEtB,EGhCjCsB,GAAwD,IAAhCA,EAAqB3jO,OAI5C,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,YACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACC2xH,EACA5gN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,QAAO,SACfi1L,EAAW,eAAc,SACzBtnJ,EAAW,WAAU,aACrB8mJ,EAAe,GAAE,UACjB53C,EAAY,GAAE,QACdF,EAAU,WACRvqC,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE3jD,IACTzC,KAAM,GACN21L,MAAM,OAIZ,IAAIF,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEsxI,OAActnJ,OAAckvG,OAAeF,UAGxDpoK,QAAAkvF,EAAAA,EAAAA,GACCgxH,EACAjgN,KACCogN,GACE,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIf,IAGNw3L,SAzEI,IHgCP,OI/B8BM,EJ+BFtB,EI9BzBsB,GAAkD,IAA7BA,EAAkB5jO,OAItC,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,oBACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACC4xH,EACA7gN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,QAAO,cACfs1L,EAAgB,GAAE,OAClBC,EAAS,SAAQ,aACjBd,EAAe,GAAE,QACjB93C,EAAU,IACRvqC,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE3jD,IACTkzL,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE4xI,IAASD,GAAkB,qBAAoBA,SAAsB34C,IAC9Ep/I,KAAM,SAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgxH,EAAajgN,KAAIogN,GAClB,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIb,IAGJw3L,SAvEI,IJ8BP,MKnC6BS,ELmCHxB,EKlCvBwB,GAA8C,IAA3BA,EAAgB/jO,OAIlC,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,kBACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACC+xH,EACAhhN,KAAI49H,IACH,MAAM,UACJwoC,EAAY,YAAW,aACvB65C,EAAe,GAAE,QACjB93C,EAAU,IACRvqC,EACJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEi3F,IACTs4C,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEg5F,IACTp/I,KAAM,SAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgxH,EAAajgN,KAAIogN,GAClB,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIb,IAGJw3L,SAjEI,ILkCP,aMjCoCU,ENiCIvB,EMhCrCuB,GAA4D,IAAlCA,EAAuBhkO,OAIhD,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,8BACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgyH,EACAjhN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,oBAAmB,OAC3Bu1L,EAAS,SAAQ,aACjBd,EAAe,GAAE,QACjB93C,EAAU,IACRvqC,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM3jD,EACNkzL,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAE4xI,IAASA,GAAU54C,GAAW,QAAQA,IAC/Cp/I,KAAM,SAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgxH,EAAajgN,KAAIogN,GAClB,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIb,IAGJw3L,SAtEI,INgCP,YOlCmCW,EPkCGvB,EOjCnCuB,GAA0D,IAAjCA,EAAsBjkO,OAI9C,CACJ,IAAIuhO,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,aACNuvI,MAAM,EACN31L,KAAM,MAGV41L,QAAS,CACPC,OAAQ,KAEVh/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCiyH,EACAlhN,KAAI49H,IACH,MAAM,MACJpyG,EAAQ,eAAc,OACtBo+H,EAAS,SAAQ,aACjBq2D,EAAe,IACbriF,EAEJ,MAAM,CACJ,IAAI4gF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM3jD,EACNkzL,MAAM,EACN31L,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMy6E,EACN7gI,KAAM,SAGVhpB,QAAAkvF,EAAAA,EAAAA,GACCgxH,EAAajgN,KAAIogN,GAClB,IAAI5B,EAAAA,UAAU,CACZ6B,OAAQ,CACN5nK,MAAO,GAETn/C,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMixI,EACNE,KAAM,UACNv3L,KAAM,WAIb,IAGJw3L,SArEI,IPiCP,OAAUhC,EAAoBj1E,GAC9B,UAAaw1E,EAAuBv1E,GACpC,aAAgBw1E,EAAmBC,IOrCAkC,MDACD,EDHPD,EDGCH,EDHID,EDACF,ENANF,EKIKV,EDuCpC,MAAO,CACL/5L,OAAQ,CACNo7L,gBAAiB,CACf,CACEhuN,KAAM,SACNhU,GAAI,eACJiiO,IAAK,CACHd,KAAM,UACNv3L,KAAM,IAERs4L,UAAW,CACTf,KAAM,UACNv3L,KAAM,OAKdu4L,SAAU,CACR,CACE15J,QAAS,CACPwS,QAAS,IAAIozG,EAAAA,OAAO,CAClBl0K,SAAU,CACR,IAAIklN,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEh8E,QAAAA,EAAQ,SACjBmtN,KAAM,UACNv3L,KAAM,GACN21L,MAAM,KAGVO,UAAWC,EAAAA,cAAcC,OACzBT,MAAM,IAER,IAAIF,EAAAA,UAAU,CACZrvI,KAAO,GAAEozB,GAAc,WACrBxmG,GAAgB,qBACJgkI,QAAAA,EAAS,UACvBk/E,UAAWC,EAAAA,cAAcC,aAKjC3yN,WAAY,CACV6lD,KAAM,CACJ1yD,OAAQ,CACNyE,IAAK,EACLiB,MAAO,IACPE,OAAQ,IACRpB,KAAM,OAIZmV,SAAUsmN,EAAa5/M,KAAIvjB,GAAQojO,EAAcpjO,IAAS,KAAI8jO,SAGnE,EQ3FI,MAAMgB,EAAepyI,GACnB,IAAIqvI,EAAAA,UAAU,CACnBllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMA,EACNpmD,KAAM,GACNu3L,KAAM,UACNkB,iBAAkB,GAClB9C,MAAM,KAGVO,UAAWC,EAAAA,cAAcC,OACzBv/N,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,IAGV41L,QAAS,CAAEC,OAAQ,GAAI6C,MAAO,OA8BrBC,EAAoBvyI,GAC1BA,EAAK5/C,OAEH,IAAIivL,EAAAA,UAAU,CACnBrvI,KAAMA,EACNkxI,OAAQ,CACN5nK,MAAO,GAET1vB,KAAM,KAPiB,KAyBd44L,EAAoB,IAAInD,EAAAA,UAAU,CAC7CllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,GACNpmD,KAAM,QAKC64L,EAAsBA,CAACp2L,EAAOkoI,EAAc2U,EAAWF,KAClE,MAAM1+J,GAAW02M,EAAAA,EAAAA,IAAqB93C,EAAWF,GACjD,OAAO,IAAIq2C,EAAAA,UAAU,CACnBqD,SAAU,CACR,CACErjO,SAAU,MACV/B,KAAMqlO,EAAAA,YAAYC,QAGtBzoN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACNtvI,KAAM3jD,EACNkzL,MAAM,EACNsD,SAAS,EACTj5L,KAAM,KAEZ,IAAI01L,EAAAA,QAAQ,CACVtvI,KAAM,MACNuvI,MAAM,EACN31L,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVtvI,KAAMukF,EACNgrD,MAAM,EACN31L,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJx4M,GAEFsf,KAAM,OAGV,EAGSm5L,EAAsBA,CAAC97C,EAAWxyC,IACtC,IAAI4qF,EAAAA,UAAU,CACnBqD,SAAU,CACR,CACErjO,SAAU,MACV/B,KAAMqlO,EAAAA,YAAYC,QAGtBzoN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMi3F,EACNs4C,MAAM,EACNsD,SAAS,EACTj5L,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJruF,GAEF7qG,KAAM,QCtJDo5L,EAA+BA,CAAC1lO,EAAMwqB,KACjD,IAAKxqB,IAASwqB,IAAUA,EAAMhqB,OAC5B,MAAO,GAGT,MAAMmlO,EAAcn7M,EAAMgI,KAAK,MAE/B,MAAO,CACLsyM,EAAa9kO,EAAKktC,gBD+DsBwlD,EC9DZizI,EDgEvB,IAAI5D,EAAAA,UAAU,CACnBllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMA,EACNpmD,KAAM,SCnEV44L,GD6DwCxyI,KC5DzC,ECNYkzI,EAAqB7C,GAC3BA,GAAwB,IAAhBA,EAAKviO,OAIZ,CACJskO,EAAa,qBAAmBxhN,QAAAkvF,EAAAA,EAAAA,GAC7BuwH,EACAv8N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMwoC,EAAYxoC,EAAWwoC,WAAa,YACpCxyC,EAAOgK,EAAWuqC,SAAW,cACnC,IAAI83C,EAAeriF,EAAWqiF,cAAgB,GAE9C,MAAM,CACJiC,EAAoB97C,EAAWxyC,IAAK7zH,QAAAkvF,EAAAA,EAAAA,GACjCgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAfhB,GCNA5C,EAAsBC,GAC5BA,EAIE,CACL,IAAIR,EAAAA,UAAU,CACZS,UAAWC,EAAAA,cAAcC,OACzB7lN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM6vI,OAIZ2C,GAZO,GCwFX,MAhF2BW,CACzBnvN,EACAovG,EACAxmG,EACAgkI,EACAs/E,EACAzjB,EACA0jB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAr2E,EACAC,EACAq2E,EACAZ,KAEA,MAAMa,EAAgB,CACrB,WC9BoCC,ED8BAlkB,EC7BhCkkB,GAAwD,IAAhCA,EAAqB7iO,OAI5C,CACJskO,EAAa,cAAYxhN,QAAAkvF,EAAAA,EAAAA,GACtB6wH,EACA78N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,IAAImiF,EAAcniF,EAAWoiF,OAAS,QACtC,MAAMp2D,EAAShsB,EAAWgsB,QAAU,SAC9Bq2D,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAYzqC,EAAWyqC,WAAa,GAC1C,IAAIF,EAAUvqC,EAAWuqC,SAAW,GAapC,OAVIvqC,EAAWsiF,SACbH,EAAe,GAAEniF,EAAWsiF,WAAWH,KAKrC13C,IAAcF,IAChBA,EAAU,WAGN,CACJy5C,EAAoBh4D,EAAQm2D,EAAa13C,EAAWF,IAAQpoK,QAAAkvF,EAAAA,EAAAA,GACzDgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MA5BhB,ID6BP,ME/B6BnB,EF+BHnB,EE9BvBmB,GAA8C,IAA3BA,EAAgBvjO,OAIlC,CACJskO,EAAa,oBAAkBxhN,QAAAkvF,EAAAA,EAAAA,GAC5BuxH,EACAv9N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,YAC5Bi1L,EAAW7iF,EAAW6iF,UAAY,WAClCR,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAWzqC,EAAWyqC,WAAa,YACnCF,EAAUvqC,EAAWuqC,SAAW,UAEtC,MAAM,CACJy5C,EAAoBp2L,EAAOi1L,EAAUp4C,EAAWF,IAAQpoK,QAAAkvF,EAAAA,EAAAA,GACrDgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAjBhB,IF8BP,YGhCmCjB,EHgCGjB,EG/BnCiB,GAA0D,IAAjCA,EAAsBzjO,OAI9C,CACJskO,EAAa,0BAAwBxhN,QAAAkvF,EAAAA,EAAAA,GAClCyxH,EACAz9N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bm1L,EAAc/iF,EAAW+iF,aAAe,cACxCV,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAWzqC,EAAWyqC,WAAa,YACnCF,EAAUvqC,EAAWuqC,SAAW,UAEtC,MAAM,CACJy5C,EAAoBp2L,EAAOm1L,EAAat4C,EAAWF,IAAQpoK,QAAAkvF,EAAAA,EAAAA,GACxDgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAjBhB,IH+BP,WIjCkCf,EJiCEtB,EIhCjCsB,GAAwD,IAAhCA,EAAqB3jO,OAI5C,CACJskO,EAAa,yBAAuBxhN,QAAAkvF,EAAAA,EAAAA,GACjC2xH,EACA39N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5BkoI,EAAe91B,EAAW6iF,UAAY,eACtCR,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAWzqC,EAAWyqC,WAAa,YACnCF,EAAUvqC,EAAWuqC,SAAW,UAEtC,MAAM,CACJy5C,EAAoBp2L,EAAOkoI,EAAc2U,EAAWF,IAAQpoK,QAAAkvF,EAAAA,EAAAA,GACzDgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAjBhB,IJgCP,OK7B+BY,EL6BFhD,EK5B1BgD,GAAgD,IAA5BA,EAAiBtlO,OAIpC,CACJskO,EAAa,WAASxhN,QAAAkvF,EAAAA,EAAAA,GACnBszH,EACAt/N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,cAC5Bu1L,EAASnjF,EAAWmjF,QAAU,SAC9Bd,EAAeriF,EAAWqiF,cAAgB,GAC1C/jJ,EAAO0hE,EAAWuqC,SAAW,aAEnC,MAAM,CACJy5C,EAAoBp2L,EAAOu1L,EAAQ,GAAI7kJ,IAAKn8D,QAAAkvF,EAAAA,EAAAA,GACzCgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAhBhB,IL4BP,KAAQU,EAAkB7C,GAC1B,aM/BoCyB,EN+BIvB,EM9BrCuB,GAA4D,IAAlCA,EAAuBhkO,OAIhD,CACJskO,EAAa,gCAA8BxhN,QAAAkvF,EAAAA,EAAAA,GACxCgyH,EACAh+N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,oBAC5Bu1L,EAASnjF,EAAWmjF,QAAU,SAC9Bd,EAAeriF,EAAWqiF,cAAgB,GAC1C/jJ,EAAO0hE,EAAWuqC,SAAW,GAEnC,MAAM,CACJy5C,EAAoBp2L,EAAOu1L,EAAQ,GAAI7kJ,IAAKn8D,QAAAkvF,EAAAA,EAAAA,GACzCgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAhBhB,IN8BP,YOhCmCT,EPgCGvB,EO/BnCuB,GAA0D,IAAjCA,EAAsBjkO,OAI9C,CACJskO,EAAa,eAAaxhN,QAAAkvF,EAAAA,EAAAA,GACvBiyH,EACAj+N,QAAO26I,GAAcA,IACrBv8C,SAAQu8C,IACP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,eAC5Bo+H,EAAShsB,EAAWgsB,QAAU,SAC9Bq2D,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,CACJ2B,EAAoBp2L,EAAOo+H,EAAQ,GAAI,KAAG7pJ,QAAAkvF,EAAAA,EAAAA,GACvCgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,CAC9C29N,GAAiB,MAfhB,IP+BP,OAAUQ,EAA6B,SAAU74E,GACjD,UAAa64E,EAA6B,YAAa54E,GACvD,aAAgBw1E,EAAmBC,IOnCAkC,MDACD,EDALsB,EDLG3B,EDACF,EDANF,EDAMV,ED2CrC,MAAO,CACL/5L,OAAQ,CACNq0C,QAAS,CACPhwE,SAAU,CACRg3N,IAAK,CACHd,KAAM,cAKdgB,SAAU,CACR,CACE90N,WAAY,CACV6lD,KAAM,CACJ1yD,OAAQ,CACNyE,IAAK,IACLiB,MAAO,IACPE,OAAQ,IACRpB,KAAM,OAIZmV,SAAS,CAEP,IAAIklN,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAO,GAAEh8E,IACT41B,KAAM,GACNu3L,KAAM,UACNkB,iBAAkB,MAEpB,IAAI/C,EAAAA,QAAQ,CACVtvI,KAAO,GAAEozB,GAAQ,WAAWxmG,GAAS,aAAagkI,IAClDh3G,KAAM,GACNy5L,MAAO,IAETb,GAEF1C,UAAWC,EAAAA,cAAcC,UACzBp/M,QAAAkvF,EAAAA,EAAAA,GACE2wH,EAAa5/M,KAAIvjB,GAAQojO,EAAcpjO,IAAS,KAAI8jO,WAI/D,EQhFI,MAAMgB,EAAepyI,IAC1B,MAAMszI,EAAiB,IAAIjE,EAAAA,UAAU,CACnCkE,QAAS,CACPjmO,KAAMkmO,EAAAA,YAAYC,MAClB33L,KAAM,UAER3xB,SAAU,CAAC,IAAImlN,EAAAA,QAAQ,CAAEtvI,KAAM,IAAUpmD,KAAM,OAEjD,MAAO,CACL44L,EACAc,EACA,IAAIjE,EAAAA,UAAU,CACZr0E,QAAS04E,EAAAA,aAAaC,UACtBJ,QAAS,CACPjmO,KAAMkmO,EAAAA,YAAYC,MAClB33L,KAAM,UAER3xB,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,IAAMA,EACZpmD,KAAM,GACNgiH,MAAO,cAIb03E,EACD,EAGUM,EAAkBA,CAC7B7iO,EACAwzK,EACAv6F,EACAkvG,EACAF,KAEA,MAAM1+J,GAAW02M,EAAAA,EAAAA,IAAqB93C,EAAWF,GAC3C66C,EAAc,GAAEtvD,IAAeA,GAAgBv6F,GAAY,QAAQA,IAEzE,MAAO,CACL8pJ,EAAmB/iO,EAAMupB,GACzB,IAAI+0M,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM6zI,EACNj6L,KAAM,QAIb,EAGU24L,EAAoBvyI,GAC1BA,EAAK5/C,OAEH,IAAIivL,EAAAA,UAAU,CACnBrvI,KAAMA,EACNkxI,OAAQ,CACN5nK,MAAO,GAET1vB,KAAM,KAPiB,KAWd44L,EAAoB,IAAInD,EAAAA,UAAU,CAC7CllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM,GACNpmD,KAAM,QAKCk6L,EAAqBA,CAACC,EAAUC,IACpC,IAAI3E,EAAAA,UAAU,CACnBG,QAAS,CACPC,OAAQ,IAEViD,SAAU,CACR,CACErjO,SAAU,MACV/B,KAAMqlO,EAAAA,YAAYC,QAGtBzoN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM+zI,EACNxE,MAAM,EACN31L,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJkB,GAEFp6L,KAAM,QCvGDs5L,EAAqB7C,GAC3BA,GAAwB,IAAhBA,EAAKviO,OAIZ,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,sBAAmBtyH,EAAAA,EAAAA,GAChCuwH,EACAv8N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMwoC,EAAYxoC,EAAWwoC,WAAa,YACpCxyC,EAAOgK,EAAWuqC,SAAW,cAC7B83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACLgD,EAAmB78C,EAAWxyC,GAC9BqsF,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAfL,GCCE4B,EAA+BA,CAAC1lO,EAAMwqB,KACjD,IAAKxqB,IAASwqB,IAAUA,EAAMhqB,OAC5B,MAAO,GAGT,MAAMmlO,EAAcn7M,EAAMgI,KAAK,MAE/B,MAAM,GAANlP,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa9kO,EAAKktC,gBAAc,EFkGKwlD,EEjGZizI,EFkGzBjzI,EAAK5/C,OAEH,IAAIivL,EAAAA,UAAU,CACnBllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMA,EACNpmD,KAAM,QANa,QADiBomD,KEjGA,ECZ/B4vI,EAAsBC,GAC5BA,EAIE,CACL,IAAIR,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,KAEVK,UAAWC,EAAAA,cAAcC,OACzB7lN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM6vI,QAXL,GC+ELoE,EAAqBA,CAACjwN,EAAMovG,EAAMxmG,EAAOgkI,KAC7C,MAAMsjF,EAAiB,CACrB,CACE7kO,SAAU,KACV/B,KAAMqlO,EAAAA,YAAYwB,MAEpB,CACE9kO,SAAU,OACV/B,KAAMqlO,EAAAA,YAAYwB,OAItB,MAAO,CACL,IAAI9E,EAAAA,UAAU,CACZqD,SAAUwB,EACV/pN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMh8E,EACNurN,MAAM,EACN31L,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJ,QACA,IAAIA,EAAAA,IACJ,SAEFvD,MAAM,OAIZ,IAAIF,EAAAA,UAAU,CACZqD,SAAUwB,EACV/pN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJ,QACA,IAAIA,EAAAA,IACJliF,QAKR,IAAIy+E,EAAAA,UAAU,CACZqD,SAAUwB,EACV/pN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACJ,WACA,IAAIA,EAAAA,IACJ,YAEFvD,MAAM,OAIZ,IAAIF,EAAAA,UAAU,CACZqD,SAAUwB,EACV/pN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVnlN,SAAU,CACR,IAAI2oN,EAAAA,IACH,GAAE1/G,MAASxmG,IACZ,IAAIkmN,EAAAA,IACJ,iBAKT,EAGH,MA7IuBsB,CACrBpwN,EACAovG,EACAxmG,EACAgkI,EACAs/E,EACAzjB,EACA0jB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAr2E,EACAC,EACAq2E,EACAZ,KAEA,MAAMa,EAAgB,CACpB,WClCmCC,EDkCClkB,ECjCjCkkB,GAAwD,IAAhCA,EAAqB7iO,OAI5C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,eAAYtyH,EAAAA,EAAAA,GACzB6wH,EACA78N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,IAAImiF,EAAcniF,EAAWoiF,OAAS,QACtC,MAAMp2D,EAAShsB,EAAWgsB,QAAU,SAC9BzwF,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAYzqC,EAAWyqC,WAAa,GAC1C,IAAIF,EAAUvqC,EAAWuqC,SAAW,GAapC,OAVIvqC,EAAWsiF,SACbH,EAAe,GAAEniF,EAAWsiF,WAAWH,KAKrC13C,IAAcF,IAChBA,EAAU,WAGL,CACL46C,EACEn5D,EACAm2D,EACA5mJ,EACAkvG,EACAF,GAEF83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAnCL,IDiCP,MEnC8BC,EFmCJnB,EElCvBmB,GAA8C,IAA3BA,EAAgBvjO,OAIlC,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,qBAAkBtyH,EAAAA,EAAAA,GAC/BuxH,EACAv9N,QAAQ26I,GAAeA,IACvBv8C,SAAQu8C,IAEP,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,YAC5Bi1L,EAAW7iF,EAAW6iF,UAAY,WAClCtnJ,EAAWykE,EAAWzkE,UAAY,WAClCkvG,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChC83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACL8C,EACEv3L,EACAi1L,EACAtnJ,EACAkvG,EACAF,GAEF83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAzBL,IFkCP,YGpCoCG,EHoCEjB,EGnCnCiB,GAA0D,IAAjCA,EAAsBzjO,OAI9C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,2BAAwBtyH,EAAAA,EAAAA,GACrCyxH,EACAz9N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bm1L,EAAc/iF,EAAW+iF,aAAe,cACxCxnJ,EAAWykE,EAAWzkE,UAAY,WAClCkvG,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChC83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACL8C,EACEv3L,EACAm1L,EACAxnJ,EACAkvG,EACAF,GAEF83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAxBL,IHmCP,WIrCmCK,EJqCCtB,EIpCjCsB,GAAwD,IAAhCA,EAAqB3jO,OAI5C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,0BAAuBtyH,EAAAA,EAAAA,GACpC2xH,EACA39N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IAER,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bi1L,EAAW7iF,EAAW6iF,UAAY,eAClCtnJ,EAAWykE,EAAWzkE,UAAY,WAClCkvG,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChC83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACL8C,EACEv3L,EACAi1L,EACAtnJ,EACAkvG,EACAF,GAEF83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAzBL,IJoCP,OKtCgCgC,ELsCHhD,EKrC1BgD,GAAgD,IAA5BA,EAAiBtlO,OAIpC,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,YAAStyH,EAAAA,EAAAA,GACtBszH,EACAt/N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IAER,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bu1L,EAASnjF,EAAWmjF,QAAU,SAC9BD,EAAgBljF,EAAWkjF,cAC3B34C,EAAUvqC,EAAWuqC,SAAW,eAChC83C,EAAeriF,EAAWqiF,cAAgB,GAIhD,MAAO,CACL8C,EAAgBv3L,EAHE,GAAEu1L,IAASD,GAAiB,qBAAuBA,IAGlC,GAAI,GAAI34C,GAC3C83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MApBL,ILqCP,KAAQ8B,EAAkB7C,GAC1B,OAAU2C,EAA6B,SAAU74E,GACjD,aMzCqC23E,ENyCGvB,EMxCrCuB,GAA4D,IAAlCA,EAAuBhkO,OAIhD,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,iCAA8BtyH,EAAAA,EAAAA,GAC3CgyH,EACAh+N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IAER,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bu1L,EAASnjF,EAAWmjF,QAAU,SAC9B54C,EAAUvqC,EAAWuqC,SAAW,GAChC83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACL8C,EAAgBv3L,EAAOu1L,EAAQ,GAAI,GAAI54C,GACvC83C,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAjBL,INwCP,YO1CoCW,EP0CEvB,EOzCnCuB,GAA0D,IAAjCA,EAAsBjkO,OAI9C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,gBAAatyH,EAAAA,EAAAA,GAC1BiyH,EACAj+N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IAER,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5Bo+H,EAAShsB,EAAWgsB,QAAU,SAE9Bq2D,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAO,CACL8C,EAAgBv3L,EAAOo+H,EAAQ,GAAI,GAAI,IACvCq2D,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MACxCu8N,MAAM,MAjBL,IPyCP,UAAa4B,EAA6B,YAAa54E,GACvD,aAAgBw1E,EAAmBC,IO5CCkC,MDACD,EDALsB,EDAG3B,EDACF,EDANF,EDAKV,ED+CrC,MAAO,CACL/5L,OAAQ,CACNq0C,QAAS,CACPhwE,SAAU,CACRg3N,IAAK,CACHd,KAAM,cAKdgB,SAAU,CACR,CACE90N,WAAY,CACV6lD,KAAM,CACJ1yD,OAAQ,CACNyE,IAAK,IACLiB,MAAO,IACPE,OAAQ,IACRpB,KAAM,OAIZmV,SAAS,GAADyG,QAAAkvF,EAAAA,EAAAA,GACHm0H,EAAmBjwN,EAAMovG,EAAMxmG,EAAOgkI,KAAM9wC,EAAAA,EAAAA,GAC3C2wH,EAAa5/M,KAAIvjB,GAAQojO,EAAcpjO,IAAS,KAAI8jO,WAI/D,EQvEI,MAAMgB,EAAepyI,GACnB,CACL,IAAIqvI,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,KAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMA,EACNpmD,KAAM,MAGVnpC,OAAQ,CACN2F,OAAQ,CACNwlJ,MAAO,UACP8zE,MAAO,EACPx/N,MAAO,SACP0pC,KAAM,OAOHg6L,EAAkBA,CAC7B7iO,EACAwzK,EACAv6F,EACAkvG,EACAF,KAEA,MAAM1+J,GAAW02M,EAAAA,EAAAA,IAAqB93C,EAAWF,GAEjD,MAAO,CACL,IAAIq2C,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMjvF,EACN6oC,KAAM,GACN21L,MAAM,OAIZ,IAAIF,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMukF,EACN3qI,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVtvI,KAAOhW,EAAY,MAAKA,IAAa,GACrCpwC,KAAM,KAER,IAAI01L,EAAAA,QAAQ,CACVtvI,KAAO1lE,EAAY,MAAKA,IAAa,GACrCsf,KAAM,QAIb,EA8BU24L,EAAoBvyI,GAC1BA,EAAK5/C,OAEH,IAAIivL,EAAAA,UAAU,CACnBrvI,KAAMA,EACNkxI,OAAQ,CACN5nK,MAAO,GAET1vB,KAAM,KAPiB,KCjGdo5L,GD4GoB,IAAI3D,EAAAA,UAAU,CAC7CrvI,KAAM,KC7GoCgzI,CAAC1lO,EAAMwqB,KACjD,IAAKxqB,IAASwqB,IAAUA,EAAMhqB,OAC5B,MAAO,GAGT,MAAMmlO,EAAcn7M,EAAMgI,KAAK,MAE/B,MAAM,GAANlP,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa9kO,EAAKktC,gBAAc,EDwGKwlD,ECvGZizI,EDwGzBjzI,EAAK5/C,OAEH,IAAIivL,EAAAA,UAAU,CACnBllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMA,EACNpmD,KAAM,QANa,QADiBomD,KCvGA,GCT/BkzI,GAAqBrB,GAC3BA,GAA8C,IAA3BA,EAAgB/jO,OAIlC,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,qBAAkBtyH,EAAAA,EAAAA,GAC/B+xH,EACA/9N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMwoC,EAAYxoC,EAAWwoC,WAAa,YACpCxyC,EAAOgK,EAAWuqC,SAAW,cAC7B83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GFuD2BizH,EACjC97C,EACAxyC,IAEO,CACL,IAAI4qF,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,IAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMi3F,EACNr9I,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMykD,EACN7qG,KAAM,SE1EHm5L,CAAoB97C,EAAWxyC,KAAK3kC,EAAAA,EAAAA,GACpCgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAd7C,GCFE+6N,GAAsBC,GAC5BA,EAIE,CACL,IAAIR,EAAAA,UAAU,CACZG,QAAS,CACPC,OAAQ,KAEVtlN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAM6vI,QAVL,GCqELoE,GAAqBlkO,IAAgD,IAA/C,KAAEiU,EAAI,SAAEgmE,EAAQ,MAAE4mE,EAAK,MAAEk3B,EAAK,QAAEusD,GAAStkO,EACnE,MAAO,CACL,IAAIs/N,EAAAA,UAAU,CACZllN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVtvI,KAAMh8E,EACN41B,KAAM,QAIZ,IAAIy1L,EAAAA,UAAU,CACZqD,SAAU,CACR,CACErjO,SAAU,OACV/B,KAAMqlO,EAAAA,YAAYwB,MAEpB,CACE9kO,SAAU,KACV/B,KAAMqlO,EAAAA,YAAYwB,MAEpB,CACE9kO,SAAU,OACV/B,KAAMqlO,EAAAA,YAAYwB,OAGtBhqN,SAAU,CACR,IAAImlN,EAAAA,QAAQ,CACVnlN,SAAU,CACR6/D,EACA,IAAI8oJ,EAAAA,IACJliF,EACA,IAAIkiF,EAAAA,IACJhrD,EACA,IAAIgrD,EAAAA,IACJuB,QAKT,EAGH,OAlGuBC,CAACtwN,EAAMovG,EAAMxmG,EAAOgkI,EAAOs/E,EAAMzjB,EAAW0jB,EAAWC,EAAQC,EAAMC,EAAYC,EAAaC,EAAWr2E,EAAQC,EAAWq2E,EAAcZ,KAC/J,MAAMa,EAAgB,CACpB,WCjBmCC,EDiBClkB,EChBjCkkB,GAAwD,IAAhCA,EAAqB7iO,OAI5C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,eAAYtyH,EAAAA,EAAAA,GACzB6wH,EACA78N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,IAAImiF,EAAcniF,EAAWoiF,OAAS,iBACtC,MAAMp2D,EAAShsB,EAAWgsB,QAAU,SAC9BzwF,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAC1C53C,EAAYzqC,EAAWyqC,WAAa,GAC1C,IAAIF,EAAUvqC,EAAWuqC,SAAW,GAapC,OAVIvqC,EAAWsiF,SACbH,EAAe,GAAEniF,EAAWsiF,WAAWH,KAKrC13C,IAAcF,IAChBA,EAAU,WAGN,GAANpoK,QAAAkvF,EAAAA,EAAAA,GACK8zH,EACDn5D,EACAm2D,EACA5mJ,EACAkvG,EACAF,KACDl5E,EAAAA,EAAAA,GACEgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAlC7C,IDgBP,MElB8Bw8N,EFkBJnB,EEjBvBmB,GAA8C,IAA3BA,EAAgBvjO,OAIlC,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,6BAA0BtyH,EAAAA,EAAAA,GACvCuxH,EACAv9N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,YAC5Bi1L,EAAW7iF,EAAW6iF,UAAY,WAClCp4C,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChChvG,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EAAgBv3L,EAAOi1L,EAAUtnJ,EAAUkvG,EAAWF,KAAQl5E,EAAAA,EAAAA,GAC9DgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAjB7C,IFiBP,YGnBoC08N,EHmBEjB,EGlBnCiB,GAA0D,IAAjCA,EAAsBzjO,OAI9C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,2BAAwBtyH,EAAAA,EAAAA,GACrCyxH,EACAz9N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAM+iF,EAAc/iF,EAAW+iF,aAAe,cACxCn1L,EAAQoyG,EAAWpyG,OAAS,QAC5B68I,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChChvG,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EACDv3L,EACAm1L,EACAxnJ,EACAkvG,EACAF,KACDl5E,EAAAA,EAAAA,GACEgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAvB7C,IHkBP,WIpBmC48N,EJoBCtB,EInBjCsB,GAAwD,IAAhCA,EAAqB3jO,OAI5C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,0BAAuBtyH,EAAAA,EAAAA,GACpC2xH,EACA39N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,QAC5BkoI,EAAe91B,EAAW6iF,UAAY,eACtCp4C,EAAYzqC,EAAWyqC,WAAa,YACpCF,EAAUvqC,EAAWuqC,SAAW,UAChChvG,EAAWykE,EAAWzkE,UAAY,WAClC8mJ,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EAAgBv3L,EAAOkoI,EAAcv6F,EAAUkvG,EAAWF,KAAQl5E,EAAAA,EAAAA,GAClEgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAjB7C,IJmBP,OKrBgC68N,ELqBHtB,EKpB1BsB,GAAkD,IAA7BA,EAAkB5jO,OAItC,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,YAAStyH,EAAAA,EAAAA,GACtB4xH,EACA59N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,cAC5Bs1L,EAAgBljF,EAAWkjF,eAAiB,0BAC5CC,EAASnjF,EAAWmjF,QAAU,SAC9B7kJ,EAAO0hE,EAAWuqC,SAAW,eAC7B83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EAAgBv3L,EAAOu1L,EAAQD,EAAe,GAAI5kJ,KAAK+yB,EAAAA,EAAAA,GACvDgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAhB7C,ILoBP,KAAQq+N,GAAkB7C,GAC1B,aMvBqCyB,ENuBGvB,EMtBrCuB,GAA4D,IAAlCA,EAAuBhkO,OAIhD,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,iCAA8BtyH,EAAAA,EAAAA,GAC3CgyH,EACAh+N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,oBAC5Bu1L,EAASnjF,EAAWmjF,QAAU,SAC9B7kJ,EAAO0hE,EAAWuqC,SAAW,GAC7B83C,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EAAgBv3L,EAAOu1L,EAAQ,GAAI,GAAI7kJ,KAAK+yB,EAAAA,EAAAA,GAC5CgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAf7C,INsBP,YOxBoCk9N,EPwBEvB,EOvBnCuB,GAA0D,IAAjCA,EAAsBjkO,OAI9C,GAAN8iB,QAAAkvF,EAAAA,EAAAA,GACKsyH,EAAa,gBAAatyH,EAAAA,EAAAA,GAC1BiyH,EACAj+N,QAAQ26I,GAAeA,IACvBv8C,SAASu8C,IACR,MAAMpyG,EAAQoyG,EAAWpyG,OAAS,eAC5Bo+H,EAAShsB,EAAWgsB,QAAU,SAC9Bq2D,EAAeriF,EAAWqiF,cAAgB,GAEhD,MAAM,GAANlgN,QAAAkvF,EAAAA,EAAAA,GACK8zH,EAAgBv3L,EAAOo+H,EAAQ,GAAI,GAAI,MAAG36D,EAAAA,EAAAA,GAC1CgxH,EAAajgN,KAAIhc,GAAK09N,EAAkB19N,MAAG,MAd7C,IPuBP,OAAUm+N,EAA6B,SAAU74E,GACjD,UAAa64E,EAA6B,YAAa54E,GACvD,aAAgBw1E,GAAmBC,IO3BCkC,MDACD,EDALJ,EDAGD,EDACF,EDANF,EDAKV,ED8BrC,MAAO,CACL/5L,OAAQ,CACNq0C,QAAS,CACPhwE,SAAU,CACRg3N,IAAK,CACHd,KAAM,cAKdgB,SAAU,CACR,CACE90N,WAAY,CACV6lD,KAAM,CACJ1yD,OAAQ,CACNyE,IAAK,IACLiB,MAAO,IACPE,OAAQ,IACRpB,KAAM,OAIZmV,SAAS,GAADyG,QAAAkvF,EAAAA,EAAAA,GAEHm0H,GAAmB,CACpBjwN,KAAMA,EACNgmE,SAAW,GAAEopC,GAAQ,WAAWxmG,GAAS,UACzCgkI,MAAOA,EACPk3B,MAAO,QACPusD,QAAS,cACTv0H,EAAAA,EAAAA,GACE2wH,EAAa5/M,KAAIvjB,GAAQojO,EAAcpjO,IAAS,KAAI8jO,WAI/D,EQ2CH,OAlE2B58M,UAWpB,IAX2B,KAChCxQ,EAAI,MACJ4sI,EAAK,YACLmJ,EAAW,OACXI,EAAM,UACNC,EAAS,KACThnC,EAAI,MACJxmG,EAAK,SACLgc,EAAQ,aACR6nM,EAAY,aACZZ,GACD9/N,EACC,MAAMmgO,GAAOqE,EAAAA,EAAAA,IAAwBx6E,EAAa,QAC5C0yD,GAAY8nB,EAAAA,EAAAA,IAAwBx6E,EAAa,aACjDo2E,GAAYoE,EAAAA,EAAAA,IAAwBx6E,EAAa,aACjDq2E,GAASmE,EAAAA,EAAAA,IAAwBx6E,EAAa,SAC9Cs2E,GAAOkE,EAAAA,EAAAA,IAAwBx6E,EAAa,QAC5Cu2E,GAAaiE,EAAAA,EAAAA,IAAwBx6E,EAAa,cAClDw2E,GAAcgE,EAAAA,EAAAA,IAAwBx6E,EAAa,eACnDy2E,GAAa+D,EAAAA,EAAAA,IAAwBx6E,EAAa,cAEhC,CAACm2E,EAAMzjB,EAAW0jB,EAAWC,EAAQC,EAAMC,EAAYC,EAAaC,GAC5EtyN,SACd67I,GAAeA,EAAY77I,SACzBuwI,GA7CwBA,KAE5B,MAAMqiF,EAAe,GAIrB,GAHIriF,EAAWj/G,aACbshM,EAAaniO,KAAK8/I,EAAWj/G,aAE3Bi/G,EAAW+lF,WAAY,CACzB,MAAMC,EAAmBhmF,EAAW+lF,WAAW1gO,QAAO4gO,KAAeA,IACrE5D,EAAaniO,KAAIL,MAAjBwiO,GAAYhxH,EAAAA,EAAAA,GAAS20H,GACvB,CACAhmF,EAAWqiF,aAAeA,EAGtBriF,EAAW6qC,gBAAkB7qC,EAAW0qC,gBAC1C1qC,EAAWyqC,WAAYy7C,EAAAA,EAAAA,IAAgBlmF,EAAW6qC,gBAAkB,IAAM7qC,EAAW0qC,eAEnF1qC,EAAWkJ,cAAgBlJ,EAAWmJ,cACxCnJ,EAAWuqC,SAAU27C,EAAAA,EAAAA,IAAgBlmF,EAAWkJ,cAAgB,IAAMlJ,EAAWmJ,YACnF,EA2BkBg9E,CAAqBnmF,OAGvC,MAAMomF,EAAoB,CACxBC,QAAS7E,EACT8E,OAAQX,EACRY,WAAY7B,EACZ8B,OAAQX,IAGJY,EACJL,EAAkBjsM,IAAaisM,EAA2B,QAE5D,IAAIj5I,EAAM,IAAIv+D,EAAAA,SACZ63M,EACElxN,GAAQ,OACRovG,GAAQ,OACRxmG,GAAS,QACTgkI,GAAS,QACTs/E,EACAzjB,EACA0jB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAr2E,EACAC,EACAq2E,EACAZ,IAIJ,IACE,MAAMh5F,QAAas+F,EAAAA,OAAOC,OAAOx5I,IACjCiR,EAAAA,EAAAA,QAAOgqC,EAAO,GAAE7yH,EAAKsf,QAAQ,OAAQ,KAAKkd,4BAC5C,CAAE,MAAO3yC,GACPgB,QAAQhB,MAAM,sCAAuCA,EACvD,2BCmCF,OA7HuBwnO,KACrB,MAAM,SAAElvM,EAAQ,QAAEo/H,EAAO,KAAE/0C,IAAS39G,EAAAA,EAAAA,YAAW69G,EAAAA,KACzC,EAAC4kH,EAAiB,EAACC,IAAuBljO,EAAAA,EAAAA,UAAS,YACnD,EAACmiF,EAAK,EAAC8yG,IAAWj1L,EAAAA,EAAAA,WAAS,GAC3Bw9N,GAAe2F,EAAAA,GAAAA,GAAmCjwE,EAAQsqE,aAActqE,EAAQggB,QAAShgB,EAAQ8f,YAAa9f,EAAQ+f,cAEtHsY,EAAcA,IAAM0J,GAAQ,GAwC5BmuC,EAAiB,CACrBX,QAASY,EACTX,OAAQY,EACRX,WAAYY,EACZX,OAAQY,GAGJC,EAAgB,CACpBhB,QAAS,UACTC,OAAQ,SACRC,WAAY,aACZC,OAAQ,UA+BV,OACE1lI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UACEzpD,UAAU,gBACVw2G,QArFay5E,IAAMzuC,GAAQ,GAsF3BjrJ,MAAM,UAENkzD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mBAAmBu/B,eAAe,WACtD,IACDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAM4sL,EAAAA,IACNzlL,KAAK,KACLgiH,MAAM,aAIVrsD,EAAAA,cAACyuF,EAAAA,EAAK,CAACxpG,KAAMA,EAAM0pG,OAAQN,EAAahkJ,KAAK,MAC3C21D,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,CAACx8J,UAAU,mBACrBypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,yBAAyBu/B,eAAe,+BAGjEggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KA7Cf/uF,EAAAA,cAAA,OAAKzpD,UAAU,oBACZ9xC,OAAOoe,QAAQqjN,GAAgB5kN,KAAI9gB,IAAA,IAAEP,EAAKmsK,GAAI5rK,EAAA,OAC7Cw/F,EAAAA,cAAA,OAAK//F,IAAKA,EAAKs2C,UAAU,mBACvBypD,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAK,mBAAkB8lO,EAActmO,GAAKgxC,gBAC1CjR,eAAgBumM,EAActmO,MAGlC+/F,EAAAA,cAAA,OACE//F,IAAKA,EACLmsK,IAAKA,EACL7hC,IAAM,GAAEtqI,aACRs2C,UAAY,mBACVwvL,IAAqB9lO,EAAM,0BAA4B,IAEzD8sJ,QAASA,KApBjBi5E,EAoBsC/lO,EAAK,IAEjC,KA6BJ+/F,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,wBAAwBu/B,eAAe,mBACnEiwJ,UAAU,EACVljC,QAjGe9nI,UAAa,IAADwhN,EAAAC,EAAAC,EAAAC,EAAA/8D,EAAAC,EACrC,MAAM+8D,QAAmBjwM,EAASmoH,gBAClC,KAAM8nF,SAAuB,QAAbJ,EAAVI,EAAYr8E,mBAAW,IAAAi8E,GAAvBA,EAAyBliO,QAAO0vB,KAAOA,EAAExzB,KAAIlC,QAC1Cy3J,SAAe,QAAR0wE,EAAP1wE,EAASpL,cAAM,IAAA87E,GAAfA,EAAiBnoO,QACjBy3J,SAAe,QAAR2wE,EAAP3wE,EAASpL,cAAM,IAAA+7E,GAAfA,EAAiBpoO,QAExB,YADA6hL,MAAM,wCAGR,MAAM0mD,GAAuBD,SAAuB,QAAbD,EAAVC,EAAYr8E,mBAAW,IAAAo8E,OAAb,EAAVA,EAAyBriO,QAAO0vB,KAAOA,EAAExzB,OAAO,GAEvEygO,OApBsBj8M,WAC5B,MAAM8hN,QAA4BnwM,EAASk0H,qBAAqB,KAC1Dk8E,QAA4BpwM,EAASk0H,qBAAqB,KAE1Dm8E,EAAiBF,GAAuBG,GAAAA,GACxCC,EAAkBH,GAAuBI,GAAAA,GAE/C,MAAM,CAAE,gBAAc/lN,QAAAkvF,EAAAA,EAAAA,GAAK02H,IAAc12H,EAAAA,EAAAA,GAAK42H,GAAe,EAalCE,SAErBC,GAAmB,CACvB7yN,KAAO,GAAoB,QAApBo1J,EAAE7T,aAAO,EAAPA,EAAS6S,iBAAS,IAAAgB,EAAAA,EAAI,MAAuB,QAAnBC,EAAE9T,aAAO,EAAPA,EAAS8S,gBAAQ,IAAAgB,EAAAA,EAAI,KAC1DzoB,MAAOpgC,aAAI,EAAJA,EAAMogC,MACbmJ,YAAas8E,EACbl8E,QAAQoL,aAAO,EAAPA,EAASpL,SAAU,GAC3BC,WAAWmL,aAAO,EAAPA,EAASnL,YAAa,GACjChnC,KAAMmyC,aAAO,EAAPA,EAASnyC,KACfxmG,MAAO24I,aAAO,EAAPA,EAAS34I,MAChBgc,SAAU0sM,EACV7E,aAAcA,EACdZ,aAAcA,IAEhBjyC,GAAa,OA8EV,yBCzEP,OA5DwB7tL,IAAwB,IAAvB,KAAEykF,EAAI,QAAE0yG,GAASn3L,EACxC,OACEw/F,EAAAA,cAACyuF,EAAAA,EAAK,CACJl4I,UAAU,oBACV0uC,KAAMA,EACN0pG,OAAQA,IAAMgJ,IACdttJ,KAAK,KACLwkJ,WAAW,GAEX7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAAA,OAAKzpD,UAAU,6BAA4BypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAC1DtqK,GAAG,4BACHu/B,eAAe,WAGnBggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAe,mDAEjBggE,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAiB,wIAInBggE,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAiB,wLAKnBggE,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAiB,uDAEnBggE,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAiB,iEAEnBggE,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8BACHu/B,eAAiB,wEAKvBggE,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,CAACpvL,MAAO,CAAE4tL,eAAgB,eACrCvuF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,4BAA4Bu/B,eAAe,SACvEiwJ,UAAU,EACVljC,QAAS4qC,KAGP,ECuBZ,OApE+Bn3L,IAAkD,IAAjD,oBAAE+mO,EAAmB,mBAAEC,GAAoBhnO,EACzE,MAAM,EAACinO,EAAa,EAACC,IAAmB5kO,EAAAA,EAAAA,UAAS,OAC3C,EAAC6kO,EAAc,EAACC,IAAoB9kO,EAAAA,EAAAA,WAAS,GAE7CurL,EAAcA,KAClBq5C,EAAgB,MAChBF,GAAoB,EAGtB,OACExnI,EAAAA,cAAAA,EAAAA,SAAA,KAEEA,EAAAA,cAACyuF,EAAAA,EAAK,CACJl4I,UAAU,iBACV0uC,KAAMsiJ,GAAyC,OAAjBE,IAA2BE,EACzDh5C,OAAQN,EACRhkJ,KAAK,KACLwkJ,WAAW,GAEX7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,+CACHu/B,eAAe,qBAIrBggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACR84C,GAAAA,GAAmBvmN,KAAIi9H,GACtBv+C,EAAAA,cAAA,UACE//F,IAAKs+I,EAAQxgJ,KACbw4C,UAAU,sBACVw2G,QAASA,IAAM26E,EAAgBnpF,EAAQxgJ,OAEvCiiG,EAAAA,cAAA,YACEA,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMq7G,EAAQr7G,QAEhC,IACAq7G,EAAQ18B,UAIf7hB,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACX/vF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,4CAA4Cu/B,eAAe,gBACvFiwJ,UAAU,EACVljC,QAASA,IAAM66E,GAAiB,OAOtC5nI,EAAAA,cAAC8nI,GAAe,CACd7iJ,KAAM0iJ,EACNhwC,QAASA,IAAMiwC,GAAiB,KAGlC5nI,EAAAA,cAAC+nI,GAAAA,EAA2B,CAC1BC,iBAAiB,EACjB/iJ,KAAuB,OAAjBwiJ,EACN1pO,KAAM0pO,EACNQ,mBAAoBA,IAAM55C,MAE3B,ECHP,OA7DyB7tL,IAAqC,IAApC,QAACw1J,EAAU,CAAC,EAAC,eAAEsvD,GAAe9kN,EACtD,MAAO0nO,EAA8B/I,GAA6BH,KAC5D,EAACmJ,EAAkB,EAACC,IAAwBtlO,EAAAA,EAAAA,WAAS,GAErDulO,EAAe/iB,IACItvD,EAAQnyC,MAAQmyC,EAAQ34I,UACvB24I,EAAQsqE,cAAgBtqE,EAAQggB,SAAWhgB,EAAQ+f,cAAgB/f,EAAQ8f,aAErG,OACE91E,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAA,OACEzpD,UAAU,kBACV61H,IAAKpW,EAAQmW,iBAAmBE,EAAAA,EAChC9hC,IAAI,4BAEJ+6E,GACAtlH,EAAAA,cAAA,OAAKzpD,UAAU,oDACbypD,EAAAA,cAACssE,EAAAA,EAAiB,CAACE,aAAcxW,EAAQmW,iBAAmBE,EAAAA,MAMlErsE,EAAAA,cAAA,OAAKzpD,UAAU,4BACdy/G,EAAQ6S,WACP7oE,EAAAA,cAAA,UACEA,EAAAA,cAAA,cAASg2D,EAAQ6S,WAChB7S,EAAQ8S,SAAY,IAAG9S,EAAQ8S,WAAa,IAGhDu/D,GACCroI,EAAAA,cAAA,OAAKzpD,UAAU,YACX,GAAEy/G,EAAQnyC,OAAOmyC,EAAQnyC,MAAQmyC,EAAQ34I,OAAS,OAAO24I,EAAQ34I,UAGrEioM,GACAtlH,EAAAA,cAAAA,EAAAA,SAAA,KACAA,EAAAA,cAACsoI,GAAsB,CACrBf,oBAAqBY,EACrBX,mBAAoBA,IAAMY,GAAqB,KAEjDpoI,EAAAA,cAACuoI,GAAAA,EAAS,CACR1mH,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mCAAmCu/B,eAAe,mBAC9E+sH,QAASA,IAAMq7E,GAAqB,KAEtCpoI,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,UAAQzpD,UAAU,eAAew2G,QAASA,IAAMoyE,IAA6BryL,MAAM,SACjFkzD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,kBAAkBu/B,eAAe,UACrD,IACDggE,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMslM,EAAAA,IAASn+L,KAAK,KAAKgiH,MAAM,aAElDrsD,EAAAA,cAACyoI,EAAmB,CAACxjJ,KAAMijJ,EAA8B/I,0BAA2BA,IACpFn/H,EAAAA,cAAC8lI,GAAc,QAIf,cCgFV,OA/I8BtlO,IAA4E,IAA3E,KAACykF,EAAI,WAAEyjJ,EAAU,kBAAEC,EAAiB,UAAEC,EAAS,WAAEC,EAAU,QAAElxC,GAAQn3L,EAClG,MAAM,SACJo2B,EAAQ,SACR0/H,EAAQ,yBACRm6C,IACEntM,EAAAA,EAAAA,YAAW69G,EAAAA,KACT,EAAC2nH,EAAM,EAACC,IAAYjmO,EAAAA,EAAAA,UAAS,KAC7B,EAACw9N,EAAa,EAAC0I,IAAmBlmO,EAAAA,EAAAA,UAAS,KAC3C,EAAC+gH,EAAK,EAAColH,IAAWnmO,EAAAA,EAAAA,UAAS,KAC3B,EAACua,EAAM,EAAC4lD,IAAYngE,EAAAA,EAAAA,UAAS,IAiCnC,OACEk9F,EAAAA,cAACyuF,EAAAA,EAAK,CACJl4I,UAAU,yBACV0uC,KAAMA,EACNypG,OAnCoBw6C,KACtBH,EAASL,GAAc,IACvBM,EAAgBL,GAAqB,IACrCM,EAAQL,GAAa,IACrB3lK,EAAS4lK,GAAc,GAAG,EAgCxBl6C,OAAQgJ,EACRttJ,KAAK,KACLwkJ,WAAW,EACXs6C,YAAY,GAEZnpI,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,KACV/yG,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAgB,gCAItBggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,SAAO8qE,QAAQ,SACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,WAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,6CACHu/B,eAAiB,yIAIrBggE,EAAAA,cAAA,YACEv/F,GAAG,QACHqrK,UAAW,IACXb,KAAM,EACNvqK,MAAOooO,EACP95M,SAAWtf,GAAUq5N,EAASr5N,EAAMjJ,OAAO/F,SAG7Cs/F,EAAAA,cAAA,SAAO8qE,QAAQ,gBACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,4CACHu/B,eAAe,kBAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,gDACHu/B,eAAiB,mNAKrBggE,EAAAA,cAAA,YACEv/F,GAAG,eACHqrK,UAAW,IACXb,KAAM,EACNvqK,MAAO4/N,EACPtxM,SAAWtf,GAAUs5N,EAAgBt5N,EAAMjJ,OAAO/F,SAGpDs/F,EAAAA,cAAA,SAAO8qE,QAAQ,QACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,oCACHu/B,eAAe,UAGnBggE,EAAAA,cAAA,SACEv/F,GAAG,OACH1C,KAAK,OACL+tK,UAAW,GACXprK,MAAOmjH,EACP70F,SAAWtf,GAAUu5N,EAAQv5N,EAAMjJ,OAAO/F,SAG5Cs/F,EAAAA,cAAA,SAAO8qE,QAAQ,SACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,WAGnBggE,EAAAA,cAAA,SACEv/F,GAAG,QACH1C,KAAK,OACL+tK,UAAW,GACXprK,MAAO2c,EACP2R,SAAWtf,GAAUuzD,EAASvzD,EAAMjJ,OAAO/F,UAG/Cs/F,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACX/vF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sCAAsCu/B,eAAe,SACjFiwJ,UAAU,EACVljC,QAtHW9nI,UACjB,UACQ2R,EAASwnH,cAAc,CAC3Bh5I,KAAM,CACJ6wK,aAAc6yD,EACdxI,aAAcA,EACdz8G,KAAMA,EACNxmG,MAAOA,EAEP24J,QAAS,GACTF,YAAa,GACbC,aAAc,YAIZn/I,EAAS8uH,oBAAoB,kBAAkB,GACrDiyC,IACArhC,EAAS+mE,4BACTzmM,EAASkvH,sBAAsBpqH,MAAKqjC,GAAO0xI,EAAyB1xI,IACtE,CAAE,MAAO9qC,GACP30B,QAAQu4C,IAAI5jB,EACd,MAoGQ,ECjEZ,OAzE8BzzB,IAAqC,IAApC,QAACw1J,EAAU,CAAC,EAAC,eAAEsvD,GAAe9kN,EAC3D,MAAM,EAAC4oO,EAAQ,EAACC,IAAcvmO,EAAAA,EAAAA,WAAS,GAEjCmzK,EAAejgB,EAAQigB,cAAgB,GACvCpyD,EAAOmyC,EAAQnyC,MAAQ,GACvBxmG,EAAQ24I,EAAQ34I,OAAS,GACzB24J,EAAUhgB,EAAQggB,SAAW,GAC7BF,EAAc9f,EAAQ8f,aAAe,GACrCC,EAAe/f,EAAQ+f,cAAgB,GACvCuqD,GAAe2F,EAAAA,GAAAA,GAAmCjwE,EAAQsqE,aAActqD,EAASF,EAAaC,GAEpG,OAAIuvC,GAAmBgb,GAAiBrqD,EAKtCj2E,EAAAA,cAAA,OAAKzpD,UAAU,oCACbypD,EAAAA,cAACspI,GAAqB,CACpBrkJ,KAAMmkJ,EACNV,WAAYzyD,EACZ0yD,kBAAmBrI,EACnBsI,UAAW/kH,EACXglH,WAAYxrN,EACZs6K,QAASA,IAAM0xC,GAAW,KAE3BpzD,GACCj2E,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,SAAIi2E,IACFqvC,GAAkBtlH,EAAAA,cAACupI,GAAAA,EAAU,CAACx8E,QAASA,IAAMs8E,GAAW,MAG7D/I,GACCtgI,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,UACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,4CACHu/B,eAAe,mBAGjB6jF,GAAQxmG,IACR2iF,EAAAA,cAAA,OAAKzpD,UAAU,YACX,GAAEstE,IAAOA,GAAQxmG,GAAS,OAAOA,MAIzC2iF,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBAAqB+pL,IAClChb,GAAkBtlH,EAAAA,cAACupI,GAAAA,EAAU,CAACx8E,QAASA,IAAMs8E,GAAW,QAI9D/jB,IAAmBgb,IAAiBrqD,GACpCj2E,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACupI,GAAAA,EAAU,CAACx8E,QAASA,IAAMs8E,GAAW,KACtCrpI,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,4CACHu/B,eAAe,kBAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,kDACHu/B,eAAe,mEApDlB,IAyDD,EChFV,GAAe,IAA0B,4FCUzC,IAAI8tJ,GACkB,oBAAX9iL,SACT8iL,GAAa,IAAI3vF,YAqNnB,OAlN4B39F,IAAuB,IAAtB,aAAEgsK,GAAchsK,EAC3C,MAAM,SAAEo2B,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1B,EAAC7iH,EAAM,EAACyvL,IAAYjrL,EAAAA,EAAAA,UAAS,OAC7B,EAAC8/I,EAAQ,EAACorC,IAAclrL,EAAAA,EAAAA,UAAS0pK,IACjC,EAACyhB,EAAS,EAACC,IAAeprL,EAAAA,EAAAA,UAAS,OACnC,EAACs1B,EAAK,EAACutD,IAAW7iF,EAAAA,EAAAA,WAAS,IAC3B,EAACqrL,EAAc,EAACC,IAAoBtrL,EAAAA,EAAAA,WAAS,IAC7C,cAAEuiK,IAAkB1Z,EAAAA,EAAAA,MACpB,OAAE/rH,IAAW+rH,EAAAA,EAAAA,MAEnBvoJ,EAAAA,EAAAA,YAAU,KAEJopK,GACFwhB,EAAWxhB,EACb,GACC,CAACA,IAOJ,MAqEM6hB,EAAcA,KAClB1oG,GAAQ,GACRqoG,EAAWxhB,EAAa,EAG1B,OACExsE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UACEr/F,MAAO,CAAE2tL,gBAAiB,cAAehuL,QAAS,OAAQiuL,eAAgB,SAAUhJ,WAAY,UAChGx4B,QAASA,IAAMpnE,GAAQ,IAEvBqa,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMsrJ,EAAAA,OAEzBxuF,EAAAA,cAACyuF,EAAAA,EAAK,CACJxpG,KAAM7sD,EACNiS,KAAK,KACLqkJ,OAAQA,KACNX,EAAS,KAAK,EAEhBY,OAAQN,EACRO,UAAQ,EACRC,WAAW,GAEX7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CACXnuL,MAAO,CAAE4tL,eAAgB,SAAUD,gBAAiB,WACpD7gC,aAAW,GAEXztD,EAAAA,cAAA,MAAIr/F,MAAO,CAAEurK,aAAc,MAAOlsE,EAAAA,cAAC+qE,EAAAA,EAAgB,CACjDtqK,GAAG,6CACHu/B,eAAe,qBACf,MAEJggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,CAACpuL,MAAO,CAAE2tL,gBAAiB,YACpCtuF,EAAAA,cAAA,WACEA,EAAAA,cAAA,UAAIA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACnBtqK,GAAG,8CACHu/B,eAAe,uBAEd4iH,IAAYurC,EACXnuF,EAAAA,cAAA,OACEr/F,MAAO,CACLsuL,gBAAkB,OAAMrsC,KACxBssC,mBAAoB,SACpBC,eAAgB,QAChBpjB,SAAU,QACV/qK,OAAQ,QACRE,OAAQ,kBACRD,OAAQ,YACRG,SAAU,YAId4+F,EAAAA,cAAA,OACEr/F,MAAO,CACLI,MAAO,QACPC,OAAQ,QACRE,OAAQ,kBACRotL,gBAAiB,QACjBrtL,OAAQ,YACRX,QAAS,OACTiuL,eAAgB,SAChBhJ,WAAY,WAGdvlF,EAAAA,cAAC7pD,EAAAA,EAAe,CACdjT,KAAMmsJ,EAAAA,IACNt4I,MAAI,EACJ1M,KAAK,KACLgiH,MAAM,aAIZrsD,EAAAA,cAAA,OAAKzpD,UAAU,eAAe51C,MAAO,CACnCO,OAAQ,oBACRC,QAAS,OACTb,QAAS,OACTilL,WAAY,WACZ+J,IAAK,OACLzjB,YAAavtK,EAAQ,MAAQ,KAE7B0hG,EAAAA,cAAA,SAAOr/F,MAAO,CACZQ,QAAS,MACTJ,MAAO,cACPG,OAAQ,oBACR2rE,OAAQ,UACR5rE,OAAQ,MACRmuL,aAAc,OAEd74I,UAAU,2BAA2Bu0H,QAAQ,gBACjC,UAAXlrI,EAAqB,cAAgB,oBAExCogE,EAAAA,cAAA,SACEv/F,GAAG,eACHgU,KAAK,eACL1W,KAAK,OACLixB,SApKU/J,UACxBgP,EAAEw1I,UACF,MAAMhnB,EAAOxuH,EAAExtB,OAAO8oL,MAAM,GAI5B,GAFAxB,EAAS,OAEJtrC,EACH,OAKF,IAFqB,CAAC,YAAa,aAAc,aAE/Br4I,SAASq4I,EAAK1kJ,MAE9B,YADAgwL,EAAS,sCAIX,MAAMyB,EAAoB9jL,SAAS6uE,eAAe,qBAEhDi1G,EAAkB71F,YADhB8oD,EAC+B,GAAEA,EAAKhuI,OAEG,UAAXmrB,EAAqB,iBAAmB,8BAE1E,IACE,MAAM6vJ,QAAwBC,EAAAA,GAAAA,GAAiBjtC,EAAM,CACnDktC,UAAW,EACXC,WAAYC,IACMzB,EAAhByB,EAAU,IAAsD,IAGpEzB,GAAiB,GAGjBN,GAAW1vF,UAAY,KACrB4vF,EAAWF,GAAWx1J,SAGV,IAAIw3J,OACZ1jB,IAAM0hB,GAAWx1J,MAAM,EAG7Bw1J,GAAWzvF,cAAcoxF,GACzBvB,EAAYuB,EACd,CAAE,MACA1B,EAAS,4CACX,KAyHY/tF,EAAAA,cAAA,QAAMv/F,GAAG,qBAAgC,UAAXm/B,EAAqB,iBAAmB,+BACrEthC,GAAS0hG,EAAAA,cAAA,SAAOr/F,MAAO,CAAE0rJ,MAAO,QAAU/tJ,MAInD0hG,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACX/vF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mBAAmBu/B,eAAe,WAC9DiwJ,UAAU,EACVljC,QAASshC,IAEXruF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,kCAAkCu/B,eAAe,SAC7EiwJ,UAAU,EACVljC,QApIW9nI,UACnB,GAAKgpK,IAAY3vL,EAAjB,CAMA,IACE,MAAM4xL,QAAgBt5J,EAASisH,oBAAoBorC,GAC/CiC,SACIt5J,EAASwnH,cAAc,CAAEh5I,KAAM,CAAEokO,kBAAmBt5C,IAE9D,CAAE,MAAOj8J,GACP30B,QAAQu4C,IAAI5jB,GACZ85J,EACE,uEAEJ,CACApoG,GAAQ,EAdR,MAFEooG,EAAS,uCAgBG,MAsHX,sCCzKP,OApCkBvtL,IAAmD,IAAlD,MAACk9E,EAAM,GAAE,KAAED,EAAK,GAAE,YAAEwqE,EAAW,WAAEC,GAAW1nJ,EAC7D,MAAM,cAAE6kK,EAAa,OAAEzlI,IAAW+rH,EAAAA,EAAAA,KAE5B89E,EAAe9iD,GAAAA,GAAcrlK,KAAIooN,IAAS,CAC9CzpO,IAAKypO,EACLhpO,MAAOgpO,EACPj5I,MAAM20I,EAAAA,EAAAA,IAAgBsE,EAAW9pM,OAGnC,OACEogE,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAACguG,GAAAA,EAAQ,CACPz3J,UAAU,cACV61J,WAAS,EACT4Y,OAAO,EACP9hL,KAAK,eACLh/B,QAASulO,EACTz6M,SAAUA,CAACiF,EAAGsb,IAAM04G,EAAY14G,EAAE7uC,OAClCipO,cAAc,EACdC,WAAW,EACX5yC,YAAa3xB,EAAc,CAAE5kK,GAAI,0CAA2Cu/B,eAAgB,UAC5Ft/B,MAAOg9E,EACPmsJ,WAAS,IAEX7pI,EAAAA,cAAA,SACEjiG,KAAK,OACLw4C,UAAU,aACVu1H,UAAW,EACX98I,SAAWtf,GAAUw4I,EAAWx4I,EAAMjJ,OAAO/F,OAC7Cs2L,YAAa3xB,EAAc,CAAE5kK,GAAI,8BAA+Bu/B,eAAgB,SAChFt/B,MAAO+8E,IAEL,ECvBV,OAzBgCqsJ,IAC9B,OAAQA,GACN,IAAK,YACH,MAAO,MACT,IAAK,aACH,MAAO,OACT,IAAK,YACH,MAAO,MACT,IAAK,YACH,MAAO,MACT,IAAK,kBACH,MAAO,MACT,IAAK,qBACH,MAAO,MACT,IAAK,0EACH,MAAO,OACT,IAAK,2BACH,MAAO,MACT,IAAK,oEACH,MAAO,OACT,QACE,OAAOA,EACX,ECqFF,OA5FyBtpO,IAAwD,IAAvD,aAACupO,EAAY,aAAEC,EAAY,aAAEtjD,EAAY,GAAEjmL,EAAG,IAAGD,EACzE,MAAM,EAACypO,EAAa,EAACC,IAAmBpnO,EAAAA,EAAAA,WAAS,GAE3CqnO,EACJnqI,EAAAA,cAAA,OAAKzpD,UAAU,YAAYx1C,MAAM,KAAKC,OAAO,KAAKq3L,QAAQ,YAAY9rJ,KAAK,OAAO0zK,MAAM,8BACtFjgH,EAAAA,cAAA,QAAMzwD,EAAE,+BAA+B+oJ,OAAO,UAAUC,YAAY,MACpEv4F,EAAAA,cAAA,QAAMzwD,EAAE,0BAA0B+oJ,OAAO,UAAUC,YAAY,OAI7D6xC,EAAe76C,IACnB,GAAI1wL,MAAMgpB,QAAQ6+J,GAChB,IAAK,MAAM92H,KAAK2/H,EACd,IAAK7I,EAAat8K,SAASwlD,EAAE7xD,MAK3B,YAJA8sK,EAAAA,EAAAA,GAAkB,CAChBlyI,QAAU,gCAA+B+tJ,EAAaplK,KAAI80C,GAAKi0K,GAAuBj0K,KAAI7lC,KAAK,QAC/Fk7H,QAAS,0BAMjBu+E,EAAaz6C,EAAM,EA2CrB,OACEvvF,EAAAA,cAAA,SACEr5E,SAAU,EACVmkJ,QAAU,cAAarqK,IACvB81C,UAAU,qBACV+zL,OA7CiB7kJ,IACnBnmF,QAAQu4C,IAAI,mBACZ4tC,EAAGh2E,iBAEH,MAAM86N,EAAgB,GAClB9kJ,EAAG+kJ,aAAajiN,SAElBgoF,EAAAA,EAAAA,GAAI9qB,EAAG+kJ,aAAajiN,OAAO5Z,SAAQ,CAACqb,EAAM5rB,KAExC,GAAkB,SAAd4rB,EAAK06I,KAAiB,CACxB,MAAMjiB,EAAOz4H,EAAKygN,YAClBnrO,QAAQu4C,IAAK,UAASz5C,aAAaqkJ,EAAKhuI,QACxC81N,EAAcnrO,KAAKqjJ,EACrB,KAMJ2nF,EAAYG,GACZL,GAAgB,GAAM,EA0BpBloO,WAvBqByjF,IACvBykJ,GAAgB,GAEhBzkJ,EAAGh2E,gBAAgB,EAqBjBi7N,YAXqBC,KACvBT,GAAgB,EAAM,EAWpBvpO,MAAO,CAAC2tL,gBAAkB27C,EAAe,eAAYhtO,IAEpDktO,EACAJ,GACC/pI,EAAAA,cAAA,OAAKzpD,UAAU,gBACZwzL,GAGL/pI,EAAAA,cAAA,SACEv/F,GAAK,cAAaA,IAClB1C,KAAK,OACLisE,OAAQnrE,MAAMgpB,QAAQ6+J,GAAgBA,EAAan2J,YAAStzB,EAC5D+xB,SA/BkBtf,IACtBA,EAAM+5J,UACF/5J,EAAMjJ,OAAO8oL,OACf66C,EAAYvrO,MAAM6c,KAAKhM,EAAMjJ,OAAO8oL,OACtC,EA4BIq7C,UAAQ,IAEJ,iDC5EZ,OAfwBpqO,IAAuB,IAAtB,KAACiiJ,EAAI,SAAEooF,GAASrqO,EACvC,MAAM,eAAEoxL,EAAc,WAAEhrK,EAAU,UAAE4D,IAAcsgN,EAAAA,GAAAA,GAAgB,CAACrqO,GAAIgiJ,EAAKsoF,SAE5E,OACE/qI,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,CAAKggB,UAAU,oBAAuBq7I,GACpC5xF,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAACgrI,GAAAA,EAAa,CAACvoF,KAAMA,EAAMwoF,aAAa,KAE1CjrI,EAAAA,cAAA,UAAQzpD,UAAU,gBAAgBw2G,QAASA,IAAM89E,IAAYlqO,MAAO,CAACL,QAAUsmB,GAAc4D,EAAa,YAASvtB,IACjH+iG,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMgoM,GAAAA,IAAS7gM,KAAK,QAEnC,kDCXV,OAZmC,CACjC,YACA,aACA,YACA,YACA,kBACA,qBACA,0EACA,2BACA,qEC0PF,OA5OyB7pC,IAUlB,IAVmB,OACxB2qO,EAAM,YACN98C,EAAW,WACX+8C,EAAW,GAAE,iBACbC,EAAiB,GAAE,WACnBC,EAAW,GAAE,UACbC,EAAU,GAAE,aACZC,EAAa,GAAE,GACf/qO,EAAE,SACFgrO,GACDjrO,EACC,MAAM,EAACssC,EAAM,EAAC4+L,IAAY5oO,EAAAA,EAAAA,UAAS,KAC7B,EAACm9B,EAAY,EAAC0rM,IAAkB7oO,EAAAA,EAAAA,UAAS,KACzC,EAAC46E,EAAM,EAACkuJ,IAAY9oO,EAAAA,EAAAA,UAAS,KAC7B,EAAC26E,EAAK,EAACouJ,IAAW/oO,EAAAA,EAAAA,UAAS,KAC3B,EAACwlJ,EAAW,EAACwjF,IAAiBhpO,EAAAA,EAAAA,UAAS,KAEvC,SAAE8zB,EAAQ,QAAEo/H,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KACnC,UAAE4qH,EAAS,QAAEC,IAAYC,EAAAA,GAAAA,GAAa,KAAM,aAAc3jF,IAC1D,2BAAE20E,IAA+B1mE,EAAAA,GAAAA,GAAiB3/H,EAAUo/H,IAC5D,cAAEqP,IAAkB1Z,EAAAA,EAAAA,KAEpBugF,EAAkBjnN,UACtB,MAAMknN,EAAa5B,EAAcjpN,KAAIsuC,GAAKo8K,EAAQp8K,KAClDk8K,EAAc,GAADzqN,QAAAkvF,EAAAA,EAAAA,GAAK+3C,IAAU/3C,EAAAA,EAAAA,GAAK47H,IAAY,EAGzCjD,EAAkBA,KACtBwC,EAASN,GACTO,EAAeN,GACfO,EAASN,GACTO,EAAQN,GACRO,EAAcN,EAAa,EAWvB78C,EAAS1pK,UACbikN,IACA76C,GAAa,EA2Ef,OACEruF,EAAAA,cAACyuF,EAAAA,EAAK,CACJxpG,KAAMkmJ,EACNx8C,OAAQA,IAAMA,IACdD,OAAQA,KAxFVw6C,SAEIuC,GACFS,EAAgBT,KAsFhB78C,UAAQ,EACRC,WAAW,EACXxkJ,KAAK,KACL8+L,WAAW,OACX5yL,UAAU,kDAEVypD,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,KACTtyM,EACCu/F,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,uCAAuCu/B,eAAe,iBAE3EggE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sCAAsCu/B,eAAe,kBAKhFggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAAA,SAAO8qE,QAAQ,SACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,QAAQu/B,eAAe,UAAS,MAEvDggE,EAAAA,cAAA,SACEv/F,GAAG,QACH1C,KAAK,OACL2C,MAAOosC,EACP9d,SAAWtf,GAAUg8N,EAASh8N,EAAMjJ,OAAO/F,OAC3CsqK,UAAU,EACVc,UAAW,KAGb9rE,EAAAA,cAAA,SAAO8qE,QAAQ,eACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,cAAcu/B,eAAe,iBAEpDggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,kDACHu/B,eAAe,yFAGnBggE,EAAAA,cAAA,YACEv/F,GAAG,cACHwqK,KAAK,IACLvqK,MAAOu/B,EACPjR,SAAWtf,GAAUi8N,EAAej8N,EAAMjJ,OAAO/F,SAGnDs/F,EAAAA,cAAA,SAAO8qE,QAAQ,QACb9qE,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,OAAOu/B,eAAe,UAE7CggE,EAAAA,cAACosI,GAAS,CACR1uJ,MAAOA,EACPD,KAAMA,EACNwqE,YAAa2jF,EACb1jF,WAAY2jF,IAGd7rI,EAAAA,cAAA,aACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,6CACHu/B,eAAe,wCACf,MAEJggE,EAAAA,cAAA,OAAKzpD,UAAU,sBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,iDACHu/B,eAAe,gIAGlBsoH,EAAW/pJ,OAAS,GACnByhG,EAAAA,cAACqsI,GAAAA,EAAiB,CAChB91L,UAAU,uBACVo6I,SAAUm7C,EACVl7C,4BAA6B/qL,GAAAA,GAC7BgrL,gBAAiBpoK,GAAAA,GACjBioK,OAAQpoC,EACRwoC,iBAAiB,QAEhBi7C,EAAUzqN,KAAIsuC,GACbowC,EAAAA,cAACssI,GAAe,CAACrsO,IAAK2vD,EAAEm7K,OAAQtoF,KAAM7yF,EAAGi7K,SAAUA,IAAMiB,EAAcxjF,EAAW/jJ,QAAO9D,GAAMA,IAAOmvD,EAAEm7K,eAI9G/qI,EAAAA,cAACusI,GAAgB,CACfvC,aAAckC,EACdnC,aAAc1kE,EAAc,CAC1B5kK,GAAI,mDACJu/B,eAAgB,6EAElB0mJ,aAAc8lD,GACd/rO,GAAIA,KAKRu/F,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,KACVtvL,GACCu/F,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,wCAAwCu/B,eAAe,WACnFiwJ,UAAU,EACVljC,QA/GW9nI,gBACbE,QAAQ4kB,IAAIyhM,EAAalqN,KAAI2D,gBAC3B2R,EAASozH,eAAe,aAAcvpJ,EAAG,WAE3Cm2B,EAASsyH,YAAYzoJ,GAC3BkuL,GAAQ,IA6GJ3uF,EAAAA,cAACgwF,EAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sCAAsCu/B,eAAe,SACjFiwJ,UAAU,EACVljC,QArLW9nI,UACjB,GAAK6nB,GAA+B,IAAtBw7G,EAAW/pJ,OAYzB,GAAIwtO,EAAUxhO,MAAKqlD,GAAKA,EAAE4vH,aACxB3U,EAAAA,EAAAA,GAAkB,CAChBpf,QAAS,sDAIb,GAAIsgF,EAAUxhO,MAAKqlD,GAAKA,EAAEqR,gBACxB4pG,EAAAA,EAAAA,GAAkB,CAChBpf,QAAS,oCACT9yH,QAAS,mEAIb,GAAK+kD,IAAUD,GAAUA,IAASC,GAAWD,GAAwB,IAAhBA,EAAKl/E,QACxDssK,EAAAA,EAAAA,GAAkB,CAChBpf,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,qCAAqCu/B,eAAe,uBAFtF,CAOA,IACE,MAAMysM,EAAiBjB,EAAajnO,QAAO9D,IAAO6nJ,EAAWl+I,SAAS3J,WAChE0kB,QAAQ4kB,IAAI0iM,EAAenrN,KAAI2D,gBAC7B2R,EAASozH,eAAe,aAAcvpJ,EAAG,KAGjD,MAAMgrO,EAAWM,EAAUxnO,QAAOqrD,IAAMA,EAAE88K,gBACpCvnN,QAAQ4kB,IAAI0hM,EAASnqN,KAAI2D,gBACvB2R,EAASyyH,eAAe,aAAcz5F,EAAEm7K,OAAQn7K,EAAEiuF,SAAUjuF,EAAE+8K,cAAc,KAGhFlsO,QACIm2B,EAASqyH,UAAUxoJ,GAAI,EAAOqsC,EAAO7M,EAAay9C,EAAOD,EAAM6qE,SAE/D1xH,EAASmyH,SAASj8G,EAAO7M,EAAay9C,EAAOD,EAAM6qE,EAG7D,CAAE,MAAOr0H,GAKP,YAJA42I,EAAAA,EAAAA,GAAkB,CAChBpf,QAAS,iDACT9yH,QAAS,2BAGb,CAEAg2J,IACKluL,SACGw8N,EAA2BjnE,EA7BnC,MA7BE6U,EAAAA,EAAAA,GAAkB,CAChBpf,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,0DAA0Du/B,eAAe,sCACvGrH,QACEqnE,EAAAA,cAAAA,EAAAA,SAAA,MACIlzD,GAASkzD,EAAAA,cAAA,WAAK,SACO,IAAtBsoD,EAAW/pJ,QAAgByhG,EAAAA,cAAA,WAAM,sBAsD1C,KA2HQ,cChLZ,OAjCmBx/F,IAAW,IAAV,GAACC,GAAGD,EACtB,MAAM,EAACosO,EAAc,EAACC,IAAoB/pO,EAAAA,EAAAA,WAAS,IAC7C,MAAEgqC,EAAK,YAAE7M,EAAW,MAAEy9C,EAAK,KAAED,EAAI,WAAEqvJ,EAAU,QAAEC,IAAWC,EAAAA,GAAAA,GAAmB,KAAMvsO,IACnF,UAAEsrO,IAAcE,EAAAA,GAAAA,GAAa,KAAM,aAAcc,EAAQjuO,MAAM,EAAG,KAClE,eAAE8yL,IAAmBk5C,EAAAA,GAAAA,GAAgB,CAACrqO,GAAIA,IAE1CwsO,EAhCmBC,EAACjtM,EAAa6M,EAAO0wC,KAC9C,MAKM2vJ,EAAa3vJ,EAAQ,OAAU,EAK/B4vJ,EAPY,OACM,IAKcpoO,KAAKuoC,KAAKT,EAAMvuC,OAAM,QACR4uO,EAH9B,IAKhBE,EAA2B,MADZroO,KAAKukE,MAAM6jK,EALT,MAQvB,OAAIntM,EAAY1hC,OAAS8uO,EAChBptM,EAEAA,EAAYnF,UAAU,EAAGuyM,EAAe,GAAK,KACtD,EAa6BH,CAAmBjtM,EAAa6M,EAAOggM,GAEpE,OACE9sI,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,CAAKggB,UAAU,eAAkBq7I,GAC/B5xF,EAAAA,cAAA,OAAKzpD,UAAU,gBACZw1L,EAAUxtO,OAAS,GAAKyhG,EAAAA,cAACgrI,GAAAA,EAAa,CAACvoF,KAAMspF,EAAU,GAAId,aAAa,KAE3EjrI,EAAAA,cAAA,OAAKzpD,UAAU,eACbypD,EAAAA,cAAA,OAAKzpD,UAAU,SAASzJ,GACvBggM,GAAc9sI,EAAAA,cAAA,OAAKzpD,UAAU,QAAQu2L,GACrCG,GAAwBjtI,EAAAA,cAAA,OAAKzpD,UAAU,eAAe02L,IAEzDjtI,EAAAA,cAACupI,GAAAA,EAAU,CAACx8E,QAASA,IAAM8/E,GAAiB,KAC5C7sI,EAAAA,cAACstI,GAAgB,CACfnC,OAAQyB,EACRv+C,YAAaA,IAAMw+C,GAAiB,GACpCpsO,GAAIA,EACJ2qO,WAAYt+L,EACZu+L,iBAAkBprM,EAClBqrM,WAAY5tJ,EACZ6tJ,UAAW9tJ,EACX+tJ,aAAcuB,IAEZ,YC3BV,OAnCkCQ,KAChC,MAAM,SAACC,EAAQ,oBAAEC,IAAuBC,EAAAA,GAAAA,GAAyB,MAEjE,OAAwB,IAApBF,EAASjvO,OAETyhG,EAAAA,cAAA,OAAKzpD,UAAU,aACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,aACHu/B,eAAe,gBAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,sCACHu/B,eAAe,gFAOrBggE,EAAAA,cAACqsI,GAAAA,EAAiB,CAChB91L,UAAU,aACVo6I,SAAU88C,EACV78C,4BAA6B/qL,GAAAA,GAC7BgrL,gBAAiBpoK,GAAAA,GACjBioK,OAAQ88C,GAEPA,EAASlsN,KAAIknI,GAAWxoD,EAAAA,cAAC2tI,GAAU,CAAC1tO,IAAKuoJ,EAAS/nJ,GAAI+nJ,MAG7D,ECAF,OAlCmBolF,KACjB,MAAM,EAACnC,EAAS,EAACoC,IAAe/qO,EAAAA,EAAAA,UAAS,IAEzC,OACEk9F,EAAAA,cAAA,OAAKzpD,UAAU,cACbypD,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,SACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,aACHu/B,eAAe,gBAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,eACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0BACHu/B,eAAe,wEAGnBggE,EAAAA,cAACusI,GAAgB,CACfvC,aAAez6C,GAAUs+C,EAAYt+C,GACrC7I,aAAc8lD,GACd/rO,GAAG,gBAGPu/F,EAAAA,cAACutI,GAAyB,MAC1BvtI,EAAAA,cAACstI,GAAgB,CACfnC,OAAQM,EAASltO,OAAS,EAC1B8vL,YAAaA,IAAMw/C,EAAY,IAC/BpC,SAAUA,IAER,cC8BV,OApDyBjrO,IAAwC,IAAvC,QAACw1J,EAAO,eAAEsvD,EAAc,OAAEptE,GAAO13I,EACzD,MAAM,SAAEgtO,IAAaE,EAAAA,GAAAA,GAAyBx1F,GAE9C,OACEl4C,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,uBACbypD,EAAAA,cAAA,OACEzpD,UAAU,YACV61H,IAAKpW,EAAQwzE,mBAAqBsE,GAClCvjG,IAAI,+BAEJ+6E,GACAtlH,EAAAA,cAAA,OAAKzpD,UAAU,8CACbypD,EAAAA,cAAC+tI,GAAmB,CAACvhE,aAAcxW,EAAQwzE,mBAAqBsE,OAItE9tI,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAACguI,GAAgB,CACfh4E,QAASA,EACTsvD,eAAgBA,IAElBtlH,EAAAA,cAACiuI,GAAqB,CACpBj4E,QAASA,EACTsvD,eAAgBA,IAElBtlH,EAAAA,cAACkuI,GAAAA,EAAM,CACLh2F,OAAQA,EACRotE,eAAgBA,KAGlBA,EAKFkoB,EAASjvO,OAAS,EAChByhG,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,aACHu/B,eAAe,gBAGnBggE,EAAAA,cAACmuI,GAAAA,EAAgB,CAACj2F,OAAQA,KAE1B,KAdFl4C,EAAAA,cAAA,OAAKzpD,UAAU,+BACbypD,EAAAA,cAAC4tI,GAAU,OAeX,2EC/BV,IA3BqBptO,IAAoD,IAAnD,MAACqhH,EAAK,SAAEouE,EAAQ,QAAEljC,EAAS9nI,UAAY,OAAMzkB,EACjE,MAAM,EAAC0gH,EAAQ,EAAC60C,IAAcjzJ,EAAAA,EAAAA,WAAS,GAQjCsrO,EAAcltH,EAAU,UACV+uE,EAAW,SAAW,WAE1C,OACEjwF,EAAAA,cAAA,UACEjiG,KAAK,SACLw4C,UAAY,iBAAgB63L,IAC5BrhF,QAbgB9nI,UAClB8wI,GAAW,SACLhJ,IACNgJ,GAAW,EAAM,GAYd70C,EACClhB,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmsJ,EAAAA,IAAWt4I,MAAI,EAAC1M,KAAK,OAE5Cw3E,EAEK,qDCab,IAhC2C,SAACy+G,EAAiBtqD,EAASq4D,EAAWC,QAAzB,IAAZhO,IAAAA,EAAa,IACvD,MAAM,cAAEj7D,IAAkB1Z,EAAAA,EAAAA,KAE1B,IAAK20E,EAAc,CACjB,MAAMiO,EAAiB,GACvB,GAAIv4D,EAAS,CACX,MAAMw4D,EAAgBnpE,EAAc,CAClC5kK,GAAI,wCACJu/B,eAAgB,sBAElBuuM,EAAenvO,KAAM,GAAEovO,MAAkBx4D,IAC3C,CACA,GAAIq4D,EAAW,CACb,MAAMI,EAAoBppE,EAAc,CACtC5kK,GAAI,4CACJu/B,eAAgB,iBAElBuuM,EAAenvO,KAAM,GAAEqvO,MAAsBJ,IAC/C,CACA,GAAIC,EAAY,CACd,MAAMI,EAAqBrpE,EAAc,CACvC5kK,GAAI,6CACJu/B,eAAgB,kBAElBuuM,EAAenvO,KAAM,GAAEsvO,MAAuBJ,IAChD,CACAhO,EAAeiO,EAAeh+M,KAAK,KACrC,CAEA,OAAO+vM,CACT,gEClCA,IANsBqO,IAElB3uI,EAAAA,cAACo4H,EAAAA,EAAS,yDCKd,IARyBE,IAErBt4H,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAI,2ECKV,IARqBq4H,IAEjBr4H,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,UAAI,sFCyBV,IAxBsBg2D,IAAa,IAAD44E,EAEhC,OADA54E,EAAiB,QAAP44E,EAAA54E,SAAO,IAAA44E,GAAPA,EAAS54E,QAAUA,EAAQA,QAAUA,EACxCh2D,EAAAA,cAAA,OAAKzpD,UAAU,2BACjBy/G,GAAaA,EAAQmW,gBACtBnsE,EAAAA,cAAA,OACEzpD,UAAU,gBACV51C,MAAO,CACLorK,SAAU,OACV2mC,UAAW,QACXC,eAAgB,cAElBvmC,IAAKpW,EAAQmW,gBACb5hC,IAAI,iBAGJvqC,EAAAA,cAAA,OACEzpD,UAAU,gBACVg0F,IAAI,eACJ6hC,IAAKC,EAAAA,IAGP,iIC2JR,MA5KiC7rK,IAI1B,IAJ2B,eAChCquO,EAAc,eACdvpB,EAAc,iBACdwpB,GACDtuO,EACC,MAAM,KACJzC,EAAI,SACJgkO,EAAW,GAAE,MACbj1L,EAAQ,GAAE,UACV46I,EAAY,GAAE,SACdjtG,EAAW,GAAE,YACbx6C,EAAc,GAAE,WAChBglM,EAAa,GAAE,OACfzD,EAAS,GAAE,OACXa,EAAS,GAAE,cACXD,EAAgB,GAAE,YAClBH,EAAc,GAAE,OAChB/2D,EAAS,GAAE,MACXo2D,EAAQ,GAAE,eACVv3C,EAAc,cACdH,GACEilD,EAEJ,IAAIzmF,EAAeymF,EAAezmF,aAC9BC,EAAcwmF,EAAexmF,YAEjC,MAAM0mF,EACJ/uI,EAAAA,cAAA,OAAKj/F,MAAM,KAAKC,OAAO,KAAKq3L,QAAQ,YAAY9rJ,KAAK,OAAO0zK,MAAM,8BAChEjgH,EAAAA,cAAA,QAAMzwD,EAAE,iIAAiIhD,KAAK,UAC9IyzD,EAAAA,cAAA,QAAMzwD,EAAE,iIAAiI+oJ,OAAO,eAAeC,YAAY,MAC3Kv4F,EAAAA,cAAA,QAAMzwD,EAAE,cAAc+oJ,OAAO,eAAeC,YAAY,OAItDy2C,EACJhvI,EAAAA,cAAA,OAAKj/F,MAAM,KAAKC,OAAO,KAAKq3L,QAAQ,YAAY9rJ,KAAK,OAAO0zK,MAAM,8BAChEjgH,EAAAA,cAAA,QAAMzwD,EAAE,iIAAiIhD,KAAK,UAC9IyzD,EAAAA,cAAA,QAAMzwD,EAAE,iIAAiI+oJ,OAAO,eAAeC,YAAY,MAC3Kv4F,EAAAA,cAAA,QAAMzwD,EAAE,cAAc+oJ,OAAO,eAAeC,YAAY,MACxDv4F,EAAAA,cAAA,QAAMzwD,EAAE,mBAAmB+oJ,OAAO,eAAeC,YAAY,QAI3D,EAAC02C,EAAY,EAACC,IAAkBpsO,EAAAA,EAAAA,WAAS,IACzC,EAACqsO,EAAY,EAACC,IAAkBtsO,EAAAA,EAAAA,WAAS,IACzC,OAAE88B,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,KAOlC,IAAIg+B,EAAY,GACZI,GAAkBH,IACpBD,EAAa,IAAEy7C,EAAAA,EAAAA,IAAgBr7C,EAAgBnqJ,MAAWgqJ,KAE5D,IAAIH,EAAU,GAId,GAHIrhC,GAAgBC,IAClBohC,EAAW,IAAE27C,EAAAA,EAAAA,IAAgBh9E,EAAcxoH,MAAWyoH,KAEpDshC,IAAcF,EAAS,CACzBA,EAAUpkB,EAAc,CAAC5kK,GAAI,0BAA2Bu/B,eAAgB,YACxE,MAAM63H,EAAc,IAAIzjI,KACxBg0H,EAAeyP,EAAYp5E,WAAa,EACxC4pE,EAAcwP,EAAYt5E,aAC5B,CACA,IAAI8wJ,EAAkB,GACtB,GAAI1lD,GAAaF,EAAS,CACxB,MAAM/rG,EAAQ2nF,EAAc,CAAC5kK,GAAI,wBAAyBu/B,eAAgB,UACpEq9C,EAASgoF,EAAc,CAAC5kK,GAAI,yBAA0Bu/B,eAAgB,UACtEy9C,EAAO4nF,EAAc,CAAC5kK,GAAI,uBAAwBu/B,eAAgB,SAClEsvM,EAAQjqE,EAAc,CAAC5kK,GAAI,wBAAyBu/B,eAAgB,UAEpEuvM,EAA6B,GAAdlnF,EAAoBl2E,SAASi2E,EAAc,IAAuB,GAAhBwhC,EAAsBz3G,SAAS43G,EAAgB,IAChHylD,EAAWxqO,KAAKukE,MAAMgmK,EAAc,IACpCE,EAAYF,EAAc,GAE1BG,EAAeF,EAAW,EAAM,GAAEA,KAAYA,EAAW,EAAIF,EAAQ7xJ,IAAS,GAC9EkyJ,EAAgBF,EAAY,EAAM,GAAEA,KAAaA,EAAY,EAAIpyJ,EAASK,IAAU,GAE1F2xJ,EAAmB,GAAEK,IAAcA,GAAeC,GAAgB,MAAMA,GAC1E,CACA,IAAIC,EAAoB,GAAEjmD,IAAYA,GAAaF,GAAW,QAAQA,IAGlEomD,EAAe/iM,EACN,cAAT/uC,EACF8xO,EAAgB,GAAErO,IAASA,GAAU,OAAOF,IAC1B,SAATvjO,IACT8xO,EAAenoD,GAIjB,IAAIooD,EAAkB,GAClBC,EAAW,GACf,GAAa,cAAThyO,GAAwBmtK,EAC1B6kE,EAAW7kE,OACN,GAAc,SAATntK,GAA4B,cAATA,IAAyBgkO,EAEjD,GAAa,UAAThkO,IAAqBskO,GAAUD,GAAgB,CACxD,MAAM4N,EAAW3qE,EAAc,CAAC5kK,GAAI,4BAA6Bu/B,eAAgB,cAC3EiwM,EAAe5N,GAAW,GAAE2N,KAAY3N,IAExC6N,EAAiB7qE,EAAc,CAAC5kK,GAAI,kCAAmCu/B,eAAgB,oBAG7F+vM,EAAY,GAAEE,IAAe5N,GAAUD,GAAiB,QAF/BA,GAAkB,GAAE8N,KAAkB9N,KAGjE,KAAoB,eAATrkO,GAAyBkkO,EAClC8N,EAAW9N,EACO,gBAATlkO,GAA0BskO,EACnC0N,EAAW1N,EACO,eAATtkO,GAAyBmtK,IAClC6kE,EAAW7kE,QAdX6kE,EAAWhO,EAgBb+N,EAAmB,GAAEC,IAAWA,GAAYt1J,GAAY,QAAQA,IAGhE,MAAMyqJ,EAAmBD,EAAW1gO,QAAO4gO,GAAaA,IAExD,OACEnlI,EAAAA,cAAA,OAAKzpD,UAAY,+BAA6Bu4L,EAAmB,mCAAqC,MAClGxpB,GACAtlH,EAAAA,cAAC+nI,EAAAA,EAA2B,CAC1BhqO,KAAMA,EACN8wO,eAAgBA,EAChB5pJ,KAAMgqJ,EACNhH,mBA/EmBA,KACzBiH,GAAe,EAAM,EA+EflH,iBAAiB,IAGrBhoI,EAAAA,cAAA,UAAQzpD,UAAU,kBAAkBw2G,QAASA,IAAMqiF,GAAgBD,IAChEA,EAAcH,EAAaD,GAE9B/uI,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,yBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,mBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,SACZs5L,GAEH7vI,EAAAA,cAAA,OAAKzpD,UAAU,YACZu5L,IAGL9vI,EAAAA,cAAA,OAAKzpD,UAAU,kBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,cAAcq5L,GAC7B5vI,EAAAA,cAAA,OAAKzpD,UAAU,YAAY84L,MAG7B/pB,GAAkBtlH,EAAAA,cAACupI,EAAAA,EAAU,CAACx8E,QAASA,IAAMmiF,GAAe,OAE9DC,GACAnvI,EAAAA,cAAAA,EAAAA,SAAA,KACC//D,GACC+/D,EAAAA,cAAA,KAAGzpD,UAAU,0CACVtW,GAGJilM,EAAiB3mO,OAAS,GACzByhG,EAAAA,cAAA,MAAIzpD,UAAU,2BACX2uL,EAAiB5jN,KAAI,CAAC6jN,EAAWttN,IAChCmoF,EAAAA,cAAA,MAAI//F,IAAM,aAAY4X,IAAS0+B,UAAU,iCACtC4uL,OAOP,EC3IV,MAhCuB3kO,IAIhB,IAJiB,KACtBzC,EAAI,oBACJoyO,EAAmB,eACnB7qB,GACD9kN,EACC,MAAM4vO,EAA0BD,GAC9BtxO,MAAMgpB,QAAQsoN,IAAwBA,EAAoB5xO,OAE5D,OAAK6xO,EAAwBD,GAK3BnwI,EAAAA,cAAA,OAAKzpD,UAAU,mBACZ65L,EAAwBD,IACvBA,EAAoB7uN,KAAI,CAACutN,EAAgBh3N,KAAK,IAAAw4N,EAAA,OAC5CrwI,EAAAA,cAACswI,EAAwB,CACvBrwO,IAAK4uO,EAAepuO,GACpB1C,KAAMA,EACN8wO,eAAgBA,EAChB0B,oBACgC,QADbF,EACjBF,EAAoBt4N,EAAQ,UAAE,IAAAw4N,EAAAA,EAAI,KAEpC/qB,eAAgBA,EAChBwpB,iBAAkBj3N,IAAUs4N,EAAoB5xO,OAAS,GACzD,KAhBD,IAmBD,qIC4BV,MAhDmBiC,IAAuC,IAAtC,KAACzC,EAAI,eAAEunN,EAAc,SAAE1qM,GAASpa,EAClD,MAAM,EAACgwO,EAAgB,EAACC,IAAsB3tO,EAAAA,EAAAA,WAAS,IACjD,SAAE8wL,IAAaF,EAAAA,EAAAA,MACf,eACJ9B,EAAc,iBACdC,EAAgB,WAChBjrK,IACEkkN,EAAAA,EAAAA,GAAgB,CAACrqO,GAAI1C,EAAMszL,gBAAiBi0B,EAAgB1qD,MAAO,KAAM02B,mBAAoBsC,IAEjG,OACE5zF,EAAAA,cAAAA,EAAAA,SAAA,MACIslH,GACAtlH,EAAAA,cAAC+nI,EAAAA,EAA2B,CAC1BC,iBAAiB,EACjB/iJ,KAAMurJ,EACNzyO,KAAMA,EACNkqO,mBAAoBA,IAAMwI,GAAmB,KAGjDzwI,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,CAAKggB,UAAU,eAAkBq7I,GAC9BgC,IAAa0xB,GACZtlH,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,CAAKggB,UAAY,gBAAc3vB,EAAa,WAAa,KAAUirK,GACjE7xF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMwtM,EAAAA,IAAcrmM,KAAK,OAC1C21D,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,uBACHu/B,eAAe,mBAIrBggE,EAAAA,cAAA,OAAKzpD,UAAU,gBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,eACbypD,EAAAA,cAAA,OAAKzpD,UAAU,eACZo6L,EAAAA,EAAAA,IAAmB5yO,KAEpBunN,GACAtlH,EAAAA,cAACuoI,EAAAA,EAAS,CACR1mH,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sBAAsBu/B,eAAe,UACjE+sH,QAASA,IAAM0jF,GAAmB,MAIvC71N,IAGJ,wBCKP,MA9CqBpa,IAAuE,IAAtE,OAAC03I,EAAM,aAAEgS,EAAY,aAAE0mF,EAAY,WAAE/J,EAAU,eAAEvhB,GAAe9kN,EACpF,MAAM,SAAEo2B,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1B,EAAC0vH,EAAe,EAACC,IAAqBhuO,EAAAA,EAAAA,UAAS,IAE/CiuO,EAAwB1mF,IAG5B,MAAM2mF,EAAmB3mF,EAAS9lJ,QAAOxG,GAAQ6yO,EAAaxmO,SAASrM,KACjEkzO,EAAmBL,EAAarsO,QAAOxG,IAASssJ,EAASjgJ,SAASrM,KACxE+yO,EAAkB,GAADzvN,QAAAkvF,EAAAA,EAAAA,GAAKygI,IAAgBzgI,EAAAA,EAAAA,GAAK0gI,IAAkB,GAG/D7tO,EAAAA,EAAAA,YAAU,KACR,GAAIwzB,GAAYszH,EAAc,CAC5B,MAAMgnF,EAAsBt6M,EAASqzH,8BAA8B/R,EAAQgS,EAAc6mF,GACzF,MAAO,IAAMG,GACf,IACC,CAACt6M,EAAUszH,EAAchS,IAE5B,MAKMi5F,EAAcN,EAAetsO,QAAOuqN,QAAqC7xN,IAAzB4pO,EAAW/X,KACjE,OAA2B,IAAvBqiB,EAAY5yO,OACP,KAIPyhG,EAAAA,cAACqsI,EAAAA,EAAiB,CAChB91L,UAAY,2BAA0B2zG,IACtCymC,SAba1rK,UACf8rN,EAAqB1mF,SACfzzH,EAASwzH,wBAAwBF,EAAcG,EAAS,EAY5DumC,6BAA6BK,EAAAA,EAAAA,GAA2B,CAAC1pL,EAAAA,GAAe1B,EAAAA,KACxEgrL,gBAAiB9nK,EAAAA,GACjB2nK,OAAQygD,GAEPA,EAAY7vN,KAAIwtM,GACf9uH,EAAAA,cAACoxI,EAAU,CAACnxO,IAAK6uN,EAAU/wN,KAAM+wN,EAAUxJ,eAAgBA,GACxDuhB,EAAW/X,MAGE,ECGxB,MAhDsBtuN,IAAsE,IAArE,OAAE03I,EAAM,YAAEsS,EAAc,GAAE,OAAEI,EAAM,UAAEC,EAAS,eAAEy6D,GAAgB9kN,EACpF,MAAM6wO,EAAuB,CAAC,EA2B9B,OAzBAC,EAAAA,GAAgB3iO,SAAQ4iO,IACtB,MAAMC,GAAsBxM,EAAAA,EAAAA,IAAwBx6E,EAAa+mF,GACjE,GAAIC,EAAoBjzO,OAAS,EAAG,CAClC,MAAMkzO,EACJzxI,EAAAA,cAAC0xI,EAAc,CACb3zO,KAAMwzO,EACNpB,oBAAqBqB,EACrBlsB,eAAgBA,IAGpB+rB,EAAqBE,GAAWE,CAClC,KAGE7mF,GAAUA,EAAOrsJ,SACnB8yO,EAA6B,OAC3BrxI,EAAAA,cAAC2xI,EAAAA,EAAU,CAAC5zO,KAAK,SAASwqB,MAAOqiI,EAAQ06D,eAAgBA,KAGzDz6D,GAAaA,EAAUtsJ,SACzB8yO,EAAgC,UAC9BrxI,EAAAA,cAAC2xI,EAAAA,EAAU,CAAC5zO,KAAK,YAAYwqB,MAAOsiI,EAAWy6D,eAAgBA,KAKjEtlH,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAC4xI,EAAY,CACX15F,OAAQA,EACRgS,aAAa,IACb0mF,aAAc1J,EAAAA,GACdL,WAAYwK,EACZ/rB,eAAgBA,IAElBtlH,EAAAA,cAAC4xI,EAAY,CACX15F,OAAQA,EACRgS,aAAa,IACb0mF,aAAcxJ,EAAAA,GACdP,WAAYwK,EACZ/rB,eAAgBA,IAEd,aCkBV,MAjEe9kN,IAGR,IAHS,OACd03I,EAAM,eACNotE,GACD9kN,EACC,MAAM,YAAEgqJ,EAAW,OAAEI,EAAM,UAAEC,IAAcgnF,EAAAA,EAAAA,GAAc35F,IACnD,EAAC45F,EAAuB,EAACC,IAA6BjvO,EAAAA,EAAAA,UAAS,MAC/D62B,EAAkC,IAAvB6wH,EAAYjsJ,QAAkC,IAAlBqsJ,EAAOrsJ,QAAqC,IAArBssJ,EAAUtsJ,OAE9E,OAAIo7B,GAAW2rL,EACN,KAIPtlH,EAAAA,cAAAA,EAAAA,SAAA,MAGIslH,GACAtlH,EAAAA,cAAC+nI,EAAAA,EAA2B,CAC1BC,iBAAiB,EACjB/iJ,KAAiC,OAA3B6sJ,EACN/zO,KAAM+zO,EACN7J,mBAAoBA,IAAM8J,EAA0B,QAGvDp4M,EACCqmE,EAAAA,cAAA,OAAKzpD,UAAU,wBACbypD,EAAAA,cAAA,OAAKzpD,UAAU,qBACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,SACHu/B,eAAe,YAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,4BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,kCACHu/B,eAAe,2FAGnBggE,EAAAA,cAAA,OAAKzpD,UAAU,4BACZsxL,EAAAA,GAAmBvmN,KAAIvjB,GACtBiiG,EAAAA,cAAA,UACE//F,IAAKlC,EAAKA,KACVw4C,UAAU,oBACVw2G,QAASA,IAAMglF,EAA0Bh0O,EAAKA,OAE7CA,EAAK8jH,WAMd7hB,EAAAA,cAAA,OAAKzpD,UAAU,UACbypD,EAAAA,cAACgyI,EAAa,CACZ95F,OAAQA,EACRotE,eAAgBA,EAChB96D,YAAaA,EACbI,OAAQA,EACRC,UAAWA,KAIhB,6ICvEA,MAAMonF,GAA0BvwO,EAAAA,EAAAA,eAAc,gCC2arD,MA/Z6BlB,IAAsD,IAAD0xO,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAApD,MAAE1wH,EAAK,SAAE2wH,EAAQ,SAAExnE,EAAQ,iBAAEynE,GAAkBjyO,EAC3E,MAAM,WACJ0+I,EAAU,2BACVwzF,EAA0B,0BAC1BC,EAAyB,+BACzBC,IACEtvO,EAAAA,EAAAA,YAAW2uO,IACT,cAAE5sE,EAAa,OAAEzlI,IAAW+rH,EAAAA,EAAAA,MAK5B,EAACknF,EAAiB,EAACC,IAAuBhwO,EAAAA,EAAAA,UAHzBo8I,IACQ,QAA7BA,aAAU,EAAVA,EAAYkJ,eAAqD,QAA5BlJ,aAAU,EAAVA,EAAYmJ,aAGjD0qF,CAAe7zF,KAMX,EAAC8zF,EAAsB,EAACC,IAA4BnwO,EAAAA,EAAAA,UAH5Bo8I,IACG,QAA/BA,aAAU,EAAVA,EAAY6qC,iBAAyD,QAA9B7qC,aAAU,EAAVA,EAAY0qC,eAGnDspD,CAAsBh0F,IASlBi0F,EAAW,CACf,iBACA,gBACA,eACA,eAQIC,EAAgB,CACpBrpD,eAAgB/pF,EAAAA,cAAC+qE,EAAAA,EAAgB,CAC/BtqK,GAAG,gDACHu/B,eAAe,4FAEjB4pJ,cAAe5pF,EAAAA,cAAC+qE,EAAAA,EAAgB,CAC9BtqK,GAAG,+CACHu/B,eAAe,+GAEjBooH,aAAcpoD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAC7BtqK,GAAG,8CACHu/B,eAAe,2FAEjBqoH,YAAaroD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAC5BtqK,GAAG,6CACHu/B,eAAe,gHAQb,EAAC7G,EAAO,EAACgwI,IAAarmK,EAAAA,EAAAA,UAAS,CAAC,IAKhC,EAACuwO,EAAM,EAACC,IAAYxwO,EAAAA,EAAAA,UAAS,CACjCinL,eAA0C,QAA5BmoD,EAAEhzF,aAAU,EAAVA,EAAY6qC,sBAAc,IAAAmoD,EAAAA,EAAI,GAC9CtoD,cAAwC,QAA3BuoD,EAAEjzF,aAAU,EAAVA,EAAY0qC,qBAAa,IAAAuoD,EAAAA,EAAI,GAC5C/pF,aAAsC,QAA1BgqF,EAAElzF,aAAU,EAAVA,EAAYkJ,oBAAY,IAAAgqF,EAAAA,EAAI,GAC1C/pF,YAAoC,QAAzBgqF,EAAEnzF,aAAU,EAAVA,EAAYmJ,mBAAW,IAAAgqF,EAAAA,EAAI,KASpCkB,EAAkBA,KACtB,MAAMrvO,EAAU,GAChB,IAAK,IAAI9F,EAAI,EAAGA,EAAI,GAAIA,IACtB8F,EAAQ9E,KAAK,CACXa,IAAM,GAAE7B,EAAI,IACZsC,MAAQ,GAAEimL,EAAAA,GAAcvoL,KACxBqyF,KAAiB,UAAX7wD,EAAsB,GAAEgnJ,EAAAA,GAAmBxoL,KAAQ,GAAEyoL,EAAAA,GAAqBzoL,OAGpF,OAAO8F,CAAO,EAyBVsvO,EAAcC,IACG,IAjBJC,MACjB,IAAIC,EAAe,EAMnB,OALAR,EAASxkO,SAAQ1O,IACXk5B,EAAOl5B,IACT0zO,GACF,IAEKA,CAAY,EAUfD,KAGJP,EAASxkO,SAAQ1O,IACf,IACMozO,EAAMpzO,IAAQA,IAAQwzO,IAExBt6M,EAAOl5B,GAAO,KAElB,CAAE,MACAk5B,EAAOl5B,GAAOmzO,EAAcnzO,EAC9B,KAEFkpK,EAAU,IAAKhwI,IAAS,EAiK1B,OACE6mE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,aACG6hB,GACC7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,gBAGlBgrI,GAAY,MAGbwnE,GACAxyI,EAAAA,cAAA,OAAKr/F,MAAO,CACVL,QAAS,OACT+1N,cAAe,SACf9nC,eAAgB,aAChBhJ,WAAY,aACZmvB,SAAU,OACVF,UAAW,OACXC,OAAQ,SACRvoC,aAAc,SAEdlsE,EAAAA,cAAA,OACEzpD,UAAU,2BACV51C,MAAO,CAAEizO,SAAU,MAEnB5zI,EAAAA,cAAA,SACEzpD,UAAU,kBACV51C,MAAO,CAAEK,OAAQ,SAAUD,MAAO,UAClChD,KAAK,WACLs8L,QAASw4C,EACT7jN,SA3FaiF,IACnBA,EAAExtB,OAAO4zL,SACXy4C,GAAoB,GACpBG,GAAyB,GACzBN,GAA0B,GAC1BW,EAAS,IACJD,EACHjrF,aAAc,GACdC,YAAa,OAGfyqF,GAAoB,GACpBH,GAA0B,GAC5B,IAgFQ3yI,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0lL,WAAY,WAAYrmF,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtDtqK,GAAG,2CACHu/B,eAAe,sBACf,MAEHyyM,GACCzyI,EAAAA,cAAA,OACEzpD,UAAU,2BACV51C,MAAO,CAAEizO,SAAU,MAEnB5zI,EAAAA,cAAA,SACEzpD,UAAU,kBACV51C,MAAO,CAAEK,OAAQ,SAAUD,MAAO,UAClChD,KAAK,WACLs8L,QAAS24C,EACThkN,SA5FmBiF,IAC3BA,EAAExtB,OAAO4zL,SACX44C,GAAyB,GACzBH,GAAoB,GACpBF,GAA+B,GAC/BU,EAAS,IACJD,EACHtpD,eAAgB,GAChBH,cAAe,OAGjBqpD,GAAyB,GACzBL,GAA+B,GACjC,IAiFU5yI,EAAAA,cAAA,QAAMr/F,MAAO,CAAE0lL,WAAY,YAAarmF,EAAAA,cAAC+qE,EAAAA,EAAgB,CACvDtqK,GAAG,sDACHu/B,eAAe,iCACf,OAMVggE,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAAA,OAAKzpD,UAAU,6BACXi8L,IAAaQ,GACbhzI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACguG,EAAAA,EAAQ,CACPgX,OAAK,EACL5Y,WAAS,EACTw9B,WAAS,EACT1mM,KAAK,eACLh/B,QAASqvO,IACTvkN,SAAUA,CAACiF,EAAGsb,IA9NHmuC,KACvB41J,EAAS,IAAKD,EAAOtpD,eAAgBrsG,IACrCg1J,EAA2B,iBAAkBh1J,GAC7C,IAEMvkD,EAAO4wJ,iBACT5wJ,EAAO4wJ,eAAiB,MAE1BypD,EAAY,iBACd,CAAE,MAEAr6M,EAAO4wJ,eAAiBqpD,EAAcrpD,eACtC5gB,EAAU,IAAKhwI,GACjB,GAiNgC06M,CAAiBtkM,EAAE7uC,OACvC61C,UAAU,iBACVygJ,YAAa3xB,EAAc,CAAE5kK,GAAI,+BAAgCu/B,eAAgB,UACjFr/B,MAAO,CAAEmoN,SAAU,QACnBpoN,MAAO2yO,EAAMtpD,iBAEf/pF,EAAAA,cAAA,SACEhxE,SAzLUtf,IACtB,MAAM+tE,EAAO/tE,EAAMjJ,OAAO/F,MAG1B,GAFA4yO,EAAS,IAAKD,EAAOzpD,cAAensG,IACpCi1J,EAA2B,gBAAiBj1J,KACxCA,EAAKl/E,OAAS,GAIlB,IAEM46B,EAAOywJ,gBACTzwJ,EAAOywJ,cAAgB,MAEzB4pD,EAAY,gBACd,CAAE,MAEAr6M,EAAOywJ,cAAgBwpD,EAAcxpD,cACrCzgB,EAAU,IAAKhwI,GACjB,GAwKYz4B,MAA0B,QAArB4xO,EAAEe,EAAMzpD,qBAAa,IAAA0oD,EAAAA,EAAI,GAC9Bv0O,KAAK,OACLi5L,YAAa3xB,EAAc,CAAE5kK,GAAI,8BAA+Bu/B,eAAgB,aAKpF6yM,IAAqBL,IAAaQ,GAClChzI,EAAAA,cAAA,QAAMzpD,UAAU,SACdypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,4BACHu/B,eAAe,UAKlB6yM,GAAoBL,IACrBxyI,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACguG,EAAAA,EAAQ,CACPgX,OAAK,EACL5Y,WAAS,EACTw9B,WAAS,EACT1mM,KAAK,eACLh/B,QAASqvO,IACTvkN,SAAUA,CAACiF,EAAGsb,IAxOLmuC,KACrB41J,EAAS,IAAKD,EAAOjrF,aAAc1qE,IACnCg1J,EAA2B,eAAgBh1J,GAC3C,IAEMvkD,EAAOivH,eACTjvH,EAAOivH,aAAe,MAExBorF,EAAY,eACd,CAAE,MAEAr6M,EAAOivH,aAAegrF,EAAchrF,aACpC+gB,EAAU,IAAKhwI,GACjB,GA2NgC26M,CAAevkM,EAAE7uC,OACrC61C,UAAU,iBACVygJ,YAAa3xB,EAAc,CAAC5kK,GAAI,+BAAgCu/B,eAAgB,UAChFr/B,MAAO,CAAEmoN,SAAU,QACnBpoN,MAAO2yO,EAAMjrF,eAEfpoD,EAAAA,cAAA,SACEhxE,SA9LQtf,IACpB,MAAM+tE,EAAO/tE,EAAMjJ,OAAO/F,MAI1B,GAHA2yO,EAAMhrF,YAAc5qE,EACpB61J,EAAS,IAAKD,IACdX,EAA2B,cAAej1J,KACtCA,EAAKl/E,OAAS,GAIlB,IAEM46B,EAAOkvH,cACTlvH,EAAOkvH,YAAc,MAEvBmrF,EAAY,cACd,CAAE,MAEAr6M,EAAOkvH,YAAc+qF,EAAc/qF,YACnC8gB,EAAU,IAAKhwI,GACjB,GA4KYz4B,MAAwB,QAAnB6xO,EAAEc,EAAMhrF,mBAAW,IAAAkqF,EAAAA,EAAI,GAC5Bx0O,KAAK,OACLi5L,YAAa3xB,EAAc,CAAE5kK,GAAI,8BAA+Bu/B,eAAgB,YArI5EgwI,MAChB,MAAM+jE,EAAa,GAenB,OAdI56M,EAAO4wJ,gBACTgqD,EAAW30O,KACT4gG,EAAAA,cAAA,OAAK//F,IAAI,qBAAqBk5B,EAAO4wJ,iBAGrC5wJ,EAAOivH,cACT2rF,EAAW30O,KAAK4gG,EAAAA,cAAA,OAAK//F,IAAI,mBAAmBk5B,EAAOivH,eAEjDjvH,EAAOywJ,eACTmqD,EAAW30O,KAAK4gG,EAAAA,cAAA,OAAK//F,IAAI,oBAAoBk5B,EAAOywJ,gBAElDzwJ,EAAOkvH,aACT0rF,EAAW30O,KAAK4gG,EAAAA,cAAA,OAAK//F,IAAI,kBAAkBk5B,EAAOkvH,cAE7C0rF,EAAWx1O,OAAS,EACzByhG,EAAAA,cAAA,OAAKzpD,UAAU,yBAAyBw9L,GACtC,IAAI,EAwHD/jE,KAGJ,sMCvaP,EAD8B,gBAAoB,MCC9CvyI,EAAY,CAAC,KAAM,WAAY,YAAa,OAAQ,aAUpD15B,EAAO,WAAiB,EAmG5B,EAjG+B,cAAiB,SAAUvD,EAAM0sB,GAC9D,IAcI8mN,EAAiBC,EAdjBzoB,EAAUhrN,EAAKuyG,GACfpR,OAAwB,IAAZ6pH,EAAqB,KAAOA,EACxC/d,EAAWjtM,EAAKitM,SAChBymC,EAAY1zO,EAAK0zO,UACjB1yO,EAAOhB,EAAKgB,KACZijL,EAAYjkL,EAAKikL,UACjB9zK,GAAQ,OAA8BnQ,EAAMi9B,GAI5Cqe,GAAc,EAAAuP,EAAA,KACd8oL,GAAkB,IAAA78N,SAAO,GACzB88N,GAAiB,IAAA9wO,YAAW+wO,EAAA,GAC5BC,GAAa,IAAAhxO,YAAW,GAGxBgxO,IACF9yO,EAAOA,GAAQ,UACf0yO,EAAYI,EAAWJ,UACvBF,EAAkBM,EAAWN,gBAC7BC,EAAkBK,EAAWL,iBAG/B,IAAIM,GAAW,IAAAj9N,QAAO,MAElBk9N,EAAqB,SAA4BxlM,GACnD,IAAIylM,EAAkBF,EAAS7iO,QAC/B,IAAK+iO,EAAiB,OAAO,KAC7B,IAAIlsN,GAAQ,OAAIksN,EAAiB,sCAC7BC,EAAcD,EAAgB9jN,cAAc,WAChD,IAAK+jN,EAAa,OAAO,KACzB,IAAI78N,EAAQ0Q,EAAM9e,QAAQirO,GAC1B,IAAe,IAAX78N,EAAc,OAAO,KACzB,IAAI88N,EAAY98N,EAAQm3B,EAGxB,OAFI2lM,GAAapsN,EAAMhqB,SAAQo2O,EAAY,GACvCA,EAAY,IAAGA,EAAYpsN,EAAMhqB,OAAS,GACvCgqB,EAAMosN,EACf,EAEIC,EAAe,SAAsB30O,EAAKyP,GACjC,MAAPzP,IACAwtM,GAAUA,EAASxtM,EAAKyP,GACxB0kO,GAAgBA,EAAen0O,EAAKyP,GAC1C,GA4BA,IAAAtM,YAAU,WACR,GAAImxO,EAAS7iO,SAAWyiO,EAAgBziO,QAAS,CAC/C,IAAIgjO,EAAcH,EAAS7iO,QAAQif,cAAc,8BAC7C+jN,GAAaA,EAAYp2N,OAC/B,CAEA61N,EAAgBziO,SAAU,CAC5B,IACA,IAAImjO,GAAY,EAAAC,EAAA,GAAc5nN,EAAKqnN,GACnC,OAAoB,gBAAoBF,EAAA,EAAkBluN,SAAU,CAClEzlB,MAAOk0O,GACO,gBAAoBG,EAAA,EAAW5uN,SAAU,CACvDzlB,MAAO,CACLc,KAAMA,EAEN0yO,WAAW,OAAaA,GACxBF,gBAAiBA,GAAmBjwO,EACpCkwO,gBAAiBA,GAAmBlwO,IAExB,gBAAoB49F,GAAW,OAAS,CAAC,EAAGhxF,EAAO,CACjE8zK,UA9CkB,SAAuB/0K,GAEzC,IAAIslO,EAEJ,OAHIvwD,GAAWA,EAAU/0K,GAGjBA,EAAMzP,KACZ,IAAK,YACL,IAAK,UACH+0O,EAAkBR,GAAoB,GACtC,MAEF,IAAK,aACL,IAAK,YACHQ,EAAkBR,EAAmB,GACrC,MAEF,QACE,OAGCQ,IACLtlO,EAAMD,iBACNmlO,EAAaI,EAAgB5xI,QAAQ6xI,WAAYvlO,GACjDykO,EAAgBziO,SAAU,EAC1BoqC,IACF,EAuBE5uB,IAAK2nN,EACLrzO,KAAMA,MAEV,eC5GI,EAAY,CAAC,WAAY,SAAU,WAAY,YAAa,UAAW,SAAU,KAAM,WAKvFu2C,EAAe,CACjB+jF,aAAS7+H,EACT8E,QAAQ,EACR8U,UAAU,GAERq+N,EAA6B,cAAiB,SAAU10O,EAAM0sB,GAChE,IAAIsgL,EAAWhtM,EAAKgtM,SAChBzrM,EAASvB,EAAKuB,OACd8U,EAAWrW,EAAKqW,SAChB0/B,EAAY/1C,EAAK+1C,UACjBulF,EAAUt7H,EAAKs7H,QACfx+G,EAAS9c,EAAK8c,OACdy1F,EAAKvyG,EAAKuyG,GACVg6C,EAAUvsJ,EAAKusJ,QACfp8I,GAAQ,OAA8BnQ,EAAM,GAEhDgtM,GAAW,QAAmBA,EAAU,mBACxC,IAAIhtB,GAAc,IAAAz9K,cAAY,SAAU2M,GACtC,GAAImH,EAGF,OAFAnH,EAAMD,sBACNC,EAAMC,kBAIJo9I,GAASA,EAAQr9I,EACvB,GAAG,CAACmH,EAAUk2I,IAOd,OALIl2I,QAA+B5Z,IAAnB0T,EAAMgW,WACpBhW,EAAMgW,UAAY,EAClBhW,EAAM,kBAAmB,GAGP,gBAAoB+8L,EAAA,GAAiB,OAAS,CAChExgL,IAAKA,GACJvc,EAAO,CAERoiG,GAAIA,IAAOz1F,EAAS3M,EAAMitF,KAAO,IAAM,SAAW,OAClDmvD,QAASyzB,EACTjqI,UAAW,IAAWA,EAAWi3J,EAAUzrM,GAAU,SAAU8U,GAAY,WAAYilH,GAAW0xE,EAAW,IAAM1xE,EAASx+G,GAAUkwL,EAAW,aAErJ,IACA0nC,EAAcn9L,aAAeA,EAC7Bm9L,EAAcj9L,YAAc,gBAC5B,QChDI,EAAY,CAAC,YAAa,WAAY,UAAW,aAAc,MAQ/D,EAAe,CACjB6jF,aAAS7+H,EACTk4O,gBAAYl4O,GAEVm4O,EAAyB,cAAiB,SAAUzkO,EAAOuc,GAC7D,IAYImoN,EAZAC,GAAmB,QAAgB3kO,EAAO,CAC5CujO,UAAW,aAET39L,EAAY++L,EAAiB/+L,UAC7Bg/L,EAAkBD,EAAiB9nC,SACnC1xE,EAAUw5G,EAAiBx5G,QAC3Bq5G,EAAaG,EAAiBH,WAC9BK,EAAsBF,EAAiBviI,GACvCA,OAA6B,IAAxByiI,EAAiC,MAAQA,EAC9CC,GAAkB,OAA8BH,EAAkB,GAElE9nC,GAAW,QAAmB+nC,EAAiB,cAUnD,OANEF,EADEF,GACiC,IAAfA,EAAsB,aAAe,cAAgBA,EAErD,KAIF,gBAAoB,GAAa,OAAS,CAC5DjoN,IAAKA,GACJuoN,EAAiB,CAClB1iI,GAAIA,EACJx8D,UAAW,IAAWA,EAAWi3J,EAAU1xE,GAAW0xE,EAAW,IAAM1xE,EAASu5G,GAAqB7nC,EAAW,IAAM6nC,KAE1H,IACAD,EAAUr9L,aAAe,EACzBq9L,EAAUn9L,YAAc,YACxBm9L,EAAUhnC,KAAO,EACjB,QCnCe,SAASsnC,EAAel1O,GAA8B,IAA7B,KAAEzC,EAAI,KAAE0yF,EAAI,WAAEklJ,GAAYn1O,EAChE,MAAM,EAAC0kF,EAAU,EAACwrH,IAAgB5tM,EAAAA,EAAAA,WAAS,IACrC,EAAC8yO,EAAiB,EAACC,IAAuB/yO,EAAAA,EAAAA,UAAS,KACnD,EAAC08K,EAAU,EAACC,IAAgB38K,EAAAA,EAAAA,WAAS,IACrC,SAAE8zB,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,IA2ChC,OACEnhB,EAAAA,cAAA,OAAKzpD,UAAU,oBACbypD,EAAAA,cAAC81I,EAAAA,EAAc,CAAC77L,UAAU,MAAMkvC,QAZbx4E,GACrBqvF,EAAAA,cAAC+1I,EAAAA,EAAOtxO,OAAA8xB,OAAA,CAAC91B,GAAG,kBAAqBkQ,GAC/BqvF,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,mCAAmCu/B,eAAe,qCAWrEggE,EAAAA,cAAA,UACE+sD,QAAUyyB,EAAiD,KAApCvrJ,GA7CJhP,OAAOwrE,EAAMx8D,KAItC,GAFAA,EAAEtkB,mBAEG8gF,GAAwB,KAAhBA,EAAK5/C,QAAiB4/C,EAAKlyF,OAAS,GAC/CssK,EAAAA,EAAAA,GAAkB,CAChBlyI,QACEqnE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,WAAK,sDAGTyrD,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,kDAAkDu/B,eAAe,uBAPnG,CAcAy/I,GAAa,GAEb,IACE,MACMu2D,SADiBp/M,EAAS+oH,aAAalvD,EAAM1yF,IACxBi4O,UAC3BH,EAAoBG,GACpBtlC,GAAa,EACf,CAAE,MAAOpyM,GACPgB,QAAQhB,MAAM,oCAAqCA,EACrD,CACAmhL,GAAa,EAbb,CAamB,EAiBgBw2D,CAAmBxlJ,EAAMx8D,GACtDsiB,UAAU,mBACV51C,MAAO,CAACu1O,cAAe12D,EAAY,OAAS,SAE3CA,EACCx/E,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmsJ,EAAAA,IAAWt4I,MAAI,EAAC1M,KAAK,KAAKgiH,MAAM,YAEvDrsD,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMizM,EAAAA,IAAS9rM,KAAK,KAAKgiH,MAAM,cAItDrsD,EAAAA,cAACyuF,EAAAA,EAAK,CAACxpG,KAAMC,EAAWypG,OAAQA,IAAM+hB,GAAa,GAAQ0lC,UAAU,EAAO7/L,UAAU,mBACpFypD,EAAAA,cAAA,OAAKr/F,MAAO,CAAE8wL,UAAW,sCACvBzxF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAACyuF,EAAAA,EAAMskB,MAAK,CAACpyM,MAAO,CAAEM,OAAQ,IAC5B++F,EAAAA,cAAA,OAAKr/F,MAAO,CAAEL,QAAS,OAAQ+1O,aAAc,SAC3Cr2I,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMizM,EAAAA,IAAS9pF,MAAM,YACtCrsD,EAAAA,cAAA,MAAIr/F,MAAO,CAAEM,OAAQ,EAAGolL,WAAY,SAClCrmF,EAAAA,cAAA,SACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,wBAI3EggE,EAAAA,cAAA,KAAGr/F,MAAO,CAAEM,OAAQ,EAAGklL,SAAU,SAC/BnmF,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,iCAAiCu/B,eAAe,qCAI3EggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACT/uF,EAAAA,cAACo1I,EAAS,KACPQ,EAAiBt0N,KAAI,CAACqgN,EAAQzmK,IAC7B8kC,EAAAA,cAACo1I,EAAUhnC,KAAI,CAACnuM,IAAKi7D,EAAK59C,QAAM,EAACyvI,QAASA,IAvClC40E,KACpBjxB,GAAa,GACbilC,EAAW,CAAElvO,OAAQ,CAAE/F,MAAOihO,IAAW,EAqCmB2U,CAAa3U,GAAShhO,MAAO,CAAEO,OAAQ,oBAAqBwsJ,UAAW,OAAQy4B,SAAU,SACtIw7C,SASnB,CChCA,MAhD4BnhO,IAA2D,IAA1D,MAAEqhH,EAAK,QAAE00H,EAAO,YAAEv/C,EAAW,UAAEw/C,EAAS,SAAExrE,GAAUxqK,EAC/E,MAAM,WAAE0+I,EAAa,CAAC,EAAC,2BAAEwzF,IAA+BpvO,EAAAA,EAAAA,YAAW2uO,IAK7D,EAACwE,EAAU,EAACC,IAAgB5zO,EAAAA,EAAAA,UAASo8I,EAAWq3F,IAOhDZ,EAAcjmO,IAClB,MAAMhP,EAAQgP,EAAMjJ,OAAO/F,MAC3Bg2O,EAAah2O,GACbgyO,EAA2B6D,EAAS71O,EAAM,EAG5C,OACEs/F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,aACG6hB,EAAM,IAAEmpD,GAAY,KAEvBhrE,EAAAA,cAAA,OAAKzpD,UAAU,eAAe51C,MAAO,CAAEg2O,SAAU,UAChC,aAAdH,EACCx2I,EAAAA,cAAA,OAAKr/F,MAAO,CAAEL,QAAS,OAAQS,MAAO,SACpCi/F,EAAAA,cAAA,YAAUg3F,YAAaA,EAAat2L,MAAO+1O,QAAAA,EAAa,GAAI9jB,KAAK,IAAI1nD,KAAkB,gBAAZsrE,GAA6B,IAAKvnN,SAAU2mN,IACvH31I,EAAAA,cAAC01I,EAAe,CAAC33O,KAAK,cAAc0yF,KAAMgmJ,EAAWd,WAAYA,IACjE31I,EAAAA,cAAA,UACEr/F,MAAO,CACL2tL,gBAAiB,QACjBsoD,aAAc,MACdC,YAAa,OAEfhgO,UAAU,GAEVmpF,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,IAAS9hK,KAAK,KAAKgiH,MAAM,YAIpDrsD,EAAAA,cAAA,SAAOjiG,KAAK,OAAOi5L,YAAaA,EAAat2L,MAAO+1O,QAAAA,EAAa,GAAIznN,SAAU2mN,EAAY3qE,SAAUA,KAGxG,EC5BP,MAjC8BxqK,IAAwC,IAAvC,UAAE2kO,EAAS,MAAEttN,EAAK,YAAEm/K,GAAax2L,EAC9D,MAAM,wBAAEs2O,IAA4BxzO,EAAAA,EAAAA,YAAW2uO,GAEzC0D,EAAcjmO,IAClB,MAAMhP,EAAQgP,EAAMjJ,OAAO/F,MAC3Bo2O,EAAwB,qBAAsBp2O,EAAOmX,EAAM,EAQ7D,OACEmoF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKzpD,UAAU,eAAe51C,MAAO,CAAEg2O,SAAU,QAASzqE,aAAc,SACtElsE,EAAAA,cAAA,YAAUjiG,KAAK,OAAO2C,MAAOykO,QAAAA,EAAa,GAAInuC,YAAaA,QAAAA,EAAe,GAAIhoK,SAAU2mN,EAAY1qE,KAAM,IAC1GjrE,EAAAA,cAAC01I,EAAe,CAAC33O,KAAK,SAAS0yF,KAAM00I,QAAAA,EAAa,GAAIwQ,WAAYA,IAClE31I,EAAAA,cAAA,UACE+sD,QAXar9I,IACnBA,EAAMD,iBACNqnO,EAAwB,qBAAsB,KAAMj/N,EAAM,EAUpDlX,MAAO,CACL2tL,gBAAiB,QACjBsoD,aAAc,MACdC,YAAa,QAGf72I,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,IAAS9hK,KAAK,KAAKgiH,MAAM,cAGnD,ECIP,MAjC+B7rJ,IAA8B,IAA7B,MAAEqhH,EAAK,aAAEk1H,GAAcv2O,EACrD,MAAM,WACJ0+I,EAAU,wBACV43F,IACExzO,EAAAA,EAAAA,YAAW2uO,GAWf,OAJA7uO,EAAAA,EAAAA,YAAU,KACR0zO,EAAwB,0BAA0B,GACjD,IAGD92I,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,aAAQ6hB,KACNq9B,aAAU,EAAVA,EAAY+lF,aAAc,IAAI3jN,KAAI,CAAC6jN,EAAWttN,IAC9CmoF,EAAAA,cAACg3I,EAAqB,CACpB/2O,IAAK4X,EACLstN,UAAWA,EACXttN,MAAOA,EACPm/K,YAAa+/C,EAAal/N,OAG9BmoF,EAAAA,cAAA,UAAQ+sD,QAAS94H,GApBCA,KACpBA,EAAExkB,iBACFqnO,EAAwB,qBAAqB,EAkBrBG,CAAchjN,GAAItzB,MAAO,CAAC2tL,gBAAiB,QAASuoD,YAAa,QACrF72I,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMg0M,EAAAA,IAAc7sM,KAAK,KAAKgiH,MAAM,aAEtD,EC6CP,MAtE4B7rJ,IAAe,IAAd,KAAEzC,GAAMyC,EACnC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,2CAA4Cu/B,eAAgB,wCAC7F6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,+BACHu/B,eAAe,UAEjBu2M,QAAQ,QACRvrE,UAAU,EACVjtK,KAAMA,IAERiiG,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,8CAA+Cu/B,eAAgB,uBAChG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,EACVjtK,KAAMA,IAERiiG,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,8CAA+Cu/B,eAAgB,oBAChG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,EACVjtK,KAAMA,IAERiiG,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,iDAAkDu/B,eAAgB,8FAEnG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,WACVz4O,KAAMA,IAERiiG,EAAAA,cAACq3I,EAAsB,CACrBx1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,uCACHu/B,eAAe,kBAEjBu2M,QAAQ,aACRx4O,KAAMA,EACNg5O,aAAc,CACZ1xE,EAAc,CAAE5kK,GAAI,kDAAmDu/B,eAAgB,gEACvFqlI,EAAc,CAAE5kK,GAAI,kDAAmDu/B,eAAgB,+EAG1F,ECCP,MAvEiCx/B,IAAe,IAAd,KAAEzC,GAAMyC,EACxC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,sDAAuDu/B,eAAgB,wBACxG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,gCACHu/B,eAAe,WAEjBu2M,QAAQ,SACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,sDAAuDu/B,eAAgB,kBACxG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,gCACHu/B,eAAe,WAEjBu2M,QAAQ,WAEVv2I,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,8DAA+Du/B,eAAgB,0DAChH6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,wCACHu/B,eAAe,mBAEjBgrI,UAAU,EACVurE,QAAQ,UAEVv2I,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,wDAAyDu/B,eAAgB,sBAC1G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,EACVC,kBAAkB,IAEpBzyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,2DAA4Du/B,eAAgB,6GAE7G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,aAEZx2I,EAAAA,cAACq3I,EAAsB,CACrBx1H,MAAM,aACN00H,QAAQ,aACRQ,aAAc,CACZ1xE,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,mDACjGqlI,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,wDAGpG,ECHP,MAhEiCx/B,IAAe,IAAd,KAAEzC,GAAMyC,EACxC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,qDAAsDu/B,eAAgB,mBACvG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,+BACHu/B,eAAe,UAEjBu2M,QAAQ,QACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,wDAAyDu/B,eAAgB,qCAC1G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,8CAA+Cu/B,eAAgB,oBAChG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,2DAA4Du/B,eAAgB,4CAC7G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,aAEZx2I,EAAAA,cAACq3I,EAAsB,CACrBx1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,uCACHu/B,eAAe,kBAEjBu2M,QAAQ,aACRQ,aAAc,CACZ1xE,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,+CACjGqlI,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,2CAGpG,ECzBP,MApC4Bx/B,IAAe,IAAd,KAAEzC,GAAMyC,EACnC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,oDAAqDu/B,eAAgB,4BACtG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,mCACHu/B,eAAe,cAEjBu2M,QAAQ,YACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,sDAAuDu/B,eAAgB,gHACxG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRvrE,UAAU,EACVwrE,UAAU,aAEX,ECqBP,MArD6Bh2O,IAAe,IAAd,KAAEzC,GAAMyC,EACpC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAE1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,kDAAmDu/B,eAAgB,6BACpG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,+BACHu/B,eAAe,UAEjBu2M,QAAQ,QACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,0DAA2Du/B,eAAgB,yBAC5G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,yCACHu/B,eAAe,oBAEjBu2M,QAAQ,kBAEVv2I,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,mDAAoDu/B,eAAgB,oCACrG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,gCACHu/B,eAAe,WAEjBu2M,QAAQ,SACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,wDAAyDu/B,eAAgB,iLAC1G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,aAEX,ECSP,MAzDkCh2O,IAAe,IAAd,KAAEzC,GAAMyC,EACzC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAC1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,sDAAuDu/B,eAAgB,wCACxG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,+BACHu/B,eAAe,UAEjBu2M,QAAQ,QACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,yBAC9G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,aACRvrE,UAAU,EACVwnE,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,yDAA0Du/B,eAAgB,uBAC3G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,kCACHu/B,eAAe,aAEjBu2M,QAAQ,WACRvrE,UAAU,EACVjtK,KAAMA,IAERiiG,EAAAA,cAACq3I,EAAsB,CACrBx1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,uCACHu/B,eAAe,kBAEjBu2M,QAAQ,aACRx4O,KAAMA,EACNg5O,aAAc,CACZ1xE,EAAc,CAAE5kK,GAAI,6DAA8Du/B,eAAgB,wFAClGqlI,EAAc,CAAE5kK,GAAI,6DAA8Du/B,eAAgB,wCAGrG,ECVP,MA5CmCx/B,IAAe,IAAd,KAAEzC,GAAMyC,EAC1C,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAE1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,uDAAwDu/B,eAAgB,0BACzG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,8BACHu/B,eAAe,SAEjBu2M,QAAQ,QACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,wDAAyDu/B,eAAgB,kDAC1G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,8CACHu/B,eAAe,yBAEjBu2M,QAAQ,SACRvrE,UAAU,IAEZhrE,EAAAA,cAACo3I,EAAoB,CACnBv1H,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,oCACHu/B,eAAe,eAEjBu2M,QAAQ,aACR/D,UAAU,IAEZxyI,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,6DAA8Du/B,eAAgB,mJAC/G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,aAEX,ECNP,OAnCkCh2O,IAAe,IAAd,KAAEzC,GAAMyC,EACzC,MAAM,cAAE6kK,IAAkB1Z,EAAAA,EAAAA,KAE1B,OACE3rD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,sDAAuDu/B,eAAgB,4CACxG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,sCACHu/B,eAAe,iBAEjBu2M,QAAQ,QACRvrE,UAAU,IAEZhrE,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,uDAAwDu/B,eAAgB,4CACzG6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,iDACHu/B,eAAe,4BAEjBu2M,QAAQ,WAEVv2I,EAAAA,cAACm3I,EAAmB,CAClBngD,YAAa3xB,EAAc,CAAE5kK,GAAI,4DAA6Du/B,eAAgB,mKAC9G6hF,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACtBtqK,GAAG,qCACHu/B,eAAe,gBAEjBu2M,QAAQ,cACRC,UAAU,aAEX,ECFP,OAvBwBh2O,IAAe,IAAd,KAAEzC,GAAMyC,EAC/B,OAAQzC,GACN,IAAK,OACH,OAAOiiG,EAAAA,cAACs3I,EAAmB,CAACv5O,KAAMA,IACpC,IAAK,YACH,OAAOiiG,EAAAA,cAACu3I,EAAwB,CAACx5O,KAAMA,IACzC,IAAK,YACH,OAAOiiG,EAAAA,cAACw3I,EAAwB,CAACz5O,KAAMA,IACzC,IAAK,OACH,OAAOiiG,EAAAA,cAACy3I,EAAmB,CAAC15O,KAAMA,IACpC,IAAK,aACH,OAAOiiG,EAAAA,cAAC03I,EAAyB,CAAC35O,KAAMA,IAC1C,IAAK,QACH,OAAOiiG,EAAAA,cAAC23I,EAAoB,CAAC55O,KAAMA,IACrC,IAAK,cACH,OAAOiiG,EAAAA,cAAC43I,EAA0B,CAAC75O,KAAMA,IAC3C,IAAK,aACH,OAAOiiG,EAAAA,cAAC63I,GAAyB,CAAC95O,KAAMA,IAC1C,QACE,OAAO,KACX,EC9BK,MAAM+5O,GAAoB,CAC/BnX,KAAM,CACJ,CACE1gO,IAAK,QACL4hH,MAAO,SAET,CACE5hH,IAAK,WACL4hH,MAAO,YAET,CACE5hH,IAAK,WACL4hH,MAAO,YAET,CACE5hH,IAAK,iBACL4hH,MAAO,eAET,CACE5hH,IAAK,gBACL4hH,MAAO,cAET,CACE5hH,IAAK,eACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,aAGXq7F,UAAW,CACT,CACEj9M,IAAK,SACL4hH,MAAO,UAET,CACE5hH,IAAK,WACL4hH,MAAO,YAET,CACE5hH,IAAK,QACL4hH,MAAO,mBAGX++G,UAAW,CACT,CACE3gO,IAAK,QACL4hH,MAAO,SAET,CACE5hH,IAAK,WACL4hH,MAAO,YAET,CACE5hH,IAAK,iBACL4hH,MAAO,eAET,CACE5hH,IAAK,gBACL4hH,MAAO,cAET,CACE5hH,IAAK,eACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,YAET,CACE5hH,IAAK,WACL4hH,MAAO,aAGXk/G,WAAY,CACV,CACE9gO,IAAK,QACL4hH,MAAO,SAET,CACE5hH,IAAK,cACL4hH,MAAO,eAET,CACE5hH,IAAK,iBACL4hH,MAAO,eAET,CACE5hH,IAAK,gBACL4hH,MAAO,cAET,CACE5hH,IAAK,eACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,YAET,CACE5hH,IAAK,WACL4hH,MAAO,aAGXk2H,MAAO,CACL,CACE93O,IAAK,QACL4hH,MAAO,SAET,CACE5hH,IAAK,SACL4hH,MAAO,UAET,CACE5hH,IAAK,eACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,aAGXi/G,KAAM,CACJ,CACE7gO,IAAK,YACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,eAET,CACE5hH,IAAK,eACL4hH,MAAO,aAET,CACE5hH,IAAK,cACL4hH,MAAO,aAGXm/G,YAAa,CACX,CACE/gO,IAAK,QACL4hH,MAAO,QAET,CACE5hH,IAAK,SACL4hH,MAAO,yBAGXo/G,WAAY,CACV,CACEhhO,IAAK,QACL4hH,MAAO,kBAgDAm2H,GAAsBA,CAAC94F,EAAYnhJ,KAC9C,IAAIo7B,EAAS,IACQ2+M,GAAkB/5O,IAAS,IAGjC4Q,SAAQnO,IAAqB,IAApB,IAAEP,EAAG,MAAE4hH,GAAOrhH,EAEpC,MAAMy3O,EAAY/4F,EAAWj/I,QAEXhD,IAAdg7O,GAAiD,KAAtBA,aAAS,EAATA,EAAW15O,SACxC46B,EAAO/5B,KAAM,GAAEyiH,MACjB,IAIF,MAAMq2H,EAlDYC,EAACC,EAAYC,EAAWC,EAAUC,KACpD,GAAKH,IAAeC,IAAgBD,GAAcC,GAC1CC,IAAaC,IAAcD,GAAYC,EAC7C,MAAO,+CAGT,IAAK,MAAM96J,IAAQ,CAAC46J,EAAWE,GAC7B,GAAI96J,IAAS,iBAAiBhzE,KAAKgzE,GACjC,MAAO,mCAIX,IAAIksG,EAQAF,EAPJ,OAAI2uD,GAAcC,IAChB1uD,EAAY,IAAIv1J,KAAKikN,EAAWD,GACU,IAAtCpzO,KAAKiS,KAAK0yK,EAAYv1J,KAAK01C,QACtB,mCAKPwuK,GAAYC,IACd9uD,EAAU,IAAIr1J,KAAKmkN,EAASD,GACY,IAApCtzO,KAAKiS,KAAKwyK,EAAUr1J,KAAK01C,QACpB,iCAIP6/G,GAAaF,IAAgD,IAApCzkL,KAAKiS,KAAKwyK,EAAUE,GACxC,sCAGF,EAAE,EAkBSwuD,CAAYj5F,EAAW6qC,eAAgB7qC,EAAW0qC,cAAe1qC,EAAWkJ,aAAclJ,EAAWmJ,aAKvH,MAJkB,KAAd6vF,GACF/+M,EAAO/5B,KAAK84O,GAGV/+M,EAAO56B,OAAS,GACX46B,CAGT,yCCxMF,MAAMq/M,GAAoBh4O,IAAmC,IAAlC,WAAC0gB,EAAU,QAAE6rI,EAAO,MAAElrC,GAAMrhH,EACrD,MAAM,EAAC0gH,EAAQ,EAAC60C,IAAcjzJ,EAAAA,EAAAA,WAAS,GAQvC,OACEk9F,EAAAA,cAAA,UACEzpD,UAAY,uBAAqBr1B,EAAa,WAAa,WAC3D6rI,QAAS7rI,EAAa,IAAM,KATZ+D,UAClB8wI,GAAW,SACLhJ,IACNgJ,GAAW,EAAM,EAOf,gBAAe70I,GAEdggG,EACClhB,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMmsJ,EAAAA,IAAWt4I,MAAI,EAAC1M,KAAK,OAE5Cw3E,EAEK,EA2Hb,OApH8B5/G,IAAgC,IAA/B,aAACw2O,EAAe,GAAE,KAAE16O,GAAKkE,EACtD,MACM,OAAE29B,EAAM,cAAEylI,IAAkB1Z,EAAAA,EAAAA,MAC5B,SAAE/0H,EAAQ,SAAE0/H,IAAahzJ,EAAAA,EAAAA,YAAW69G,EAAAA,KACpC,EAACj9G,EAAQ,EAAC82C,IAAcl4C,EAAAA,EAAAA,UAClB,WAAT/E,GAAgC,UAAX6hC,EAAsB84M,GAAAA,GAClC,WAAT36O,GAAgC,UAAX6hC,EAAsB+4M,GAAAA,GAClC,cAAT56O,GAAmC,UAAX6hC,EAAsBg5M,GAAAA,GACrC,cAAT76O,GAAmC,UAAX6hC,EAAsBi5M,GAAAA,GAC/C,KAEI,EAAC9rB,EAAQ,EAAC+rB,IAAch2O,EAAAA,EAAAA,UAAS,IA6CvC,OACEk9F,EAAAA,cAAA,OAAKzpD,UAAU,kCACbypD,EAAAA,cAAA,aACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAK,8BAA6B1C,IAClCiiC,eAAiB,OAAMjiC,EAAK+8B,UAAU,EAAG/8B,EAAKQ,OAAS,QAG3DyhG,EAAAA,cAAA,OAAKzpD,UAAU,0BACbypD,EAAAA,cAACguG,EAAAA,EAAQ,CACPz3J,UAAU,mCACVryC,QAASA,EACTxD,MAAOqsN,EACP/9L,SA7Ca+pN,CAAC9kN,EAAC7xB,KAAiB,IAAf,MAAE1B,GAAO0B,EAChC02O,EAAWp4O,EAAM,EA6CX+jL,UAzDcxwJ,IACpB,MAAMmrG,EAAQ,IAAI1sF,OAAO,gDACrBze,EAAExtB,OAAO/F,MAAMnC,QAdK,IAc0B6gI,EAAM30H,KAAKwpB,EAAEh0B,KAC7Dg0B,EAAExkB,iBACO2vH,EAAM30H,KAAKwpB,EAAEh0B,KACtB64O,EAAW7kN,EAAExtB,OAAO/F,MAAQuzB,EAAEh0B,KACX,cAAVg0B,EAAEh0B,KAAiD,IAA1Bg0B,EAAExtB,OAAO/F,MAAMnC,QACjDu6O,EAAW,GACb,EAkDME,UA3Ce/zN,MAAOgP,EAAC3xB,KAAiB,IAAf,MAAE5B,GAAO4B,EACxC,MAAMrC,EAAMS,EAAMuwC,cAAcld,QAAQ,KAAM,KAE9CinB,GAAW92C,GAAO,GAAAmd,QAAAkvF,EAAAA,EAAAA,GAAQrsG,GAAO,CAAE,CAAEjE,IAAKA,EAAM,UAAWS,MAAOA,EAAO+vF,KAAM/vF,OAC/Eo4O,EAAWp4O,EAAM,EAwCXs2L,YAAa+1B,GAAW1nD,EAAc,CACpC5kK,GAAK,iCAAgC1C,IACrCiiC,eAAiB,UAASjiC,MAE5B4rO,cAAc,EACd3kB,OAAK,EACLhlJ,QAAM,EACNosI,WAAS,EACT6sC,gBAAc,EACdC,cAAc,GACdj0B,QAAQ,EACRk0B,YAAat3H,IAAK,CAChBtrE,UAAW,gCACX7I,QAASm0E,EAAMpxB,SAGnBuP,EAAAA,cAACw4I,GAAiB,CAChB32H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAK,8BAA6B1C,IAClCiiC,eAAiB,OAAMjiC,EAAK+8B,UAAU,EAAG/8B,EAAKQ,OAAS,OAG3DwuJ,QA5Dc9nI,UACpB,GAAgB,KAAZ8nM,EACF,OAGF,MAAMqsB,EAAgBrsB,EAAQl8K,OAEzB4nM,EAAaruO,SAASgvO,WACnBxiN,EAASwnH,cAAc,CAC3Bh5I,KAAM,CAAC,CAACrH,GAAM,GAAFsjB,QAAAkvF,EAAAA,EAAAA,GAAOkoI,GAAY,CAAE1rB,OAEtB,WAAThvN,QACIu4J,EAAS4lE,qBACG,cAATn+N,SACHu4J,EAAS6lE,yBAInB2c,EAAW,GAAG,EA2CR53N,WAAwB,KAAZ6rM,KAGf0rB,EAAal6O,OAAS,GACrByhG,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,aACEA,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAK,yCAAwC1C,IAC7CiiC,eAAiB,kBAAiBjiC,OAGtCiiG,EAAAA,cAAA,OAAKzpD,UAAU,oCACbypD,EAAAA,cAAC2xI,GAAAA,EAAU,CAAC5zO,KAAMA,EAAMwqB,MAAOkwN,EAAcnzB,gBAAgB,MAI/D,cC0EV,OAnOoC9kN,IAA0E,IAAzE,eAAEquO,EAAc,gBAAE7G,EAAe,KAAE/iJ,EAAI,mBAAEgjJ,EAAkB,KAAElqO,GAAMyC,EACtG,MAAM,SAAEo2B,EAAQ,SAAE0/H,EAAQ,QAAEN,IAAY1yJ,EAAAA,EAAAA,YAAW69G,EAAAA,KAO7C,EAAC+9B,EAAW,EAACm6F,IAAiBv2O,EAAAA,EAAAA,UAAS,CAAC,IACxC,EAACw2O,EAAqB,EAACC,IAA2Bz2O,EAAAA,EAAAA,WAAS,GAajE,IAXAM,EAAAA,EAAAA,YAAU,KACR,IAAIo2O,EAAwB,CAAC,EACzB3K,GACFpqO,OAAO8xB,OAAOijN,EAAuB3K,GAEnC7G,GAAmBjqO,IACrBy7O,EAAsBz7O,KAAOA,GAE/Bs7O,GAAcn6F,IAAU,IAASA,KAAes6F,KAAwB,GACvE,CAAC3K,EAAgB7G,EAAiBjqO,KAEhCuzO,GAAAA,GAAgBlnO,SAASrM,GAC5B,OAAO,KAGT,MAOM+4O,EAA0BA,CAAC/4O,EAAMu4B,EAASze,KAC9C,IAAI4hO,EAAiBv6F,EAAW+lF,YAAU10H,EAAAA,EAAAA,GAAQ2uC,EAAW+lF,YAAe,GAE5E,OAAQlnO,GACN,IAAK,0BAC2B,IAA1B07O,EAAel7O,SACjBk7O,EAAiB56O,MAAM,GAAG0tC,KAAK,KAEjC,MACF,IAAK,qBACHktM,EAAe5hO,GAASye,EACxB,MACF,IAAK,qBACHmjN,EAAe15O,OAAO8X,EAAO,GAC7B,MACF,IAAK,qBACH4hO,EAAer6O,KAAK,IAKxBi6O,GAAcK,IAAO,IAChBA,EACHzU,WAAYwU,KACX,EA4FCE,EAAmBA,KAEnB1R,GACFA,IAGFoR,EAAcrR,EAAkB,IAAK6G,EAAgB9wO,KAAMA,GAAS8wO,EAAe,EAGrF,OACE7uI,EAAAA,cAACiyI,EAAwB9rN,SAAQ,CAC/BzlB,MAAO,CACLw+I,aACAwzF,2BAxI6BA,CAACzyO,EAAKS,KACvC24O,EAAc,IACTn6F,EACH,CAACj/I,GAAMS,GACP,EAqIEo2O,0BACAkB,oBAAmB,GACnBrF,0BAzG6BjzN,IAE/B25N,EADE35N,EACY,IACTw/H,EACHkJ,aAAc,KACdC,YAAa,MAGD,IACTnJ,EACHkJ,aAAc,GACdC,YAAa,IAEjB,EA6FIuqF,+BA1FkClzN,IAEpC25N,EADE35N,EACY,IACTw/H,EACH6qC,eAAgB,KAChBH,cAAe,MAGH,IACT1qC,EACH6qC,eAAgB,GAChBH,cAAe,IAEnB,EA8EI0vD,uBACAC,4BAGFv5I,EAAAA,cAACyuF,EAAAA,EAAK,CAACl4I,UAAU,eAAe0uC,KAAMA,EAAM0pG,OAAQA,IAAMgrD,IAAoBtvM,KAAK,KAAKwkJ,WAAW,GACjG7uF,EAAAA,cAACyuF,EAAAA,EAAMK,OAAM,CAACrhC,aAAW,GACvBztD,EAAAA,cAAA,OAAKzpD,UAAU,6BACbypD,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAIunO,EAAkB,sBAAwB,sCAC9ChoM,eAAgBgoM,EAAkB,MAAQ,SAE3C,KACA4R,EAAAA,GAAAA,IAA8B77O,GAC9B,IACDiiG,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,4CACHu/B,eAAe,iBAIrBggE,EAAAA,cAACyuF,EAAAA,EAAMM,KAAI,KACRi5C,GACChoI,EAAAA,cAAA,KAAGr/F,MAAO,CAAEk5O,WAAY,eAAgB1zD,SAAU,UAC/C2zD,EAAAA,GAAAA,IAA0B/7O,KAGpB,WAATA,GAA8B,cAATA,IACrBiiG,EAAAA,cAAC+5I,GAAqB,CACpBtB,aAAcziF,EAAQj4J,IAAS,GAC/BA,KAAMA,IAGA,WAATA,GAA8B,cAATA,GACpBiiG,EAAAA,cAAA,OAAKzpD,UAAU,uCACbypD,EAAAA,cAACg6I,GAAe,CAACj8O,KAAMA,EAAM+4O,wBAAyBA,MAIlD,WAAT/4O,GAA8B,cAATA,GACpBiiG,EAAAA,cAACyuF,EAAAA,EAAMsB,OAAM,MACTi4C,GACAhoI,EAAAA,cAACgwF,GAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,wCAAwCu/B,eAAe,WACnFiwJ,UAAU,EACVljC,QAASA,IA9Fc9nI,WACnC,UACQ2R,EAAS4oH,uBAAuBqvF,EAAepuO,GACvD,CAAE,MAAOwzB,GACP30B,QAAQhB,MAAM21B,EAChB,CACA0lN,GAAkB,EAwFSM,CAA6B/6F,KAGhDl/C,EAAAA,cAACgwF,GAAAA,EAAY,CACXnuE,MAAO7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,sCAAsCu/B,eAAe,SACjFiwJ,UAAU,EACVljC,QAASi7E,EAAkB,IA7HF/iN,WACnC,MAAMkU,EAAS6+M,GAAoB94F,EAAYnhJ,GAC/C,GAAIo7B,GACF0xI,EAAAA,EAAAA,GAAkB,CAChBlyI,QACEqnE,EAAAA,cAAAA,EAAAA,SAAA,KACC7mE,EAAO7X,KAAKhjB,GACX0hG,EAAAA,cAAA,WAAM1hG,MAIVmtJ,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,0DAA0Du/B,eAAe,4CAT3G,CAcA,UACQpJ,EAASwoH,uBAAuByvF,EACxC,CAAE,MAAO56M,GACP30B,QAAQhB,MAAM21B,EAChB,CACA0lN,UACMrjF,EAAS0mE,0BAA0BhnE,EARzC,CAQiD,EAuGNkkF,CAA6Bh7F,GAClC,IA5FHj6H,WACnC,MAAMkU,EAAS6+M,GAAoB94F,EAAYnhJ,GAC/C,GAAIo7B,GACF0xI,EAAAA,EAAAA,GAAkB,CAChBlyI,QACEqnE,EAAAA,cAAAA,EAAAA,SAAA,KACC7mE,EAAO7X,KAAKhjB,GACX0hG,EAAAA,cAAA,WAAM1hG,MAIVmtJ,QAASzrD,EAAAA,cAAC+qE,EAAAA,EAAgB,CAACtqK,GAAG,0DAA0Du/B,eAAe,4CAT3G,CAaA,UACQpJ,EAASqoH,qBAAqB4vF,EACtC,CAAE,MAAO56M,GACP30B,QAAQhB,MAAM21B,EAChB,CACA0lN,GANA,CAMkB,EAwE0BQ,CAA6Bj7F,OAKtC,uJC5NvC,MAAMk7F,EAAW55O,IAA0C,IAAzC,QAACktC,EAAO,SAAEm9L,EAAQ,eAAEvlB,GAAe9kN,EACnD,MAAM,eAAEoxL,EAAc,YAAElpK,EAAW,MAAE7Q,EAAK,WAAE+O,EAAU,OAAEqB,IAAU6iN,EAAAA,EAAAA,GAAgB,CAACrqO,GAAIitC,EAAS2jJ,gBAAiBi0B,KAC3G,OAAE1lL,IAAW+rH,EAAAA,EAAAA,KACb0uF,GAAgBC,EAAAA,EAAAA,IAAsB16M,EAAQ8N,GAEpD,OACEsyD,EAAAA,cAAA,MAAAv7F,OAAA8xB,OAAA,CAAKggB,UAAU,aAAgBq7I,GAC7B5xF,EAAAA,cAAA,OAAKzpD,UAAU,SAAS8jM,IACtB/0B,GACAtlH,EAAAA,cAAA,OAAKzpD,UAAU,2BACbypD,EAAAA,cAAA,UAAQzpD,UAAU,gBAAgBw2G,QAAS89E,GACzC7qI,EAAAA,cAAC7pD,EAAAA,EAAe,CAACjT,KAAMipK,EAAAA,IAAS9hK,KAAK,SAIzCpiB,IAAWrB,GACXo5E,EAAAA,cAAA,OAAKzpD,UAAY,sCAAqC7tB,EAAc7Q,EAAQ,QAAU,UAEpF,EAgDV,IAxCmB5V,IAAoC,IAAnC,KAAClE,EAAI,MAAEwqB,EAAK,eAAE+8L,GAAerjN,EAC/C,MAAM,SAAE20B,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1B,EAACthH,EAAK,EAAC06O,IAAWz3O,EAAAA,EAAAA,UAAS,KAEjCM,EAAAA,EAAAA,YAAU,KACJmlB,GACFgyN,EAAQhyN,EACV,GACC,CAACA,IAEJ,MAAMiyN,EAAmBnwF,IACvBkwF,EAAQlwF,GACRzzH,EAASwnH,cAAc,CACrBh5I,KAAM,CAAC,CAACrH,GAAOssJ,IACf,EAGJ,OACErqD,EAAAA,cAACqsI,EAAAA,EAAiB,CAChB91L,UAAU,wBACVo6I,SAAU6pD,EACV5pD,6BAA6BK,EAAAA,EAAAA,GAA2B,CAAC9pL,EAAAA,GAAkBtB,EAAAA,KAC3EgrL,gBAAiBA,IAAM,KACvBH,OAAQ7wL,EACRixL,iBAAiB,QAEjB9wF,EAAAA,cAAA,OAAKzpD,UAAU,yBACZ12C,EAAKyhB,KAAI0I,GACRg2E,EAAAA,cAACo6I,EAAQ,CACPn6O,IAAK+pB,EACL0jB,QAAS1jB,EACT6gN,SAAUA,IAAM2P,EAAgB36O,EAAK0E,QAAOnG,GAAKA,IAAM4rB,KACvDs7L,eAAgBA,OAIJ,gECnCxB,IA9BuBptE,IACrB,MAAM,SAAEthH,IAAatzB,EAAAA,EAAAA,YAAW69G,EAAAA,KAC1B,EAACqpC,EAAY,EAACiwF,IAAkB33O,EAAAA,EAAAA,UAAS,KACzC,EAAC8nJ,EAAO,EAAC8vF,IAAa53O,EAAAA,EAAAA,UAAS,KAC/B,EAAC+nJ,EAAU,EAAC8vF,IAAgB73O,EAAAA,EAAAA,UAAS,IAmB3C,OAjBAM,EAAAA,EAAAA,YAAU,KACR,MAAMw3O,EAA2BC,IAC/BJ,EAAeI,EAAmBt2O,QAAOmyB,KAASA,EAAIj2B,KAAI,EAE5D,GAAIm2B,GAAYshH,EAAQ,CACtB,MAAM0e,EAAchgI,EAAS0zH,mCAAmCpS,EAAQ0iG,GACxE,MAAO,IAAMhkF,GACf,IACC,CAAChgI,EAAUshH,KAEd90I,EAAAA,EAAAA,YAAU,KACR,GAAIwzB,GAAYshH,EAAQ,CACtB,MAAM0e,EAAchgI,EAAS6zH,kCAAkCvS,EAAQwiG,EAAWC,GAClF,MAAO,IAAM/jF,GACf,IACC,CAAChgI,EAAUshH,IAEP,CACLsS,cACAI,SACAC,YACD,uQCAH,MAAMg9E,EAAqB,CACzB,CACE9pO,KAAM,YACNmlC,KAAM43M,EAAAA,IACNj5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAe,cAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAe,cAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,wDACHu/B,eAAe,uFAKrB,CACEjiC,KAAM,OACNmlC,KAAM83M,EAAAA,IACNn5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,kCACHu/B,eAAe,oBAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,uBACHu/B,eAAe,SAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,mDACHu/B,eAAe,gJAMrB,CACEjiC,KAAM,cACNmlC,KAAM+3M,EAAAA,IACNp5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,8CACHu/B,eAAe,gCAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,2CACHu/B,eAAe,0BAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0DACHu/B,eAAe,4GAIrB,CACEjiC,KAAM,SACNmlC,KAAMg4M,EAAAA,IACNr5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,iBACHu/B,eAAe,WAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,iBACHu/B,eAAe,WAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,sCACHu/B,eAAe,uHAKrB,CACEjiC,KAAM,YACNmlC,KAAMi4M,EAAAA,IACNt5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAe,cAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,0CACHu/B,eAAe,cAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,wDACHu/B,eAAe,+JAMrB,CACEjiC,KAAM,aACNmlC,KAAMk4M,EAAAA,IACNv5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,2CACHu/B,eAAe,eAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,2CACHu/B,eAAe,eAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,yDACHu/B,eAAe,qHAKrB,CACEjiC,KAAM,QACNmlC,KAAMm4M,EAAAA,IACNx5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,kDACHu/B,eAAe,sBAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,wBACHu/B,eAAe,UAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,oDACHu/B,eAAe,0JAMrB,CACEjiC,KAAM,OACNmlC,KAAMo4M,EAAAA,IACNz5H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,SAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,qCACHu/B,eAAe,SAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,mDACHu/B,eAAe,yNAOrB,CACEjiC,KAAM,YACNmlC,KAAMq4M,EAAAA,IACN15H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,oBACHu/B,eAAe,cAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,oBACHu/B,eAAe,cAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,2CACHu/B,eAAe,6EAKrB,CACEjiC,KAAM,aACNmlC,KAAMs4M,EAAAA,IACN35H,MACE7hB,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,6BACHu/B,eAAe,eAGnB+6M,iBACE/6I,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,6BACHu/B,eAAe,eAGnB+pM,aACE/pI,EAAAA,cAAC+qE,EAAAA,EAAgB,CACftqK,GAAG,yDACHu/B,eAAe,6LAQjBsxM,EAAkBzJ,EAAmBvmN,KAAI2S,GAAKA,EAAEl2B,OAEhDmpO,EAA8B,CAAC,YAAa,OAAQ,OAAQ,aAC5DE,EAA8B,CAAC,SAAU,cAAe,YAAa,QAAS,aAAc,cAE5FqU,EAAS,CAAC,EAChB5T,EAAmBl5N,SAAQynD,GAAKqlL,EAAOrlL,EAAEr4D,MAAQq4D,IAEjD,MAAMu6K,EAAsB+K,GAAmBD,EAAOC,GAAgB75H,MAChE+3H,EAAiC8B,GAAmBD,EAAOC,GAAgBX,iBAC3EjB,EAA6B4B,GAAmBD,EAAOC,GAAgB3R,iLC/R7E,MAAM2O,EAAsB,CAC1B,CACExqG,OAAQ,OACRjuI,IAAK,uBACLwwF,KAAM,gBACN55E,UAAU,GAEZ,CAAE5W,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,gBACLS,MAAO,gBACP+vF,KAAM,iBAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,mBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CACExwF,IAAK,eACLS,MAAO,eACP+vF,KAAM,gBAER,CACExwF,IAAK,aACLS,MAAO,aACP+vF,KAAM,cAER,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAEhD,CACEy9C,OAAQ,OACRjuI,IAAK,wBACLwwF,KAAM,iBACN55E,UAAU,GAEZ,CACE5W,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CACExwF,IAAK,aACLS,MAAO,aACP+vF,KAAM,cAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,UACxC,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,UACxC,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CAAExwF,IAAK,cAAeS,MAAO,aAAc+vF,KAAM,cACjD,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,QAASS,MAAO,QAAS+vF,KAAM,SACtC,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAGR,CACEy9C,OAAQ,OACRjuI,IAAK,qBACLwwF,KAAM,cACN55E,UAAU,GAEZ,CACE5W,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,6BAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAGR,CACEy9C,OAAQ,OACRjuI,IAAK,wBACLwwF,KAAM,iBACN55E,UAAU,GAEZ,CAAE5W,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,UACxC,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAGR,CAAEy9C,OAAQ,OAAQjuI,IAAK,kBAAmBwwF,KAAM,WAAY55E,UAAU,GAEtE,CACE5W,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CAAExwF,IAAK,sBAAuBS,MAAO,aAAc+vF,KAAM,cACzD,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CAAExwF,IAAK,qCAAsCS,MAAO,kBAAmB+vF,KAAM,mBAC7E,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,+BAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,iCACLS,MAAO,iCACP+vF,KAAM,kCAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,6BACLS,MAAO,6BACP+vF,KAAM,8BAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAE9C,CACEy9C,OAAQ,OACRjuI,IAAK,8BACLwwF,KAAM,uBACN55E,UAAU,GAEZ,CAAE5W,IAAK,OAAQS,MAAO,OAAQ+vF,KAAM,QACpC,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,UACxC,CAAExwF,IAAK,MAAOS,MAAO,MAAO+vF,KAAM,OAClC,CAAExwF,IAAK,MAAOS,MAAO,MAAO+vF,KAAM,OAClC,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,qCAAsCS,MAAO,gBAAiB+vF,KAAM,iBAC3E,CAAExwF,IAAK,OAAQS,MAAO,OAAQ+vF,KAAM,QACpC,CAAExwF,IAAK,MAAOS,MAAO,MAAO+vF,KAAM,OAClC,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,+BAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CAAExwF,IAAK,QAASS,MAAO,QAAS+vF,KAAM,SACtC,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAElD,CACEy9C,OAAQ,OACRjuI,IAAK,sBACLwwF,KAAM,eACN55E,UAAU,GAEZ,CACE5W,IAAK,gDACLS,MAAO,gDACP+vF,KAAM,iDAER,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,gCAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,0DACLS,MAAO,0DACP+vF,KAAM,2DAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,wDACLS,MAAO,wDACP+vF,KAAM,yDAER,CACExwF,IAAK,oDACLS,MAAO,oDACP+vF,KAAM,qDAER,CACExwF,IAAK,wCACLS,MAAO,wCACP+vF,KAAM,yCAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,6BAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,sCACLS,MAAO,sCACP+vF,KAAM,uCAER,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,4CACLS,MAAO,4CACP+vF,KAAM,6CAER,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CACExwF,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,sCAER,CACExwF,IAAK,yCACLS,MAAO,4BACP+vF,KAAM,6BAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAGR,CACEy9C,OAAQ,OACRjuI,IAAK,uBACLwwF,KAAM,gBACN55E,UAAU,GAEZ,CAAE5W,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,gCAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,qCACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAGR,CACEy9C,OAAQ,OACRjuI,IAAK,mBACLwwF,KAAM,YACN55E,UAAU,GAEZ,CACE5W,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAGR,CACEy9C,OAAQ,OACRjuI,IAAK,qBACLwwF,KAAM,cACN55E,UAAU,GAEZ,CAAE5W,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,WAC1C,CACExwF,IAAK,+BACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,QAASS,MAAO,QAAS+vF,KAAM,SACtC,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,UACxC,CAAExwF,IAAK,qBAAsBS,MAAO,SAAU+vF,KAAM,UACpD,CAAExwF,IAAK,mBAAoBS,MAAO,OAAQ+vF,KAAM,QAChD,CAAExwF,IAAK,kBAAmBS,MAAO,MAAO+vF,KAAM,OAC9C,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,4BAA6BS,MAAO,gBAAiB+vF,KAAM,iBAClE,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,gCAER,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,gCAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAE5C,CACEy9C,OAAQ,OACRjuI,IAAK,oBACLwwF,KAAM,aACN55E,UAAU,GAEZ,CACE5W,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,sCAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CACExwF,IAAK,6CACLS,MAAO,6CACP+vF,KAAM,8CAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CACExwF,IAAK,sCACLS,MAAO,sCACP+vF,KAAM,uCAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CACExwF,IAAK,0CACLS,MAAO,0CACP+vF,KAAM,2CAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,uCACLS,MAAO,uCACP+vF,KAAM,wCAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBACpD,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CACExwF,IAAK,6BACLS,MAAO,6BACP+vF,KAAM,8BAER,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CACExwF,IAAK,iDACLS,MAAO,sCACP+vF,KAAM,uCAER,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAE1D,CAAEy9C,OAAQ,OAAQjuI,IAAK,eAAgBwwF,KAAM,QAAS55E,UAAU,GAChE,CAAE5W,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,6BAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CACExwF,IAAK,2BACLS,MAAO,2BACP+vF,KAAM,4BAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,6BACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,oBAER,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CAAExwF,IAAK,kBAAmBS,MAAO,kBAAmB+vF,KAAM,mBAC1D,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,6BAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,gBAEpD,CACEy9C,OAAQ,OACRjuI,IAAK,uBACLwwF,KAAM,gBACN55E,UAAU,GAEZ,CACE5W,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CACExwF,IAAK,iDACLS,MAAO,iDACP+vF,KAAM,kDAER,CACExwF,IAAK,qCACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CAAExwF,IAAK,wBAAyBS,MAAO,UAAW+vF,KAAM,WACxD,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,+BAER,CACExwF,IACE,yFACFS,MACE,yFACF+vF,KACE,0FAEJ,CACExwF,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,sCAER,CACExwF,IAAK,sCACLS,MAAO,sCACP+vF,KAAM,uCAER,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,+BAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CACExwF,IAAK,gDACLS,MAAO,gDACP+vF,KAAM,iDAER,CACExwF,IAAK,yCACLS,MAAO,yCACP+vF,KAAM,0CAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,2BACLS,MAAO,2BACP+vF,KAAM,4BAER,C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IAAK,sBACLwwF,KAAM,eACN55E,UAAU,GAEZ,CACE5W,IAAK,gDACLS,MAAO,gDACP+vF,KAAM,kEAER,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,oBAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,6CAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,0DACLS,MAAO,0DACP+vF,KAAM,kEAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,8CAER,CACExwF,IAAK,wDACLS,MAAO,wDACP+vF,KAAM,0DAER,CACExwF,IAAK,oDACLS,MAAO,oDACP+vF,KAAM,qDAER,CACExwF,IAAK,wCACLS,MAAO,wCACP+vF,KAAM,4CAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,6BAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,sCACLS,MAAO,sCACP+vF,KAAM,wCAER,CAAExwF,IAAK,UAAWS,MAAO,UAAW+vF,KAAM,aAC1C,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,4CACLS,MAAO,4CACP+vF,KAAM,iDAER,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CACExwF,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,oCAER,CACExwF,IAAK,yCACLS,MAAO,4BACP+vF,KAAM,gCAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,qBAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,4BAER,CACEy9C,OAAQ,OACRjuI,IAAK,uBACLwwF,KAAM,mBACN55E,UAAU,GAEZ,CAAE5W,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,yBAClD,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,eAChD,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,uBAER,CACExwF,IAAK,eACLS,MAAO,eACP+vF,KAAM,+BAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+v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ACP+vF,KAAM,uCAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,wBACpD,CACEy9C,OAAQ,OACRjuI,IAAK,uBACLwwF,KAAM,cACN55E,UAAU,GAEZ,CACE5W,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,gCAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,8BAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,yCAER,CACExwF,IAAK,0BACLS,MAAO,0BACP+vF,KAAM,2BAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,iCAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,yCAER,CACExwF,IAAK,iDACLS,MAAO,iDACP+vF,KAAM,6CAER,CACExwF,IAAK,qCACLS,MAAO,uBACP+vF,KAAM,yBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,wBAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,4CAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,sCAER,CAAExwF,IAAK,wBAAyBS,MAAO,UAAW+vF,KAAM,aACxD,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,uCAER,CACExwF,IAAK,yFACLS,MACE,yFACF+vF,KAAM,qGAER,CACExwF,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,2CAER,CACExwF,IAAK,sCACLS,MAAO,sCACP+vF,KAAM,mDAER,CACExwF,IAAK,8BACLS,MAAO,8BACP+vF,KAAM,mCAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,sCAER,CACExwF,IAAK,gDACLS,MAAO,gDACP+vF,KAAM,kDAER,CACExwF,IAAK,yCACLS,MAAO,yCACP+vF,KAAM,2CAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,kCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,qCAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,wBAER,CAAExwF,IAAK,YAAaS,MAAO,YAAa+vF,KAAM,aAC9C,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,wBAER,CACExwF,IAAK,2BACLS,MAAO,2BACP+vF,KAAM,sCAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,yBAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,gCAER,CAAExwF,IAAK,aAAcS,MAAO,aAAc+vF,KAAM,cAChD,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,qBACxD,CACExwF,IAAK,kEACLS,MAAO,kEACP+vF,KAAM,gEAER,CACEy9C,OAAQ,OACRjuI,IAAK,6BACLwwF,KAAM,0BACN55E,UAAU,GAEZ,CACE5W,IAAK,gBACLS,MAAO,gBACP+vF,KAAM,yBAER,CACExwF,IAAK,6BACLS,MAAO,6BACP+vF,KAAM,kCAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,oCAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,cACpD,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,iBACtD,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,yBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,yBAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,qBAER,CACExwF,IAAK,gBACLS,MAAO,gBACP+vF,KAAM,yBAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,yCAER,CAAExwF,IAAK,SAAUS,MAAO,SAAU+vF,KAAM,YACxC,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,iBACpD,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,sBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,kBAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,qBACtD,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,sBAER,CAAEy9C,OAAQ,OAAQjuI,IAAK,eAAgBwwF,KAAM,SAAU55E,UAAU,GACjE,CAAE5W,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,uBAER,CACExwF,IAAK,yCACLS,MAAO,yCACP+vF,KAAM,gDAER,CACExwF,IAAK,oBACLS,MAAO,oBACP+vF,KAAM,6BAER,CAAExwF,IAAK,gBAAiBS,MAAO,gBAAiB+vF,KAAM,oBACtD,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,wBAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,sBAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,sBAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,sBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,wBAER,CACExwF,IAAK,4BACLS,MAAO,4BACP+vF,KAAM,+BAER,CAAExwF,IAAK,eAAgBS,MAAO,eAAgB+vF,KAAM,oBACpD,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,oBAER,CACExwF,IAAK,iBACLS,MAAO,iBACP+vF,KAAM,uBAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,sBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,uBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,0BAER,CACExwF,IAAK,6BACLS,MAAO,uBACP+vF,KAAM,yBAER,CACExwF,IAAK,mBACLS,MAAO,mBACP+vF,KAAM,wBAER,CACExwF,IAAK,uBACLS,MAAO,uBACP+vF,KAAM,+BAER,CACExwF,IAAK,kBACLS,MAAO,kBACP+vF,KAAM,oCAER,CACExwF,IAAK,+BACLS,MAAO,yBACP+vF,KAAM,+BAER,CACExwF,IAAK,qBACLS,MAAO,qBACP+vF,KAAM,qBAER,CACExwF,IAAK,yCACLS,MAAO,mCACP+vF,KAAM,6CAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CACExwF,IAAK,oBACLS,MAAO,oB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AM,iCAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,2CACLS,MAAO,2CACP+vF,KAAM,4CAER,CACEy9C,OAAQ,OACRjuI,IAAK,+BACLwwF,KAAM,wBACN55E,UAAU,GAEZ,CACE5W,IAAK,2BACLS,MAAO,2BACP+vF,KAAM,4BAER,CACExwF,IAAK,wCACLS,MAAO,wCACP+vF,KAAM,yCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,0BAER,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CACExwF,IAAK,iCACLS,MAAO,iCACP+vF,KAAM,kCAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,iCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,mCAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CACEy9C,OAAQ,OACRjuI,IAAK,mBACLwwF,KAAM,YACN55E,UAAU,GAEZ,CACE5W,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,sCAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCAER,CACExwF,IAAK,iCACLS,MAAO,iCACP+vF,KAAM,kCAER,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,gCAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,yBAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,oCAER,CAAExwF,IAAK,iBAAkBS,MAAO,iBAAkB+vF,KAAM,kBACxD,CACExwF,IAAK,iDACLS,MAAO,iDACP+vF,KAAM,kDAER,CACExwF,IAAK,sBACLS,MAAO,sBACP+vF,KAAM,uBAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,qCA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xwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,+BAER,CAAExwF,IAAK,WAAYS,MAAO,WAAY+vF,KAAM,YAC5C,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,yCAER,CACExwF,IAAK,yCACLS,MAAO,yCACP+vF,KAAM,kDAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,6BAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,wBAER,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,gBAClD,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,4CAER,CACExwF,IAAK,2CACLS,MAAO,2CACP+vF,KAAM,wCAER,CACEy9C,OAAQ,OACRjuI,IAAK,+BACLwwF,KAAM,yBACN55E,UAAU,GAEZ,CACE5W,IAAK,2BACLS,MAAO,2BACP+vF,KAAM,yCAER,CACExwF,IAAK,wCACLS,MAAO,wCACP+vF,KAAM,kDAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,qCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,sCAER,CACExwF,IAAK,yBACLS,MAAO,yBACP+vF,KAAM,2BAER,CAAExwF,IAAK,cAAeS,MAAO,cAAe+vF,KAAM,eAClD,CACExwF,IAAK,iCACLS,MAAO,iCACP+vF,KAAM,qCAER,CACExwF,IAAK,gCACLS,MAAO,gCACP+vF,KAAM,sCAER,CACExwF,IAAK,kCACLS,MAAO,kCACP+vF,KAAM,kCAER,CACExwF,IAAK,mCACLS,MAAO,mCACP+vF,KAAM,4CAER,CACEy9C,OAAQ,OACRjuI,IAAK,mBACLwwF,KAAM,YACN55E,UAAU,GAEZ,CACE5W,IAAK,qCACLS,MAAO,qCACP+vF,KAAM,uCAER,CACExwF,IAAK,oCACLS,MAAO,oCACP+vF,KAAM,gCAER,CACExwF,IAAK,iCACLS,MAAO,iCACP+vF,KAAM,oCAER,CACExwF,IAAK,+BACLS,MAAO,+BACP+vF,KAAM,iCAER,CACExwF,IAAK,wBACLS,MAAO,wBACP+vF,KAAM,qBAER,CACExwF,IAAK,m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J,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,KAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,KAEJ,GAAM,CACF,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,KACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,IACA,MAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KACA,KACA,KAEJ,GAAM,CACF,IACA,KAEJ,GAAM,CACF,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,KACA,KAEJ,GAAM,CACF,KACA,KACA,IACA,KAEJ,GAAM,CACF,IACA,KACA,IACA,MAEJ,GAAM,CACF,IACA,KACA,IACA,MAE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A,GACCA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACCA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,KAAUA,GAAK,KACf,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,KACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,KAC7B,CEvvCA,SAAS45N,GAAcxwK,GACnBA,EAAIzrE,SAAQ,SAAUgiD,GAElB,UADOA,EAAG8pB,SACN6vK,EAAgB35L,IAAO45L,EAAgB55L,GACvC,IAAK,IAAI52B,KAAK42B,EAAGzsD,eACNysD,EAAGzsD,QAAQ61B,GAAG0gD,SACrBmwK,GAAcj6L,EAAGzsD,QAAQ61B,GAAGr5B,YAG3BypP,EAAgBx5L,IAAO+5L,EAAiB/5L,EAAGhwD,SAG1CypP,EAAcz5L,IAAO05L,EAAc15L,KACzCg6L,EAAmBh6L,EAAGhwD,cAHfgwD,EAAGhwD,MAAM85E,SAMXgwK,EAAa95L,IAClBi6L,GAAcj6L,EAAG/1C,SAEzB,GACJ,CACO,SAASma,GAAM4D,EAAS6J,QACd,IAATA,IAAmBA,EAAO,CAAC,GAC/BA,GAAO,QAAS,CAAEs7H,sBAAsB,EAAMD,qBAAqB,GAAQr7H,GAC3E,IAAIlK,EAAS,IAAI,GAAOK,EAAS6J,GAAMzN,QACvC,GAAIuD,EAAO55B,IAAK,CACZ,IAAIJ,EAAQgkP,YAAY7pF,EAAUngI,EAAO55B,IAAIgmK,OAK7C,MAHApmK,EAAMm8E,SAAWniD,EAAO55B,IAAI+7E,SAE5Bn8E,EAAM2qP,gBAAkB3wN,EAAO55B,IAAIi6B,QAC7Br6B,CACV,CAIA,OAHMkkC,aAAmC,EAASA,EAAKqoN,kBACnDD,GAActyN,EAAO+N,KAElB/N,EAAO+N,GAClB,kCCOA/oC,EAAOC,QA5BS,SAASkoK,EAAW3iI,EAAQz9B,EAAGC,EAAG0rB,EAAGue,EAAGtb,EAAG27B,GAOzD,IAAK61G,EAAW,CACd,IAAInnK,EACJ,QAAerB,IAAX6lC,EACFxkC,EAAQ,IAAIG,MACV,qIAGG,CACL,IAAIN,EAAO,CAACkH,EAAGC,EAAG0rB,EAAGue,EAAGtb,EAAG27B,GACvBk7L,EAAW,GACfxsP,EAAQ,IAAIG,MACVqkC,EAAO/O,QAAQ,OAAO,WAAa,OAAO51B,EAAK2sP,IAAa,MAExDr2O,KAAO,qBACf,CAGA,MADAnW,EAAMysP,YAAc,EACdzsP,CACR,CACF,sCC5CA,IAAI0sP,EAAmC,mBAAX1nN,QAAuD,iBAAvBA,OAAO6iN,YAG/D8E,EAFY,EAAQ,MAERC,CAAU,6BAEtBC,EAAsB,SAAqBzqP,GAC9C,QAAIsqP,GAAkBtqP,GAA0B,iBAAVA,GAAsB4iC,OAAO6iN,eAAezlP,IAGtD,uBAArBuqP,EAAUvqP,EAClB,EAEI0qP,EAAoB,SAAqB1qP,GAC5C,QAAIyqP,EAAoBzqP,IAGP,OAAVA,GACW,iBAAVA,GACiB,iBAAjBA,EAAMnC,QACbmC,EAAMnC,QAAU,GACK,mBAArB0sP,EAAUvqP,IACkB,sBAA5BuqP,EAAUvqP,EAAMmmP,OAClB,EAEIwE,EAA6B,WAChC,OAAOF,EAAoB3sP,UAC5B,CAFgC,GAIhC2sP,EAAoBC,kBAAoBA,EAExC9tP,EAAOC,QAAU8tP,EAA4BF,EAAsBC,kCC9BnE,IAEIE,EACAC,EAHAC,EAAUv+J,SAASzvF,UAAU4tB,SAC7BqgO,EAAkC,iBAAZn9J,SAAoC,OAAZA,SAAoBA,QAAQvvF,MAG9E,GAA4B,mBAAjB0sP,GAAgE,mBAA1BhnP,OAAO4J,eACvD,IACCi9O,EAAe7mP,OAAO4J,eAAe,CAAC,EAAG,SAAU,CAClDjI,IAAK,WACJ,MAAMmlP,CACP,IAEDA,EAAmB,CAAC,EAEpBE,GAAa,WAAc,MAAM,EAAI,GAAG,KAAMH,EAC/C,CAAE,MAAO/xN,GACJA,IAAMgyN,IACTE,EAAe,KAEjB,MAEAA,EAAe,KAGhB,IAAIC,EAAmB,cACnBC,EAAe,SAA4BjrP,GAC9C,IACC,IAAIkrP,EAAQJ,EAAQ5sP,KAAK8B,GACzB,OAAOgrP,EAAiBjhP,KAAKmhP,EAC9B,CAAE,MAAO33N,GACR,OAAO,CACR,CACD,EAEI43N,EAAoB,SAA0BnrP,GACjD,IACC,OAAIirP,EAAajrP,KACjB8qP,EAAQ5sP,KAAK8B,IACN,EACR,CAAE,MAAOuzB,GACR,OAAO,CACR,CACD,EACI6vD,EAAQr/E,OAAOjH,UAAU4tB,SAOzB4/N,EAAmC,mBAAX1nN,UAA2BA,OAAO6iN,YAE1D2F,IAAW,IAAK,CAAC,IAEjBC,EAAQ,WAA8B,OAAO,CAAO,EACxD,GAAwB,iBAAbrgP,SAAuB,CAEjC,IAAIq+B,EAAMr+B,SAASq+B,IACf+5C,EAAMllF,KAAKmrC,KAAS+5C,EAAMllF,KAAK8M,SAASq+B,OAC3CgiN,EAAQ,SAA0BrrP,GAGjC,IAAKorP,IAAWprP,UAA4B,IAAVA,GAA0C,iBAAVA,GACjE,IACC,IAAImwB,EAAMizD,EAAMllF,KAAK8B,GACrB,OAlBU,+BAmBTmwB,GAlBU,qCAmBPA,GAlBO,4BAmBPA,GAxBS,oBAyBTA,IACc,MAAbnwB,EAAM,GACZ,CAAE,MAAOuzB,GAAU,CAEpB,OAAO,CACR,EAEF,CAEA32B,EAAOC,QAAUkuP,EACd,SAAoB/qP,GACrB,GAAIqrP,EAAMrrP,GAAU,OAAO,EAC3B,IAAKA,EAAS,OAAO,EACrB,GAAqB,mBAAVA,GAAyC,iBAAVA,EAAsB,OAAO,EACvE,IACC+qP,EAAa/qP,EAAO,KAAM4qP,EAC3B,CAAE,MAAOr3N,GACR,GAAIA,IAAMs3N,EAAoB,OAAO,CACtC,CACA,OAAQI,EAAajrP,IAAUmrP,EAAkBnrP,EAClD,EACE,SAAoBA,GACrB,GAAIqrP,EAAMrrP,GAAU,OAAO,EAC3B,IAAKA,EAAS,OAAO,EACrB,GAAqB,mBAAVA,GAAyC,iBAAVA,EAAsB,OAAO,EACvE,GAAIsqP,EAAkB,OAAOa,EAAkBnrP,GAC/C,GAAIirP,EAAajrP,GAAU,OAAO,EAClC,IAAIsrP,EAAWloK,EAAMllF,KAAK8B,GAC1B,QApDY,sBAoDRsrP,GAnDS,+BAmDeA,IAA0B,iBAAmBvhP,KAAKuhP,KACvEH,EAAkBnrP,EAC1B,sCClGD,IAcIurP,EAdAnoK,EAAQr/E,OAAOjH,UAAU4tB,SACzBogO,EAAUv+J,SAASzvF,UAAU4tB,SAC7B8gO,EAAY,sBACZlB,EAAiB,EAAQ,MAAR,GACjBjI,EAAWt+O,OAAO0pF,eAYtB7wF,EAAOC,QAAU,SAA6B++B,GAC7C,GAAkB,mBAAPA,EACV,OAAO,EAER,GAAI4vN,EAAUzhP,KAAK+gP,EAAQ5sP,KAAK09B,IAC/B,OAAO,EAER,IAAK0uN,EAEJ,MAAe,+BADLlnK,EAAMllF,KAAK09B,GAGtB,IAAKymN,EACJ,OAAO,EAER,QAAiC,IAAtBkJ,EAAmC,CAC7C,IAAIE,EA1BiB,WACtB,IAAKnB,EACJ,OAAO,EAER,IACC,OAAO/9J,SAAS,wBAATA,EACR,CAAE,MAAOh5D,GACT,CACD,CAkBsBm4N,GACpBH,IAAoBE,GAAgBpJ,EAASoJ,EAC9C,CACA,OAAOpJ,EAASzmN,KAAQ2vN,CACzB,sCCnCA,IAAII,EAAkB,EAAQ,OAE9B/uP,EAAOC,QAAU,SAAsBmD,GACtC,QAAS2rP,EAAgB3rP,EAC1B,kCC0EA,IA9EA,IAAItD,EAAW,SAAkBipC,GAC/B,OAAe,OAARA,IAAiBxnC,MAAMgpB,QAAQwe,IAAuB,iBAARA,CACvD,EAEIimN,EAAQ,CAIV,EAAG,SACH,EAAG,OACH,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,QACJ,GAAI,WACJ,GAAI,SACJ,GAAI,UACJ,GAAI,aACJ,GAAI,SACJ,GAAI,aACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,cACJ,GAAI,SACJ,GAAI,SACJ,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,CAAC,IAAK,KACV,GAAI,KACJ,GAAI,cACJ,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,KAAM,KACZ,IAAK,CAAC,IAAK,KACX,IAAK,CAAC,IAAK,KACX,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,OACL,IAAK,WAIEluP,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAC3BkuP,EAAM,IAAMluP,GAAK,KAAOA,EAAI,GAI9B,IAAK,IAAI8rE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,IAAIvsE,EAAIusE,EAAI,GACZoiL,EAAM3uP,GAAK,CAACs1B,OAAOC,aAAav1B,EAAI,IAAKs1B,OAAOC,aAAav1B,GAC/D,CAEA,IAAI4uP,EAAc,CAChBD,MAAOA,EAUPE,QAAS,SAAiBC,GACxB,OAAIrvP,EAASqvP,GACJA,EAAWjiK,SAAWiiK,EAAWC,OAAS5vP,KAAK2vP,EAAWxsP,KAE5DnD,KAAK2vP,EACd,EAWAE,OAAQ,SAAgBC,GACtB,IAAIC,EAAUzvP,EAASwvP,GAGvB,GAAIC,GAAWD,EAAY3sP,IACzB,OAAO2sP,EAAY3sP,IAGrB,IAAIwU,EAAO63O,EAAMO,EAAUD,EAAYpiK,SAAWoiK,EAAYF,MAAQE,GAUtE,OARI/tP,MAAMgpB,QAAQpT,KAEdA,EADEo4O,EACKp4O,EAAKm4O,EAAY5lK,SAAW,EAAI,GAEhCvyE,EAAK,IAITA,CACT,EAMAq4O,OAAQ,EACRC,KAAM,EACNC,UAAW,EACXzpB,IAAK,EACL0pB,MAAO,GACPl9O,MAAO,GACPm9O,MAAO,GACPC,QAAS,GACTC,IAAK,GACLC,MAAO,GACPC,SAAU,GACVC,OAAQ,GACRC,QAAS,GACTC,WAAY,GACZC,OAAQ,GACRC,WAAY,GACZ,IAAK,GACLC,OAAQ,GACRC,SAAU,GACVC,IAAK,GACLC,KAAM,GACNC,UAAW,GACXC,QAAS,GACTC,WAAY,GACZC,UAAW,GACXC,OAAQ,GACRC,MAAO,GACPC,QAAS,GACTC,YAAa,GACbC,OAAQ,GACRC,OAAQ,GACR,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACHhgL,EAAG,GACH,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACL,EAAG,GACH,IAAK,GACLppE,EAAG,GACH+lE,EAAG,GACH9lE,EAAG,GACH2nE,EAAG,GACHj8C,EAAG,GACHk7C,EAAG,GACH38B,EAAG,GACH46B,EAAG,GACHl2C,EAAG,GACHg4C,EAAG,GACHrc,EAAG,GACH0c,EAAG,GACH3sE,EAAG,GACH0tE,EAAG,GACH1jE,EAAG,GACH4iE,EAAG,GACHnuE,EAAG,GACH6rE,EAAG,GACHC,EAAG,GACHmC,EAAG,GACHtyC,EAAG,GACH0yC,EAAG,GACH9G,EAAG,GACH+H,EAAG,GACHxuE,EAAG,GACHstE,EAAG,GACH7uE,EAAG,GACH+sE,EAAG,GACH16B,EAAG,GACH45B,EAAG,GACH74C,EAAG,GACHwY,EAAG,GACHy4B,EAAG,GACHmL,EAAG,GACHr7B,EAAG,GACH24B,EAAG,GACHj4B,EAAG,GACH83B,EAAG,GACHlU,EAAG,GACH4V,EAAG,GACH54C,EAAG,GACH+4C,EAAG,GACHjhB,EAAG,GACH8iB,EAAG,GACHtkE,EAAG,GACHojE,EAAG,GACHnoE,EAAG,GACH0pE,EAAG,GACHzpE,EAAG,GACH2pE,EAAG,GACHnC,EAAG,GACHoC,EAAG,GACHkgL,GAAI,GACJ95O,YAAa,GACb+5O,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,QAAS,IACTC,WAAY,IACZC,WAAY,IACZC,WAAY,IACZC,SAAU,IACV,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACLh3N,EAAG,IACH,IAAK,IACL,IAAK,IACL,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","sources":["webpack://gatsby-starter-default/./node_modules/@algolia/events/events.js","webpack://gatsby-starter-default/./node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","webpack://gatsby-starter-default/./node_modules/@dnd-kit/core/dist/core.esm.js","webpack://gatsby-starter-default/./node_modules/@dnd-kit/sortable/dist/sortable.esm.js","webpack://gatsby-starter-default/./node_modules/@dnd-kit/utilities/dist/utilities.esm.js","webpack://gatsby-starter-default/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@fluentui/react-component-ref/dist/es/RefFindNode.js","webpack://gatsby-starter-default/./node_modules/@fluentui/react-component-ref/dist/es/RefForward.js","webpack://gatsby-starter-default/./node_modules/@fluentui/react-component-ref/dist/es/Ref.js","webpack://gatsby-starter-default/./node_modules/@fluentui/react-component-ref/dist/es/utils.js","webpack://gatsby-starter-default/./node_modules/@formatjs/fast-memoize/lib/index.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/error.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/utils.js","webpack://gatsby-starter-default/./node_modules/@fortawesome/free-regular-svg-icons/index.es.js","webpack://gatsby-starter-default/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://gatsby-starter-default/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/createPopper.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/enums.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/math.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://gatsby-starter-default/./node_modules/@popperjs/core/lib/utils/within.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useCallbackRef.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useEventCallback.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useForceUpdate.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useMergedRefs.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useMounted.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/usePrevious.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useWillUnmount.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useUpdatedRef.js","webpack://gatsby-starter-default/./node_modules/airbnb-prop-types/build/mocks/index.js","webpack://gatsby-starter-default/./node_modules/airbnb-prop-types/index.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/index.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/DerivedHelper/index.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/SearchParameters/index.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/SearchResults/index.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/algoliasearch.helper.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/compact.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/defaultsPure.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/find.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/findIndex.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/formatSort.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/inherits.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/intersection.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/merge.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/omit.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/orderBy.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/functions/valToNumber.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/requestBuilder.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","webpack://gatsby-starter-default/./node_modules/algoliasearch-helper/src/version.js","webpack://gatsby-starter-default/./node_modules/algoliasearch/dist/algoliasearch.umd.js","webpack://gatsby-starter-default/./node_modules/anchorate/index.js","webpack://gatsby-starter-default/./node_modules/call-bind/callBound.js","webpack://gatsby-starter-default/./node_modules/call-bind/index.js","webpack://gatsby-starter-default/./node_modules/classnames/index.js","webpack://gatsby-starter-default/./node_modules/clsx/dist/clsx.m.js","webpack://gatsby-starter-default/./node_modules/consolidated-events/lib/index.esm.js","webpack://gatsby-starter-default/./node_modules/css.escape/css.escape.js","webpack://gatsby-starter-default/./node_modules/dayjs/dayjs.min.js","webpack://gatsby-starter-default/./node_modules/decode-uri-component/index.js","webpack://gatsby-starter-default/./node_modules/deepmerge/dist/cjs.js","webpack://gatsby-starter-default/./node_modules/define-data-property/index.js","webpack://gatsby-starter-default/./node_modules/define-properties/index.js","webpack://gatsby-starter-default/./node_modules/dialog-polyfill/dialog-polyfill.js","webpack://gatsby-starter-default/./node_modules/document.contains/implementation.js","webpack://gatsby-starter-default/./node_modules/document.contains/index.js","webpack://gatsby-starter-default/./node_modules/document.contains/polyfill.js","webpack://gatsby-starter-default/./node_modules/document.contains/shim.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/addClass.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/addEventListener.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/contains.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/getComputedStyle.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/ownerWindow.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/hyphenate.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/hyphenateStyle.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/isTransform.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/css.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/hasClass.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/listen.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/ownerDocument.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/querySelectorAll.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/removeClass.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/removeEventListener.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/transitionEnd.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/triggerEvent.js","webpack://gatsby-starter-default/./node_modules/dompurify/dist/purify.js","webpack://gatsby-starter-default/./node_modules/escape-string-regexp/index.js","webpack://gatsby-starter-default/./node_modules/exenv/index.js","webpack://gatsby-starter-default/./node_modules/file-saver/dist/FileSaver.min.js","webpack://gatsby-starter-default/./node_modules/filter-obj/index.js","webpack://gatsby-starter-default/./node_modules/for-each/index.js","webpack://gatsby-starter-default/./node_modules/function-bind/implementation.js","webpack://gatsby-starter-default/./node_modules/function-bind/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://gatsby-starter-default/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-starter-default/./.cache/api-runner-browser-plugins.js","webpack://gatsby-starter-default/./.cache/api-runner-browser.js","webpack://gatsby-starter-default/./.cache/create-content-digest-browser-shim.js","webpack://gatsby-starter-default/./.cache/emitter.js","webpack://gatsby-starter-default/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-starter-default/./.cache/normalize-page-path.js","webpack://gatsby-starter-default/./.cache/find-path.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://gatsby-starter-default/./.cache/slice/server-slice-renderer.js","webpack://gatsby-starter-default/./.cache/slice/server-slice.js","webpack://gatsby-starter-default/./.cache/slice/inline-slice.js","webpack://gatsby-starter-default/./.cache/slice.js","webpack://gatsby-starter-default/./.cache/gatsby-browser-entry.js","webpack://gatsby-starter-default/./.cache/prefetch.js","webpack://gatsby-starter-default/./.cache/loader.js","webpack://gatsby-starter-default/./.cache/head/components/fire-callback-in-effect.js","webpack://gatsby-starter-default/./.cache/head/constants.js","webpack://gatsby-starter-default/./.cache/head/utils.js","webpack://gatsby-starter-default/./.cache/head/head-export-handler-for-browser.js","webpack://gatsby-starter-default/./.cache/page-renderer.js","webpack://gatsby-starter-default/./.cache/route-announcer-props.js","webpack://gatsby-starter-default/./.cache/navigation.js","webpack://gatsby-starter-default/./node_modules/shallow-compare/es/index.js","webpack://gatsby-starter-default/./.cache/ensure-resources.js","webpack://gatsby-starter-default/./.cache/production-app.js","webpack://gatsby-starter-default/./.cache/public-page-renderer-prod.js","webpack://gatsby-starter-default/./.cache/public-page-renderer.js","webpack://gatsby-starter-default/./.cache/react-dom-utils.js","webpack://gatsby-starter-default/./.cache/redirect-utils.js","webpack://gatsby-starter-default/./.cache/register-service-worker.js","webpack://gatsby-starter-default/./.cache/slice/context.js","webpack://gatsby-starter-default/./.cache/static-query.js","webpack://gatsby-starter-default/./.cache/context-utils.js","webpack://gatsby-starter-default/./.cache/strip-prefix.js","webpack://gatsby-starter-default/./gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-use-query-params/root.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-use-query-params/gatsby-browser.js","webpack://gatsby-starter-default/./src/components/Firebase/PrivateRoute.js","webpack://gatsby-starter-default/./src/components/Firebase/context.js","webpack://gatsby-starter-default/./src/components/Firebase/config.js","webpack://gatsby-starter-default/./src/components/schools/Sport.js","webpack://gatsby-starter-default/./src/components/schools/Cost.js","webpack://gatsby-starter-default/./src/components/schools/MajorList.js","webpack://gatsby-starter-default/./src/components/schools/School.js","webpack://gatsby-starter-default/./src/components/majors/SchoolList.js","webpack://gatsby-starter-default/./src/components/majors/Major.js","webpack://gatsby-starter-default/./node_modules/@firebase/firestore-compat/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/functions/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/functions-compat/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/storage/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/storage-compat/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./src/components/Firebase/firebase.js","webpack://gatsby-starter-default/./src/components/toasts/user-notification-toast.js","webpack://gatsby-starter-default/./src/components/Firebase/useLocalFirestore.js","webpack://gatsby-starter-default/./src/components/daily-quest/useDailyQuest.js","webpack://gatsby-starter-default/./src/components/siteMetrics/useSiteMetrics.js","webpack://gatsby-starter-default/./src/components/Firebase/useAuth.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/message.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/@formatjs/ecma402-abstract/lib/utils.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/number.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/relativeTime.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/dateTime.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/plural.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/list.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/displayName.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/lib/src/create-intl.js","webpack://gatsby-starter-default/./node_modules/react-intl/lib/src/components/provider.js","webpack://gatsby-starter-default/./src/components/SimpleLocalize.js","webpack://gatsby-starter-default/./src/components/account/Account.js","webpack://gatsby-starter-default/./src/components/admin/UserModel.js","webpack://gatsby-starter-default/./src/components/admin/AdminFirebaseFunctions.js","webpack://gatsby-starter-default/./src/components/admin/UserEntity.js","webpack://gatsby-starter-default/./src/components/admin/adminOptions.js","webpack://gatsby-starter-default/./src/components/algolia/AlgoliaClientKeys.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-stories-week.js","webpack://gatsby-starter-default/./src/components/assessment/getSchoolSpecificCareers.js","webpack://gatsby-starter-default/./src/components/assessment/questions.js","webpack://gatsby-starter-default/./src/components/assessment/thumbs-feedback/ThumbsFeedback.js","webpack://gatsby-starter-default/./src/components/assessment/useCareers.js","webpack://gatsby-starter-default/./src/components/assessment/utils/utils.js","webpack://gatsby-starter-default/./src/components/bookmark/bookmark.js","webpack://gatsby-starter-default/./src/components/bookmark/utils/utils.js","webpack://gatsby-starter-default/./src/components/cards/cards-careers.js","webpack://gatsby-starter-default/./src/components/cards/cards-stories.js","webpack://gatsby-starter-default/./src/components/careers/AllowedTypes.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneFactory.js","webpack://gatsby-starter-default/./src/components/careers/CareerPlan.js","webpack://gatsby-starter-default/./src/components/careers/DatePeriod.js","webpack://gatsby-starter-default/./src/components/careers/Milestone.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneAlgoliaListDates.js","webpack://gatsby-starter-default/./src/components/careers/algolia/AlgoliaEnabledMilestones.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneAlgoliaListType.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneListDates.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneListType.js","webpack://gatsby-starter-default/./src/components/careers/DateMonthYear.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneTextDate.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneTextDates.js","webpack://gatsby-starter-default/./src/components/careers/MilestoneTextType.js","webpack://gatsby-starter-default/./src/components/dashboard/notifications/notificationOptions.js","webpack://gatsby-starter-default/./src/components/dashboard/portfolio-profile-image-modal.js","webpack://gatsby-starter-default/./node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","webpack://gatsby-starter-default/./src/components/drag-and-drop/CustomSensors.js","webpack://gatsby-starter-default/./src/components/drag-and-drop/SortableContainer.js","webpack://gatsby-starter-default/./src/components/drag-and-drop/customCollisionDetectionAlgorithms.js","webpack://gatsby-starter-default/./src/components/drag-and-drop/useSortableItem.js","webpack://gatsby-starter-default/./src/components/educator/utils.js","webpack://gatsby-starter-default/./src/components/eyebrow/eyebrow.js","webpack://gatsby-starter-default/./src/components/get-started/get-started-data.js","webpack://gatsby-starter-default/./src/components/get-started/utils/utils.js","webpack://gatsby-starter-default/./src/components/hooks/useCheckIfMobile.js","webpack://gatsby-starter-default/./src/components/hooks/useWindowDimensions.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/widgets/Index.js","webpack://gatsby-starter-default/./src/components/algolia/AutoComplete.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-global.js","webpack://gatsby-starter-default/./static/assets/images/logo2.png","webpack://gatsby-starter-default/./src/components/flyout/flyout.js","webpack://gatsby-starter-default/./src/components/get-started/get-started-data.es.js","webpack://gatsby-starter-default/./src/components/progress-circle/progress-circle.js","webpack://gatsby-starter-default/./static/assets/images/arrow-up.svg","webpack://gatsby-starter-default/./static/assets/images/arrow-down.svg","webpack://gatsby-starter-default/./src/components/get-started/get-started.js","webpack://gatsby-starter-default/./static/assets/images/minimize-icon.svg","webpack://gatsby-starter-default/./static/assets/images/expand-icon.svg","webpack://gatsby-starter-default/./static/assets/images/closeIcon.svg","webpack://gatsby-starter-default/./src/images/levels/butterfly.svg","webpack://gatsby-starter-default/./src/images/levels/bee.svg","webpack://gatsby-starter-default/./src/images/levels/hummingbird.svg","webpack://gatsby-starter-default/./src/images/levels/bluejay.svg","webpack://gatsby-starter-default/./src/images/levels/heron.svg","webpack://gatsby-starter-default/./src/images/levels/eagle.svg","webpack://gatsby-starter-default/./src/components/levels/LevelsEs.js","webpack://gatsby-starter-default/./src/components/levels/LevelsModal.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/LocaleDataStore.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/resolveLocale.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/PluralRuleFunctions.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/getPluralRulesLocale.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/PluralRules.js","webpack://gatsby-starter-default/./node_modules/relative-time-format/modules/RelativeTimeFormat.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/cache.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/locale.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/isStyleObject.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/units.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/getStepDenominator.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/round.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/getStepMinTime.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/getStep.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/getTimeToNextUpdateForUnit.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/getTimeToNextUpdate.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/LocaleDataStore.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/round.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/round.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/roundMinute.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/approximate.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/approximate.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/approximateTime.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/steps/helpers.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/twitter.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/twitterNow.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/twitterMinute.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/twitterMinuteNow.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/twitterFirstMinute.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/mini.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/miniNow.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/miniMinute.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/miniMinuteNow.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/TimeAgo.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/modules/style/getStyleByName.js","webpack://gatsby-starter-default/./src/components/dashboard/notifications/notifications.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/locale/es.json.js","webpack://gatsby-starter-default/./node_modules/javascript-time-ago/locale/en.json.js","webpack://gatsby-starter-default/./src/components/dashboard/notifications/notifications-dropdown.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/NavLink.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/NavDropdown.js","webpack://gatsby-starter-default/./src/components/language-switcher/LanguageSwitcher.js","webpack://gatsby-starter-default/./src/components/Firebase/account-menu.js","webpack://gatsby-starter-default/./static/assets/images/wingspans-w-icon_white-mobile.svg","webpack://gatsby-starter-default/./src/components/BannerMessage.js","webpack://gatsby-starter-default/./src/components/promotional/banners/finalists.js","webpack://gatsby-starter-default/./src/components/educator/BackToEducatorDashboardButton.js","webpack://gatsby-starter-default/./src/components/header.js","webpack://gatsby-starter-default/./src/components/footer.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectCurrentRefinements.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/ClearRefinements.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/ClearRefinements.js","webpack://gatsby-starter-default/./src/components/algolia/localized-algolia-checkboxes.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-stories-explore.js","webpack://gatsby-starter-default/./node_modules/fuzzy-search/src/Helper.js","webpack://gatsby-starter-default/./node_modules/fuzzy-search/src/FuzzySearch.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-careers-personality-explore.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-careers-explore.js","webpack://gatsby-starter-default/./src/components/cards/cards-schools.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-schools-explore.js","webpack://gatsby-starter-default/./src/components/cards/cards-majors.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-majors-explore.js","webpack://gatsby-starter-default/./src/components/cards/cards-companies.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-companies-explore.js","webpack://gatsby-starter-default/./src/components/cards/cards-videos.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-videos-explore.js","webpack://gatsby-starter-default/./src/components/algolia/algolia-toggle.js","webpack://gatsby-starter-default/./src/components/dashboard/portfolio.js","webpack://gatsby-starter-default/./src/components/careers/career-plan-milestone-view.js","webpack://gatsby-starter-default/./src/components/careers/career-plan-view.js","webpack://gatsby-starter-default/./src/components/careers/career-plans.js","webpack://gatsby-starter-default/./src/components/assessment/assessment-overview-content.js","webpack://gatsby-starter-default/./src/components/hooks/useClientSideLocale.js","webpack://gatsby-starter-default/./src/components/work-readiness/work-readiness-tab.js","webpack://gatsby-starter-default/./src/components/dashboard/dashboard-tab-content.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ButtonGroup.js","webpack://gatsby-starter-default/./src/components/dashboard/dashboard-this-week.js","webpack://gatsby-starter-default/./src/components/dashboard/knowledge-base.js","webpack://gatsby-starter-default/./src/components/daily-quest/dashboard-daily-quest.js","webpack://gatsby-starter-default/./src/components/dashboard/PropsContext.js","webpack://gatsby-starter-default/./src/components/dashboard/dashboard-heading.js","webpack://gatsby-starter-default/./src/components/dashboard/dashboard.js","webpack://gatsby-starter-default/./src/components/maintenance/maintenance.js","webpack://gatsby-starter-default/./src/components/hooks/useSubdomain.js","webpack://gatsby-starter-default/./src/components/layout.js","webpack://gatsby-starter-default/./src/components/levels/Levels.js","webpack://gatsby-starter-default/./src/components/loading/LoadingSpinner.js","webpack://gatsby-starter-default/./src/components/notifications/notificationTemplates.js","webpack://gatsby-starter-default/./src/components/notifications/educatorNotificationTemplates.js","webpack://gatsby-starter-default/./src/components/notifications/useNotifications.js","webpack://gatsby-starter-default/./src/components/organizationOptions.js","webpack://gatsby-starter-default/./src/components/portfolio/AddButton.js","webpack://gatsby-starter-default/./src/components/portfolio/EditButton.js","webpack://gatsby-starter-default/./src/components/hooks/useModal.js","webpack://gatsby-starter-default/./src/components/dashboard/portfolio-share-modal.js","webpack://gatsby-starter-default/./static/assets/images/resume-templates/classic-resume.png","webpack://gatsby-starter-default/./static/assets/images/resume-templates/accent-resume.png","webpack://gatsby-starter-default/./static/assets/images/resume-templates/modern-resume.png","webpack://gatsby-starter-default/./static/assets/images/resume-templates/minimalist-resume.png","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderWorkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderSkillsSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderInterestsSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderIntroduction.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/classicTemplate.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderEducationSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderLeadershipSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderVolunteerSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderAwardSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderLifeSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderCertificateSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/classic/renderCourseworkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/componentHelpers.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderSkillsInterestsSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderLifeSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderIntroduction.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/minimalistTemplate.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderEducationSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderWorkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderLeadershipSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderVolunteerSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderAwardSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderCertificateSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/minimalist/renderCourseworkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/componentHelpers.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderLifeSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderSkillsInterestsSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderIntroduction.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/accentTemplate.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderEducationSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderWorkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderLeadershipSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderVolunteerSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderAwardSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderCertificateSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/accent/renderCourseworkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/componentHelpers.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderSkillsInterestsSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderLifeSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderIntroduction.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/modernTemplate.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderEducationSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderWorkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderLeadershipSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderVolunteerSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderAwardSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderCertificateSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/modern/renderCourseworkSection.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/generateDOCX.js","webpack://gatsby-starter-default/./src/components/resume/docxExport/resume-doc-modal.js","webpack://gatsby-starter-default/./src/components/resume/tips/tips-modal.js","webpack://gatsby-starter-default/./src/components/resume/experience-type-selector-modal.js","webpack://gatsby-starter-default/./src/components/portfolio/portfolio-heading.js","webpack://gatsby-starter-default/./src/components/portfolio/IntroductionEditModal.js","webpack://gatsby-starter-default/./src/components/portfolio/PortfolioIntroduction.js","webpack://gatsby-starter-default/./static/assets/images/portfolio-banner-default.jpg","webpack://gatsby-starter-default/./src/components/dashboard/portfolio-wallpaper-image-modal.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/DateInput.js","webpack://gatsby-starter-default/./src/components/user-files/convertMimeToExtension.js","webpack://gatsby-starter-default/./src/components/user-files/FileUploadButton.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/UploadThumbnail.js","webpack://gatsby-starter-default/./src/components/storyboard/allowedStoryboardFileTypes.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/MediaUploadModal.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/MediaPanel.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/StoryboardPanelsContainer.js","webpack://gatsby-starter-default/./src/components/storyboard/editable-view/Storyboard.js","webpack://gatsby-starter-default/./src/components/portfolio/PortfolioContent.js","webpack://gatsby-starter-default/./src/components/portfolio/SubmitButton.js","webpack://gatsby-starter-default/./src/components/portfolio/useBackwardsCompatibleIntroduction.js","webpack://gatsby-starter-default/./src/components/private/account.js","webpack://gatsby-starter-default/./src/components/private/cancel.js","webpack://gatsby-starter-default/./src/components/private/subscription.js","webpack://gatsby-starter-default/./src/components/profile-image/profile-image.js","webpack://gatsby-starter-default/./src/components/resume/ResumeTimelineExperience.js","webpack://gatsby-starter-default/./src/components/resume/ResumeTimeline.js","webpack://gatsby-starter-default/./src/components/resume/ResumeItem.js","webpack://gatsby-starter-default/./src/components/resume/ResumeColumn.js","webpack://gatsby-starter-default/./src/components/resume/ResumeColumns.js","webpack://gatsby-starter-default/./src/components/resume/Resume.js","webpack://gatsby-starter-default/./src/components/resume/ExperienceEditorContext.js","webpack://gatsby-starter-default/./src/components/resume/experience-dates-input.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/TabContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/AbstractNav.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ListGroupItem.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ListGroup.js","webpack://gatsby-starter-default/./src/components/resume/optimizer/optimizer-button.js","webpack://gatsby-starter-default/./src/components/resume/experience-text-input.js","webpack://gatsby-starter-default/./src/components/resume/experience-bullet-input.js","webpack://gatsby-starter-default/./src/components/resume/experience-bullets-input.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-work.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-education.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-volunteer.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-life.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-award.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-leadership.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-certificate.js","webpack://gatsby-starter-default/./src/components/resume/experience-input-coursework.js","webpack://gatsby-starter-default/./src/components/resume/experience-input.js","webpack://gatsby-starter-default/./src/components/resume/utils/CheckRequiredFields.js","webpack://gatsby-starter-default/./src/components/resume/SkillsInterestsEditor.js","webpack://gatsby-starter-default/./src/components/resume/ResumeExperienceEditorModal.js","webpack://gatsby-starter-default/./src/components/resume/ResumeList.js","webpack://gatsby-starter-default/./src/components/resume/useResumeData.js","webpack://gatsby-starter-default/./src/components/resume/utils/experienceTypes.js","webpack://gatsby-starter-default/./src/components/resume/utils/skillAndInterestDefaultOptions.js","webpack://gatsby-starter-default/./src/components/resume/utils/utils.js","webpack://gatsby-starter-default/./src/components/schools/MonthDayDeadline.js","webpack://gatsby-starter-default/./src/components/schools/ApplicationDeadline.js","webpack://gatsby-starter-default/./src/components/seo.js","webpack://gatsby-starter-default/./src/components/user-files/FileDownloadLink.js","webpack://gatsby-starter-default/./src/components/storyboard/public-view/PublicPanelModal.js","webpack://gatsby-starter-default/./src/components/storyboard/public-view/PublicStoryboardPanel.js","webpack://gatsby-starter-default/./src/components/storyboard/public-view/PublicStoryboard.js","webpack://gatsby-starter-default/./src/components/storyboard/useStoryboardPanel.js","webpack://gatsby-starter-default/./src/components/storyboard/useStoryboardPanelsOrder.js","webpack://gatsby-starter-default/./src/components/toasts/standard-toast.js","webpack://gatsby-starter-default/./src/components/user-files/FileDisplayer.js","webpack://gatsby-starter-default/./static/assets/images/microsoft-word-icon.svg","webpack://gatsby-starter-default/./static/assets/images/microsoft-excel-icon.svg","webpack://gatsby-starter-default/./src/components/user-files/useUserFiles.js","webpack://gatsby-starter-default/./src/components/user/userType.js","webpack://gatsby-starter-default/./src/components/work-readiness/useActivities.js","webpack://gatsby-starter-default/./src/i18n.js","webpack://gatsby-starter-default/./src/link.js","webpack://gatsby-starter-default/./src/linkUtils.js","webpack://gatsby-starter-default/./src/pages/profile.js","webpack://gatsby-starter-default/./src/utils.js","webpack://gatsby-starter-default/./node_modules/get-intrinsic/index.js","webpack://gatsby-starter-default/./node_modules/gopd/index.js","webpack://gatsby-starter-default/./node_modules/has-property-descriptors/index.js","webpack://gatsby-starter-default/./node_modules/has-proto/index.js","webpack://gatsby-starter-default/./node_modules/has-symbols/index.js","webpack://gatsby-starter-default/./node_modules/has-symbols/shams.js","webpack://gatsby-starter-default/./node_modules/has-tostringtag/shams.js","webpack://gatsby-starter-default/./node_modules/has/src/index.js","webpack://gatsby-starter-default/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://gatsby-starter-default/./node_modules/inherits/inherits_browser.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/lib/src/core.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/lib/src/error.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/lib/src/formatters.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack://gatsby-starter-default/./node_modules/invariant/browser.js","webpack://gatsby-starter-default/./node_modules/is-arguments/index.js","webpack://gatsby-starter-default/./node_modules/is-callable/index.js","webpack://gatsby-starter-default/./node_modules/is-generator-function/index.js","webpack://gatsby-starter-default/./node_modules/is-typed-array/index.js","webpack://gatsby-starter-default/./node_modules/keyboard-key/src/keyboardKey.js","webpack://gatsby-starter-default/./node_modules/load-script/index.js","webpack://gatsby-starter-default/./node_modules/lodash.orderby/index.js","webpack://gatsby-starter-default/./node_modules/lodash.throttle/index.js","webpack://gatsby-starter-default/./node_modules/lodash/_DataView.js","webpack://gatsby-starter-default/./node_modules/lodash/_Hash.js","webpack://gatsby-starter-default/./node_modules/lodash/_ListCache.js","webpack://gatsby-starter-default/./node_modules/lodash/_Map.js","webpack://gatsby-starter-default/./node_modules/lodash/_MapCache.js","webpack://gatsby-starter-default/./node_modules/lodash/_Promise.js","webpack://gatsby-starter-default/./node_modules/lodash/_Set.js","webpack://gatsby-starter-default/./node_modules/lodash/_SetCache.js","webpack://gatsby-starter-default/./node_modules/lodash/_Stack.js","webpack://gatsby-starter-default/./node_modules/lodash/_Symbol.js","webpack://gatsby-starter-default/./node_modules/lodash/_Uint8Array.js","webpack://gatsby-starter-default/./node_modules/lodash/_WeakMap.js","webpack://gatsby-starter-default/./node_modules/lodash/_arrayFilter.js","webpack://gatsby-starter-default/./node_modules/lodash/_arrayLikeKeys.js","webpack://gatsby-starter-default/./node_modules/lodash/_arrayPush.js","webpack://gatsby-starter-default/./node_modules/lodash/_arraySome.js","webpack://gatsby-starter-default/./node_modules/lodash/_assocIndexOf.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseGetAllKeys.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseGetTag.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseIsArguments.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseIsEqual.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseIsEqualDeep.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseIsNative.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseIsTypedArray.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseKeys.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseTimes.js","webpack://gatsby-starter-default/./node_modules/lodash/_baseUnary.js","webpack://gatsby-starter-default/./node_modules/lodash/_cacheHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_coreJsData.js","webpack://gatsby-starter-default/./node_modules/lodash/_equalArrays.js","webpack://gatsby-starter-default/./node_modules/lodash/_equalByTag.js","webpack://gatsby-starter-default/./node_modules/lodash/_equalObjects.js","webpack://gatsby-starter-default/./node_modules/lodash/_freeGlobal.js","webpack://gatsby-starter-default/./node_modules/lodash/_getAllKeys.js","webpack://gatsby-starter-default/./node_modules/lodash/_getMapData.js","webpack://gatsby-starter-default/./node_modules/lodash/_getNative.js","webpack://gatsby-starter-default/./node_modules/lodash/_getRawTag.js","webpack://gatsby-starter-default/./node_modules/lodash/_getSymbols.js","webpack://gatsby-starter-default/./node_modules/lodash/_getTag.js","webpack://gatsby-starter-default/./node_modules/lodash/_getValue.js","webpack://gatsby-starter-default/./node_modules/lodash/_hashClear.js","webpack://gatsby-starter-default/./node_modules/lodash/_hashDelete.js","webpack://gatsby-starter-default/./node_modules/lodash/_hashGet.js","webpack://gatsby-starter-default/./node_modules/lodash/_hashHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_hashSet.js","webpack://gatsby-starter-default/./node_modules/lodash/_isIndex.js","webpack://gatsby-starter-default/./node_modules/lodash/_isKeyable.js","webpack://gatsby-starter-default/./node_modules/lodash/_isMasked.js","webpack://gatsby-starter-default/./node_modules/lodash/_isPrototype.js","webpack://gatsby-starter-default/./node_modules/lodash/_listCacheClear.js","webpack://gatsby-starter-default/./node_modules/lodash/_listCacheDelete.js","webpack://gatsby-starter-default/./node_modules/lodash/_listCacheGet.js","webpack://gatsby-starter-default/./node_modules/lodash/_listCacheHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_listCacheSet.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapCacheClear.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapCacheDelete.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapCacheGet.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapCacheHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapCacheSet.js","webpack://gatsby-starter-default/./node_modules/lodash/_mapToArray.js","webpack://gatsby-starter-default/./node_modules/lodash/_nativeCreate.js","webpack://gatsby-starter-default/./node_modules/lodash/_nativeKeys.js","webpack://gatsby-starter-default/./node_modules/lodash/_nodeUtil.js","webpack://gatsby-starter-default/./node_modules/lodash/_objectToString.js","webpack://gatsby-starter-default/./node_modules/lodash/_overArg.js","webpack://gatsby-starter-default/./node_modules/lodash/_root.js","webpack://gatsby-starter-default/./node_modules/lodash/_setCacheAdd.js","webpack://gatsby-starter-default/./node_modules/lodash/_setCacheHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_setToArray.js","webpack://gatsby-starter-default/./node_modules/lodash/_stackClear.js","webpack://gatsby-starter-default/./node_modules/lodash/_stackDelete.js","webpack://gatsby-starter-default/./node_modules/lodash/_stackGet.js","webpack://gatsby-starter-default/./node_modules/lodash/_stackHas.js","webpack://gatsby-starter-default/./node_modules/lodash/_stackSet.js","webpack://gatsby-starter-default/./node_modules/lodash/_toSource.js","webpack://gatsby-starter-default/./node_modules/lodash/eq.js","webpack://gatsby-starter-default/./node_modules/lodash/isArguments.js","webpack://gatsby-starter-default/./node_modules/lodash/isArray.js","webpack://gatsby-starter-default/./node_modules/lodash/isArrayLike.js","webpack://gatsby-starter-default/./node_modules/lodash/isBuffer.js","webpack://gatsby-starter-default/./node_modules/lodash/isEmpty.js","webpack://gatsby-starter-default/./node_modules/lodash/isEqual.js","webpack://gatsby-starter-default/./node_modules/lodash/isFunction.js","webpack://gatsby-starter-default/./node_modules/lodash/isLength.js","webpack://gatsby-starter-default/./node_modules/lodash/isObject.js","webpack://gatsby-starter-default/./node_modules/lodash/isObjectLike.js","webpack://gatsby-starter-default/./node_modules/lodash/isTypedArray.js","webpack://gatsby-starter-default/./node_modules/lodash/keys.js","webpack://gatsby-starter-default/./node_modules/lodash/stubArray.js","webpack://gatsby-starter-default/./node_modules/lodash/stubFalse.js","webpack://gatsby-starter-default/./node_modules/material-design-lite/src/button/button.js","webpack://gatsby-starter-default/./node_modules/material-design-lite/src/mdlComponentHandler.js","webpack://gatsby-starter-default/./node_modules/material-design-lite/src/progress/progress.js","webpack://gatsby-starter-default/./node_modules/material-design-lite/src/spinner/spinner.js","webpack://gatsby-starter-default/./node_modules/material-design-lite/src/textfield/textfield.js","webpack://gatsby-starter-default/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://gatsby-starter-default/./node_modules/object-keys/implementation.js","webpack://gatsby-starter-default/./node_modules/object-keys/index.js","webpack://gatsby-starter-default/./node_modules/object-keys/isArguments.js","webpack://gatsby-starter-default/./node_modules/object.values/implementation.js","webpack://gatsby-starter-default/./node_modules/object.values/index.js","webpack://gatsby-starter-default/./node_modules/object.values/polyfill.js","webpack://gatsby-starter-default/./node_modules/object.values/shim.js","webpack://gatsby-starter-default/./node_modules/paginator/index.js","webpack://gatsby-starter-default/./node_modules/primereact/api/api.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/componentbase/componentbase.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/hooks/hooks.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/portal/portal.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/ripple/ripple.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/selectbutton/selectbutton.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/tooltip/tooltip.esm.js","webpack://gatsby-starter-default/./node_modules/primereact/utils/utils.esm.js","webpack://gatsby-starter-default/./node_modules/prop-types-extra/lib/all.js","webpack://gatsby-starter-default/./node_modules/prop-types-extra/lib/isRequiredForA11y.js","webpack://gatsby-starter-default/./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack://gatsby-starter-default/./node_modules/query-string/index.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/Autosuggest.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/Autowhatever.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/Item.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/ItemList.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/SectionTitle.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/compareObjects.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/index.js","webpack://gatsby-starter-default/./node_modules/react-autosuggest/dist/theme.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/AbstractNavItem.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Collapse.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/AccordionCollapse.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Accordion.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/AccordionContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/AccordionToggle.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Alert.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Button.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/CardContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/CardImg.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Card.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/CloseButton.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/matches.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useGlobalListener.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useEventListener.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/DropdownContext.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/DropdownMenu.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/DropdownToggle.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/Dropdown.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/DropdownItem.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/NavbarContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/DropdownMenu.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/DropdownToggle.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Dropdown.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Fade.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Feedback.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormCheckInput.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormCheckLabel.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormCheck.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormFileInput.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormFileLabel.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormFile.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormControl.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormGroup.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Col.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormLabel.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/FormText.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Switch.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Form.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/scrollbarSize.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/activeElement.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/isWindow.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/isDocument.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/isOverflowing.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/manageAriaHidden.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/ModalManager.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/Modal.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/BootstrapModalManager.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalBody.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalDialog.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalFooter.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalHeader.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Modal.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ModalTitle.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/NavContext.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useTimeout.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/Overlay.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Overlay.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/OverlayTrigger.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ProgressBar.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ElementChildren.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/SafeAnchor.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/SelectableContext.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ThemeProvider.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Tooltip.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/createChainedFunction.js","webpack://gatsby-starter-default/./node_modules/dom-helpers/esm/camelize.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/createWithBsPrefix.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/divWithClassName.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/transitionEndListener.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/triggerBrowserReflow.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","webpack://gatsby-starter-default/./node_modules/react-fast-compare/index.js","webpack://gatsby-starter-default/./node_modules/react-firebaseui/StyledFirebaseAuth.js","webpack://gatsby-starter-default/./node_modules/react-helmet/es/Helmet.js","webpack://gatsby-starter-default/./node_modules/react-hotjar/index.js","webpack://gatsby-starter-default/./node_modules/react-hotjar/src/react-hotjar.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectAutoComplete.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/context.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/createConnector.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/highlight.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/indexUtils.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/translatable.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/utils.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectConfigure.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/widgets/Configure.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/version.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/createInstantSearchManager.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/createWidgetsManager.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/createStore.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/core/metadata.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/widgets/InstantSearch.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Panel.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/PanelCallbackHandler.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/SearchBox.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/core/utils.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectHighlight.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Highlighter.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Highlight.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/Highlight.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectHits.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Hits.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/Hits.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectPagination.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Link.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/LinkList.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/Pagination.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/Pagination.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectRefinementList.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/List.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/RefinementList.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/RefinementList.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectScrollTo.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/components/ScrollTo.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/ScrollTo.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-core/dist/es/connectors/connectSearchBox.js","webpack://gatsby-starter-default/./node_modules/react-instantsearch-dom/dist/es/widgets/SearchBox.js","webpack://gatsby-starter-default/./node_modules/react-intl/lib/src/components/injectIntl.js","webpack://gatsby-starter-default/./node_modules/react-intl/lib/src/components/message.js","webpack://gatsby-starter-default/./node_modules/react-intl/lib/src/components/useIntl.js","webpack://gatsby-starter-default/./node_modules/react-intl/lib/src/utils.js","webpack://gatsby-starter-default/./node_modules/react-intl/node_modules/@formatjs/ecma402-abstract/lib/utils.js","webpack://gatsby-starter-default/./node_modules/react-is/cjs/react-is.production.min.js","webpack://gatsby-starter-default/./node_modules/react-is/index.js","webpack://gatsby-starter-default/./node_modules/react-js-pagination/dist/Page.js","webpack://gatsby-starter-default/./node_modules/react-js-pagination/dist/Pagination.js","webpack://gatsby-starter-default/./node_modules/react-outside-click-handler/build/OutsideClickHandler.js","webpack://gatsby-starter-default/./node_modules/react-outside-click-handler/index.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/safeFindDOMNode.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useSafeState.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/popper.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/usePopper.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/useRootClose.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/ownerDocument.js","webpack://gatsby-starter-default/./node_modules/react-overlays/esm/useWaitForDOMRef.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/Player.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/Preview.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/ReactPlayer.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/index.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/patterns.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/DailyMotion.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Facebook.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/FilePlayer.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Kaltura.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Mixcloud.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/SoundCloud.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Streamable.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Twitch.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Vidyard.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Vimeo.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/Wistia.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/YouTube.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/players/index.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/props.js","webpack://gatsby-starter-default/./node_modules/react-player/lib/utils.js","webpack://gatsby-starter-default/./node_modules/react-resize-detector/build/withPolyfill.js","webpack://gatsby-starter-default/./node_modules/react-responsive-tabs/lib/components/InkBar.js","webpack://gatsby-starter-default/./node_modules/react-responsive-tabs/lib/components/ShowMore.js","webpack://gatsby-starter-default/./node_modules/react-responsive-tabs/lib/components/Tab.js","webpack://gatsby-starter-default/./node_modules/react-responsive-tabs/lib/components/TabPanel.js","webpack://gatsby-starter-default/./node_modules/react-responsive-tabs/lib/index.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/index.js","webpack://gatsby-starter-default/./node_modules/react-side-effect/lib/index.js","webpack://gatsby-starter-default/./node_modules/react-themeable/dist/index.js","webpack://gatsby-starter-default/./node_modules/react-to-print/lib/index.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/CSSTransition.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/config.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/Transition.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://gatsby-starter-default/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://gatsby-starter-default/./node_modules/section-iterator/dist/index.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/addons/Confirm/Confirm.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/addons/Portal/Portal.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/addons/Portal/PortalInner.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Button/Button.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonContent.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonGroup.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonOr.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Flag/Flag.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Icon/Icon.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Icon/IconGroup.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Image/Image.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Image/ImageGroup.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Label/Label.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelDetail.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelGroup.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/ModernAutoControlledComponent.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/childrenUtils.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/classNameBuilders.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/head.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/doesNodeContainClick.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/eventStack/index.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isNumber.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isBoolean.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/factories.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/getElementType.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/getUnhandledProps.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/htmlPropsUtils.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/isBrowser.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/numberToWord.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/Dimmer.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerDimmable.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerInner.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/compact.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayEvery.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseEvery.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/every.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_createFind.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/findIndex.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/find.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/dropRight.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_asciiSize.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_unicodeSize.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stringSize.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/size.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/difference.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/union.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isEqual.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/escapeRegExp.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getMenuOptions.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getSelectedIndex.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/Dropdown.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownDivider.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownHeader.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownItem.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownMenu.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownSearchInput.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownText.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/Modal.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/utils/index.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalActions.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalContent.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDescription.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/hooks/useIsomorphicLayoutEffect.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/lib/hooks/useClassNamesOnNode.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDimmer.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalHeader.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/@semantic-ui-react/event-stack/lib/cjs/event-stack.production.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/@semantic-ui-react/event-stack/lib/index.js","webpack://gatsby-starter-default/./node_modules/shallow-equal/arrays/index.js","webpack://gatsby-starter-default/./node_modules/shallowequal/index.js","webpack://gatsby-starter-default/./node_modules/split-on-first/index.js","webpack://gatsby-starter-default/./node_modules/strict-uri-encode/index.js","webpack://gatsby-starter-default/./node_modules/uncontrollable/lib/esm/utils.js","webpack://gatsby-starter-default/./node_modules/uncontrollable/lib/esm/hook.js","webpack://gatsby-starter-default/./src/images/levels/bee.png","webpack://gatsby-starter-default/./src/images/levels/bluejay.png","webpack://gatsby-starter-default/./src/images/levels/butterfly.png","webpack://gatsby-starter-default/./src/images/levels/eagle.png","webpack://gatsby-starter-default/./src/images/levels/heron.png","webpack://gatsby-starter-default/./src/images/levels/hummingbird.png","webpack://gatsby-starter-default/./src/images/logo2.png","webpack://gatsby-starter-default/./static/assets/images/logo-with-text-vertical.png","webpack://gatsby-starter-default/./static/assets/images/portfolio-profile-default.jpg","webpack://gatsby-starter-default/./node_modules/serialize-query-params/esm/serialize.js","webpack://gatsby-starter-default/./node_modules/serialize-query-params/esm/params.js","webpack://gatsby-starter-default/./node_modules/serialize-query-params/esm/updateLocation.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/shallowEqual.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/helpers.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/updateUrlQuery.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/LocationProvider.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/memoizedQueryParser.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/useQueryParam.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/QueryParams.js","webpack://gatsby-starter-default/./node_modules/use-query-params/esm/QueryParamProvider.js","webpack://gatsby-starter-default/./node_modules/util/support/isBufferBrowser.js","webpack://gatsby-starter-default/./node_modules/util/support/types.js","webpack://gatsby-starter-default/./node_modules/util/util.js","webpack://gatsby-starter-default/./node_modules/uuid/dist/esm-browser/rng.js","webpack://gatsby-starter-default/./node_modules/uuid/dist/esm-browser/regex.js","webpack://gatsby-starter-default/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://gatsby-starter-default/./node_modules/uuid/dist/esm-browser/validate.js","webpack://gatsby-starter-default/./node_modules/uuid/dist/esm-browser/v4.js","webpack://gatsby-starter-default/./node_modules/warning/warning.js","webpack://gatsby-starter-default/./node_modules/which-typed-array/index.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://gatsby-starter-default/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-starter-default/./node_modules/available-typed-arrays/index.js","webpack://gatsby-starter-default/./node_modules/es-abstract/2023/RequireObjectCoercible.js","webpack://gatsby-starter-default/./node_modules/es-abstract/5/CheckObjectCoercible.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://gatsby-starter-default/./node_modules/@firebase/app-compat/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/idb/build/wrap-idb-value.js","webpack://gatsby-starter-default/./node_modules/idb/build/index.js","webpack://gatsby-starter-default/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/auth/node_modules/tslib/tslib.es6.mjs","webpack://gatsby-starter-default/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@firebase/webchannel-wrapper/dist/esm/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/@formatjs/intl/node_modules/tslib/tslib.es6.mjs","webpack://gatsby-starter-default/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack://gatsby-starter-default/./node_modules/firebase/compat/app/dist/esm/index.esm.js","webpack://gatsby-starter-default/./node_modules/@firebase/auth/dist/esm2017/internal.js","webpack://gatsby-starter-default/./node_modules/@firebase/auth-compat/dist/index.esm2017.js","webpack://gatsby-starter-default/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/intl-messageformat/node_modules/tslib/tslib.es6.mjs","webpack://gatsby-starter-default/./node_modules/react-intl/node_modules/tslib/tslib.es6.mjs","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_listCacheClear.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_assocIndexOf.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_listCacheDelete.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_listCacheGet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_listCacheHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_listCacheSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_ListCache.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Map.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_nativeCreate.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hashClear.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hashDelete.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hashGet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hashHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hashSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Hash.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapCacheClear.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isKeyable.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getMapData.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapCacheDelete.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapCacheGet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapCacheHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapCacheSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_MapCache.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Set.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_setCacheAdd.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_setCacheHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_SetCache.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stackClear.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stackDelete.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stackGet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stackHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stackSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Stack.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Symbol.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_WeakMap.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_apply.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayEach.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayFilter.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayIncludes.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayIncludesWith.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayMap.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayPush.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayReduce.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arraySome.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseAssignValue.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseDifference.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_createBaseEach.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseEach.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseFindIndex.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isFlattenable.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseFlatten.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_createBaseFor.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseFor.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseForOwn.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseGet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getRawTag.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_objectToString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseGetTag.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsNaN.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_strictIndexOf.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIndexOf.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_equalArrays.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Uint8Array.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_mapToArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_equalByTag.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseGetAllKeys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/stubArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getSymbols.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getAllKeys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_equalObjects.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsEqualDeep.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsEqual.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsMatch.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isStrictComparable.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getMatchData.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_matchesStrictComparable.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseMatches.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseMatchesProperty.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_basePropertyDeep.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/property.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIteratee.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_nativeKeys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseKeys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseProperty.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseRest.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_assignValue.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseSlice.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseTimes.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseUnary.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_createSet.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseUniq.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_cacheHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_castFunction.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_memoizeCapped.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_stringToPath.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_castPath.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_defineProperty.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_freeGlobal.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isMasked.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_coreJsData.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsNative.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getValue.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getNative.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_DataView.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_Promise.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getTag.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hasPath.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_hasUnicode.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isIndex.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isIterateeCall.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isKey.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_isPrototype.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_overArg.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_overRest.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_root.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_setToArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseSetToString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_setToString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_shortOut.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_toKey.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_toSource.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/constant.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_basePropertyOf.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_deburrLetter.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/deburr.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/eq.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseFilter.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/filter.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/forEach.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/get.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseHas.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/has.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseHasIn.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/hasIn.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/identity.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseInRange.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/inRange.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/includes.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/last.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_parent.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseInvoke.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/invoke.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsArguments.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isArguments.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isArrayLike.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isArrayLikeObject.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/stubFalse.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isBuffer.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isEmpty.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isFunction.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isLength.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isNil.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isObject.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isObjectLike.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_getPrototype.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isPlainObject.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isSymbol.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseIsTypedArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_nodeUtil.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isTypedArray.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/isUndefined.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_arrayLikeKeys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/keys.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseMap.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/map.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/memoize.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/noop.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_basePickBy.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_basePick.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/flatten.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_flatRest.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/pick.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseReduce.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/reduce.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseSome.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/some.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/toFinite.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/toInteger.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_trimmedEndIndex.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseTrim.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/toNumber.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseToString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/toString.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/uniq.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/_baseValues.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/values.js","webpack://gatsby-starter-default/./node_modules/semantic-ui-react/node_modules/lodash-es/without.js","webpack://gatsby-starter-default/./node_modules/sonner/dist/index.mjs"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, useReducer, memo, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of <DndContext>');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n let {\n left,\n top,\n height,\n width\n } = _ref5;\n return [{\n x: left,\n y: top\n }, {\n x: left + width,\n y: top\n }, {\n x: left,\n y: top + height\n }, {\n x: left + width,\n y: top + height\n }];\n}\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const corners = cornersOfRectangle(collisionRect);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n const {\n top,\n left,\n bottom,\n right\n } = rect;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n let {\n droppableContainers,\n droppableRects,\n pointerCoordinates\n } = _ref;\n\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\r\n * with the pointer coordinates. In order to sort the\r\n * colliding rectangles, we measure the distance between\r\n * the pointer and the corners of the intersecting rectangle\r\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n transform,\n transformOrigin\n } = getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint,\n bypassActivationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (bypassActivationConstraint != null && bypassActivationConstraint({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n })) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates); // Constraint validation\n\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onEnd\n } = this.props;\n this.detach();\n onEnd();\n }\n\n handleCancel() {\n const {\n onCancel\n } = this.props;\n this.detach();\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$2 = {\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id !== null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id === null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [queue, setQueue] = useState(null);\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setQueue(value => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter(id => !value.includes(id)));\n });\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || queue != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (queue && queue.length > 0 && !queue.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, queue, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, measureRect] = useReducer(reducer, null);\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n\n function reducer(currentRect) {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref;\n\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n }\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, measureRects] = useReducer(reducer, defaultValue$2);\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n\n if (elements.length > 0 && rects === defaultValue$2) {\n measureRects();\n }\n\n useIsomorphicLayoutEffect(() => {\n if (elements.length) {\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n }\n }, [elements]);\n return rects;\n\n function reducer() {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n }\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (!state.draggable.active) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n unstable_batchedUpdates(() => {\n setActiveSensor(sensorInstance);\n setActivatorEvent(event.nativeEvent);\n });\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React.createElement(InternalContext.Provider, {\n value: internalContext\n }, React.createElement(PublicContext.Provider, {\n value: publicContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Droppable';\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useIsomorphicLayoutEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","import React, { useMemo, useRef, useEffect, useState, useContext } from 'react';\nimport { useDndContext, getClientRect, useDroppable, useDraggable, closestCorners, getFirstCollision, getScrollableAncestors, KeyboardCode } from '@dnd-kit/core';\nimport { useUniqueId, useIsomorphicLayoutEffect, CSS, useCombinedRefs, isKeyboardEvent, subtract } from '@dnd-kit/utilities';\n\n/**\r\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\r\n */\nfunction arrayMove(array, from, to) {\n const newArray = array.slice();\n newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\n\n/**\r\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\r\n */\nfunction arraySwap(array, from, to) {\n const newArray = array.slice();\n newArray[from] = array[to];\n newArray[to] = array[from];\n return newArray;\n}\n\nfunction getSortedRects(items, rects) {\n return items.reduce((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n\nfunction isValidIndex(index) {\n return index !== null && index >= 0;\n}\n\nfunction itemsEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction normalizeDisabled(disabled) {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled\n };\n }\n\n return disabled;\n}\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1\n};\nconst horizontalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x: activeIndex < overIndex ? newIndexRect.left + newIndexRect.width - (activeNodeRect.left + activeNodeRect.width) : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale\n };\n};\n\nfunction getItemGap(rects, index, activeIndex) {\n const currentRect = rects[index];\n const previousRect = rects[index - 1];\n const nextRect = rects[index + 1];\n\n if (!currentRect || !previousRect && !nextRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.left - (previousRect.left + previousRect.width) : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect ? nextRect.left - (currentRect.left + currentRect.width) : currentRect.left - (previousRect.left + previousRect.width);\n}\n\nconst rectSortingStrategy = _ref => {\n let {\n rects,\n activeIndex,\n overIndex,\n index\n } = _ref;\n const newRects = arrayMove(rects, overIndex, activeIndex);\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\nconst rectSwappingStrategy = _ref => {\n let {\n activeIndex,\n index,\n rects,\n overIndex\n } = _ref;\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height\n };\n};\n\n// To-do: We should be calculating scale transformation\nconst defaultScale$1 = {\n scaleX: 1,\n scaleY: 1\n};\nconst verticalListSortingStrategy = _ref => {\n var _rects$activeIndex;\n\n let {\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex\n } = _ref;\n const activeNodeRect = (_rects$activeIndex = rects[activeIndex]) != null ? _rects$activeIndex : fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y: activeIndex < overIndex ? overIndexRect.top + overIndexRect.height - (activeNodeRect.top + activeNodeRect.height) : overIndexRect.top - activeNodeRect.top,\n ...defaultScale$1\n };\n }\n\n const itemGap = getItemGap$1(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale$1\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale$1\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale$1\n };\n};\n\nfunction getItemGap$1(clientRects, index, activeIndex) {\n const currentRect = clientRects[index];\n const previousRect = clientRects[index - 1];\n const nextRect = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect ? currentRect.top - (previousRect.top + previousRect.height) : nextRect ? nextRect.top - (currentRect.top + currentRect.height) : 0;\n }\n\n return nextRect ? nextRect.top - (currentRect.top + currentRect.height) : previousRect ? currentRect.top - (previousRect.top + previousRect.height) : 0;\n}\n\nconst ID_PREFIX = 'Sortable';\nconst Context = /*#__PURE__*/React.createContext({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false\n }\n});\nfunction SortableContext(_ref) {\n let {\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false\n } = _ref;\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo(() => userDefinedItems.map(item => typeof item === 'object' && 'id' in item ? item.id : item), [userDefinedItems]);\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms = overIndex !== -1 && activeIndex === -1 || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n const contextValue = useMemo(() => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndex, containerId, disabled.draggable, disabled.droppable, disableTransforms, items, overIndex, droppableRects, useDragOverlay, strategy]);\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nconst defaultNewIndexGetter = _ref => {\n let {\n id,\n items,\n activeIndex,\n overIndex\n } = _ref;\n return arrayMove(items, activeIndex, overIndex).indexOf(id);\n};\nconst defaultAnimateLayoutChanges = _ref2 => {\n let {\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition\n } = _ref2;\n\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\nconst defaultTransition = {\n duration: 200,\n easing: 'ease'\n};\nconst transitionProperty = 'transform';\nconst disabledTransition = /*#__PURE__*/CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear'\n});\nconst defaultAttributes = {\n roleDescription: 'sortable'\n};\n\n/*\r\n * When the index of an item changes while sorting,\r\n * we need to temporarily disable the transforms\r\n */\n\nfunction useDerivedTransform(_ref) {\n let {\n disabled,\n index,\n node,\n rect\n } = _ref;\n const [derivedTransform, setDerivedtransform] = useState(null);\n const previousIndex = useRef(index);\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true\n });\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n return derivedTransform;\n}\n\nfunction useSortable(_ref) {\n let {\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition\n } = _ref;\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy\n } = useContext(Context);\n const disabled = normalizeLocalDisabled(localDisabled, globalDisabled);\n const index = items.indexOf(id);\n const data = useMemo(() => ({\n sortable: {\n containerId,\n index,\n items\n },\n ...customData\n }), [containerId, customData, index, items]);\n const itemsAfterCurrentSortable = useMemo(() => items.slice(items.indexOf(id)), [items, id]);\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig\n }\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform\n } = useDraggable({\n id,\n data,\n attributes: { ...defaultAttributes,\n ...userDefinedAttributes\n },\n disabled: disabled.draggable\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem = isSorting && !disableTransforms && isValidIndex(activeIndex) && isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement = shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy != null ? localStrategy : globalStrategy;\n const finalTransform = displaceItem ? dragSourceDisplacement != null ? dragSourceDisplacement : strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index\n }) : null;\n const newIndex = isValidIndex(activeIndex) && isValidIndex(overIndex) ? getNewIndex({\n id,\n items,\n activeIndex,\n overIndex\n }) : index;\n const activeId = active == null ? void 0 : active.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null\n });\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect\n });\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId && !previous.current.activeId) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform != null ? derivedTransform : finalTransform,\n transition: getTransition()\n };\n\n function getTransition() {\n if ( // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform || // Or to prevent items jumping to back to their \"new\" position when items change\n itemsHaveChanged && previous.current.newIndex === index) {\n return disabledTransition;\n }\n\n if (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent) || !transition) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({ ...transition,\n property: transitionProperty\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(localDisabled, globalDisabled) {\n var _localDisabled$dragga, _localDisabled$droppa;\n\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false\n };\n }\n\n return {\n draggable: (_localDisabled$dragga = localDisabled == null ? void 0 : localDisabled.draggable) != null ? _localDisabled$dragga : globalDisabled.draggable,\n droppable: (_localDisabled$droppa = localDisabled == null ? void 0 : localDisabled.droppable) != null ? _localDisabled$droppa : globalDisabled.droppable\n };\n}\n\nfunction hasSortableData(entry) {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (data && 'sortable' in data && typeof data.sortable === 'object' && 'containerId' in data.sortable && 'items' in data.sortable && 'index' in data.sortable) {\n return true;\n }\n\n return false;\n}\n\nconst directions = [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];\nconst sortableKeyboardCoordinates = (event, _ref) => {\n let {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors\n }\n } = _ref;\n\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers = [];\n droppableContainers.getEnabled().forEach(entry => {\n if (!entry || entry != null && entry.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n\n break;\n }\n });\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === (over == null ? void 0 : over.id) && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable == null ? void 0 : newDroppable.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some((element, index) => scrollableAncestors[index] !== element);\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset = hasDifferentScrollAncestors || !hasSameContainer ? {\n x: 0,\n y: 0\n } : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top\n };\n const newCoordinates = offset.x && offset.y ? rectCoordinates : subtract(rectCoordinates, offset);\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return a.data.current.sortable.containerId === b.data.current.sortable.containerId;\n}\n\nfunction isAfter(a, b) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nexport { SortableContext, arrayMove, arraySwap, defaultAnimateLayoutChanges, defaultNewIndexGetter, hasSortableData, horizontalListSortingStrategy, rectSortingStrategy, rectSwappingStrategy, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy };\n//# sourceMappingURL=sortable.esm.js.map\n","import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw new DecodeBase64StringError();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * An error encountered while decoding base64 string.\r\n */\r\nclass DecodeBase64StringError extends Error {\r\n constructor() {\r\n super(...arguments);\r\n this.name = 'DecodeBase64StringError';\r\n }\r\n}\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n * @public\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\r\n/**\r\n * Attempt to read defaults from a JSON string provided to\r\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\r\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\r\n * The dots are in parens because certain compilers (Vite?) cannot\r\n * handle seeing that variable in comments.\r\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\r\n */\r\nconst getDefaultsFromEnvVariable = () => {\r\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\r\n return;\r\n }\r\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\r\n if (defaultsJsonString) {\r\n return JSON.parse(defaultsJsonString);\r\n }\r\n};\r\nconst getDefaultsFromCookie = () => {\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n let match;\r\n try {\r\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\r\n }\r\n catch (e) {\r\n // Some environments such as Angular Universal SSR have a\r\n // `document` object but error on accessing `document.cookie`.\r\n return;\r\n }\r\n const decoded = match && base64Decode(match[1]);\r\n return decoded && JSON.parse(decoded);\r\n};\r\n/**\r\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\r\n * (1) if such an object exists as a property of `globalThis`\r\n * (2) if such an object was provided on a shell environment variable\r\n * (3) if such an object exists in a cookie\r\n * @public\r\n */\r\nconst getDefaults = () => {\r\n try {\r\n return (getDefaultsFromGlobal() ||\r\n getDefaultsFromEnvVariable() ||\r\n getDefaultsFromCookie());\r\n }\r\n catch (e) {\r\n /**\r\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\r\n * to any environment case we have not accounted for. Log to\r\n * info instead of swallowing so we can find these unknown cases\r\n * and add paths for them if needed.\r\n */\r\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\r\n return;\r\n }\r\n};\r\n/**\r\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\r\n/**\r\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\r\n const host = getDefaultEmulatorHost(productName);\r\n if (!host) {\r\n return undefined;\r\n }\r\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\r\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\r\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\r\n }\r\n // eslint-disable-next-line no-restricted-globals\r\n const port = parseInt(host.substring(separatorIndex + 1), 10);\r\n if (host[0] === '[') {\r\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\r\n return [host.substring(1, separatorIndex - 1), port];\r\n }\r\n else {\r\n return [host.substring(0, separatorIndex), port];\r\n }\r\n};\r\n/**\r\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\r\n * @public\r\n */\r\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\r\n/**\r\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\r\n * prefixed by \"_\")\r\n * @public\r\n */\r\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected or specified.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n var _a;\r\n const forceEnvironment = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.forceEnvironment;\r\n if (forceEnvironment === 'node') {\r\n return true;\r\n }\r\n else if (forceEnvironment === 'browser') {\r\n return false;\r\n }\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n try {\r\n return typeof indexedDB === 'object';\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map<Err, string> = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory<Err>('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\r\n * @internal\r\n */\r\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\r\n const deferredPromise = new Deferred();\r\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\r\n promise.then(deferredPromise.resolve, deferredPromise.reject);\r\n return deferredPromise.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n * Generates a new uuid.\r\n * @public\r\n */\r\nconst uuidv4 = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n * <p>Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n * <p>Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, uuidv4, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { handleRef } from './utils'; // ========================================================\n// react/packages/react-reconciler/src/ReactFiber.js\n// ========================================================\n\n/**\n * Detects if a passed element is a Fiber object instead of an element. Is needed as `ReactDOM.findDOMNode()` returns\n * a Fiber in `react-test-renderer` that can cause issues with tests. Is used only in non-production env.\n *\n * @see https://github.com/facebook/react/issues/7371#issuecomment-317396864\n * @see https://github.com/Semantic-Org/Semantic-UI-React/issues/4061#issuecomment-694895617\n */\nfunction isFiberRef(node) {\n if (node === null) {\n return false;\n }\n\n if (node instanceof Element || node instanceof Text) {\n return false;\n }\n\n return !!(node.type && node.tag);\n}\n\nexport var RefFindNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefFindNode, _React$Component);\n\n function RefFindNode() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.prevNode = void 0;\n return _this;\n }\n\n var _proto = RefFindNode.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var currentNode = ReactDOM.findDOMNode(this);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFiberRef(currentNode)) {\n currentNode = null;\n }\n }\n\n this.prevNode = currentNode;\n handleRef(this.props.innerRef, currentNode);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var currentNode = ReactDOM.findDOMNode(this);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFiberRef(currentNode)) {\n currentNode = null;\n }\n }\n\n if (this.prevNode !== currentNode) {\n this.prevNode = currentNode;\n handleRef(this.props.innerRef, currentNode);\n }\n\n if (prevProps.innerRef !== this.props.innerRef) {\n handleRef(this.props.innerRef, currentNode);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n handleRef(this.props.innerRef, null);\n delete this.prevNode;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return children;\n };\n\n return RefFindNode;\n}(React.Component);\n//# sourceMappingURL=RefFindNode.js.map\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as React from 'react';\nimport { handleRef } from './utils';\nexport var RefForward = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefForward, _React$Component);\n\n function RefForward() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.currentNode = void 0;\n\n _this.handleRefOverride = function (node) {\n var _this$props = _this.props,\n children = _this$props.children,\n innerRef = _this$props.innerRef;\n handleRef(children.ref, node);\n handleRef(innerRef, node);\n _this.currentNode = node;\n };\n\n return _this;\n }\n\n var _proto = RefForward.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.innerRef !== this.props.innerRef) {\n handleRef(this.props.innerRef, this.currentNode);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n delete this.currentNode;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return /*#__PURE__*/React.cloneElement(children, {\n ref: this.handleRefOverride\n });\n };\n\n return RefForward;\n}(React.Component);\n//# sourceMappingURL=RefForward.js.map\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"innerRef\"];\nimport * as React from 'react';\nimport * as ReactIs from 'react-is';\nimport { RefFindNode } from './RefFindNode';\nimport { RefForward } from './RefForward';\nexport var Ref = function Ref(props) {\n var children = props.children,\n innerRef = props.innerRef,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var child = React.Children.only(children);\n var ElementType = ReactIs.isForwardRef(child) ? RefForward : RefFindNode;\n var childWithProps = child && rest && Object.keys(rest).length > 0 ? /*#__PURE__*/React.cloneElement(child, rest) : child;\n return /*#__PURE__*/React.createElement(ElementType, {\n innerRef: innerRef\n }, childWithProps);\n};\n//# sourceMappingURL=Ref.js.map\n","/**\n * The function that correctly handles passing refs.\n *\n * @param ref - An ref object or function\n * @param node - A node that should be passed by ref\n */\nexport var handleRef = function handleRef(ref, node) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof ref === 'string') {\n throw new Error('We do not support refs as string, this is a legacy API and will be likely to be removed in one of the future releases of React.');\n }\n }\n\n if (typeof ref === 'function') {\n ref(node);\n return;\n }\n\n if (ref !== null && typeof ref === 'object') {\n // The `current` property is defined as readonly, however it's a valid way because\n // `ref` is a mutable object\n ref.current = node;\n }\n};\n/** Checks that the passed object is a valid React ref object. */\n\nexport var isRefObject = function isRefObject(ref) {\n return (// https://github.com/facebook/react/blob/v16.8.2/packages/react-reconciler/src/ReactFiberCommitWork.js#L665\n ref !== null && typeof ref === 'object' && ref.hasOwnProperty('current')\n );\n};\n//# sourceMappingURL=utils.js.map\n","//\n// Main\n//\nexport function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var IntlErrorCode;\n(function (IntlErrorCode) {\n IntlErrorCode[\"FORMAT_ERROR\"] = \"FORMAT_ERROR\";\n IntlErrorCode[\"UNSUPPORTED_FORMATTER\"] = \"UNSUPPORTED_FORMATTER\";\n IntlErrorCode[\"INVALID_CONFIG\"] = \"INVALID_CONFIG\";\n IntlErrorCode[\"MISSING_DATA\"] = \"MISSING_DATA\";\n IntlErrorCode[\"MISSING_TRANSLATION\"] = \"MISSING_TRANSLATION\";\n})(IntlErrorCode || (IntlErrorCode = {}));\nvar IntlError = /** @class */ (function (_super) {\n __extends(IntlError, _super);\n function IntlError(code, message, exception) {\n var _this = this;\n var err = exception\n ? exception instanceof Error\n ? exception\n : new Error(String(exception))\n : undefined;\n _this = _super.call(this, \"[@formatjs/intl Error \".concat(code, \"] \").concat(message, \"\\n\").concat(err ? \"\\n\".concat(err.message, \"\\n\").concat(err.stack) : '')) || this;\n _this.code = code;\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (typeof Error.captureStackTrace === 'function') {\n // @ts-ignore just so we don't need to declare dep on @types/node\n Error.captureStackTrace(_this, IntlError);\n }\n return _this;\n }\n return IntlError;\n}(Error));\nexport { IntlError };\nvar UnsupportedFormatterError = /** @class */ (function (_super) {\n __extends(UnsupportedFormatterError, _super);\n function UnsupportedFormatterError(message, exception) {\n return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message, exception) || this;\n }\n return UnsupportedFormatterError;\n}(IntlError));\nexport { UnsupportedFormatterError };\nvar InvalidConfigError = /** @class */ (function (_super) {\n __extends(InvalidConfigError, _super);\n function InvalidConfigError(message, exception) {\n return _super.call(this, IntlErrorCode.INVALID_CONFIG, message, exception) || this;\n }\n return InvalidConfigError;\n}(IntlError));\nexport { InvalidConfigError };\nvar MissingDataError = /** @class */ (function (_super) {\n __extends(MissingDataError, _super);\n function MissingDataError(message, exception) {\n return _super.call(this, IntlErrorCode.MISSING_DATA, message, exception) || this;\n }\n return MissingDataError;\n}(IntlError));\nexport { MissingDataError };\nvar IntlFormatError = /** @class */ (function (_super) {\n __extends(IntlFormatError, _super);\n function IntlFormatError(message, locale, exception) {\n var _this = _super.call(this, IntlErrorCode.FORMAT_ERROR, \"\".concat(message, \"\\nLocale: \").concat(locale, \"\\n\"), exception) || this;\n _this.locale = locale;\n return _this;\n }\n return IntlFormatError;\n}(IntlError));\nexport { IntlFormatError };\nvar MessageFormatError = /** @class */ (function (_super) {\n __extends(MessageFormatError, _super);\n function MessageFormatError(message, locale, descriptor, exception) {\n var _this = _super.call(this, \"\".concat(message, \"\\nMessageID: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, \"\\nDefault Message: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, \"\\nDescription: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, \"\\n\"), locale, exception) || this;\n _this.descriptor = descriptor;\n _this.locale = locale;\n return _this;\n }\n return MessageFormatError;\n}(IntlFormatError));\nexport { MessageFormatError };\nvar MissingTranslationError = /** @class */ (function (_super) {\n __extends(MissingTranslationError, _super);\n function MissingTranslationError(descriptor, locale) {\n var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, \"Missing message: \\\"\".concat(descriptor.id, \"\\\" for locale \\\"\").concat(locale, \"\\\", using \").concat(descriptor.defaultMessage\n ? \"default message (\".concat(typeof descriptor.defaultMessage === 'string'\n ? descriptor.defaultMessage\n : descriptor.defaultMessage\n .map(function (e) { var _a; return (_a = e.value) !== null && _a !== void 0 ? _a : JSON.stringify(e); })\n .join(), \")\")\n : 'id', \" as fallback.\")) || this;\n _this.descriptor = descriptor;\n return _this;\n }\n return MissingTranslationError;\n}(IntlError));\nexport { MissingTranslationError };\n","import { __assign, __spreadArray } from \"tslib\";\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport { memoize, strategies } from '@formatjs/fast-memoize';\nimport { UnsupportedFormatterError } from './error';\nexport function filterProps(props, allowlist, defaults) {\n if (defaults === void 0) { defaults = {}; }\n return allowlist.reduce(function (filtered, name) {\n if (name in props) {\n filtered[name] = props[name];\n }\n else if (name in defaults) {\n filtered[name] = defaults[name];\n }\n return filtered;\n }, {});\n}\nvar defaultErrorHandler = function (error) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n};\nvar defaultWarnHandler = function (warning) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n};\nexport var DEFAULT_INTL_CONFIG = {\n formats: {},\n messages: {},\n timeZone: undefined,\n defaultLocale: 'en',\n defaultFormats: {},\n fallbackOnEmptyString: true,\n onError: defaultErrorHandler,\n onWarn: defaultWarnHandler,\n};\nexport function createIntlCache() {\n return {\n dateTime: {},\n number: {},\n message: {},\n relativeTime: {},\n pluralRules: {},\n list: {},\n displayNames: {},\n };\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\n/**\n * Create intl formatters and populate cache\n * @param cache explicit cache to prevent leaking memory\n */\nexport function createFormatters(cache) {\n if (cache === void 0) { cache = createIntlCache(); }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n var ListFormat = Intl.ListFormat;\n var DisplayNames = Intl.DisplayNames;\n var getDateTimeFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n });\n var getNumberFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n });\n var getPluralRules = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n });\n return {\n getDateTimeFormat: getDateTimeFormat,\n getNumberFormat: getNumberFormat,\n getMessageFormat: memoize(function (message, locales, overrideFormats, opts) {\n return new IntlMessageFormat(message, locales, overrideFormats, __assign({ formatters: {\n getNumberFormat: getNumberFormat,\n getDateTimeFormat: getDateTimeFormat,\n getPluralRules: getPluralRules,\n } }, (opts || {})));\n }, {\n cache: createFastMemoizeCache(cache.message),\n strategy: strategies.variadic,\n }),\n getRelativeTimeFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.relativeTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: getPluralRules,\n getListFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.list),\n strategy: strategies.variadic,\n }),\n getDisplayNames: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.displayNames),\n strategy: strategies.variadic,\n }),\n };\n}\nexport function getNamedFormat(formats, type, name, onError) {\n var formatType = formats && formats[type];\n var format;\n if (formatType) {\n format = formatType[name];\n }\n if (format) {\n return format;\n }\n onError(new UnsupportedFormatterError(\"No \".concat(type, \" format named: \").concat(name)));\n}\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"far\";\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\"]\n};\nvar faAngry = {\n prefix: 'far',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\"]\n};\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\"]\n};\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\"]\n};\nvar faCalendarAlt = {\n prefix: 'far',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\"]\n};\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarTimes = {\n prefix: 'far',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'far',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'far',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'far',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'far',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faCheckCircle = {\n prefix: 'far',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"]\n};\nvar faCheckSquare = {\n prefix: 'far',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\"]\n};\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z\"]\n};\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\"]\n};\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentAlt = {\n prefix: 'far',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\"]\n};\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\"]\n};\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"]\n};\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\"]\n};\nvar faDizzy = {\n prefix: 'far',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faDotCircle = {\n prefix: 'far',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\"]\n};\nvar faEdit = {\n prefix: 'far',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\"]\n};\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z\"]\n};\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\"]\n};\nvar faFileAlt = {\n prefix: 'far',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"]\n};\nvar faFileArchive = {\n prefix: 'far',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"]\n};\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\"]\n};\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z\"]\n};\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\"]\n};\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\"]\n};\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\"]\n};\nvar faFlushed = {\n prefix: 'far',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\"]\n};\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'far',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFrown = {\n prefix: 'far',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\"]\n};\nvar faFrownOpen = {\n prefix: 'far',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\"]\n};\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [496, 512, [], \"f1e3\", \"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\"]\n};\nvar faGrimace = {\n prefix: 'far',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\"]\n};\nvar faGrin = {\n prefix: 'far',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faGrinAlt = {\n prefix: 'far',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'far',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'far',\n iconName: 'grin-beam-sweat',\n icon: [496, 512, [], \"f583\", \"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinHearts = {\n prefix: 'far',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faGrinSquint = {\n prefix: 'far',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'far',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\"]\n};\nvar faGrinStars = {\n prefix: 'far',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\"]\n};\nvar faGrinTears = {\n prefix: 'far',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinTongue = {\n prefix: 'far',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'far',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'far',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\"]\n};\nvar faGrinWink = {\n prefix: 'far',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\"]\n};\nvar faHandPaper = {\n prefix: 'far',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\"]\n};\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [448, 512, [], \"f0a7\", \"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\"]\n};\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [448, 512, [], \"f0a6\", \"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\"]\n};\nvar faHandRock = {\n prefix: 'far',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\"]\n};\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\"]\n};\nvar faHdd = {\n prefix: 'far',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\"]\n};\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\"]\n};\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\"]\n};\nvar faKiss = {\n prefix: 'far',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faKissBeam = {\n prefix: 'far',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'far',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\"]\n};\nvar faLaugh = {\n prefix: 'far',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughBeam = {\n prefix: 'far',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughSquint = {\n prefix: 'far',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughWink = {\n prefix: 'far',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\"]\n};\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z\"]\n};\nvar faListAlt = {\n prefix: 'far',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\"]\n};\nvar faMeh = {\n prefix: 'far',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMehBlank = {\n prefix: 'far',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'far',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMinusSquare = {\n prefix: 'far',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'far',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\"]\n};\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\"]\n};\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\"]\n};\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\"]\n};\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\"]\n};\nvar faPauseCircle = {\n prefix: 'far',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\"]\n};\nvar faPlayCircle = {\n prefix: 'far',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\"]\n};\nvar faPlusSquare = {\n prefix: 'far',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faQuestionCircle = {\n prefix: 'far',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"]\n};\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\"]\n};\nvar faSadCry = {\n prefix: 'far',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\"]\n};\nvar faSadTear = {\n prefix: 'far',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\"]\n};\nvar faSave = {\n prefix: 'far',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\"]\n};\nvar faShareSquare = {\n prefix: 'far',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\"]\n};\nvar faSmile = {\n prefix: 'far',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"]\n};\nvar faSmileBeam = {\n prefix: 'far',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\"]\n};\nvar faSmileWink = {\n prefix: 'far',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z\"]\n};\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\"]\n};\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\"]\n};\nvar faStickyNote = {\n prefix: 'far',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\"]\n};\nvar faStopCircle = {\n prefix: 'far',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\"]\n};\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z\"]\n};\nvar faSurprise = {\n prefix: 'far',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\"]\n};\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faTimesCircle = {\n prefix: 'far',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTired = {\n prefix: 'far',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\"]\n};\nvar faTrashAlt = {\n prefix: 'far',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\"]\n};\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserCircle = {\n prefix: 'far',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\"]\n};\nvar faWindowClose = {\n prefix: 'far',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\"]\n};\nvar _iconsCache = {\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAngry: faAngry,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBookmark: faBookmark,\n faBuilding: faBuilding,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faCheckCircle: faCheckCircle,\n faCheckSquare: faCheckSquare,\n faCircle: faCircle,\n faClipboard: faClipboard,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDots: faCommentDots,\n faComments: faComments,\n faCompass: faCompass,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCreditCard: faCreditCard,\n faDizzy: faDizzy,\n faDotCircle: faDotCircle,\n faEdit: faEdit,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEye: faEye,\n faEyeSlash: faEyeSlash,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileExcel: faFileExcel,\n faFileImage: faFileImage,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFlag: faFlag,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderOpen: faFolderOpen,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFutbol: faFutbol,\n faGem: faGem,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faHandLizard: faHandLizard,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSpock: faHandSpock,\n faHandshake: faHandshake,\n faHdd: faHdd,\n faHeart: faHeart,\n faHospital: faHospital,\n faHourglass: faHourglass,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faImage: faImage,\n faImages: faImages,\n faKeyboard: faKeyboard,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLemon: faLemon,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faListAlt: faListAlt,\n faMap: faMap,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMinusSquare: faMinusSquare,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoon: faMoon,\n faNewspaper: faNewspaper,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faPaperPlane: faPaperPlane,\n faPauseCircle: faPauseCircle,\n faPlayCircle: faPlayCircle,\n faPlusSquare: faPlusSquare,\n faQuestionCircle: faQuestionCircle,\n faRegistered: faRegistered,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSave: faSave,\n faShareSquare: faShareSquare,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSnowflake: faSnowflake,\n faSquare: faSquare,\n faStar: faStar,\n faStarHalf: faStarHalf,\n faStickyNote: faStickyNote,\n faStopCircle: faStopCircle,\n faSun: faSun,\n faSurprise: faSurprise,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faTimesCircle: faTimesCircle,\n faTired: faTired,\n faTrashAlt: faTrashAlt,\n faUser: faUser,\n faUserCircle: faUserCircle,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore\n};\n\nexport { _iconsCache as far, prefix, faAddressBook, faAddressCard, faAngry, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faBell, faBellSlash, faBookmark, faBuilding, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faChartBar, faCheckCircle, faCheckSquare, faCircle, faClipboard, faClock, faClone, faClosedCaptioning, faComment, faCommentAlt, faCommentDots, faComments, faCompass, faCopy, faCopyright, faCreditCard, faDizzy, faDotCircle, faEdit, faEnvelope, faEnvelopeOpen, faEye, faEyeSlash, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileExcel, faFileImage, faFilePdf, faFilePowerpoint, faFileVideo, faFileWord, faFlag, faFlushed, faFolder, faFolderOpen, faFontAwesomeLogoFull, faFrown, faFrownOpen, faFutbol, faGem, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faHandLizard, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSpock, faHandshake, faHdd, faHeart, faHospital, faHourglass, faIdBadge, faIdCard, faImage, faImages, faKeyboard, faKiss, faKissBeam, faKissWinkHeart, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLemon, faLifeRing, faLightbulb, faListAlt, faMap, faMeh, faMehBlank, faMehRollingEyes, faMinusSquare, faMoneyBillAlt, faMoon, faNewspaper, faObjectGroup, faObjectUngroup, faPaperPlane, faPauseCircle, faPlayCircle, faPlusSquare, faQuestionCircle, faRegistered, faSadCry, faSadTear, faSave, faShareSquare, faSmile, faSmileBeam, faSmileWink, faSnowflake, faSquare, faStar, faStarHalf, faStickyNote, faStopCircle, faSun, faSurprise, faThumbsDown, faThumbsUp, faTimesCircle, faTired, faTrashAlt, faUser, faUserCircle, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore };\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fak': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example <script data-search-pseudo-elements src=\"...\"></script>\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" Font Awesome fontawesome.com -->\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded$1 = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded$1);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { useState } from 'react';\n\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(state => !state, false);\n return dispatch;\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import { useRef, useEffect } from 'react';\n\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\nexport default function useMounted() {\n const mounted = useRef(true);\n const isMounted = useRef(() => mounted.current);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\nexport default function usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n const onUnmount = useUpdatedRef(fn);\n useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n const valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","\"use strict\";\n\nfunction noop() {\n return null;\n}\n\nnoop.isRequired = noop;\n\nfunction noopThunk() {\n return noop;\n}\n\nmodule.exports = {\n and: noopThunk,\n between: noopThunk,\n booleanSome: noopThunk,\n childrenHavePropXorChildren: noopThunk,\n childrenOf: noopThunk,\n childrenOfType: noopThunk,\n childrenSequenceOf: noopThunk,\n componentWithName: noopThunk,\n disallowedIf: noopThunk,\n elementType: noopThunk,\n empty: noopThunk,\n explicitNull: noopThunk,\n forbidExtraProps: Object,\n integer: noopThunk,\n keysOf: noopThunk,\n mutuallyExclusiveProps: noopThunk,\n mutuallyExclusiveTrueProps: noopThunk,\n nChildren: noopThunk,\n nonNegativeInteger: noop,\n nonNegativeNumber: noopThunk,\n numericString: noopThunk,\n object: noopThunk,\n or: noopThunk,\n predicate: noopThunk,\n range: noopThunk,\n ref: noopThunk,\n requiredBy: noopThunk,\n restrictedProp: noopThunk,\n sequenceOf: noopThunk,\n shape: noopThunk,\n stringEndsWith: noopThunk,\n stringStartsWith: noopThunk,\n uniqueArray: noopThunk,\n uniqueArrayOf: noopThunk,\n valuesOf: noopThunk,\n withShape: noopThunk\n};\n//# sourceMappingURL=index.js.map","module.exports = process.env.NODE_ENV === 'production' ? require('./build/mocks') : require('./build');\n\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar AlgoliaSearchHelper = require('./src/algoliasearch.helper');\nvar SearchParameters = require('./src/SearchParameters');\nvar SearchResults = require('./src/SearchResults');\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n * facets: ['shipping'],\n * disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n * console.log(event.results);\n * });\n * helper\n * .toggleFacetRefinement('category', 'Movies & TV Shows')\n * .toggleFacetRefinement('shipping', 'Free shipping')\n * .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the name of the index to query\n * @param {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @return {AlgoliaSearchHelper} The helper instance\n */\nfunction algoliasearchHelper(client, index, opts) {\n return new AlgoliaSearchHelper(client, index, opts);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */\nalgoliasearchHelper.version = require('./src/version');\n\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */\nalgoliasearchHelper.AlgoliaSearchHelper = AlgoliaSearchHelper;\n\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */\nalgoliasearchHelper.SearchParameters = SearchParameters;\n\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */\nalgoliasearchHelper.SearchResults = SearchResults;\n\nmodule.exports = algoliasearchHelper;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\n\nvar inherits = require('../functions/inherits');\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n * @param {AlgoliaSearchHelper} mainHelper the main helper\n * @param {function} fn the function to create the derived state\n */\nfunction DerivedHelper(mainHelper, fn) {\n this.main = mainHelper;\n this.fn = fn;\n this.lastResults = null;\n}\n\ninherits(DerivedHelper, EventEmitter);\n\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */\nDerivedHelper.prototype.detach = function () {\n this.removeAllListeners();\n this.main.detachDerivedHelper(this);\n};\n\nDerivedHelper.prototype.getModifiedState = function (parameters) {\n return this.fn(parameters);\n};\n\nmodule.exports = DerivedHelper;\n","'use strict';\n\n/**\n * Functions to manipulate refinement lists\n *\n * The RefinementList is not formally defined through a prototype but is based\n * on a specific structure.\n *\n * @module SearchParameters.refinementList\n *\n * @typedef {string[]} SearchParameters.refinementList.Refinements\n * @typedef {Object.<string, SearchParameters.refinementList.Refinements>} SearchParameters.refinementList.RefinementList\n */\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar omit = require('../functions/omit');\n\nvar lib = {\n /**\n * Adds a refinement to a RefinementList\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement, if the value is not a string it will be converted\n * @return {RefinementList} a new and updated refinement list\n */\n addRefinement: function addRefinement(refinementList, attribute, value) {\n if (lib.isRefined(refinementList, attribute, value)) {\n return refinementList;\n }\n\n var valueAsString = '' + value;\n\n var facetRefinement = !refinementList[attribute]\n ? [valueAsString]\n : refinementList[attribute].concat(valueAsString);\n\n var mod = {};\n\n mod[attribute] = facetRefinement;\n\n return defaultsPure({}, mod, refinementList);\n },\n /**\n * Removes refinement(s) for an attribute:\n * - if the value is specified removes the refinement for the value on the attribute\n * - if no value is specified removes all the refinements for this attribute\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} [value] the value of the refinement\n * @return {RefinementList} a new and updated refinement lst\n */\n removeRefinement: function removeRefinement(\n refinementList,\n attribute,\n value\n ) {\n if (value === undefined) {\n // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n // the form with a string will remove the attribute completely\n return lib.clearRefinement(refinementList, function (v, f) {\n return attribute === f;\n });\n }\n\n var valueAsString = '' + value;\n\n return lib.clearRefinement(refinementList, function (v, f) {\n return attribute === f && valueAsString === v;\n });\n },\n /**\n * Toggles the refinement value for an attribute.\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement\n * @return {RefinementList} a new and updated list\n */\n toggleRefinement: function toggleRefinement(\n refinementList,\n attribute,\n value\n ) {\n if (value === undefined)\n throw new Error('toggleRefinement should be used with a value');\n\n if (lib.isRefined(refinementList, attribute, value)) {\n return lib.removeRefinement(refinementList, attribute, value);\n }\n\n return lib.addRefinement(refinementList, attribute, value);\n },\n /**\n * Clear all or parts of a RefinementList. Depending on the arguments, three\n * kinds of behavior can happen:\n * - if no attribute is provided: clears the whole list\n * - if an attribute is provided as a string: clears the list for the specific attribute\n * - if an attribute is provided as a function: discards the elements for which the function returns true\n * @param {RefinementList} refinementList the initial list\n * @param {string} [attribute] the attribute or function to discard\n * @param {string} [refinementType] optional parameter to give more context to the attribute function\n * @return {RefinementList} a new and updated refinement list\n */\n clearRefinement: function clearRefinement(\n refinementList,\n attribute,\n refinementType\n ) {\n if (attribute === undefined) {\n // return the same object if the list is already empty\n // this is mainly for tests, as it doesn't have much impact on performance\n if (!objectHasKeys(refinementList)) {\n return refinementList;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(refinementList, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n\n var newRefinementList = Object.keys(refinementList).reduce(function (\n memo,\n key\n ) {\n var values = refinementList[key] || [];\n var facetList = values.filter(function (value) {\n return !attribute(value, key, refinementType);\n });\n\n if (facetList.length !== values.length) {\n hasChanged = true;\n }\n\n memo[key] = facetList;\n\n return memo;\n },\n {});\n\n if (hasChanged) return newRefinementList;\n return refinementList;\n }\n\n // We return nothing if the attribute is not undefined, a string or a function,\n // as it is not a valid value for a refinement\n return undefined;\n },\n /**\n * Test if the refinement value is used for the attribute. If no refinement value\n * is provided, test if the refinementList contains any refinement for the\n * given attribute.\n * @param {RefinementList} refinementList the list of refinement\n * @param {string} attribute name of the attribute\n * @param {string} [refinementValue] value of the filter/refinement\n * @return {boolean} true if the attribute is refined, false otherwise\n */\n isRefined: function isRefined(refinementList, attribute, refinementValue) {\n var containsRefinements =\n Boolean(refinementList[attribute]) &&\n refinementList[attribute].length > 0;\n\n if (refinementValue === undefined || !containsRefinements) {\n return containsRefinements;\n }\n\n var refinementValueAsString = '' + refinementValue;\n\n return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n },\n};\n\nmodule.exports = lib;\n","'use strict';\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar find = require('../functions/find');\nvar intersection = require('../functions/intersection');\nvar merge = require('../functions/merge');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar omit = require('../functions/omit');\nvar valToNumber = require('../functions/valToNumber');\nvar isValidUserToken = require('../utils/isValidUserToken');\n\nvar RefinementList = require('./RefinementList');\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n * @param {any} a numeric refinement value\n * @param {any} b numeric refinement value\n * @return {boolean} true if the values are equal\n */\nfunction isEqualNumericRefinement(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n return (\n a.length === b.length &&\n a.every(function (el, i) {\n return isEqualNumericRefinement(b[i], el);\n })\n );\n }\n return a === b;\n}\n\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */\nfunction findArray(array, searchedValue) {\n return find(array, function (currentValue) {\n return isEqualNumericRefinement(currentValue, searchedValue);\n });\n}\n\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */\n\n/**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.<string, Array.<number|number[]>>} SearchParameters.OperatorList\n */\n\n/**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example <caption>SearchParameters of the first query in\n * <a href=\"http://demos.algolia.com/instant-search-demo/\">the instant search demo</a></caption>\n{\n \"query\": \"\",\n \"disjunctiveFacets\": [\n \"customerReviewCount\",\n \"category\",\n \"salePrice_range\",\n \"manufacturer\"\n ],\n \"maxValuesPerFacet\": 30,\n \"page\": 0,\n \"hitsPerPage\": 10,\n \"facets\": [\n \"type\",\n \"shipping\"\n ]\n}\n */\nfunction SearchParameters(newParameters) {\n var params = newParameters\n ? SearchParameters._parseNumbers(newParameters)\n : {};\n\n if (params.userToken !== undefined && !isValidUserToken(params.userToken)) {\n // eslint-disable-next-line no-console\n console.warn(\n '[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n - Format: [a-zA-Z0-9_-]{1,64}'\n );\n }\n /**\n * This attribute contains the list of all the conjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.facets = params.facets || [];\n /**\n * This attribute contains the list of all the disjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.disjunctiveFacets = params.disjunctiveFacets || [];\n /**\n * This attribute contains the list of all the hierarchical facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * Hierarchical facets are a sub type of disjunctive facets that\n * let you filter faceted attributes hierarchically.\n * @member {string[]|object[]}\n */\n this.hierarchicalFacets = params.hierarchicalFacets || [];\n\n // Refinements\n /**\n * This attribute contains all the filters that need to be\n * applied on the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.<string, SearchParameters.FacetList>}\n */\n this.facetsRefinements = params.facetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * excluded from the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters excluded for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.<string, SearchParameters.FacetList>}\n */\n this.facetsExcludes = params.facetsExcludes || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the disjunctive facets. Each facet must be properly\n * defined in the `disjunctiveFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.<string, SearchParameters.FacetList>}\n */\n this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the numeric attributes.\n *\n * The key is the name of the attribute, and the value is the\n * filters to apply to this attribute.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `numericFilters` attribute.\n * @member {Object.<string, SearchParameters.OperatorList>}\n */\n this.numericRefinements = params.numericRefinements || {};\n /**\n * This attribute contains all the tags used to refine the query.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `tagFilters` attribute.\n * @member {string[]}\n */\n this.tagRefinements = params.tagRefinements || [];\n /**\n * This attribute contains all the filters that need to be\n * applied on the hierarchical facets. Each facet must be properly\n * defined in the `hierarchicalFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name. The FacetList values\n * are structured as a string that contain the values for each level\n * separated by the configured separator.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.<string, SearchParameters.FacetList>}\n */\n this.hierarchicalFacetsRefinements =\n params.hierarchicalFacetsRefinements || {};\n\n // eslint-disable-next-line consistent-this\n var self = this;\n Object.keys(params).forEach(function (paramName) {\n var isKeyKnown = SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n var isValueDefined = params[paramName] !== undefined;\n\n if (!isKeyKnown && isValueDefined) {\n self[paramName] = params[paramName];\n }\n });\n}\n\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */\nSearchParameters.PARAMETERS = Object.keys(new SearchParameters());\n\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */\nSearchParameters._parseNumbers = function (partialState) {\n // Do not parse numbers again in SearchParameters, they ought to be parsed already\n if (partialState instanceof SearchParameters) return partialState;\n\n var numbers = {};\n\n var numberKeys = [\n 'aroundPrecision',\n 'aroundRadius',\n 'getRankingInfo',\n 'minWordSizefor2Typos',\n 'minWordSizefor1Typo',\n 'page',\n 'maxValuesPerFacet',\n 'distinct',\n 'minimumAroundRadius',\n 'hitsPerPage',\n 'minProximity',\n ];\n\n numberKeys.forEach(function (k) {\n var value = partialState[k];\n if (typeof value === 'string') {\n var parsedValue = parseFloat(value);\n // global isNaN is ok to use here, value is only number or NaN\n numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n }\n });\n\n // there's two formats of insideBoundingBox, we need to parse\n // the one which is an array of float geo rectangles\n if (Array.isArray(partialState.insideBoundingBox)) {\n numbers.insideBoundingBox = partialState.insideBoundingBox.map(function (\n geoRect\n ) {\n if (Array.isArray(geoRect)) {\n return geoRect.map(function (value) {\n return parseFloat(value);\n });\n }\n return geoRect;\n });\n }\n\n if (partialState.numericRefinements) {\n var numericRefinements = {};\n Object.keys(partialState.numericRefinements).forEach(function (attribute) {\n var operators = partialState.numericRefinements[attribute] || {};\n numericRefinements[attribute] = {};\n Object.keys(operators).forEach(function (operator) {\n var values = operators[operator];\n var parsedValues = values.map(function (v) {\n if (Array.isArray(v)) {\n return v.map(function (vPrime) {\n if (typeof vPrime === 'string') {\n return parseFloat(vPrime);\n }\n return vPrime;\n });\n } else if (typeof v === 'string') {\n return parseFloat(v);\n }\n return v;\n });\n numericRefinements[attribute][operator] = parsedValues;\n });\n });\n numbers.numericRefinements = numericRefinements;\n }\n\n return merge({}, partialState, numbers);\n};\n\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */\nSearchParameters.make = function makeSearchParameters(newParameters) {\n var instance = new SearchParameters(newParameters);\n\n var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n hierarchicalFacets.forEach(function (facet) {\n if (facet.rootPath) {\n var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n\n if (\n currentRefinement.length > 0 &&\n currentRefinement[0].indexOf(facet.rootPath) !== 0\n ) {\n instance = instance.clearRefinements(facet.name);\n }\n\n // get it again in case it has been cleared\n currentRefinement = instance.getHierarchicalRefinement(facet.name);\n if (currentRefinement.length === 0) {\n instance = instance.toggleHierarchicalFacetRefinement(\n facet.name,\n facet.rootPath\n );\n }\n }\n });\n\n return instance;\n};\n\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */\nSearchParameters.validate = function (currentState, parameters) {\n var params = parameters || {};\n\n if (\n currentState.tagFilters &&\n params.tagRefinements &&\n params.tagRefinements.length > 0\n ) {\n return new Error(\n '[Tags] Cannot switch from the managed tag API to the advanced API. It is probably ' +\n 'an error, if it is really what you want, you should first clear the tags with clearTags method.'\n );\n }\n\n if (currentState.tagRefinements.length > 0 && params.tagFilters) {\n return new Error(\n '[Tags] Cannot switch from the advanced tag API to the managed API. It is probably ' +\n 'an error, if it is not, you should first clear the tags with clearTags method.'\n );\n }\n\n if (\n currentState.numericFilters &&\n params.numericRefinements &&\n objectHasKeys(params.numericRefinements)\n ) {\n return new Error(\n \"[Numeric filters] Can't switch from the advanced to the managed API. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.'\n );\n }\n\n if (objectHasKeys(currentState.numericRefinements) && params.numericFilters) {\n return new Error(\n \"[Numeric filters] Can't switch from the managed API to the advanced. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.'\n );\n }\n\n return null;\n};\n\nSearchParameters.prototype = {\n constructor: SearchParameters,\n\n /**\n * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n * @method\n * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {SearchParameters} new instance with filters cleared\n */\n clearRefinements: function clearRefinements(attribute) {\n var patch = {\n numericRefinements: this._clearNumericRefinements(attribute),\n facetsRefinements: RefinementList.clearRefinement(\n this.facetsRefinements,\n attribute,\n 'conjunctiveFacet'\n ),\n facetsExcludes: RefinementList.clearRefinement(\n this.facetsExcludes,\n attribute,\n 'exclude'\n ),\n disjunctiveFacetsRefinements: RefinementList.clearRefinement(\n this.disjunctiveFacetsRefinements,\n attribute,\n 'disjunctiveFacet'\n ),\n hierarchicalFacetsRefinements: RefinementList.clearRefinement(\n this.hierarchicalFacetsRefinements,\n attribute,\n 'hierarchicalFacet'\n ),\n };\n if (\n patch.numericRefinements === this.numericRefinements &&\n patch.facetsRefinements === this.facetsRefinements &&\n patch.facetsExcludes === this.facetsExcludes &&\n patch.disjunctiveFacetsRefinements ===\n this.disjunctiveFacetsRefinements &&\n patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements\n ) {\n return this;\n }\n return this.setQueryParameters(patch);\n },\n /**\n * Remove all the refined tags from the SearchParameters\n * @method\n * @return {SearchParameters} new instance with tags cleared\n */\n clearTags: function clearTags() {\n if (this.tagFilters === undefined && this.tagRefinements.length === 0)\n return this;\n\n return this.setQueryParameters({\n tagFilters: undefined,\n tagRefinements: [],\n });\n },\n /**\n * Set the index.\n * @method\n * @param {string} index the index name\n * @return {SearchParameters} new instance\n */\n setIndex: function setIndex(index) {\n if (index === this.index) return this;\n\n return this.setQueryParameters({\n index: index,\n });\n },\n /**\n * Query setter\n * @method\n * @param {string} newQuery value for the new query\n * @return {SearchParameters} new instance\n */\n setQuery: function setQuery(newQuery) {\n if (newQuery === this.query) return this;\n\n return this.setQueryParameters({\n query: newQuery,\n });\n },\n /**\n * Page setter\n * @method\n * @param {number} newPage new page number\n * @return {SearchParameters} new instance\n */\n setPage: function setPage(newPage) {\n if (newPage === this.page) return this;\n\n return this.setQueryParameters({\n page: newPage,\n });\n },\n /**\n * Facets setter\n * The facets are the simple facets, used for conjunctive (and) faceting.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n * @return {SearchParameters} new instance\n */\n setFacets: function setFacets(facets) {\n return this.setQueryParameters({\n facets: facets,\n });\n },\n /**\n * Disjunctive facets setter\n * Change the list of disjunctive (or) facets the helper chan handle.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n * @return {SearchParameters} new instance\n */\n setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n return this.setQueryParameters({\n disjunctiveFacets: facets,\n });\n },\n /**\n * HitsPerPage setter\n * Hits per page represents the number of hits retrieved for this query\n * @method\n * @param {number} n number of hits retrieved per page of results\n * @return {SearchParameters} new instance\n */\n setHitsPerPage: function setHitsPerPage(n) {\n if (this.hitsPerPage === n) return this;\n\n return this.setQueryParameters({\n hitsPerPage: n,\n });\n },\n /**\n * typoTolerance setter\n * Set the value of typoTolerance\n * @method\n * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n * @return {SearchParameters} new instance\n */\n setTypoTolerance: function setTypoTolerance(typoTolerance) {\n if (this.typoTolerance === typoTolerance) return this;\n\n return this.setQueryParameters({\n typoTolerance: typoTolerance,\n });\n },\n /**\n * Add a numeric filter for a given attribute\n * When value is an array, they are combined with OR\n * When value is a single value, it will combined with AND\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number | number[]} value value of the filter\n * @return {SearchParameters} new instance\n * @example\n * // for price = 50 or 40\n * state.addNumericRefinement('price', '=', [50, 40]);\n * @example\n * // for size = 38 and 40\n * state.addNumericRefinement('size', '=', 38);\n * state.addNumericRefinement('size', '=', 40);\n */\n addNumericRefinement: function (attribute, operator, value) {\n var val = valToNumber(value);\n\n if (this.isNumericRefined(attribute, operator, val)) return this;\n\n var mod = merge({}, this.numericRefinements);\n\n mod[attribute] = merge({}, mod[attribute]);\n\n if (mod[attribute][operator]) {\n // Array copy\n mod[attribute][operator] = mod[attribute][operator].slice();\n // Add the element. Concat can't be used here because value can be an array.\n mod[attribute][operator].push(val);\n } else {\n mod[attribute][operator] = [val];\n }\n\n return this.setQueryParameters({\n numericRefinements: mod,\n });\n },\n /**\n * Get the list of conjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getConjunctiveRefinements: function (facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsRefinements[facetName] || [];\n },\n /**\n * Get the list of disjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getDisjunctiveRefinements: function (facetName) {\n if (!this.isDisjunctiveFacet(facetName)) {\n return [];\n }\n return this.disjunctiveFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of hierarchical refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getHierarchicalRefinement: function (facetName) {\n // we send an array but we currently do not support multiple\n // hierarchicalRefinements for a hierarchicalFacet\n return this.hierarchicalFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of exclude refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getExcludeRefinements: function (facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsExcludes[facetName] || [];\n },\n\n /**\n * Remove all the numeric filter for a given (attribute, operator)\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number} [number] the value to be removed\n * @return {SearchParameters} new instance\n */\n removeNumericRefinement: function (attribute, operator, number) {\n var paramValue = number;\n if (paramValue !== undefined) {\n if (!this.isNumericRefined(attribute, operator, paramValue)) {\n return this;\n }\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function (\n value,\n key\n ) {\n return (\n key === attribute &&\n value.op === operator &&\n isEqualNumericRefinement(value.val, valToNumber(paramValue))\n );\n }),\n });\n } else if (operator !== undefined) {\n if (!this.isNumericRefined(attribute, operator)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function (\n value,\n key\n ) {\n return key === attribute && value.op === operator;\n }),\n });\n }\n\n if (!this.isNumericRefined(attribute)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function (value, key) {\n return key === attribute;\n }),\n });\n },\n /**\n * Get the list of numeric refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {SearchParameters.OperatorList} list of refinements\n */\n getNumericRefinements: function (facetName) {\n return this.numericRefinements[facetName] || {};\n },\n /**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.<number|number[]>} refined values\n */\n getNumericRefinement: function (attribute, operator) {\n return (\n this.numericRefinements[attribute] &&\n this.numericRefinements[attribute][operator]\n );\n },\n /**\n * Clear numeric filters.\n * @method\n * @private\n * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {Object.<string, OperatorList>} new numeric refinements\n */\n _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n if (attribute === undefined) {\n if (!objectHasKeys(this.numericRefinements)) {\n return this.numericRefinements;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(this.numericRefinements, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n var numericRefinements = this.numericRefinements;\n var newNumericRefinements = Object.keys(numericRefinements).reduce(\n function (memo, key) {\n var operators = numericRefinements[key];\n var operatorList = {};\n\n operators = operators || {};\n Object.keys(operators).forEach(function (operator) {\n var values = operators[operator] || [];\n var outValues = [];\n values.forEach(function (value) {\n var predicateResult = attribute(\n { val: value, op: operator },\n key,\n 'numeric'\n );\n if (!predicateResult) outValues.push(value);\n });\n if (outValues.length !== values.length) {\n hasChanged = true;\n }\n operatorList[operator] = outValues;\n });\n\n memo[key] = operatorList;\n\n return memo;\n },\n {}\n );\n\n if (hasChanged) return newNumericRefinements;\n return this.numericRefinements;\n }\n\n // We return nothing if the attribute is not undefined, a string or a function,\n // as it is not a valid value for a refinement\n return undefined;\n },\n /**\n * Add a facet to the facets attribute of the helper configuration, if it\n * isn't already present.\n * @method\n * @param {string} facet facet name to add\n * @return {SearchParameters} new instance\n */\n addFacet: function addFacet(facet) {\n if (this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n facets: this.facets.concat([facet]),\n });\n },\n /**\n * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n * configuration, if it isn't already present.\n * @method\n * @param {string} facet disjunctive facet name to add\n * @return {SearchParameters} new instance\n */\n addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n if (this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.concat([facet]),\n });\n },\n /**\n * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n * configuration.\n * @method\n * @param {object} hierarchicalFacet hierarchical facet to add\n * @return {SearchParameters} new instance\n * @throws will throw an error if a hierarchical facet with the same name was already declared\n */\n addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n if (this.isHierarchicalFacet(hierarchicalFacet.name)) {\n throw new Error(\n 'Cannot declare two hierarchical facets with the same name: `' +\n hierarchicalFacet.name +\n '`'\n );\n }\n\n return this.setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.concat([hierarchicalFacet]),\n });\n },\n /**\n * Add a refinement on a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters} new instance\n */\n addFacetRefinement: function addFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n if (RefinementList.isRefined(this.facetsRefinements, facet, value))\n return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.addRefinement(\n this.facetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * Exclude a value from a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the exclusion on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters} new instance\n */\n addExcludeRefinement: function addExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n if (RefinementList.isRefined(this.facetsExcludes, facet, value))\n return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.addRefinement(\n this.facetsExcludes,\n facet,\n value\n ),\n });\n },\n /**\n * Adds a refinement on a disjunctive facet.\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters} new instance\n */\n addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(\n facet,\n value\n ) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n );\n }\n\n if (\n RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)\n )\n return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.addRefinement(\n this.disjunctiveFacetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * addTagRefinement adds a tag to the list used to filter the results\n * @param {string} tag tag to be added\n * @return {SearchParameters} new instance\n */\n addTagRefinement: function addTagRefinement(tag) {\n if (this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.concat(tag),\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Remove a facet from the facets attribute of the helper configuration, if it\n * is present.\n * @method\n * @param {string} facet facet name to remove\n * @return {SearchParameters} new instance\n */\n removeFacet: function removeFacet(facet) {\n if (!this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n facets: this.facets.filter(function (f) {\n return f !== facet;\n }),\n });\n },\n /**\n * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet disjunctive facet name to remove\n * @return {SearchParameters} new instance\n */\n removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n if (!this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.filter(function (f) {\n return f !== facet;\n }),\n });\n },\n /**\n * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet hierarchical facet name to remove\n * @return {SearchParameters} new instance\n */\n removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n if (!this.isHierarchicalFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.filter(function (f) {\n return f.name !== facet;\n }),\n });\n },\n /**\n * Remove a refinement set on facet. If a value is provided, it will clear the\n * refinement for the given value, otherwise it will clear all the refinement\n * values for the faceted attribute.\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} [value] value used to filter\n * @return {SearchParameters} new instance\n */\n removeFacetRefinement: function removeFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n if (!RefinementList.isRefined(this.facetsRefinements, facet, value))\n return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.removeRefinement(\n this.facetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * Remove a negative refinement on a facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters} new instance\n */\n removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n if (!RefinementList.isRefined(this.facetsExcludes, facet, value))\n return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.removeRefinement(\n this.facetsExcludes,\n facet,\n value\n ),\n });\n },\n /**\n * Remove a refinement on a disjunctive facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters} new instance\n */\n removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(\n facet,\n value\n ) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n );\n }\n if (\n !RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)\n )\n return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.removeRefinement(\n this.disjunctiveFacetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * Remove a tag from the list of tag refinements\n * @method\n * @param {string} tag the tag to remove\n * @return {SearchParameters} new instance\n */\n removeTagRefinement: function removeTagRefinement(tag) {\n if (!this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.filter(function (t) {\n return t !== tag;\n }),\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters} new instance\n * @throws will throw an error if the facet is not declared in the settings of the helper\n * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n */\n toggleRefinement: function toggleRefinement(facet, value) {\n return this.toggleFacetRefinement(facet, value);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters} new instance\n * @throws will throw an error if the facet is not declared in the settings of the helper\n */\n toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n if (this.isHierarchicalFacet(facet)) {\n return this.toggleHierarchicalFacetRefinement(facet, value);\n } else if (this.isConjunctiveFacet(facet)) {\n return this.toggleConjunctiveFacetRefinement(facet, value);\n } else if (this.isDisjunctiveFacet(facet)) {\n return this.toggleDisjunctiveFacetRefinement(facet, value);\n }\n\n throw new Error(\n 'Cannot refine the undeclared facet ' +\n facet +\n '; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets'\n );\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters} new instance\n */\n toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(\n facet,\n value\n ) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.toggleRefinement(\n this.facetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters} new instance\n */\n toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(\n facet,\n value\n ) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the facets attribute of the helper configuration'\n );\n }\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.toggleRefinement(\n this.facetsExcludes,\n facet,\n value\n ),\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters} new instance\n */\n toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(\n facet,\n value\n ) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the disjunctiveFacets attribute of the helper configuration'\n );\n }\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.toggleRefinement(\n this.disjunctiveFacetsRefinements,\n facet,\n value\n ),\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters} new instance\n */\n toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(\n facet,\n value\n ) {\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the hierarchicalFacets attribute of the helper configuration'\n );\n }\n\n var separator = this._getHierarchicalFacetSeparator(\n this.getHierarchicalFacetByName(facet)\n );\n\n var mod = {};\n\n var upOneOrMultipleLevel =\n this.hierarchicalFacetsRefinements[facet] !== undefined &&\n this.hierarchicalFacetsRefinements[facet].length > 0 &&\n // remove current refinement:\n // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n (this.hierarchicalFacetsRefinements[facet][0] === value ||\n // remove a parent refinement of the current refinement:\n // - refinement was 'beer > IPA > Flying dog'\n // - call is toggleRefine('beer > IPA')\n // - refinement should be `beer`\n this.hierarchicalFacetsRefinements[facet][0].indexOf(\n value + separator\n ) === 0);\n\n if (upOneOrMultipleLevel) {\n if (value.indexOf(separator) === -1) {\n // go back to root level\n mod[facet] = [];\n } else {\n mod[facet] = [value.slice(0, value.lastIndexOf(separator))];\n }\n } else {\n mod[facet] = [value];\n }\n\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure(\n {},\n mod,\n this.hierarchicalFacetsRefinements\n ),\n });\n },\n\n /**\n * Adds a refinement on a hierarchical facet.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is refined\n */\n addHierarchicalFacetRefinement: function (facet, path) {\n if (this.isHierarchicalFacetRefined(facet)) {\n throw new Error(facet + ' is already refined.');\n }\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(\n facet +\n ' is not defined in the hierarchicalFacets attribute of the helper configuration.'\n );\n }\n var mod = {};\n mod[facet] = [path];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure(\n {},\n mod,\n this.hierarchicalFacetsRefinements\n ),\n });\n },\n\n /**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is not refined\n */\n removeHierarchicalFacetRefinement: function (facet) {\n if (!this.isHierarchicalFacetRefined(facet)) {\n return this;\n }\n var mod = {};\n mod[facet] = [];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure(\n {},\n mod,\n this.hierarchicalFacetsRefinements\n ),\n });\n },\n /**\n * Switch the tag refinement\n * @method\n * @param {string} tag the tag to remove or add\n * @return {SearchParameters} new instance\n */\n toggleTagRefinement: function toggleTagRefinement(tag) {\n if (this.isTagRefined(tag)) {\n return this.removeTagRefinement(tag);\n }\n\n return this.addTagRefinement(tag);\n },\n /**\n * Test if the facet name is from one of the disjunctive facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean} true if facet is a disjunctive facet\n */\n isDisjunctiveFacet: function (facet) {\n return this.disjunctiveFacets.indexOf(facet) > -1;\n },\n /**\n * Test if the facet name is from one of the hierarchical facets\n * @method\n * @param {string} facetName facet name to test\n * @return {boolean} true if facetName is a hierarchical facet\n */\n isHierarchicalFacet: function (facetName) {\n return this.getHierarchicalFacetByName(facetName) !== undefined;\n },\n /**\n * Test if the facet name is from one of the conjunctive/normal facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean} true if facet is a conjunctive facet\n */\n isConjunctiveFacet: function (facet) {\n return this.facets.indexOf(facet) > -1;\n },\n /**\n * Returns true if the facet is refined, either for a specific value or in\n * general.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value, optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isFacetRefined: function isFacetRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsRefinements, facet, value);\n },\n /**\n * Returns true if the facet contains exclusions or if a specific value is\n * excluded.\n *\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isExcludeRefined: function isExcludeRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsExcludes, facet, value);\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean} true if the facet is refined\n */\n isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(\n this.disjunctiveFacetsRefinements,\n facet,\n value\n );\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean} true if the facet is refined\n */\n isHierarchicalFacetRefined: function isHierarchicalFacetRefined(\n facet,\n value\n ) {\n if (!this.isHierarchicalFacet(facet)) {\n return false;\n }\n\n var refinements = this.getHierarchicalRefinement(facet);\n\n if (!value) {\n return refinements.length > 0;\n }\n\n return refinements.indexOf(value) !== -1;\n },\n /**\n * Test if the triple (attribute, operator, value) is already refined.\n * If only the attribute and the operator are provided, it tests if the\n * contains any refinement value.\n * @method\n * @param {string} attribute attribute for which the refinement is applied\n * @param {string} [operator] operator of the refinement\n * @param {string} [value] value of the refinement\n * @return {boolean} true if it is refined\n */\n isNumericRefined: function isNumericRefined(attribute, operator, value) {\n if (value === undefined && operator === undefined) {\n return Boolean(this.numericRefinements[attribute]);\n }\n\n var isOperatorDefined =\n this.numericRefinements[attribute] &&\n this.numericRefinements[attribute][operator] !== undefined;\n\n if (value === undefined || !isOperatorDefined) {\n return isOperatorDefined;\n }\n\n var parsedValue = valToNumber(value);\n var isAttributeValueDefined =\n findArray(this.numericRefinements[attribute][operator], parsedValue) !==\n undefined;\n\n return isOperatorDefined && isAttributeValueDefined;\n },\n /**\n * Returns true if the tag refined, false otherwise\n * @method\n * @param {string} tag the tag to check\n * @return {boolean} true if tag is refined\n */\n isTagRefined: function isTagRefined(tag) {\n return this.tagRefinements.indexOf(tag) !== -1;\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]} returns the list of refinements\n */\n getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // attributes used for numeric filter can also be disjunctive\n var disjunctiveNumericRefinedFacets = intersection(\n Object.keys(this.numericRefinements).filter(function (facet) {\n return Object.keys(self.numericRefinements[facet]).length > 0;\n }),\n this.disjunctiveFacets\n );\n\n return Object.keys(this.disjunctiveFacetsRefinements)\n .filter(function (facet) {\n return self.disjunctiveFacetsRefinements[facet].length > 0;\n })\n .concat(disjunctiveNumericRefinedFacets)\n .concat(this.getRefinedHierarchicalFacets())\n .sort();\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]} returns the list of refinements\n */\n getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n // eslint-disable-next-line consistent-this\n var self = this;\n return intersection(\n // enforce the order between the two arrays,\n // so that refinement name index === hierarchical facet index\n this.hierarchicalFacets.map(function (facet) {\n return facet.name;\n }),\n Object.keys(this.hierarchicalFacetsRefinements).filter(function (facet) {\n return self.hierarchicalFacetsRefinements[facet].length > 0;\n })\n ).sort();\n },\n /**\n * Returned the list of all disjunctive facets not refined\n * @method\n * @return {string[]} returns the list of facets that are not refined\n */\n getUnrefinedDisjunctiveFacets: function () {\n var refinedFacets = this.getRefinedDisjunctiveFacets();\n\n return this.disjunctiveFacets.filter(function (f) {\n return refinedFacets.indexOf(f) === -1;\n });\n },\n\n managedParameters: [\n 'index',\n\n 'facets',\n 'disjunctiveFacets',\n 'facetsRefinements',\n 'hierarchicalFacets',\n 'facetsExcludes',\n\n 'disjunctiveFacetsRefinements',\n 'numericRefinements',\n 'tagRefinements',\n 'hierarchicalFacetsRefinements',\n ],\n\n getQueryParams: function getQueryParams() {\n var managedParameters = this.managedParameters;\n\n var queryParams = {};\n\n // eslint-disable-next-line consistent-this\n var self = this;\n Object.keys(this).forEach(function (paramName) {\n var paramValue = self[paramName];\n if (\n managedParameters.indexOf(paramName) === -1 &&\n paramValue !== undefined\n ) {\n queryParams[paramName] = paramValue;\n }\n });\n\n return queryParams;\n },\n /**\n * Let the user set a specific value for a given parameter. Will return the\n * same instance if the parameter is invalid or if the value is the same as the\n * previous one.\n * @method\n * @param {string} parameter the parameter name\n * @param {any} value the value to be set, must be compliant with the definition\n * of the attribute on the object\n * @return {SearchParameters} the updated state\n */\n setQueryParameter: function setParameter(parameter, value) {\n if (this[parameter] === value) return this;\n\n var modification = {};\n\n modification[parameter] = value;\n\n return this.setQueryParameters(modification);\n },\n /**\n * Let the user set any of the parameters with a plain object.\n * @method\n * @param {object} params all the keys and the values to be updated\n * @return {SearchParameters} a new updated instance\n */\n setQueryParameters: function setQueryParameters(params) {\n if (!params) return this;\n\n var error = SearchParameters.validate(this, params);\n\n if (error) {\n throw error;\n }\n\n // eslint-disable-next-line consistent-this\n var self = this;\n var nextWithNumbers = SearchParameters._parseNumbers(params);\n var previousPlainObject = Object.keys(this).reduce(function (acc, key) {\n acc[key] = self[key];\n return acc;\n }, {});\n\n var nextPlainObject = Object.keys(nextWithNumbers).reduce(function (\n previous,\n key\n ) {\n var isPreviousValueDefined = previous[key] !== undefined;\n var isNextValueDefined = nextWithNumbers[key] !== undefined;\n\n if (isPreviousValueDefined && !isNextValueDefined) {\n return omit(previous, [key]);\n }\n\n if (isNextValueDefined) {\n previous[key] = nextWithNumbers[key];\n }\n\n return previous;\n },\n previousPlainObject);\n\n return new this.constructor(nextPlainObject);\n },\n\n /**\n * Returns a new instance with the page reset. Two scenarios possible:\n * the page is omitted -> return the given instance\n * the page is set -> return a new instance with a page of 0\n * @return {SearchParameters} a new updated instance\n */\n resetPage: function () {\n if (this.page === undefined) {\n return this;\n }\n\n return this.setPage(0);\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @param {object} hierarchicalFacet the hierarchicalFacet object\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSortBy: function (hierarchicalFacet) {\n return hierarchicalFacet.sortBy || ['isRefined:desc', 'name:asc'];\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @private\n * @param {object} hierarchicalFacet the hierarchicalFacet object\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSeparator: function (hierarchicalFacet) {\n return hierarchicalFacet.separator || ' > ';\n },\n\n /**\n * Helper function to get the hierarchicalFacet prefix path or null\n * @private\n * @param {object} hierarchicalFacet the hierarchicalFacet object\n * @return {string} returns the hierarchicalFacet.rootPath or null as default\n */\n _getHierarchicalRootPath: function (hierarchicalFacet) {\n return hierarchicalFacet.rootPath || null;\n },\n\n /**\n * Helper function to check if we show the parent level of the hierarchicalFacet\n * @private\n * @param {object} hierarchicalFacet the hierarchicalFacet object\n * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n */\n _getHierarchicalShowParentLevel: function (hierarchicalFacet) {\n if (typeof hierarchicalFacet.showParentLevel === 'boolean') {\n return hierarchicalFacet.showParentLevel;\n }\n return true;\n },\n\n /**\n * Helper function to get the hierarchicalFacet by it's name\n * @param {string} hierarchicalFacetName the hierarchicalFacet name\n * @return {object} a hierarchicalFacet\n */\n getHierarchicalFacetByName: function (hierarchicalFacetName) {\n return find(this.hierarchicalFacets, function (f) {\n return f.name === hierarchicalFacetName;\n });\n },\n\n /**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.<string>} the path as an array of string\n */\n getHierarchicalFacetBreadcrumb: function (facetName) {\n if (!this.isHierarchicalFacet(facetName)) {\n return [];\n }\n\n var refinement = this.getHierarchicalRefinement(facetName)[0];\n if (!refinement) return [];\n\n var separator = this._getHierarchicalFacetSeparator(\n this.getHierarchicalFacetByName(facetName)\n );\n var path = refinement.split(separator);\n return path.map(function (part) {\n return part.trim();\n });\n },\n\n toString: function () {\n return JSON.stringify(this, null, 2);\n },\n};\n\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */\nmodule.exports = SearchParameters;\n","'use strict';\n\nmodule.exports = generateTrees;\n\nvar fv = require('../functions/escapeFacetValue');\nvar find = require('../functions/find');\nvar prepareHierarchicalFacetSortBy = require('../functions/formatSort');\nvar orderBy = require('../functions/orderBy');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nfunction generateTrees(state) {\n return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n var hierarchicalFacetRefinement =\n (state.hierarchicalFacetsRefinements[hierarchicalFacet.name] &&\n state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0]) ||\n '';\n var hierarchicalSeparator =\n state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var hierarchicalRootPath =\n state._getHierarchicalRootPath(hierarchicalFacet);\n var hierarchicalShowParentLevel =\n state._getHierarchicalShowParentLevel(hierarchicalFacet);\n var sortBy = prepareHierarchicalFacetSortBy(\n state._getHierarchicalFacetSortBy(hierarchicalFacet)\n );\n\n var rootExhaustive = hierarchicalFacetResult.every(function (facetResult) {\n return facetResult.exhaustive;\n });\n\n var generateTreeFn = generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n hierarchicalFacetRefinement\n );\n\n var results = hierarchicalFacetResult;\n\n if (hierarchicalRootPath) {\n results = hierarchicalFacetResult.slice(\n hierarchicalRootPath.split(hierarchicalSeparator).length\n );\n }\n\n return results.reduce(generateTreeFn, {\n name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n count: null, // root level, no count\n isRefined: true, // root level, always refined\n path: null, // root level, no path\n escapedValue: null,\n exhaustive: rootExhaustive,\n data: null,\n });\n };\n}\n\nfunction generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n currentRefinement\n) {\n return function generateTree(\n hierarchicalTree,\n hierarchicalFacetResult,\n currentHierarchicalLevel\n ) {\n var parent = hierarchicalTree;\n\n if (currentHierarchicalLevel > 0) {\n var level = 0;\n\n parent = hierarchicalTree;\n\n while (level < currentHierarchicalLevel) {\n /**\n * @type {object[]]} hierarchical data\n */\n var data = parent && Array.isArray(parent.data) ? parent.data : [];\n parent = find(data, function (subtree) {\n return subtree.isRefined;\n });\n level++;\n }\n }\n\n // we found a refined parent, let's add current level data under it\n if (parent) {\n // filter values in case an object has multiple categories:\n // {\n // categories: {\n // level0: ['beers', 'bières'],\n // level1: ['beers > IPA', 'bières > Belges']\n // }\n // }\n //\n // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n // showing up\n\n var picked = Object.keys(hierarchicalFacetResult.data)\n .map(function (facetValue) {\n return [facetValue, hierarchicalFacetResult.data[facetValue]];\n })\n .filter(function (tuple) {\n var facetValue = tuple[0];\n return onlyMatchingTree(\n facetValue,\n parent.path || hierarchicalRootPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n );\n });\n\n parent.data = orderBy(\n picked.map(function (tuple) {\n var facetValue = tuple[0];\n var facetCount = tuple[1];\n\n return format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n unescapeFacetValue(currentRefinement),\n hierarchicalFacetResult.exhaustive\n );\n }),\n sortBy[0],\n sortBy[1]\n );\n }\n\n return hierarchicalTree;\n };\n}\n\n// eslint-disable-next-line max-params\nfunction onlyMatchingTree(\n facetValue,\n parentPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n) {\n // we want the facetValue is a child of hierarchicalRootPath\n if (\n hierarchicalRootPath &&\n (facetValue.indexOf(hierarchicalRootPath) !== 0 ||\n hierarchicalRootPath === facetValue)\n ) {\n return false;\n }\n\n // we always want root levels (only when there is no prefix path)\n return (\n (!hierarchicalRootPath &&\n facetValue.indexOf(hierarchicalSeparator) === -1) ||\n // if there is a rootPath, being root level mean 1 level under rootPath\n (hierarchicalRootPath &&\n facetValue.split(hierarchicalSeparator).length -\n hierarchicalRootPath.split(hierarchicalSeparator).length ===\n 1) ||\n // if current refinement is a root level and current facetValue is a root level,\n // keep the facetValue\n (facetValue.indexOf(hierarchicalSeparator) === -1 &&\n currentRefinement.indexOf(hierarchicalSeparator) === -1) ||\n // currentRefinement is a child of the facet value\n currentRefinement.indexOf(facetValue) === 0 ||\n // facetValue is a child of the current parent, add it\n (facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 &&\n (hierarchicalShowParentLevel ||\n facetValue.indexOf(currentRefinement) === 0))\n );\n}\n\nfunction format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n currentRefinement,\n exhaustive\n) {\n var parts = facetValue.split(hierarchicalSeparator);\n return {\n name: parts[parts.length - 1].trim(),\n path: facetValue,\n escapedValue: escapeFacetValue(facetValue),\n count: facetCount,\n isRefined:\n currentRefinement === facetValue ||\n currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n exhaustive: exhaustive,\n data: null,\n };\n}\n","'use strict';\n\nvar compact = require('../functions/compact');\nvar defaultsPure = require('../functions/defaultsPure');\nvar fv = require('../functions/escapeFacetValue');\nvar find = require('../functions/find');\nvar findIndex = require('../functions/findIndex');\nvar formatSort = require('../functions/formatSort');\nvar merge = require('../functions/merge');\nvar orderBy = require('../functions/orderBy');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nvar generateHierarchicalTree = require('./generate-hierarchical-tree');\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */\n\n/**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */\n\n/**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */\n\n/**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */\n\n/**\n * Turn an array of attributes in an object of attributes with their position in the array as value\n * @param {string[]} attributes the list of attributes in the record\n * @return {object} the list of attributes indexed by attribute name\n */\nfunction getIndices(attributes) {\n var indices = {};\n\n attributes.forEach(function (val, idx) {\n indices[val] = idx;\n });\n\n return indices;\n}\n\nfunction assignFacetStats(dest, facetStats, key) {\n if (facetStats && facetStats[key]) {\n dest.stats = facetStats[key];\n }\n}\n\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */\n\n/**\n * @param {HierarchicalFacet[]} hierarchicalFacets All hierarchical facets\n * @param {string} hierarchicalAttributeName The name of the hierarchical attribute\n * @return {HierarchicalFacet} The hierarchical facet matching the attribute name\n */\nfunction findMatchingHierarchicalFacetFromAttributeName(\n hierarchicalFacets,\n hierarchicalAttributeName\n) {\n return find(\n hierarchicalFacets,\n function facetKeyMatchesAttribute(hierarchicalFacet) {\n var facetNames = hierarchicalFacet.attributes || [];\n return facetNames.indexOf(hierarchicalAttributeName) > -1;\n }\n );\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.<object>} results the results from algolia client\n * @example <caption>SearchResults of the first query in\n * <a href=\"http://demos.algolia.com/instant-search-demo\">the instant search demo</a></caption>\n{\n \"hitsPerPage\": 10,\n \"processingTimeMS\": 2,\n \"facets\": [\n {\n \"name\": \"type\",\n \"data\": {\n \"HardGood\": 6627,\n \"BlackTie\": 550,\n \"Music\": 665,\n \"Software\": 131,\n \"Game\": 456,\n \"Movie\": 1571\n },\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"Free shipping\": 5507\n },\n \"name\": \"shipping\"\n }\n ],\n \"hits\": [\n {\n \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n \"_highlightResult\": {\n \"shortDescription\": {\n \"matchLevel\": \"none\",\n \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"matchedWords\": []\n },\n \"category\": {\n \"matchLevel\": \"none\",\n \"value\": \"Computer Security Software\",\n \"matchedWords\": []\n },\n \"manufacturer\": {\n \"matchedWords\": [],\n \"value\": \"Webroot\",\n \"matchLevel\": \"none\"\n },\n \"name\": {\n \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"matchedWords\": [],\n \"matchLevel\": \"none\"\n }\n },\n \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n \"shipping\": \"Free shipping\",\n \"bestSellingRank\": 4,\n \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"category\": \"Computer Security Software\",\n \"salePrice_range\": \"1 - 50\",\n \"objectID\": \"1688832\",\n \"type\": \"Software\",\n \"customerReviewCount\": 5980,\n \"salePrice\": 49.99,\n \"manufacturer\": \"Webroot\"\n },\n ....\n ],\n \"nbHits\": 10000,\n \"disjunctiveFacets\": [\n {\n \"exhaustive\": false,\n \"data\": {\n \"5\": 183,\n \"12\": 112,\n \"7\": 149,\n ...\n },\n \"name\": \"customerReviewCount\",\n \"stats\": {\n \"max\": 7461,\n \"avg\": 157.939,\n \"min\": 1\n }\n },\n {\n \"data\": {\n \"Printer Ink\": 142,\n \"Wireless Speakers\": 60,\n \"Point & Shoot Cameras\": 48,\n ...\n },\n \"name\": \"category\",\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"> 5000\": 2,\n \"1 - 50\": 6524,\n \"501 - 2000\": 566,\n \"201 - 500\": 1501,\n \"101 - 200\": 1360,\n \"2001 - 5000\": 47\n },\n \"name\": \"salePrice_range\"\n },\n {\n \"data\": {\n \"Dynex™\": 202,\n \"Insignia™\": 230,\n \"PNY\": 72,\n ...\n },\n \"name\": \"manufacturer\",\n \"exhaustive\": false\n }\n ],\n \"query\": \"\",\n \"nbPages\": 100,\n \"page\": 0,\n \"index\": \"bestbuy\"\n}\n **/\nfunction SearchResults(state, results, options) {\n var mainSubResponse = results[0];\n\n this._rawResults = results;\n\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n Object.keys(mainSubResponse).forEach(function (key) {\n self[key] = mainSubResponse[key];\n });\n\n // Make every key of the result options reachable from the instance\n Object.keys(options || {}).forEach(function (key) {\n self[key] = options[key];\n });\n\n /**\n * query used to generate the results\n * @name query\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The query as parsed by the engine given all the rules.\n * @name parsedQuery\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * all the records that match the search parameters. Each record is\n * augmented with a new attribute `_highlightResult`\n * which is an object keyed by attribute and with the following properties:\n * - `value` : the value of the facet highlighted (html)\n * - `matchLevel`: `full`, `partial` or `none`, depending on how the query terms match\n * @name hits\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * index where the results come from\n * @name index\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * number of hits per page requested\n * @name hitsPerPage\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of hits of this query on the index\n * @name nbHits\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of pages with respect to the number of hits per page and the total number of hits\n * @name nbPages\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * current page\n * @name page\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The position if the position was guessed by IP.\n * @name aroundLatLng\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"48.8637,2.3615\",\n */\n /**\n * The radius computed by Algolia.\n * @name automaticRadius\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"126792922\",\n */\n /**\n * String identifying the server used to serve this request.\n *\n * getRankingInfo needs to be set to `true` for this to be returned\n *\n * @name serverUsed\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"c7-use-2.algolia.net\",\n */\n /**\n * Boolean that indicates if the computation of the counts did time out.\n * @deprecated\n * @name timeoutCounts\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Boolean that indicates if the computation of the hits did time out.\n * @deprecated\n * @name timeoutHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the counts of the facets is exhaustive\n * @name exhaustiveFacetsCount\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the number of hits is exhaustive\n * @name exhaustiveNbHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n * @name userData\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * queryID is the unique identifier of the query used to generate the current search results.\n * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n * @name queryID\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n\n /**\n * sum of the processing time of all the queries\n * @name processingTimeMS\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n this.processingTimeMS = results.reduce(function (sum, result) {\n return result.processingTimeMS === undefined\n ? sum\n : sum + result.processingTimeMS;\n }, 0);\n\n /**\n * disjunctive facets results\n * @member {SearchResults.Facet[]}\n */\n this.disjunctiveFacets = [];\n /**\n * disjunctive facets results\n * @member {SearchResults.HierarchicalFacet[]}\n */\n this.hierarchicalFacets = state.hierarchicalFacets.map(\n function initFutureTree() {\n return [];\n }\n );\n /**\n * other facets results\n * @member {SearchResults.Facet[]}\n */\n this.facets = [];\n\n var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n\n var facetsIndices = getIndices(state.facets);\n var disjunctiveFacetsIndices = getIndices(state.disjunctiveFacets);\n var nextDisjunctiveResult = 1;\n\n // Since we send request only for disjunctive facets that have been refined,\n // we get the facets information from the first, general, response.\n\n var mainFacets = mainSubResponse.facets || {};\n\n Object.keys(mainFacets).forEach(function (facetKey) {\n var facetValueObject = mainFacets[facetKey];\n\n var hierarchicalFacet = findMatchingHierarchicalFacetFromAttributeName(\n state.hierarchicalFacets,\n facetKey\n );\n\n if (hierarchicalFacet) {\n // Place the hierarchicalFacet data at the correct index depending on\n // the attributes order that was defined at the helper initialization\n var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n var idxAttributeName = findIndex(state.hierarchicalFacets, function (f) {\n return f.name === hierarchicalFacet.name;\n });\n self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n attribute: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount,\n };\n } else {\n var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n var position;\n\n if (isFacetDisjunctive) {\n position = disjunctiveFacetsIndices[facetKey];\n self.disjunctiveFacets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount,\n };\n assignFacetStats(\n self.disjunctiveFacets[position],\n mainSubResponse.facets_stats,\n facetKey\n );\n }\n if (isFacetConjunctive) {\n position = facetsIndices[facetKey];\n self.facets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount,\n };\n assignFacetStats(\n self.facets[position],\n mainSubResponse.facets_stats,\n facetKey\n );\n }\n }\n });\n\n // Make sure we do not keep holes within the hierarchical facets\n this.hierarchicalFacets = compact(this.hierarchicalFacets);\n\n // aggregate the refined disjunctive facets\n disjunctiveFacets.forEach(function (disjunctiveFacet) {\n var result = results[nextDisjunctiveResult];\n var facets = result && result.facets ? result.facets : {};\n var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n\n // There should be only item in facets.\n Object.keys(facets).forEach(function (dfacet) {\n var facetResults = facets[dfacet];\n\n var position;\n\n if (hierarchicalFacet) {\n position = findIndex(state.hierarchicalFacets, function (f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(\n self.hierarchicalFacets[position],\n function (f) {\n return f.attribute === dfacet;\n }\n );\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = merge(\n {},\n self.hierarchicalFacets[position][attributeIndex].data,\n facetResults\n );\n } else {\n position = disjunctiveFacetsIndices[dfacet];\n\n var dataFromMainRequest =\n (mainSubResponse.facets && mainSubResponse.facets[dfacet]) || {};\n\n self.disjunctiveFacets[position] = {\n name: dfacet,\n data: defaultsPure({}, facetResults, dataFromMainRequest),\n exhaustive: result.exhaustiveFacetsCount,\n };\n assignFacetStats(\n self.disjunctiveFacets[position],\n result.facets_stats,\n dfacet\n );\n\n if (state.disjunctiveFacetsRefinements[dfacet]) {\n state.disjunctiveFacetsRefinements[dfacet].forEach(function (\n refinementValue\n ) {\n // add the disjunctive refinements if it is no more retrieved\n if (\n !self.disjunctiveFacets[position].data[refinementValue] &&\n state.disjunctiveFacetsRefinements[dfacet].indexOf(\n unescapeFacetValue(refinementValue)\n ) > -1\n ) {\n self.disjunctiveFacets[position].data[refinementValue] = 0;\n }\n });\n }\n }\n });\n nextDisjunctiveResult++;\n });\n\n // if we have some parent level values for hierarchical facets, merge them\n state.getRefinedHierarchicalFacets().forEach(function (refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n // if we are already at a root refinement (or no refinement at all), there is no\n // root level values request\n if (\n currentRefinement.length === 0 ||\n currentRefinement[0].split(separator).length < 2\n ) {\n return;\n }\n\n results.slice(nextDisjunctiveResult).forEach(function (result) {\n var facets = result && result.facets ? result.facets : {};\n\n Object.keys(facets).forEach(function (dfacet) {\n var facetResults = facets[dfacet];\n var position = findIndex(state.hierarchicalFacets, function (f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(\n self.hierarchicalFacets[position],\n function (f) {\n return f.attribute === dfacet;\n }\n );\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n // then the disjunctive values will be `beers` (count: 100),\n // but we do not want to display\n // | beers (100)\n // > IPA (5)\n // We want\n // | beers (5)\n // > IPA (5)\n var defaultData = {};\n\n if (currentRefinement.length > 0) {\n var root = currentRefinement[0].split(separator)[0];\n defaultData[root] =\n self.hierarchicalFacets[position][attributeIndex].data[root];\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(\n defaultData,\n facetResults,\n self.hierarchicalFacets[position][attributeIndex].data\n );\n });\n\n nextDisjunctiveResult++;\n });\n });\n\n // add the excludes\n Object.keys(state.facetsExcludes).forEach(function (facetName) {\n var excludes = state.facetsExcludes[facetName];\n var position = facetsIndices[facetName];\n\n self.facets[position] = {\n name: facetName,\n data: mainFacets[facetName],\n exhaustive: mainSubResponse.exhaustiveFacetsCount,\n };\n excludes.forEach(function (facetValue) {\n self.facets[position] = self.facets[position] || { name: facetName };\n self.facets[position].data = self.facets[position].data || {};\n self.facets[position].data[facetValue] = 0;\n });\n });\n\n /**\n * @type {Array}\n */\n this.hierarchicalFacets = this.hierarchicalFacets.map(\n generateHierarchicalTree(state)\n );\n\n /**\n * @type {Array}\n */\n this.facets = compact(this.facets);\n /**\n * @type {Array}\n */\n this.disjunctiveFacets = compact(this.disjunctiveFacets);\n\n this._state = state;\n}\n\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */\nSearchResults.prototype.getFacetByName = function (name) {\n function predicate(facet) {\n return facet.name === name;\n }\n\n return (\n find(this.facets, predicate) ||\n find(this.disjunctiveFacets, predicate) ||\n find(this.hierarchicalFacets, predicate)\n );\n};\n\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */\nfunction extractNormalizedFacetValues(results, attribute) {\n function predicate(facet) {\n return facet.name === attribute;\n }\n\n if (results._state.isConjunctiveFacet(attribute)) {\n var facet = find(results.facets, predicate);\n if (!facet) return [];\n\n return Object.keys(facet.data).map(function (name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: facet.data[name],\n isRefined: results._state.isFacetRefined(attribute, value),\n isExcluded: results._state.isExcludeRefined(attribute, name),\n };\n });\n } else if (results._state.isDisjunctiveFacet(attribute)) {\n var disjunctiveFacet = find(results.disjunctiveFacets, predicate);\n if (!disjunctiveFacet) return [];\n\n return Object.keys(disjunctiveFacet.data).map(function (name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: disjunctiveFacet.data[name],\n isRefined: results._state.isDisjunctiveFacetRefined(attribute, value),\n };\n });\n } else if (results._state.isHierarchicalFacet(attribute)) {\n var hierarchicalFacetValues = find(results.hierarchicalFacets, predicate);\n if (!hierarchicalFacetValues) return hierarchicalFacetValues;\n\n var hierarchicalFacet =\n results._state.getHierarchicalFacetByName(attribute);\n var separator =\n results._state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var currentRefinement = unescapeFacetValue(\n results._state.getHierarchicalRefinement(attribute)[0] || ''\n );\n\n if (currentRefinement.indexOf(hierarchicalFacet.rootPath) === 0) {\n currentRefinement = currentRefinement.replace(\n hierarchicalFacet.rootPath + separator,\n ''\n );\n }\n\n var currentRefinementSplit = currentRefinement.split(separator);\n currentRefinementSplit.unshift(attribute);\n\n setIsRefined(hierarchicalFacetValues, currentRefinementSplit, 0);\n\n return hierarchicalFacetValues;\n }\n\n return undefined;\n}\n\n/**\n * Set the isRefined of a hierarchical facet result based on the current state.\n * @param {SearchResults.HierarchicalFacet} item Hierarchical facet to fix\n * @param {string[]} currentRefinement array of parts of the current hierarchical refinement\n * @param {number} depth recursion depth in the currentRefinement\n * @return {undefined} function mutates the item\n */\nfunction setIsRefined(item, currentRefinement, depth) {\n item.isRefined = item.name === currentRefinement[depth];\n if (item.data) {\n item.data.forEach(function (child) {\n setIsRefined(child, currentRefinement, depth + 1);\n });\n }\n}\n\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn sort function to apply\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n * @return {HierarchicalFacet|Array} sorted node\n */\nfunction recSort(sortFn, node, names, level) {\n level = level || 0;\n\n if (Array.isArray(node)) {\n return sortFn(node, names[level]);\n }\n\n if (!node.data || node.data.length === 0) {\n return node;\n }\n\n var children = node.data.map(function (childNode) {\n return recSort(sortFn, childNode, names, level + 1);\n });\n var sortedChildren = sortFn(children, names[level]);\n var newNode = defaultsPure({ data: sortedChildren }, node);\n return newNode;\n}\n\nSearchResults.DEFAULT_SORT = ['isRefined:desc', 'count:desc', 'name:asc'];\n\nfunction vanillaSortFn(order, data) {\n return data.sort(order);\n}\n\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */\n\n/**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array} the sorted facet values\n */\nfunction sortViaFacetOrdering(facetValues, facetOrdering) {\n var orderedFacets = [];\n var remainingFacets = [];\n\n var order = facetOrdering.order || [];\n /**\n * an object with the keys being the values in order, the values their index:\n * ['one', 'two'] -> { one: 0, two: 1 }\n */\n var reverseOrder = order.reduce(function (acc, name, i) {\n acc[name] = i;\n return acc;\n }, {});\n\n facetValues.forEach(function (item) {\n // hierarchical facets get sorted using their raw name\n var name = item.path || item.name;\n if (reverseOrder[name] !== undefined) {\n orderedFacets[reverseOrder[name]] = item;\n } else {\n remainingFacets.push(item);\n }\n });\n\n orderedFacets = orderedFacets.filter(function (facet) {\n return facet;\n });\n\n var sortRemainingBy = facetOrdering.sortRemainingBy;\n var ordering;\n if (sortRemainingBy === 'hidden') {\n return orderedFacets;\n } else if (sortRemainingBy === 'alpha') {\n ordering = [\n ['path', 'name'],\n ['asc', 'asc'],\n ];\n } else {\n ordering = [['count'], ['desc']];\n }\n\n return orderedFacets.concat(\n orderBy(remainingFacets, ordering[0], ordering[1])\n );\n}\n\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering | undefined} the facet ordering\n */\nfunction getFacetOrdering(results, attribute) {\n return (\n results.renderingContent &&\n results.renderingContent.facetOrdering &&\n results.renderingContent.facetOrdering.values &&\n results.renderingContent.facetOrdering.values[attribute]\n );\n}\n\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array.<string> | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending. This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n * //get values ordered only by name ascending using the string predicate\n * event.results.getFacetValues('city', {sortBy: ['name:asc']});\n * //get values ordered only by count ascending using a function\n * event.results.getFacetValues('city', {\n * // this is equivalent to ['count:asc']\n * sortBy: function(a, b) {\n * if (a.count === b.count) return 0;\n * if (a.count > b.count) return 1;\n * if (b.count > a.count) return -1;\n * }\n * });\n * });\n */\nSearchResults.prototype.getFacetValues = function (attribute, opts) {\n var facetValues = extractNormalizedFacetValues(this, attribute);\n if (!facetValues) {\n return undefined;\n }\n\n var options = defaultsPure({}, opts, {\n sortBy: SearchResults.DEFAULT_SORT,\n // if no sortBy is given, attempt to sort based on facetOrdering\n // if it is given, we still allow to sort via facet ordering first\n facetOrdering: !(opts && opts.sortBy),\n });\n\n // eslint-disable-next-line consistent-this\n var results = this;\n var attributes;\n if (Array.isArray(facetValues)) {\n attributes = [attribute];\n } else {\n var config = results._state.getHierarchicalFacetByName(facetValues.name);\n attributes = config.attributes;\n }\n\n return recSort(\n function (data, facetName) {\n if (options.facetOrdering) {\n var facetOrdering = getFacetOrdering(results, facetName);\n if (facetOrdering) {\n return sortViaFacetOrdering(data, facetOrdering);\n }\n }\n\n if (Array.isArray(options.sortBy)) {\n var order = formatSort(options.sortBy, SearchResults.DEFAULT_SORT);\n return orderBy(data, order[0], order[1]);\n } else if (typeof options.sortBy === 'function') {\n return vanillaSortFn(options.sortBy, data);\n }\n throw new Error(\n 'options.sortBy is optional but if defined it must be ' +\n 'either an array of string (predicates) or a sorting function'\n );\n },\n facetValues,\n attributes\n );\n};\n\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */\nSearchResults.prototype.getFacetStats = function (attribute) {\n if (this._state.isConjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.facets, attribute);\n } else if (this._state.isDisjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n }\n\n return undefined;\n};\n\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */\n\n/**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName The attribute to look for\n * @return {object|undefined} The stats of the facet\n */\nfunction getFacetStatsIfAvailable(facetList, facetName) {\n var data = find(facetList, function (facet) {\n return facet.name === facetName;\n });\n return data && data.stats;\n}\n\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.<Refinement>} all the refinements\n */\nSearchResults.prototype.getRefinements = function () {\n var state = this._state;\n // eslint-disable-next-line consistent-this\n var results = this;\n var res = [];\n\n Object.keys(state.facetsRefinements).forEach(function (attributeName) {\n state.facetsRefinements[attributeName].forEach(function (name) {\n res.push(\n getRefinement(state, 'facet', attributeName, name, results.facets)\n );\n });\n });\n\n Object.keys(state.facetsExcludes).forEach(function (attributeName) {\n state.facetsExcludes[attributeName].forEach(function (name) {\n res.push(\n getRefinement(state, 'exclude', attributeName, name, results.facets)\n );\n });\n });\n\n Object.keys(state.disjunctiveFacetsRefinements).forEach(function (\n attributeName\n ) {\n state.disjunctiveFacetsRefinements[attributeName].forEach(function (name) {\n res.push(\n getRefinement(\n state,\n 'disjunctive',\n attributeName,\n name,\n results.disjunctiveFacets\n )\n );\n });\n });\n\n Object.keys(state.hierarchicalFacetsRefinements).forEach(function (\n attributeName\n ) {\n state.hierarchicalFacetsRefinements[attributeName].forEach(function (name) {\n res.push(\n getHierarchicalRefinement(\n state,\n attributeName,\n name,\n results.hierarchicalFacets\n )\n );\n });\n });\n\n Object.keys(state.numericRefinements).forEach(function (attributeName) {\n var operators = state.numericRefinements[attributeName];\n Object.keys(operators).forEach(function (operator) {\n operators[operator].forEach(function (value) {\n res.push({\n type: 'numeric',\n attributeName: attributeName,\n name: value,\n numericValue: value,\n operator: operator,\n });\n });\n });\n });\n\n state.tagRefinements.forEach(function (name) {\n res.push({ type: 'tag', attributeName: '_tags', name: name });\n });\n\n return res;\n};\n\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */\n\n/**\n * @param {SearchParameters} state the current state\n * @param {string} type the type of the refinement\n * @param {string} attributeName The attribute of the facet\n * @param {*} name The name of the facet\n * @param {Facet[]} resultsFacets facets from the results\n * @return {Refinement} the refinement\n */\nfunction getRefinement(state, type, attributeName, name, resultsFacets) {\n var facet = find(resultsFacets, function (f) {\n return f.name === attributeName;\n });\n var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n\n return {\n type: type,\n attributeName: attributeName,\n name: name,\n count: count,\n exhaustive: exhaustive,\n };\n}\n\n/**\n * @param {SearchParameters} state the current state\n * @param {string} attributeName the attribute of the hierarchical facet\n * @param {string} name the name of the facet\n * @param {Facet[]} resultsFacets facets from the results\n * @return {HierarchicalFacet} the hierarchical facet\n */\nfunction getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n var split = name.split(separator);\n var rootFacet = find(resultsFacets, function (facet) {\n return facet.name === attributeName;\n });\n\n var facet = split.reduce(function (intermediateFacet, part) {\n var newFacet =\n intermediateFacet &&\n find(intermediateFacet.data, function (f) {\n return f.name === part;\n });\n return newFacet !== undefined ? newFacet : intermediateFacet;\n }, rootFacet);\n\n var count = (facet && facet.count) || 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n var path = (facet && facet.path) || '';\n\n return {\n type: 'hierarchical',\n attributeName: attributeName,\n name: path,\n count: count,\n exhaustive: exhaustive,\n };\n}\n\nmodule.exports = SearchResults;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\n\nvar DerivedHelper = require('./DerivedHelper');\nvar escapeFacetValue = require('./functions/escapeFacetValue').escapeFacetValue;\nvar inherits = require('./functions/inherits');\nvar merge = require('./functions/merge');\nvar objectHasKeys = require('./functions/objectHasKeys');\nvar omit = require('./functions/omit');\nvar requestBuilder = require('./requestBuilder');\nvar SearchParameters = require('./SearchParameters');\nvar SearchResults = require('./SearchResults');\nvar version = require('./version');\n\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n * console.log('The parameters have changed');\n * });\n */\n\n/**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n * console.log('Search sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n * console.log('searchForFacetValues sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n * console.log('searchOnce sent');\n * });\n */\n\n/**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n * console.log('Search results received');\n * });\n */\n\n/**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n * console.log('Houston we got a problem.');\n * });\n */\n\n/**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n * console.log('No more search pending');\n * // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */\n\n/**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n * - change: when the internal search state is changed.\n * This event contains a {@link SearchParameters} object and the\n * {@link SearchResults} of the last result if any.\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n * - error: when the response is an error. This event contains the error returned by the server.\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the index name to query\n * @param {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n */\nfunction AlgoliaSearchHelper(client, index, options) {\n if (typeof client.addAlgoliaAgent === 'function') {\n client.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n\n this.setClient(client);\n var opts = options || {};\n opts.index = index;\n this.state = SearchParameters.make(opts);\n this.lastResults = null;\n this._queryId = 0;\n this._lastQueryIdReceived = -1;\n this.derivedHelpers = [];\n this._currentNbQueries = 0;\n}\n\ninherits(AlgoliaSearchHelper, EventEmitter);\n\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.search = function () {\n this._search({ onlyWithDerivedHelpers: false });\n return this;\n};\n\nAlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function () {\n this._search({ onlyWithDerivedHelpers: true });\n return this;\n};\n\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */\nAlgoliaSearchHelper.prototype.getQuery = function () {\n var state = this.state;\n return requestBuilder._getHitsSearchParams(state);\n};\n\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [cb] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n * - content with a SearchResults\n * - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n * function(error, content, state) {\n * // if an error occurred it will be passed in error, otherwise its value is null\n * // content contains the results formatted as a SearchResults\n * // state is the instance of SearchParameters used for this search\n * });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n * .then(promiseHandler);\n *\n * function promiseHandler(res) {\n * // res contains\n * // {\n * // content : SearchResults\n * // state : SearchParameters (the one used for this specific search)\n * // }\n * }\n */\nAlgoliaSearchHelper.prototype.searchOnce = function (options, cb) {\n var tempState = !options\n ? this.state\n : this.state.setQueryParameters(options);\n var queries = requestBuilder._getQueries(tempState.index, tempState);\n // eslint-disable-next-line consistent-this\n var self = this;\n\n this._currentNbQueries++;\n\n this.emit('searchOnce', {\n state: tempState,\n });\n\n if (cb) {\n this.client\n .search(queries)\n .then(function (content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(null, new SearchResults(tempState, content.results), tempState);\n })\n .catch(function (err) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(err, null, tempState);\n });\n\n return undefined;\n }\n\n return this.client.search(queries).then(\n function (content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n return {\n content: new SearchResults(tempState, content.results),\n state: tempState,\n _originalResponse: content,\n };\n },\n function (e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n }\n );\n};\n\n/**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n * @deprecated answers is deprecated and will be replaced with new initiatives\n */\nAlgoliaSearchHelper.prototype.findAnswers = function (options) {\n // eslint-disable-next-line no-console\n console.warn('[algoliasearch-helper] answers is no longer supported');\n var state = this.state;\n var derivedHelper = this.derivedHelpers[0];\n if (!derivedHelper) {\n return Promise.resolve([]);\n }\n var derivedState = derivedHelper.getModifiedState(state);\n var data = merge(\n {\n attributesForPrediction: options.attributesForPrediction,\n nbHits: options.nbHits,\n },\n {\n params: omit(requestBuilder._getHitsSearchParams(derivedState), [\n 'attributesToSnippet',\n 'hitsPerPage',\n 'restrictSearchableAttributes',\n 'snippetEllipsisText',\n ]),\n }\n );\n\n var errorMessage =\n 'search for answers was called, but this client does not have a function client.initIndex(index).findAnswers';\n if (typeof this.client.initIndex !== 'function') {\n throw new Error(errorMessage);\n }\n var index = this.client.initIndex(derivedState.index);\n if (typeof index.findAnswers !== 'function') {\n throw new Error(errorMessage);\n }\n return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */\n\n/**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */\n\n/**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.<FacetSearchResult>} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForFacetValues = function (\n facet,\n query,\n maxFacetHits,\n userState\n) {\n var clientHasSFFV = typeof this.client.searchForFacetValues === 'function';\n var clientHasInitIndex = typeof this.client.initIndex === 'function';\n if (\n !clientHasSFFV &&\n !clientHasInitIndex &&\n typeof this.client.search !== 'function'\n ) {\n throw new Error(\n 'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'\n );\n }\n\n var state = this.state.setQueryParameters(userState || {});\n var isDisjunctive = state.isDisjunctiveFacet(facet);\n var algoliaQuery = requestBuilder.getSearchForFacetQuery(\n facet,\n query,\n maxFacetHits,\n state\n );\n\n this._currentNbQueries++;\n // eslint-disable-next-line consistent-this\n var self = this;\n var searchForFacetValuesPromise;\n // newer algoliasearch ^3.27.1 - ~4.0.0\n if (clientHasSFFV) {\n searchForFacetValuesPromise = this.client.searchForFacetValues([\n { indexName: state.index, params: algoliaQuery },\n ]);\n // algoliasearch < 3.27.1\n } else if (clientHasInitIndex) {\n searchForFacetValuesPromise = this.client\n .initIndex(state.index)\n .searchForFacetValues(algoliaQuery);\n // algoliasearch ~5.0.0\n } else {\n // @MAJOR only use client.search\n delete algoliaQuery.facetName;\n searchForFacetValuesPromise = this.client\n .search([\n {\n type: 'facet',\n facet: facet,\n indexName: state.index,\n params: algoliaQuery,\n },\n ])\n .then(function processResponse(response) {\n return response.results[0];\n });\n }\n\n this.emit('searchForFacetValues', {\n state: state,\n facet: facet,\n query: query,\n });\n\n return searchForFacetValuesPromise.then(\n function addIsRefined(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n content = Array.isArray(content) ? content[0] : content;\n\n content.facetHits.forEach(function (f) {\n f.escapedValue = escapeFacetValue(f.value);\n f.isRefined = isDisjunctive\n ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n : state.isFacetRefined(facet, f.escapedValue);\n });\n\n return content;\n },\n function (e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n }\n );\n};\n\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param {string} q the user query\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setQuery = function (q) {\n this._change({\n state: this.state.resetPage().setQuery(q),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n * return type === 'exclude' && attribute === 'category';\n * }).search();\n */\nAlgoliaSearchHelper.prototype.clearRefinements = function (name) {\n this._change({\n state: this.state.resetPage().clearRefinements(name),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.clearTags = function () {\n this._change({\n state: this.state.resetPage().clearTags(),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function (\n facet,\n value\n) {\n this._change({\n state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveRefine = function () {\n return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */\nAlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function (\n facet,\n path\n) {\n this._change({\n state: this.state.resetPage().addHierarchicalFacetRefinement(facet, path),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} operator the operator of the filter\n * @param {number} value the value of the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addNumericRefinement = function (\n attribute,\n operator,\n value\n) {\n this._change({\n state: this.state\n .resetPage()\n .addNumericRefinement(attribute, operator, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetRefinement = function (facet, value) {\n this._change({\n state: this.state.resetPage().addFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addRefine = function () {\n return this.addFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetExclusion = function (facet, value) {\n this._change({\n state: this.state.resetPage().addExcludeRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.addExclude = function () {\n return this.addFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTag = function (tag) {\n this._change({\n state: this.state.resetPage().addTagRefinement(tag),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n * - if the value is not provided, then all the numeric value will be removed for the\n * specified attribute/operator couple.\n * - if the operator is not provided either, then all the numeric filter on this attribute\n * will be removed.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} [operator] the operator of the filter\n * @param {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeNumericRefinement = function (\n attribute,\n operator,\n value\n) {\n this._change({\n state: this.state\n .resetPage()\n .removeNumericRefinement(attribute, operator, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function (\n facet,\n value\n) {\n this._change({\n state: this.state\n .resetPage()\n .removeDisjunctiveFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function () {\n return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function (\n facet\n) {\n this._change({\n state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetRefinement = function (facet, value) {\n this._change({\n state: this.state.resetPage().removeFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeRefine = function () {\n return this.removeFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetExclusion = function (facet, value) {\n this._change({\n state: this.state.resetPage().removeExcludeRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.removeExclude = function () {\n return this.removeFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTag = function (tag) {\n this._change({\n state: this.state.resetPage().removeTagRefinement(tag),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetExclusion = function (facet, value) {\n this._change({\n state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.toggleExclude = function () {\n return this.toggleFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefinement = function (facet, value) {\n return this.toggleFacetRefinement(facet, value);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetRefinement = function (facet, value) {\n this._change({\n state: this.state.resetPage().toggleFacetRefinement(facet, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefine = function () {\n return this.toggleFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleTag = function (tag) {\n this._change({\n state: this.state.resetPage().toggleTagRefinement(tag),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */\nAlgoliaSearchHelper.prototype.nextPage = function () {\n var page = this.state.page || 0;\n return this.setPage(page + 1);\n};\n\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */\nAlgoliaSearchHelper.prototype.previousPage = function () {\n var page = this.state.page || 0;\n return this.setPage(page - 1);\n};\n\n/**\n * @private\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @chainable\n * @fires change\n */\nfunction setCurrentPage(page) {\n if (page < 0) throw new Error('Page requested below 0.');\n\n this._change({\n state: this.state.setPage(page),\n isPageReset: false,\n });\n\n return this;\n}\n\n/**\n * Change the current page\n * @deprecated\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setCurrentPage = setCurrentPage;\n\n/**\n * Updates the current page.\n * @function\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setPage = setCurrentPage;\n\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setIndex = function (name) {\n this._change({\n state: this.state.resetPage().setIndex(name),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */\nAlgoliaSearchHelper.prototype.setQueryParameter = function (parameter, value) {\n this._change({\n state: this.state.resetPage().setQueryParameter(parameter, value),\n isPageReset: true,\n });\n\n return this;\n};\n\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setState = function (newState) {\n this._change({\n state: SearchParameters.make(newState),\n isPageReset: false,\n });\n\n return this;\n};\n\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n * @example\n * helper.on('change', function(state){\n * // In this function you might want to find a way to store the state in the url/history\n * updateYourURL(state)\n * })\n * window.onpopstate = function(event){\n * // This is naive though as you should check if the state is really defined etc.\n * helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n * }\n * @chainable\n */\nAlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent =\n function (newState) {\n this.state = new SearchParameters(newState);\n return this;\n };\n\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */\nAlgoliaSearchHelper.prototype.hasRefinements = function (attribute) {\n if (objectHasKeys(this.state.getNumericRefinements(attribute))) {\n return true;\n } else if (this.state.isConjunctiveFacet(attribute)) {\n return this.state.isFacetRefined(attribute);\n } else if (this.state.isDisjunctiveFacet(attribute)) {\n return this.state.isDisjunctiveFacetRefined(attribute);\n } else if (this.state.isHierarchicalFacet(attribute)) {\n return this.state.isHierarchicalFacetRefined(attribute);\n }\n\n // there's currently no way to know that the user did call `addNumericRefinement` at some point\n // thus we cannot distinguish if there once was a numeric refinement that was cleared\n // so we will return false in every other situations to be consistent\n // while what we should do here is throw because we did not find the attribute in any type\n // of refinement\n return false;\n};\n\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */\nAlgoliaSearchHelper.prototype.isExcluded = function (facet, value) {\n return this.state.isExcludeRefined(facet, value);\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */\nAlgoliaSearchHelper.prototype.isDisjunctiveRefined = function (facet, value) {\n return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean} true if the tag is currently refined\n */\nAlgoliaSearchHelper.prototype.hasTag = function (tag) {\n return this.state.isTagRefined(tag);\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */\nAlgoliaSearchHelper.prototype.isTagRefined = function () {\n return this.hasTagRefinements.apply(this, arguments);\n};\n\n/**\n * Get the name of the currently used index.\n * @return {string} name of the index\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */\nAlgoliaSearchHelper.prototype.getIndex = function () {\n return this.state.index;\n};\n\nfunction getCurrentPage() {\n return this.state.page;\n}\n\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getCurrentPage = getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getPage = getCurrentPage;\n\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */\nAlgoliaSearchHelper.prototype.getTags = function () {\n return this.state.tagRefinements;\n};\n\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.<FacetRefinement|NumericRefinement>} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * // {\n * // \"value\": [\n * // 100\n * // ],\n * // \"operator\": \">\",\n * // \"type\": \"numeric\"\n * // }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * // {\n * // \"value\": \"blue\",\n * // \"type\": \"conjunctive\"\n * // },\n * // {\n * // \"value\": \"red\",\n * // \"type\": \"exclude\"\n * // }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * // {\n * // \"value\": \"plastic\",\n * // \"type\": \"disjunctive\"\n * // }\n * // ]\n */\nAlgoliaSearchHelper.prototype.getRefinements = function (facetName) {\n var refinements = [];\n\n if (this.state.isConjunctiveFacet(facetName)) {\n var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n\n conjRefinements.forEach(function (r) {\n refinements.push({\n value: r,\n type: 'conjunctive',\n });\n });\n\n var excludeRefinements = this.state.getExcludeRefinements(facetName);\n\n excludeRefinements.forEach(function (r) {\n refinements.push({\n value: r,\n type: 'exclude',\n });\n });\n } else if (this.state.isDisjunctiveFacet(facetName)) {\n var disjunctiveRefinements =\n this.state.getDisjunctiveRefinements(facetName);\n\n disjunctiveRefinements.forEach(function (r) {\n refinements.push({\n value: r,\n type: 'disjunctive',\n });\n });\n }\n\n var numericRefinements = this.state.getNumericRefinements(facetName);\n\n Object.keys(numericRefinements).forEach(function (operator) {\n var value = numericRefinements[operator];\n\n refinements.push({\n value: value,\n operator: operator,\n type: 'numeric',\n });\n });\n\n return refinements;\n};\n\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.<number|number[]>} refined values\n */\nAlgoliaSearchHelper.prototype.getNumericRefinement = function (\n attribute,\n operator\n) {\n return this.state.getNumericRefinement(attribute, operator);\n};\n\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.<string>} the path as an array of string\n */\nAlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function (\n facetName\n) {\n return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n\n// /////////// PRIVATE\n\n/**\n * Perform the underlying queries\n * @private\n * @param {object} options options for the query\n * @param {boolean} [options.onlyWithDerivedHelpers=false] if true, only the derived helpers will be queried\n * @return {undefined} does not return anything\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._search = function (options) {\n var state = this.state;\n var states = [];\n var mainQueries = [];\n\n if (!options.onlyWithDerivedHelpers) {\n mainQueries = requestBuilder._getQueries(state.index, state);\n\n states.push({\n state: state,\n queriesCount: mainQueries.length,\n helper: this,\n });\n\n this.emit('search', {\n state: state,\n results: this.lastResults,\n });\n }\n\n var derivedQueries = this.derivedHelpers.map(function (derivedHelper) {\n var derivedState = derivedHelper.getModifiedState(state);\n var derivedStateQueries = derivedState.index\n ? requestBuilder._getQueries(derivedState.index, derivedState)\n : [];\n\n states.push({\n state: derivedState,\n queriesCount: derivedStateQueries.length,\n helper: derivedHelper,\n });\n\n derivedHelper.emit('search', {\n state: derivedState,\n results: derivedHelper.lastResults,\n });\n\n return derivedStateQueries;\n });\n\n var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n\n var queryId = this._queryId++;\n this._currentNbQueries++;\n\n if (!queries.length) {\n return Promise.resolve({ results: [] }).then(\n this._dispatchAlgoliaResponse.bind(this, states, queryId)\n );\n }\n\n try {\n this.client\n .search(queries)\n .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n .catch(this._dispatchAlgoliaError.bind(this, queryId));\n } catch (error) {\n // If we reach this part, we're in an internal error state\n this.emit('error', {\n error: error,\n });\n }\n\n return undefined;\n};\n\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>} states state used to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */\nAlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function (\n states,\n queryId,\n content\n) {\n // @TODO remove the number of outdated queries discarded instead of just one\n\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n this._lastQueryIdReceived = queryId;\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n\n var results = content.results.slice();\n\n states.forEach(function (s) {\n var state = s.state;\n var queriesCount = s.queriesCount;\n var helper = s.helper;\n var specificResults = results.splice(0, queriesCount);\n\n if (!state.index) {\n helper.emit('result', {\n results: null,\n state: state,\n });\n return;\n }\n\n helper.lastResults = new SearchResults(state, specificResults);\n\n helper.emit('result', {\n results: helper.lastResults,\n state: state,\n });\n });\n};\n\nAlgoliaSearchHelper.prototype._dispatchAlgoliaError = function (\n queryId,\n error\n) {\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n this._lastQueryIdReceived = queryId;\n\n this.emit('error', {\n error: error,\n });\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype.containsRefinement = function (\n query,\n facetFilters,\n numericFilters,\n tagFilters\n) {\n return (\n query ||\n facetFilters.length !== 0 ||\n numericFilters.length !== 0 ||\n tagFilters.length !== 0\n );\n};\n\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean} true if there are refinements on this attribute\n */\nAlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function (facet) {\n return (\n this.state.disjunctiveRefinements[facet] &&\n this.state.disjunctiveRefinements[facet].length > 0\n );\n};\n\nAlgoliaSearchHelper.prototype._change = function (event) {\n var state = event.state;\n var isPageReset = event.isPageReset;\n\n if (state !== this.state) {\n this.state = state;\n\n this.emit('change', {\n state: this.state,\n results: this.lastResults,\n isPageReset: isPageReset,\n });\n }\n};\n\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n */\nAlgoliaSearchHelper.prototype.clearCache = function () {\n if (this.client.clearCache) this.client.clearCache();\n return this;\n};\n\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper} Method is chainable, it returns itself\n */\nAlgoliaSearchHelper.prototype.setClient = function (newClient) {\n if (this.client === newClient) return this;\n\n if (typeof newClient.addAlgoliaAgent === 'function') {\n newClient.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n this.client = newClient;\n\n return this;\n};\n\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch} the currently used client\n */\nAlgoliaSearchHelper.prototype.getClient = function () {\n return this.client;\n};\n\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @return {DerivedHelper} a new DerivedHelper\n */\nAlgoliaSearchHelper.prototype.derive = function (fn) {\n var derivedHelper = new DerivedHelper(this, fn);\n this.derivedHelpers.push(derivedHelper);\n return derivedHelper;\n};\n\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @param {DerivedHelper} derivedHelper the derived helper to detach\n * @return {undefined} nothing is returned\n * @throws Error\n */\nAlgoliaSearchHelper.prototype.detachDerivedHelper = function (derivedHelper) {\n var pos = this.derivedHelpers.indexOf(derivedHelper);\n if (pos === -1) throw new Error('Derived helper already detached');\n this.derivedHelpers.splice(pos, 1);\n};\n\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */\nAlgoliaSearchHelper.prototype.hasPendingRequests = function () {\n return this._currentNbQueries > 0;\n};\n\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */\n\n/**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */\n\nmodule.exports = AlgoliaSearchHelper;\n","'use strict';\n\nmodule.exports = function compact(array) {\n if (!Array.isArray(array)) {\n return [];\n }\n\n return array.filter(Boolean);\n};\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\nmodule.exports = function defaultsPure() {\n var sources = Array.prototype.slice.call(arguments);\n\n return sources.reduceRight(function (acc, source) {\n Object.keys(Object(source)).forEach(function (key) {\n if (source[key] === undefined) {\n return;\n }\n if (acc[key] !== undefined) {\n // remove if already added, so that we can add it in correct order\n delete acc[key];\n }\n acc[key] = source[key];\n });\n return acc;\n }, {});\n};\n","'use strict';\n\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns {any} the escaped facet value or the value if it was not a string\n */\nfunction escapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return String(value).replace(/^-/, '\\\\-');\n}\n\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns {any} the unescaped facet value or the value if it was not a string\n */\nfunction unescapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return value.replace(/^\\\\-/, '-');\n}\n\nmodule.exports = {\n escapeFacetValue: escapeFacetValue,\n unescapeFacetValue: unescapeFacetValue,\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#find when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n\n return undefined;\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#findIndex when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return -1;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return i;\n }\n }\n return -1;\n};\n","'use strict';\n\nvar find = require('./find');\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.<string[]>} array containing 2 elements : attributes, orders\n */\nmodule.exports = function formatSort(sortBy, defaults) {\n var defaultInstructions = (defaults || []).map(function (sort) {\n return sort.split(':');\n });\n\n return sortBy.reduce(\n function preparePredicate(out, sort) {\n var sortInstruction = sort.split(':');\n\n var matchingDefault = find(\n defaultInstructions,\n function (defaultInstruction) {\n return defaultInstruction[0] === sortInstruction[0];\n }\n );\n\n if (sortInstruction.length > 1 || !matchingDefault) {\n out[0].push(sortInstruction[0]);\n out[1].push(sortInstruction[1]);\n return out;\n }\n\n out[0].push(matchingDefault[0]);\n out[1].push(matchingDefault[1]);\n return out;\n },\n [[], []]\n );\n};\n","'use strict';\n\nfunction inherits(ctor, superCtor) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n}\n\nmodule.exports = inherits;\n","'use strict';\n\nfunction intersection(arr1, arr2) {\n return arr1.filter(function (value, index) {\n return (\n arr2.indexOf(value) > -1 &&\n arr1.indexOf(value) === index /* skips duplicates */\n );\n });\n}\n\nmodule.exports = intersection;\n","'use strict';\n\nfunction clone(value) {\n if (typeof value === 'object' && value !== null) {\n return _merge(Array.isArray(value) ? [] : {}, value);\n }\n return value;\n}\n\nfunction isObjectOrArrayOrFunction(value) {\n return (\n typeof value === 'function' ||\n Array.isArray(value) ||\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n\nfunction _merge(target, source) {\n if (target === source) {\n return target;\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (var key in source) {\n if (\n !Object.prototype.hasOwnProperty.call(source, key) ||\n key === '__proto__' ||\n key === 'constructor'\n ) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n var sourceVal = source[key];\n var targetVal = target[key];\n\n if (typeof targetVal !== 'undefined' && typeof sourceVal === 'undefined') {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (\n isObjectOrArrayOrFunction(targetVal) &&\n isObjectOrArrayOrFunction(sourceVal)\n ) {\n target[key] = _merge(targetVal, sourceVal);\n } else {\n target[key] = clone(sourceVal);\n }\n }\n return target;\n}\n\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} target The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */\nfunction merge(target) {\n if (!isObjectOrArrayOrFunction(target)) {\n target = {};\n }\n\n for (var i = 1, l = arguments.length; i < l; i++) {\n var source = arguments[i];\n\n if (isObjectOrArrayOrFunction(source)) {\n _merge(target, source);\n }\n }\n return target;\n}\n\nmodule.exports = merge;\n","'use strict';\n\nfunction objectHasKeys(obj) {\n return obj && Object.keys(obj).length > 0;\n}\n\nmodule.exports = objectHasKeys;\n","'use strict';\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source === null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key;\n var i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n // eslint-disable-next-line no-continue\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n","'use strict';\n\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined;\n var valIsNull = value === null;\n\n var othIsDefined = other !== undefined;\n var othIsNull = other === null;\n\n if (\n (!othIsNull && value > other) ||\n (valIsNull && othIsDefined) ||\n !valIsDefined\n ) {\n return 1;\n }\n if (\n (!valIsNull && value < other) ||\n (othIsNull && valIsDefined) ||\n !othIsDefined\n ) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * @param {Array<object>} collection object with keys in attributes\n * @param {Array<string>} iteratees attributes\n * @param {Array<string>} orders asc | desc\n * @return {Array<object>} sorted collection\n */\nfunction orderBy(collection, iteratees, orders) {\n if (!Array.isArray(collection)) {\n return [];\n }\n\n if (!Array.isArray(orders)) {\n orders = [];\n }\n\n var result = collection.map(function (value, index) {\n return {\n criteria: iteratees.map(function (iteratee) {\n return value[iteratee];\n }),\n index: index,\n value: value,\n };\n });\n\n result.sort(function comparer(object, other) {\n var index = -1;\n\n while (++index < object.criteria.length) {\n var res = compareAscending(object.criteria[index], other.criteria[index]);\n if (res) {\n if (index >= orders.length) {\n return res;\n }\n if (orders[index] === 'desc') {\n return -res;\n }\n return res;\n }\n }\n\n // This ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n });\n\n return result.map(function (res) {\n return res.value;\n });\n}\n\nmodule.exports = orderBy;\n","'use strict';\n\nfunction valToNumber(v) {\n if (typeof v === 'number') {\n return v;\n } else if (typeof v === 'string') {\n return parseFloat(v);\n } else if (Array.isArray(v)) {\n return v.map(valToNumber);\n }\n\n throw new Error(\n 'The value should be a number, a parsable string or an array of those.'\n );\n}\n\nmodule.exports = valToNumber;\n","'use strict';\n\nvar merge = require('./functions/merge');\n\nfunction sortObject(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (acc, curr) {\n acc[curr] = obj[curr];\n return acc;\n }, {});\n}\n\nvar requestBuilder = {\n /**\n * Get all the queries to send to the client, those queries can used directly\n * with the Algolia client.\n * @private\n * @param {string} index The name of the index\n * @param {SearchParameters} state The state from which to get the queries\n * @return {object[]} The queries\n */\n _getQueries: function getQueries(index, state) {\n var queries = [];\n\n // One query for the hits\n queries.push({\n indexName: index,\n params: requestBuilder._getHitsSearchParams(state),\n });\n\n // One for each disjunctive facets\n state.getRefinedDisjunctiveFacets().forEach(function (refinedFacet) {\n queries.push({\n indexName: index,\n params: requestBuilder._getDisjunctiveFacetSearchParams(\n state,\n refinedFacet\n ),\n });\n });\n\n // More to get the parent levels of the hierarchical facets when refined\n state.getRefinedHierarchicalFacets().forEach(function (refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n // If we are deeper than level 0 (starting from `beer > IPA`)\n // we want to get all parent values\n if (\n currentRefinement.length > 0 &&\n currentRefinement[0].split(separator).length > 1\n ) {\n // We generate a map of the filters we will use for our facet values queries\n var filtersMap = currentRefinement[0]\n .split(separator)\n .slice(0, -1)\n .reduce(function createFiltersMap(map, segment, level) {\n return map.concat({\n attribute: hierarchicalFacet.attributes[level],\n value:\n level === 0\n ? segment\n : [map[map.length - 1].value, segment].join(separator),\n });\n }, []);\n\n filtersMap.forEach(function (filter, level) {\n var params = requestBuilder._getDisjunctiveFacetSearchParams(\n state,\n filter.attribute,\n level === 0\n );\n\n // Keep facet filters unrelated to current hierarchical attributes\n function hasHierarchicalFacetFilter(value) {\n return hierarchicalFacet.attributes.some(function (attribute) {\n return attribute === value.split(':')[0];\n });\n }\n\n var filteredFacetFilters = (params.facetFilters || []).reduce(\n function (acc, facetFilter) {\n if (Array.isArray(facetFilter)) {\n var filtered = facetFilter.filter(function (filterValue) {\n return !hasHierarchicalFacetFilter(filterValue);\n });\n\n if (filtered.length > 0) {\n acc.push(filtered);\n }\n }\n\n if (\n typeof facetFilter === 'string' &&\n !hasHierarchicalFacetFilter(facetFilter)\n ) {\n acc.push(facetFilter);\n }\n\n return acc;\n },\n []\n );\n\n var parent = filtersMap[level - 1];\n if (level > 0) {\n params.facetFilters = filteredFacetFilters.concat(\n parent.attribute + ':' + parent.value\n );\n } else {\n params.facetFilters =\n filteredFacetFilters.length > 0\n ? filteredFacetFilters\n : undefined;\n }\n\n queries.push({ indexName: index, params: params });\n });\n }\n });\n\n return queries;\n },\n\n /**\n * Build search parameters used to fetch hits\n * @private\n * @param {SearchParameters} state The state from which to get the queries\n * @return {object.<string, any>} The search parameters for hits\n */\n _getHitsSearchParams: function (state) {\n var facets = state.facets\n .concat(state.disjunctiveFacets)\n .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state))\n .sort();\n\n var facetFilters = requestBuilder._getFacetFilters(state);\n var numericFilters = requestBuilder._getNumericFilters(state);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n facets: facets.indexOf('*') > -1 ? ['*'] : facets,\n tagFilters: tagFilters,\n };\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Build search parameters used to fetch a disjunctive facet\n * @private\n * @param {SearchParameters} state The state from which to get the queries\n * @param {string} facet the associated facet name\n * @param {boolean} hierarchicalRootLevel ?? FIXME\n * @return {object} The search parameters for a disjunctive facet\n */\n _getDisjunctiveFacetSearchParams: function (\n state,\n facet,\n hierarchicalRootLevel\n ) {\n var facetFilters = requestBuilder._getFacetFilters(\n state,\n facet,\n hierarchicalRootLevel\n );\n var numericFilters = requestBuilder._getNumericFilters(state, facet);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n hitsPerPage: 0,\n page: 0,\n analytics: false,\n clickAnalytics: false,\n };\n\n if (tagFilters.length > 0) {\n additionalParams.tagFilters = tagFilters;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n\n if (hierarchicalFacet) {\n additionalParams.facets =\n requestBuilder._getDisjunctiveHierarchicalFacetAttribute(\n state,\n hierarchicalFacet,\n hierarchicalRootLevel\n );\n } else {\n additionalParams.facets = facet;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Return the numeric filters in an algolia request fashion\n * @private\n * @param {SearchParameters} state the state from which to get the filters\n * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n * @return {string[]} the numeric filters in the algolia format\n */\n _getNumericFilters: function (state, facetName) {\n if (state.numericFilters) {\n return state.numericFilters;\n }\n\n var numericFilters = [];\n\n Object.keys(state.numericRefinements).forEach(function (attribute) {\n var operators = state.numericRefinements[attribute] || {};\n Object.keys(operators).forEach(function (operator) {\n var values = operators[operator] || [];\n if (facetName !== attribute) {\n values.forEach(function (value) {\n if (Array.isArray(value)) {\n var vs = value.map(function (v) {\n return attribute + operator + v;\n });\n numericFilters.push(vs);\n } else {\n numericFilters.push(attribute + operator + value);\n }\n });\n }\n });\n });\n\n return numericFilters;\n },\n\n /**\n * Return the tags filters depending on which format is used, either tagFilters or tagRefinements\n * @private\n * @param {SearchParameters} state the state from which to get the filters\n * @return {string} Tag filters in a single string\n */\n _getTagFilters: function (state) {\n if (state.tagFilters) {\n return state.tagFilters;\n }\n\n return state.tagRefinements.join(',');\n },\n\n /**\n * Build facetFilters parameter based on current refinements. The array returned\n * contains strings representing the facet filters in the algolia format.\n * @private\n * @param {SearchParameters} state The state from which to get the queries\n * @param {string} [facet] if set, the current disjunctive facet\n * @param {boolean} [hierarchicalRootLevel] ?? FIXME\n * @return {array.<string>} The facet filters in the algolia format\n */\n _getFacetFilters: function (state, facet, hierarchicalRootLevel) {\n var facetFilters = [];\n\n var facetsRefinements = state.facetsRefinements || {};\n Object.keys(facetsRefinements)\n .sort()\n .forEach(function (facetName) {\n var facetValues = facetsRefinements[facetName] || [];\n facetValues.sort().forEach(function (facetValue) {\n facetFilters.push(facetName + ':' + facetValue);\n });\n });\n\n var facetsExcludes = state.facetsExcludes || {};\n Object.keys(facetsExcludes)\n .sort()\n .forEach(function (facetName) {\n var facetValues = facetsExcludes[facetName] || [];\n facetValues.sort().forEach(function (facetValue) {\n facetFilters.push(facetName + ':-' + facetValue);\n });\n });\n\n var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n Object.keys(disjunctiveFacetsRefinements)\n .sort()\n .forEach(function (facetName) {\n var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n if (facetName === facet || !facetValues || facetValues.length === 0) {\n return;\n }\n var orFilters = [];\n\n facetValues.sort().forEach(function (facetValue) {\n orFilters.push(facetName + ':' + facetValue);\n });\n\n facetFilters.push(orFilters);\n });\n\n var hierarchicalFacetsRefinements =\n state.hierarchicalFacetsRefinements || {};\n Object.keys(hierarchicalFacetsRefinements)\n .sort()\n .forEach(function (facetName) {\n var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n var facetValue = facetValues[0];\n\n if (facetValue === undefined) {\n return;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeToRefine;\n var attributesIndex;\n\n // we ask for parent facet values only when the `facet` is the current hierarchical facet\n if (facet === facetName) {\n // if we are at the root level already, no need to ask for facet values, we get them from\n // the hits query\n if (\n facetValue.indexOf(separator) === -1 ||\n (!rootPath && hierarchicalRootLevel === true) ||\n (rootPath &&\n rootPath.split(separator).length ===\n facetValue.split(separator).length)\n ) {\n return;\n }\n\n if (!rootPath) {\n attributesIndex = facetValue.split(separator).length - 2;\n facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n } else {\n attributesIndex = rootPath.split(separator).length - 1;\n facetValue = rootPath;\n }\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n } else {\n attributesIndex = facetValue.split(separator).length - 1;\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n }\n\n if (attributeToRefine) {\n facetFilters.push([attributeToRefine + ':' + facetValue]);\n }\n });\n\n return facetFilters;\n },\n\n _getHitsHierarchicalFacetsAttributes: function (state) {\n var out = [];\n\n return state.hierarchicalFacets.reduce(\n // ask for as much levels as there's hierarchical refinements\n function getHitsAttributesForHierarchicalFacet(\n allAttributes,\n hierarchicalFacet\n ) {\n var hierarchicalRefinement = state.getHierarchicalRefinement(\n hierarchicalFacet.name\n )[0];\n\n // if no refinement, ask for root level\n if (!hierarchicalRefinement) {\n allAttributes.push(hierarchicalFacet.attributes[0]);\n return allAttributes;\n }\n\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var level = hierarchicalRefinement.split(separator).length;\n var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n\n return allAttributes.concat(newAttributes);\n },\n out\n );\n },\n\n _getDisjunctiveHierarchicalFacetAttribute: function (\n state,\n hierarchicalFacet,\n rootLevel\n ) {\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n if (rootLevel === true) {\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeIndex = 0;\n\n if (rootPath) {\n attributeIndex = rootPath.split(separator).length;\n }\n return [hierarchicalFacet.attributes[attributeIndex]];\n }\n\n var hierarchicalRefinement =\n state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || '';\n // if refinement is 'beers > IPA > Flying dog',\n // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n\n var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n },\n\n getSearchForFacetQuery: function (facetName, query, maxFacetHits, state) {\n var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName)\n ? state.clearRefinements(facetName)\n : state;\n var searchForFacetSearchParameters = {\n facetQuery: query,\n facetName: facetName,\n };\n if (typeof maxFacetHits === 'number') {\n searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n }\n return sortObject(\n merge(\n {},\n requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),\n searchForFacetSearchParameters\n )\n );\n },\n};\n\nmodule.exports = requestBuilder;\n","'use strict';\n\nmodule.exports = function isValidUserToken(userToken) {\n if (userToken === null) {\n return false;\n }\n return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n","'use strict';\n\nmodule.exports = '3.14.0';\n","/*! algoliasearch.umd.js | 4.19.1 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=t||self).algoliasearch=e()}(this,(function(){\"use strict\";function t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?e(Object(a),!0).forEach((function(e){t(r,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):e(Object(a)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(a,t))}))}return r}function n(t,e){if(null==t)return{};var r,n,a=function(t,e){if(null==t)return{};var r,n,a={},o=Object.keys(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var i,u=t[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!e||r.length!==e);n=!0);}catch(t){a=!0,o=t}finally{try{n||null==u.return||u.return()}finally{if(a)throw o}}return r}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function o(t){return function(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e<t.length;e++)r[e]=t[e];return r}}(t)||function(t){if(Symbol.iterator in Object(t)||\"[object Arguments]\"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function i(t){var e,r=\"algoliasearch-client-js-\".concat(t.key),n=function(){return void 0===e&&(e=t.localStorage||window.localStorage),e},o=function(){return JSON.parse(n().getItem(r)||\"{}\")},i=function(t){n().setItem(r,JSON.stringify(t))},u=function(){var e=t.timeToLive?1e3*t.timeToLive:null,r=o(),n=Object.fromEntries(Object.entries(r).filter((function(t){return void 0!==a(t,2)[1].timestamp})));if(i(n),e){var u=Object.fromEntries(Object.entries(n).filter((function(t){var r=a(t,2)[1],n=(new Date).getTime();return!(r.timestamp+e<n)})));i(u)}};return{get:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){u();var e=JSON.stringify(t);return o()[e]})).then((function(t){return Promise.all([t?t.value:e(),void 0!==t])})).then((function(t){var e=a(t,2),n=e[0],o=e[1];return Promise.all([n,o||r.miss(n)])})).then((function(t){return a(t,1)[0]}))},set:function(t,e){return Promise.resolve().then((function(){var a=o();return a[JSON.stringify(t)]={timestamp:(new Date).getTime(),value:e},n().setItem(r,JSON.stringify(a)),e}))},delete:function(t){return Promise.resolve().then((function(){var e=o();delete e[JSON.stringify(t)],n().setItem(r,JSON.stringify(e))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function u(t){var e=o(t.caches),r=e.shift();return void 0===r?{get:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=e();return n.then((function(t){return Promise.all([t,r.miss(t)])})).then((function(t){return a(t,1)[0]}))},set:function(t,e){return Promise.resolve(e)},delete:function(t){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(t,n,a).catch((function(){return u({caches:e}).get(t,n,a)}))},set:function(t,n){return r.set(t,n).catch((function(){return u({caches:e}).set(t,n)}))},delete:function(t){return r.delete(t).catch((function(){return u({caches:e}).delete(t)}))},clear:function(){return r.clear().catch((function(){return u({caches:e}).clear()}))}}}function s(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},e={};return{get:function(r,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},o=JSON.stringify(r);if(o in e)return Promise.resolve(t.serializable?JSON.parse(e[o]):e[o]);var i=n(),u=a&&a.miss||function(){return Promise.resolve()};return i.then((function(t){return u(t)})).then((function(){return i}))},set:function(r,n){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(t){return delete e[JSON.stringify(t)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function c(t,e,r){var n={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers:function(){return t===m.WithinHeaders?n:{}},queryParameters:function(){return t===m.WithinQueryParameters?n:{}}}}function f(t){var e=0;return t((function r(){return e++,new Promise((function(n){setTimeout((function(){n(t(r))}),Math.min(100*e,1e3))}))}))}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(t,e){return Promise.resolve()};return Object.assign(t,{wait:function(r){return d(t.then((function(t){return Promise.all([e(t,r),t])})).then((function(t){return t[1]})))}})}function l(t){for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function p(t,e){return e?(Object.keys(e).forEach((function(r){t[r]=e[r](t)})),t):t}function h(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];var a=0;return t.replace(/%s/g,(function(){return encodeURIComponent(r[a++])}))}var m={WithinQueryParameters:0,WithinHeaders:1};function y(t,e){var r=t||{},n=r.data||{};return Object.keys(r).forEach((function(t){-1===[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(t)&&(n[t]=r[t])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var g={Read:1,Write:2,Any:3},v=1,b=2,O=3;function P(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v;return r(r({},t),{},{status:e,lastUpdate:Date.now()})}function w(t){return\"string\"==typeof t?{protocol:\"https\",url:t,accept:g.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||g.Any}}var I=\"DELETE\",j=\"GET\",x=\"POST\",D=\"PUT\";function q(t,e){return Promise.all(e.map((function(e){return t.get(e,(function(){return Promise.resolve(P(e))}))}))).then((function(t){var r=t.filter((function(t){return function(t){return t.status===v||Date.now()-t.lastUpdate>12e4}(t)})),n=t.filter((function(t){return function(t){return t.status===O&&Date.now()-t.lastUpdate<=12e4}(t)})),a=[].concat(o(r),o(n));return{getTimeout:function(t,e){return(0===n.length&&0===t?1:n.length+3+t)*e},statelessHosts:a.length>0?a.map((function(t){return w(t)})):e}}))}function S(t,e,n,a){var i=[],u=function(t,e){if(t.method===j||void 0===t.data&&void 0===e.data)return;var n=Array.isArray(t.data)?t.data:r(r({},t.data),e.data);return JSON.stringify(n)}(n,a),s=function(t,e){var n=r(r({},t.headers),e.headers),a={};return Object.keys(n).forEach((function(t){var e=n[t];a[t.toLowerCase()]=e})),a}(t,a),c=n.method,f=n.method!==j?{}:r(r({},n.data),a.data),d=r(r(r({\"x-algolia-agent\":t.userAgent.value},t.queryParameters),f),a.queryParameters),l=0,p=function e(r,o){var f=r.pop();if(void 0===f)throw{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:R(i)};var p={data:u,headers:s,method:c,url:N(f,n.path,d),connectTimeout:o(l,t.timeouts.connect),responseTimeout:o(l,a.timeout)},h=function(t){var e={request:p,response:t,host:f,triesLeft:r.length};return i.push(e),e},m={onSuccess:function(t){return function(t){try{return JSON.parse(t.content)}catch(e){throw function(t,e){return{name:\"DeserializationError\",message:t,response:e}}(e.message,t)}}(t)},onRetry:function(n){var a=h(n);return n.isTimedOut&&l++,Promise.all([t.logger.info(\"Retryable failure\",A(a)),t.hostsCache.set(f,P(f,n.isTimedOut?O:b))]).then((function(){return e(r,o)}))},onFail:function(t){throw h(t),function(t,e){var r=t.content,n=t.status,a=r;try{a=JSON.parse(r).message}catch(t){}return function(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}(a,n,e)}(t,R(i))}};return t.requester.send(p).then((function(t){return function(t,e){return function(t){var e=t.status;return t.isTimedOut||function(t){var e=t.isTimedOut,r=t.status;return!e&&0==~~r}(t)||2!=~~(e/100)&&4!=~~(e/100)}(t)?e.onRetry(t):2==~~(t.status/100)?e.onSuccess(t):e.onFail(t)}(t,m)}))};return q(t.hostsCache,e).then((function(t){return p(o(t.statelessHosts).reverse(),t.getTimeout)}))}function k(t){var e=t.hostsCache,r=t.logger,n=t.requester,o=t.requestsCache,i=t.responsesCache,u=t.timeouts,s=t.userAgent,c=t.hosts,f=t.queryParameters,d={hostsCache:e,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:u,userAgent:s,headers:t.headers,queryParameters:f,hosts:c.map((function(t){return w(t)})),read:function(t,e){var r=y(e,d.timeouts.read),n=function(){return S(d,d.hosts.filter((function(t){return 0!=(t.accept&g.Read)})),t,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:t.cacheable))return n();var o={request:t,mappedRequestOptions:r,transporter:{queryParameters:d.queryParameters,headers:d.headers}};return d.responsesCache.get(o,(function(){return d.requestsCache.get(o,(function(){return d.requestsCache.set(o,n()).then((function(t){return Promise.all([d.requestsCache.delete(o),t])}),(function(t){return Promise.all([d.requestsCache.delete(o),Promise.reject(t)])})).then((function(t){var e=a(t,2);e[0];return e[1]}))}))}),{miss:function(t){return d.responsesCache.set(o,t)}})},write:function(t,e){return S(d,d.hosts.filter((function(t){return 0!=(t.accept&g.Write)})),t,y(e,d.timeouts.write))}};return d}function T(t){var e={value:\"Algolia for JavaScript (\".concat(t,\")\"),add:function(t){var r=\"; \".concat(t.segment).concat(void 0!==t.version?\" (\".concat(t.version,\")\"):\"\");return-1===e.value.indexOf(r)&&(e.value=\"\".concat(e.value).concat(r)),e}};return e}function N(t,e,r){var n=E(r),a=\"\".concat(t.protocol,\"://\").concat(t.url,\"/\").concat(\"/\"===e.charAt(0)?e.substr(1):e);return n.length&&(a+=\"?\".concat(n)),a}function E(t){return Object.keys(t).map((function(e){return h(\"%s=%s\",e,(r=t[e],\"[object Object]\"===Object.prototype.toString.call(r)||\"[object Array]\"===Object.prototype.toString.call(r)?JSON.stringify(t[e]):t[e]));var r})).join(\"&\")}function R(t){return t.map((function(t){return A(t)}))}function A(t){var e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return r(r({},t),{},{request:r(r({},t.request),{},{headers:r(r({},t.request.headers),e)})})}var C=function(t){return function(e,r){return t.transporter.write({method:x,path:\"2/abtests\",data:e},r)}},U=function(t){return function(e,r){return t.transporter.write({method:I,path:h(\"2/abtests/%s\",e)},r)}},z=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"2/abtests/%s\",e)},r)}},J=function(t){return function(e){return t.transporter.read({method:j,path:\"2/abtests\"},e)}},F=function(t){return function(e,r){return t.transporter.write({method:x,path:h(\"2/abtests/%s/stop\",e)},r)}},H=function(t){return function(e){return t.transporter.read({method:j,path:\"1/strategies/personalization\"},e)}},M=function(t){return function(e,r){return t.transporter.write({method:x,path:\"1/strategies/personalization\",data:e},r)}};function K(t){return function e(r){return t.request(r).then((function(n){if(void 0!==t.batch&&t.batch(n.hits),!t.shouldStop(n))return n.cursor?e({cursor:n.cursor}):e({page:(r.page||0)+1})}))}({})}var W=function(t){return function(e,a){var o=a||{},i=o.queryParameters,u=n(o,[\"queryParameters\"]),s=r({acl:e},void 0!==i?{queryParameters:i}:{});return d(t.transporter.write({method:x,path:\"1/keys\",data:s},u),(function(e,r){return f((function(n){return tt(t)(e.key,r).catch((function(t){if(404!==t.status)throw t;return n()}))}))}))}},B=function(t){return function(e,r,n){var a=y(n);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:x,path:\"1/clusters/mapping\",data:{cluster:r}},a)}},Q=function(t){return function(e,r,n){return t.transporter.write({method:x,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},n)}},G=function(t){return function(e,r){return d(t.transporter.write({method:x,path:h(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(function(e,r){return xt(t)(e.taskID,r)}))}},L=function(t){return function(e,r,n){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},n),(function(r,n){return ut(t)(e,{methods:{waitTask:de}}).waitTask(r.taskID,n)}))}},V=function(t){return function(e,n,a){return L(t)(e,n,r(r({},a),{},{scope:[pe.Rules]}))}},_=function(t){return function(e,n,a){return L(t)(e,n,r(r({},a),{},{scope:[pe.Settings]}))}},X=function(t){return function(e,n,a){return L(t)(e,n,r(r({},a),{},{scope:[pe.Synonyms]}))}},Y=function(t){return function(e,r){return e.method===j?t.transporter.read(e,r):t.transporter.write(e,r)}},Z=function(t){return function(e,r){return d(t.transporter.write({method:I,path:h(\"1/keys/%s\",e)},r),(function(r,n){return f((function(r){return tt(t)(e,n).then(r).catch((function(t){if(404!==t.status)throw t}))}))}))}},$=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"deleteEntry\",body:{objectID:t}}}));return d(t.transporter.write({method:x,path:h(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},n),(function(e,r){return xt(t)(e.taskID,r)}))}},tt=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/keys/%s\",e)},r)}},et=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/task/%s\",e.toString())},r)}},rt=function(t){return function(e){return t.transporter.read({method:j,path:\"/1/dictionaries/*/settings\"},e)}},nt=function(t){return function(e){return t.transporter.read({method:j,path:\"1/logs\"},e)}},at=function(t){return function(e){return t.transporter.read({method:j,path:\"1/clusters/mapping/top\"},e)}},ot=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/clusters/mapping/%s\",e)},r)}},it=function(t){return function(e){var r=e||{},a=r.retrieveMappings,o=n(r,[\"retrieveMappings\"]);return!0===a&&(o.getClusters=!0),t.transporter.read({method:j,path:\"1/clusters/mapping/pending\"},o)}},ut=function(t){return function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:t.transporter,appId:t.appId,indexName:e};return p(n,r.methods)}},st=function(t){return function(e){return t.transporter.read({method:j,path:\"1/keys\"},e)}},ct=function(t){return function(e){return t.transporter.read({method:j,path:\"1/clusters\"},e)}},ft=function(t){return function(e){return t.transporter.read({method:j,path:\"1/indexes\"},e)}},dt=function(t){return function(e){return t.transporter.read({method:j,path:\"1/clusters/mapping\"},e)}},lt=function(t){return function(e,r,n){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},n),(function(r,n){return ut(t)(e,{methods:{waitTask:de}}).waitTask(r.taskID,n)}))}},pt=function(t){return function(e,r){return d(t.transporter.write({method:x,path:\"1/indexes/*/batch\",data:{requests:e}},r),(function(e,r){return Promise.all(Object.keys(e.taskID).map((function(n){return ut(t)(n,{methods:{waitTask:de}}).waitTask(e.taskID[n],r)})))}))}},ht=function(t){return function(e,r){return t.transporter.read({method:x,path:\"1/indexes/*/objects\",data:{requests:e}},r)}},mt=function(t){return function(e,n){var a=e.map((function(t){return r(r({},t),{},{params:E(t.params||{})})}));return t.transporter.read({method:x,path:\"1/indexes/*/queries\",data:{requests:a},cacheable:!0},n)}},yt=function(t){return function(e,a){return Promise.all(e.map((function(e){var o=e.params,i=o.facetName,u=o.facetQuery,s=n(o,[\"facetName\",\"facetQuery\"]);return ut(t)(e.indexName,{methods:{searchForFacetValues:ue}}).searchForFacetValues(i,u,r(r({},a),s))})))}},gt=function(t){return function(e,r){var n=y(r);return n.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:I,path:\"1/clusters/mapping\"},n)}},vt=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"addEntry\",body:t}}));return d(t.transporter.write({method:x,path:h(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},n),(function(e,r){return xt(t)(e.taskID,r)}))}},bt=function(t){return function(e,r){return d(t.transporter.write({method:x,path:h(\"1/keys/%s/restore\",e)},r),(function(r,n){return f((function(r){return tt(t)(e,n).catch((function(t){if(404!==t.status)throw t;return r()}))}))}))}},Ot=function(t){return function(e,r,n){var a=r.map((function(t){return{action:\"addEntry\",body:t}}));return d(t.transporter.write({method:x,path:h(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},n),(function(e,r){return xt(t)(e.taskID,r)}))}},Pt=function(t){return function(e,r,n){return t.transporter.read({method:x,path:h(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},n)}},wt=function(t){return function(e,r){return t.transporter.read({method:x,path:\"1/clusters/mapping/search\",data:{query:e}},r)}},It=function(t){return function(e,r){return d(t.transporter.write({method:D,path:\"/1/dictionaries/*/settings\",data:e},r),(function(e,r){return xt(t)(e.taskID,r)}))}},jt=function(t){return function(e,r){var a=Object.assign({},r),o=r||{},i=o.queryParameters,u=n(o,[\"queryParameters\"]),s=i?{queryParameters:i}:{},c=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"];return d(t.transporter.write({method:D,path:h(\"1/keys/%s\",e),data:s},u),(function(r,n){return f((function(r){return tt(t)(e,n).then((function(t){return function(t){return Object.keys(a).filter((function(t){return-1!==c.indexOf(t)})).every((function(e){if(Array.isArray(t[e])&&Array.isArray(a[e])){var r=t[e];return r.length===a[e].length&&r.every((function(t,r){return t===a[e][r]}))}return t[e]===a[e]}))}(t)?Promise.resolve():r()}))}))}))}},xt=function(t){return function(e,r){return f((function(n){return et(t)(e,r).then((function(t){return\"published\"!==t.status?n():void 0}))}))}},Dt=function(t){return function(e,r){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),(function(e,r){return de(t)(e.taskID,r)}))}},qt=function(t){return function(e){return K(r(r({shouldStop:function(t){return void 0===t.cursor}},e),{},{request:function(r){return t.transporter.read({method:x,path:h(\"1/indexes/%s/browse\",t.indexName),data:r},e)}}))}},St=function(t){return function(e){var n=r({hitsPerPage:1e3},e);return K(r(r({shouldStop:function(t){return t.hits.length<n.hitsPerPage}},n),{},{request:function(e){return se(t)(\"\",r(r({},n),e)).then((function(t){return r(r({},t),{},{hits:t.hits.map((function(t){return delete t._highlightResult,t}))})}))}}))}},kt=function(t){return function(e){var n=r({hitsPerPage:1e3},e);return K(r(r({shouldStop:function(t){return t.hits.length<n.hitsPerPage}},n),{},{request:function(e){return ce(t)(\"\",r(r({},n),e)).then((function(t){return r(r({},t),{},{hits:t.hits.map((function(t){return delete t._highlightResult,t}))})}))}}))}},Tt=function(t){return function(e,r,a){var o=a||{},i=o.batchSize,u=n(o,[\"batchSize\"]),s={taskIDs:[],objectIDs:[]};return d(function n(){var a,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,c=[];for(a=o;a<e.length&&(c.push(e[a]),c.length!==(i||1e3));a++);return 0===c.length?Promise.resolve(s):Dt(t)(c.map((function(t){return{action:r,body:t}})),u).then((function(t){return s.objectIDs=s.objectIDs.concat(t.objectIDs),s.taskIDs.push(t.taskID),a++,n(a)}))}(),(function(e,r){return Promise.all(e.taskIDs.map((function(e){return de(t)(e,r)})))}))}},Nt=function(t){return function(e){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/clear\",t.indexName)},e),(function(e,r){return de(t)(e.taskID,r)}))}},Et=function(t){return function(e){var r=e||{},a=r.forwardToReplicas,o=y(n(r,[\"forwardToReplicas\"]));return a&&(o.queryParameters.forwardToReplicas=1),d(t.transporter.write({method:x,path:h(\"1/indexes/%s/rules/clear\",t.indexName)},o),(function(e,r){return de(t)(e.taskID,r)}))}},Rt=function(t){return function(e){var r=e||{},a=r.forwardToReplicas,o=y(n(r,[\"forwardToReplicas\"]));return a&&(o.queryParameters.forwardToReplicas=1),d(t.transporter.write({method:x,path:h(\"1/indexes/%s/synonyms/clear\",t.indexName)},o),(function(e,r){return de(t)(e.taskID,r)}))}},At=function(t){return function(e,r){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(function(e,r){return de(t)(e.taskID,r)}))}},Ct=function(t){return function(e){return d(t.transporter.write({method:I,path:h(\"1/indexes/%s\",t.indexName)},e),(function(e,r){return de(t)(e.taskID,r)}))}},Ut=function(t){return function(e,r){return d(zt(t)([e],r).then((function(t){return{taskID:t.taskIDs[0]}})),(function(e,r){return de(t)(e.taskID,r)}))}},zt=function(t){return function(e,r){var n=e.map((function(t){return{objectID:t}}));return Tt(t)(n,le.DeleteObject,r)}},Jt=function(t){return function(e,r){var a=r||{},o=a.forwardToReplicas,i=y(n(a,[\"forwardToReplicas\"]));return o&&(i.queryParameters.forwardToReplicas=1),d(t.transporter.write({method:I,path:h(\"1/indexes/%s/rules/%s\",t.indexName,e)},i),(function(e,r){return de(t)(e.taskID,r)}))}},Ft=function(t){return function(e,r){var a=r||{},o=a.forwardToReplicas,i=y(n(a,[\"forwardToReplicas\"]));return o&&(i.queryParameters.forwardToReplicas=1),d(t.transporter.write({method:I,path:h(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},i),(function(e,r){return de(t)(e.taskID,r)}))}},Ht=function(t){return function(e){return Lt(t)(e).then((function(){return!0})).catch((function(t){if(404!==t.status)throw t;return!1}))}},Mt=function(t){return function(e,r,n){return t.transporter.read({method:x,path:h(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},n)}},Kt=function(t){return function(e,o){var i=o||{},u=i.query,s=i.paginate,c=n(i,[\"query\",\"paginate\"]),f=0;return function n(){return ie(t)(u||\"\",r(r({},c),{},{page:f})).then((function(t){for(var r=0,o=Object.entries(t.hits);r<o.length;r++){var i=a(o[r],2),u=i[0],c=i[1];if(e(c))return{object:c,position:parseInt(u,10),page:f}}if(f++,!1===s||f>=t.nbPages)throw{name:\"ObjectNotFoundError\",message:\"Object not found.\"};return n()}))}()}},Wt=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/indexes/%s/%s\",t.indexName,e)},r)}},Bt=function(){return function(t,e){for(var r=0,n=Object.entries(t.hits);r<n.length;r++){var o=a(n[r],2),i=o[0];if(o[1].objectID===e)return parseInt(i,10)}return-1}},Qt=function(t){return function(e,a){var o=a||{},i=o.attributesToRetrieve,u=n(o,[\"attributesToRetrieve\"]),s=e.map((function(e){return r({indexName:t.indexName,objectID:e},i?{attributesToRetrieve:i}:{})}));return t.transporter.read({method:x,path:\"1/indexes/*/objects\",data:{requests:s}},u)}},Gt=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/indexes/%s/rules/%s\",t.indexName,e)},r)}},Lt=function(t){return function(e){return t.transporter.read({method:j,path:h(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e)}},Vt=function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r)}},_t=function(t){return function(e,r){return d(Xt(t)([e],r).then((function(t){return{objectID:t.objectIDs[0],taskID:t.taskIDs[0]}})),(function(e,r){return de(t)(e.taskID,r)}))}},Xt=function(t){return function(e,r){var a=r||{},o=a.createIfNotExists,i=n(a,[\"createIfNotExists\"]),u=o?le.PartialUpdateObject:le.PartialUpdateObjectNoCreate;return Tt(t)(e,u,i)}},Yt=function(t){return function(e,i){var u=i||{},s=u.safe,c=u.autoGenerateObjectIDIfNotExist,f=u.batchSize,l=n(u,[\"safe\",\"autoGenerateObjectIDIfNotExist\",\"batchSize\"]),p=function(e,r,n,a){return d(t.transporter.write({method:x,path:h(\"1/indexes/%s/operation\",e),data:{operation:n,destination:r}},a),(function(e,r){return de(t)(e.taskID,r)}))},m=Math.random().toString(36).substring(7),y=\"\".concat(t.indexName,\"_tmp_\").concat(m),g=ee({appId:t.appId,transporter:t.transporter,indexName:y}),v=[],b=p(t.indexName,y,\"copy\",r(r({},l),{},{scope:[\"settings\",\"synonyms\",\"rules\"]}));return v.push(b),d((s?b.wait(l):b).then((function(){var t=g(e,r(r({},l),{},{autoGenerateObjectIDIfNotExist:c,batchSize:f}));return v.push(t),s?t.wait(l):t})).then((function(){var e=p(y,t.indexName,\"move\",l);return v.push(e),s?e.wait(l):e})).then((function(){return Promise.all(v)})).then((function(t){var e=a(t,3),r=e[0],n=e[1],i=e[2];return{objectIDs:n.objectIDs,taskIDs:[r.taskID].concat(o(n.taskIDs),[i.taskID])}})),(function(t,e){return Promise.all(v.map((function(t){return t.wait(e)})))}))}},Zt=function(t){return function(e,n){return ne(t)(e,r(r({},n),{},{clearExistingRules:!0}))}},$t=function(t){return function(e,n){return oe(t)(e,r(r({},n),{},{clearExistingSynonyms:!0}))}},te=function(t){return function(e,r){return d(ee(t)([e],r).then((function(t){return{objectID:t.objectIDs[0],taskID:t.taskIDs[0]}})),(function(e,r){return de(t)(e.taskID,r)}))}},ee=function(t){return function(e,r){var a=r||{},o=a.autoGenerateObjectIDIfNotExist,i=n(a,[\"autoGenerateObjectIDIfNotExist\"]),u=o?le.AddObject:le.UpdateObject;if(u===le.UpdateObject){var s=!0,c=!1,f=void 0;try{for(var l,p=e[Symbol.iterator]();!(s=(l=p.next()).done);s=!0){if(void 0===l.value.objectID)return d(Promise.reject({name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}))}}catch(t){c=!0,f=t}finally{try{s||null==p.return||p.return()}finally{if(c)throw f}}}return Tt(t)(e,u,i)}},re=function(t){return function(e,r){return ne(t)([e],r)}},ne=function(t){return function(e,r){var a=r||{},o=a.forwardToReplicas,i=a.clearExistingRules,u=y(n(a,[\"forwardToReplicas\",\"clearExistingRules\"]));return o&&(u.queryParameters.forwardToReplicas=1),i&&(u.queryParameters.clearExistingRules=1),d(t.transporter.write({method:x,path:h(\"1/indexes/%s/rules/batch\",t.indexName),data:e},u),(function(e,r){return de(t)(e.taskID,r)}))}},ae=function(t){return function(e,r){return oe(t)([e],r)}},oe=function(t){return function(e,r){var a=r||{},o=a.forwardToReplicas,i=a.clearExistingSynonyms,u=a.replaceExistingSynonyms,s=y(n(a,[\"forwardToReplicas\",\"clearExistingSynonyms\",\"replaceExistingSynonyms\"]));return o&&(s.queryParameters.forwardToReplicas=1),(u||i)&&(s.queryParameters.replaceExistingSynonyms=1),d(t.transporter.write({method:x,path:h(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},s),(function(e,r){return de(t)(e.taskID,r)}))}},ie=function(t){return function(e,r){return t.transporter.read({method:x,path:h(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r)}},ue=function(t){return function(e,r,n){return t.transporter.read({method:x,path:h(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},n)}},se=function(t){return function(e,r){return t.transporter.read({method:x,path:h(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r)}},ce=function(t){return function(e,r){return t.transporter.read({method:x,path:h(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r)}},fe=function(t){return function(e,r){var a=r||{},o=a.forwardToReplicas,i=y(n(a,[\"forwardToReplicas\"]));return o&&(i.queryParameters.forwardToReplicas=1),d(t.transporter.write({method:D,path:h(\"1/indexes/%s/settings\",t.indexName),data:e},i),(function(e,r){return de(t)(e.taskID,r)}))}},de=function(t){return function(e,r){return f((function(n){return function(t){return function(e,r){return t.transporter.read({method:j,path:h(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r)}}(t)(e,r).then((function(t){return\"published\"!==t.status?n():void 0}))}))}},le={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},pe={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},he=1,me=2,ye=3;function ge(t,e,n){var a,o={appId:t,apiKey:e,timeouts:{connect:1,read:2,write:30},requester:{send:function(t){return new Promise((function(e){var r=new XMLHttpRequest;r.open(t.method,t.url,!0),Object.keys(t.headers).forEach((function(e){return r.setRequestHeader(e,t.headers[e])}));var n,a=function(t,n){return setTimeout((function(){r.abort(),e({status:0,content:n,isTimedOut:!0})}),1e3*t)},o=a(t.connectTimeout,\"Connection timeout\");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(o),n=a(t.responseTimeout,\"Socket timeout\"))},r.onerror=function(){0===r.status&&(clearTimeout(o),clearTimeout(n),e({content:r.responseText||\"Network request failed\",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(o),clearTimeout(n),e({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(t.data)}))}},logger:(a=ye,{debug:function(t,e){return he>=a&&console.debug(t,e),Promise.resolve()},info:function(t,e){return me>=a&&console.info(t,e),Promise.resolve()},error:function(t,e){return console.error(t,e),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:u({caches:[i({key:\"\".concat(\"4.19.1\",\"-\").concat(t)}),s()]}),userAgent:T(\"4.19.1\").add({segment:\"Browser\"})},f=r(r({},o),n),d=function(){return function(t){return function(t){var e=t.region||\"us\",n=c(m.WithinHeaders,t.appId,t.apiKey),a=k(r(r({hosts:[{url:\"personalization.\".concat(e,\".algolia.com\")}]},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/json\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return p({appId:t.appId,transporter:a},t.methods)}(r(r(r({},o),t),{},{methods:{getPersonalizationStrategy:H,setPersonalizationStrategy:M}}))}};return function(t){var e=t.appId,n=c(void 0!==t.authMode?t.authMode:m.WithinHeaders,e,t.apiKey),a=k(r(r({hosts:[{url:\"\".concat(e,\"-dsn.algolia.net\"),accept:g.Read},{url:\"\".concat(e,\".algolia.net\"),accept:g.Write}].concat(l([{url:\"\".concat(e,\"-1.algolianet.com\")},{url:\"\".concat(e,\"-2.algolianet.com\")},{url:\"\".concat(e,\"-3.algolianet.com\")}]))},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/x-www-form-urlencoded\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return p({transporter:a,appId:e,addAlgoliaAgent:function(t,e){a.userAgent.add({segment:t,version:e})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},t.methods)}(r(r({},f),{},{methods:{search:mt,searchForFacetValues:yt,multipleBatch:pt,multipleGetObjects:ht,multipleQueries:mt,copyIndex:L,copySettings:_,copySynonyms:X,copyRules:V,moveIndex:lt,listIndices:ft,getLogs:nt,listClusters:ct,multipleSearchForFacetValues:yt,getApiKey:tt,addApiKey:W,listApiKeys:st,updateApiKey:jt,deleteApiKey:Z,restoreApiKey:bt,assignUserID:B,assignUserIDs:Q,getUserID:ot,searchUserIDs:wt,listUserIDs:dt,getTopUserIDs:at,removeUserID:gt,hasPendingMappings:it,clearDictionaryEntries:G,deleteDictionaryEntries:$,getDictionarySettings:rt,getAppTask:et,replaceDictionaryEntries:vt,saveDictionaryEntries:Ot,searchDictionaryEntries:Pt,setDictionarySettings:It,waitAppTask:xt,customRequest:Y,initIndex:function(t){return function(e){return ut(t)(e,{methods:{batch:Dt,delete:Ct,findAnswers:Mt,getObject:Wt,getObjects:Qt,saveObject:te,saveObjects:ee,search:ie,searchForFacetValues:ue,waitTask:de,setSettings:fe,getSettings:Lt,partialUpdateObject:_t,partialUpdateObjects:Xt,deleteObject:Ut,deleteObjects:zt,deleteBy:At,clearObjects:Nt,browseObjects:qt,getObjectPosition:Bt,findObject:Kt,exists:Ht,saveSynonym:ae,saveSynonyms:oe,getSynonym:Vt,searchSynonyms:ce,browseSynonyms:kt,deleteSynonym:Ft,clearSynonyms:Rt,replaceAllObjects:Yt,replaceAllSynonyms:$t,searchRules:se,getRule:Gt,deleteRule:Jt,saveRule:re,saveRules:ne,replaceAllRules:Zt,browseRules:St,clearRules:Et}})}},initAnalytics:function(){return function(t){return function(t){var e=t.region||\"us\",n=c(m.WithinHeaders,t.appId,t.apiKey),a=k(r(r({hosts:[{url:\"analytics.\".concat(e,\".algolia.com\")}]},t),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/json\"}),t.headers),queryParameters:r(r({},n.queryParameters()),t.queryParameters)}));return p({appId:t.appId,transporter:a},t.methods)}(r(r(r({},o),t),{},{methods:{addABTest:C,getABTest:z,getABTests:J,stopABTest:F,deleteABTest:U}}))}},initPersonalization:d,initRecommendation:function(){return function(t){return f.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),d()(t)}}}}))}return ge.version=\"4.19.1\",ge}));\n","/**\n * Originally based on:\n * https://github.com/reactjs/react-router/issues/394#issuecomment-220221604\n */\n\nvar CSSescape = require('css.escape')\n\nexports.hash = function hash (h, options) {\n options = options || {}\n var cb = options.callback || function () {}\n // There's no hash to scroll to, so \"success\", we did it.\n if (!h) return void cb()\n var scroller = options.scroller || exports.scroller\n // Push onto callback queue so it runs after the DOM is updated,\n // this is required when navigating from a different page so that\n // the element is rendered on the page before trying to getElementById.\n setTimeout(function () {\n var els = exports.elements(h)\n if (!els) return void cb(true)\n if (scroller(els.id) || scroller(els.name)) return void cb()\n cb(true)\n }, 0)\n}\n\nexports.scroller = function scroller (el) {\n if (!el) return false\n el.scrollIntoView()\n return true\n}\n\nexports.elements = function elements (h) {\n var sels = exports.selectors(h)\n if (!sels) return\n return {\n id: document.getElementById(sels.id),\n name: document.querySelector(sels.name)\n }\n}\n\nexports.selectors = function selectors (h) {\n if (!h) return\n h = h.replace(/^#/, '')\n if (!h) return\n return {\n id: h,\n name: '[name=\"' + CSSescape(h) + '\"]'\n }\n}\n\nexports.anchorate = function anchorate (options) {\n exports.hash(window.location.hash, options)\n}\n\nexports.default = exports.anchorate\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","var CAN_USE_DOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Adapted from Modernizr\n// https://github.com/Modernizr/Modernizr/blob/acb3f0d9/feature-detects/dom/passiveeventlisteners.js#L26-L37\nfunction testPassiveEventListeners() {\n if (!CAN_USE_DOM) {\n return false;\n }\n\n if (!window.addEventListener || !window.removeEventListener || !Object.defineProperty) {\n return false;\n }\n\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n function get() {\n supportsPassiveOption = true;\n }\n\n return get;\n }()\n });\n var noop = function noop() {};\n window.addEventListener('testPassiveEventSupport', noop, opts);\n window.removeEventListener('testPassiveEventSupport', noop, opts);\n } catch (e) {\n // do nothing\n }\n\n return supportsPassiveOption;\n}\n\nvar memoized = void 0;\n\nfunction canUsePassiveEventListeners() {\n if (memoized === undefined) {\n memoized = testPassiveEventListeners();\n }\n return memoized;\n}\n\nfunction normalizeEventOptions(eventOptions) {\n if (!eventOptions) {\n return undefined;\n }\n\n if (!canUsePassiveEventListeners()) {\n // If the browser does not support the passive option, then it is expecting\n // a boolean for the options argument to specify whether it should use\n // capture or not. In more modern browsers, this is passed via the `capture`\n // option, so let's just hoist that value up.\n return !!eventOptions.capture;\n }\n\n return eventOptions;\n}\n\n/* eslint-disable no-bitwise */\n\n/**\n * Generate a unique key for any set of event options\n */\nfunction eventOptionsKey(normalizedEventOptions) {\n if (!normalizedEventOptions) {\n return 0;\n }\n\n // If the browser does not support passive event listeners, the normalized\n // event options will be a boolean.\n if (normalizedEventOptions === true) {\n return 100;\n }\n\n // At this point, the browser supports passive event listeners, so we expect\n // the event options to be an object with possible properties of capture,\n // passive, and once.\n //\n // We want to consistently return the same value, regardless of the order of\n // these properties, so let's use binary maths to assign each property to a\n // bit, and then add those together (with an offset to account for the\n // booleans at the beginning of this function).\n var capture = normalizedEventOptions.capture << 0;\n var passive = normalizedEventOptions.passive << 1;\n var once = normalizedEventOptions.once << 2;\n return capture + passive + once;\n}\n\nfunction ensureCanMutateNextEventHandlers(eventHandlers) {\n if (eventHandlers.handlers === eventHandlers.nextHandlers) {\n // eslint-disable-next-line no-param-reassign\n eventHandlers.nextHandlers = eventHandlers.handlers.slice();\n }\n}\n\nfunction TargetEventHandlers(target) {\n this.target = target;\n this.events = {};\n}\n\nTargetEventHandlers.prototype.getEventHandlers = function () {\n function getEventHandlers(eventName, options) {\n var key = String(eventName) + ' ' + String(eventOptionsKey(options));\n\n if (!this.events[key]) {\n this.events[key] = {\n handlers: [],\n handleEvent: undefined\n };\n this.events[key].nextHandlers = this.events[key].handlers;\n }\n\n return this.events[key];\n }\n\n return getEventHandlers;\n}();\n\nTargetEventHandlers.prototype.handleEvent = function () {\n function handleEvent(eventName, options, event) {\n var eventHandlers = this.getEventHandlers(eventName, options);\n eventHandlers.handlers = eventHandlers.nextHandlers;\n eventHandlers.handlers.forEach(function (handler) {\n if (handler) {\n // We need to check for presence here because a handler function may\n // cause later handlers to get removed. This can happen if you for\n // instance have a waypoint that unmounts another waypoint as part of an\n // onEnter/onLeave handler.\n handler(event);\n }\n });\n }\n\n return handleEvent;\n}();\n\nTargetEventHandlers.prototype.add = function () {\n function add(eventName, listener, options) {\n var _this = this;\n\n // options has already been normalized at this point.\n var eventHandlers = this.getEventHandlers(eventName, options);\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n\n if (eventHandlers.nextHandlers.length === 0) {\n eventHandlers.handleEvent = this.handleEvent.bind(this, eventName, options);\n\n this.target.addEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.nextHandlers.push(listener);\n\n var isSubscribed = true;\n var unsubscribe = function () {\n function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n var index = eventHandlers.nextHandlers.indexOf(listener);\n eventHandlers.nextHandlers.splice(index, 1);\n\n if (eventHandlers.nextHandlers.length === 0) {\n // All event handlers have been removed, so we want to remove the event\n // listener from the target node.\n\n if (_this.target) {\n // There can be a race condition where the target may no longer exist\n // when this function is called, e.g. when a React component is\n // unmounting. Guarding against this prevents the following error:\n //\n // Cannot read property 'removeEventListener' of undefined\n _this.target.removeEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.handleEvent = undefined;\n }\n }\n\n return unsubscribe;\n }();\n return unsubscribe;\n }\n\n return add;\n}();\n\nvar EVENT_HANDLERS_KEY = '__consolidated_events_handlers__';\n\n// eslint-disable-next-line import/prefer-default-export\nfunction addEventListener(target, eventName, listener, options) {\n if (!target[EVENT_HANDLERS_KEY]) {\n // eslint-disable-next-line no-param-reassign\n target[EVENT_HANDLERS_KEY] = new TargetEventHandlers(target);\n }\n var normalizedEventOptions = normalizeEventOptions(options);\n return target[EVENT_HANDLERS_KEY].add(eventName, listener, normalizedEventOptions);\n}\n\nexport { addEventListener };\n","/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n;(function(root, factory) {\n\t// https://github.com/umdjs/umd/blob/master/returnExports.js\n\tif (typeof exports == 'object') {\n\t\t// For Node.js.\n\t\tmodule.exports = factory(root);\n\t} else if (typeof define == 'function' && define.amd) {\n\t\t// For AMD. Register as an anonymous module.\n\t\tdefine([], factory.bind(root, root));\n\t} else {\n\t\t// For browser globals (not exposing the function separately).\n\t\tfactory(root);\n\t}\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn root.CSS.escape;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\treturn cssEscape;\n\n}));\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","(function() {\n\n // nb. This is for IE10 and lower _only_.\n var supportCustomEvent = window.CustomEvent;\n if (!supportCustomEvent || typeof supportCustomEvent === 'object') {\n supportCustomEvent = function CustomEvent(event, x) {\n x = x || {};\n var ev = document.createEvent('CustomEvent');\n ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null);\n return ev;\n };\n supportCustomEvent.prototype = window.Event.prototype;\n }\n\n /**\n * @param {Element} el to check for stacking context\n * @return {boolean} whether this el or its parents creates a stacking context\n */\n function createsStackingContext(el) {\n while (el && el !== document.body) {\n var s = window.getComputedStyle(el);\n var invalid = function(k, ok) {\n return !(s[k] === undefined || s[k] === ok);\n }\n if (s.opacity < 1 ||\n invalid('zIndex', 'auto') ||\n invalid('transform', 'none') ||\n invalid('mixBlendMode', 'normal') ||\n invalid('filter', 'none') ||\n invalid('perspective', 'none') ||\n s['isolation'] === 'isolate' ||\n s.position === 'fixed' ||\n s.webkitOverflowScrolling === 'touch') {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n }\n\n /**\n * Finds the nearest <dialog> from the passed element.\n *\n * @param {Element} el to search from\n * @return {HTMLDialogElement} dialog found\n */\n function findNearestDialog(el) {\n while (el) {\n if (el.localName === 'dialog') {\n return /** @type {HTMLDialogElement} */ (el);\n }\n el = el.parentElement;\n }\n return null;\n }\n\n /**\n * Blur the specified element, as long as it's not the HTML body element.\n * This works around an IE9/10 bug - blurring the body causes Windows to\n * blur the whole application.\n *\n * @param {Element} el to blur\n */\n function safeBlur(el) {\n if (el && el.blur && el !== document.body) {\n el.blur();\n }\n }\n\n /**\n * @param {!NodeList} nodeList to search\n * @param {Node} node to find\n * @return {boolean} whether node is inside nodeList\n */\n function inNodeList(nodeList, node) {\n for (var i = 0; i < nodeList.length; ++i) {\n if (nodeList[i] === node) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @param {HTMLFormElement} el to check\n * @return {boolean} whether this form has method=\"dialog\"\n */\n function isFormMethodDialog(el) {\n if (!el || !el.hasAttribute('method')) {\n return false;\n }\n return el.getAttribute('method').toLowerCase() === 'dialog';\n }\n\n /**\n * @param {!HTMLDialogElement} dialog to upgrade\n * @constructor\n */\n function dialogPolyfillInfo(dialog) {\n this.dialog_ = dialog;\n this.replacedStyleTop_ = false;\n this.openAsModal_ = false;\n\n // Set a11y role. Browsers that support dialog implicitly know this already.\n if (!dialog.hasAttribute('role')) {\n dialog.setAttribute('role', 'dialog');\n }\n\n dialog.show = this.show.bind(this);\n dialog.showModal = this.showModal.bind(this);\n dialog.close = this.close.bind(this);\n\n if (!('returnValue' in dialog)) {\n dialog.returnValue = '';\n }\n\n if ('MutationObserver' in window) {\n var mo = new MutationObserver(this.maybeHideModal.bind(this));\n mo.observe(dialog, {attributes: true, attributeFilter: ['open']});\n } else {\n // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also\n // seem to fire even if the element was removed as part of a parent removal. Use the removed\n // events to force downgrade (useful if removed/immediately added).\n var removed = false;\n var cb = function() {\n removed ? this.downgradeModal() : this.maybeHideModal();\n removed = false;\n }.bind(this);\n var timeout;\n var delayModel = function(ev) {\n if (ev.target !== dialog) { return; } // not for a child element\n var cand = 'DOMNodeRemoved';\n removed |= (ev.type.substr(0, cand.length) === cand);\n window.clearTimeout(timeout);\n timeout = window.setTimeout(cb, 0);\n };\n ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) {\n dialog.addEventListener(name, delayModel);\n });\n }\n // Note that the DOM is observed inside DialogManager while any dialog\n // is being displayed as a modal, to catch modal removal from the DOM.\n\n Object.defineProperty(dialog, 'open', {\n set: this.setOpen.bind(this),\n get: dialog.hasAttribute.bind(dialog, 'open')\n });\n\n this.backdrop_ = document.createElement('div');\n this.backdrop_.className = 'backdrop';\n this.backdrop_.addEventListener('click', this.backdropClick_.bind(this));\n }\n\n dialogPolyfillInfo.prototype = {\n\n get dialog() {\n return this.dialog_;\n },\n\n /**\n * Maybe remove this dialog from the modal top layer. This is called when\n * a modal dialog may no longer be tenable, e.g., when the dialog is no\n * longer open or is no longer part of the DOM.\n */\n maybeHideModal: function() {\n if (this.dialog_.hasAttribute('open') && document.body.contains(this.dialog_)) { return; }\n this.downgradeModal();\n },\n\n /**\n * Remove this dialog from the modal top layer, leaving it as a non-modal.\n */\n downgradeModal: function() {\n if (!this.openAsModal_) { return; }\n this.openAsModal_ = false;\n this.dialog_.style.zIndex = '';\n\n // This won't match the native <dialog> exactly because if the user set top on a centered\n // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's\n // possible to polyfill this perfectly.\n if (this.replacedStyleTop_) {\n this.dialog_.style.top = '';\n this.replacedStyleTop_ = false;\n }\n\n // Clear the backdrop and remove from the manager.\n this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_);\n dialogPolyfill.dm.removeDialog(this);\n },\n\n /**\n * @param {boolean} value whether to open or close this dialog\n */\n setOpen: function(value) {\n if (value) {\n this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', '');\n } else {\n this.dialog_.removeAttribute('open');\n this.maybeHideModal(); // nb. redundant with MutationObserver\n }\n },\n\n /**\n * Handles clicks on the fake .backdrop element, redirecting them as if\n * they were on the dialog itself.\n *\n * @param {!Event} e to redirect\n */\n backdropClick_: function(e) {\n if (!this.dialog_.hasAttribute('tabindex')) {\n // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be\n // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this\n // would not be needed - clicks would move the implicit cursor there.\n var fake = document.createElement('div');\n this.dialog_.insertBefore(fake, this.dialog_.firstChild);\n fake.tabIndex = -1;\n fake.focus();\n this.dialog_.removeChild(fake);\n } else {\n this.dialog_.focus();\n }\n\n var redirectedEvent = document.createEvent('MouseEvents');\n redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window,\n e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey,\n e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n this.dialog_.dispatchEvent(redirectedEvent);\n e.stopPropagation();\n },\n\n /**\n * Focuses on the first focusable element within the dialog. This will always blur the current\n * focus, even if nothing within the dialog is found.\n */\n focus_: function() {\n // Find element with `autofocus` attribute, or fall back to the first form/tabindex control.\n var target = this.dialog_.querySelector('[autofocus]:not([disabled])');\n if (!target && this.dialog_.tabIndex >= 0) {\n target = this.dialog_;\n }\n if (!target) {\n // Note that this is 'any focusable area'. This list is probably not exhaustive, but the\n // alternative involves stepping through and trying to focus everything.\n var opts = ['button', 'input', 'keygen', 'select', 'textarea'];\n var query = opts.map(function(el) {\n return el + ':not([disabled])';\n });\n // TODO(samthor): tabindex values that are not numeric are not focusable.\n query.push('[tabindex]:not([disabled]):not([tabindex=\"\"])'); // tabindex != \"\", not disabled\n target = this.dialog_.querySelector(query.join(', '));\n }\n safeBlur(document.activeElement);\n target && target.focus();\n },\n\n /**\n * Sets the zIndex for the backdrop and dialog.\n *\n * @param {number} dialogZ\n * @param {number} backdropZ\n */\n updateZIndex: function(dialogZ, backdropZ) {\n if (dialogZ < backdropZ) {\n throw new Error('dialogZ should never be < backdropZ');\n }\n this.dialog_.style.zIndex = dialogZ;\n this.backdrop_.style.zIndex = backdropZ;\n },\n\n /**\n * Shows the dialog. If the dialog is already open, this does nothing.\n */\n show: function() {\n if (!this.dialog_.open) {\n this.setOpen(true);\n this.focus_();\n }\n },\n\n /**\n * Show this dialog modally.\n */\n showModal: function() {\n if (this.dialog_.hasAttribute('open')) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: The element is already open, and therefore cannot be opened modally.');\n }\n if (!document.body.contains(this.dialog_)) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: The element is not in a Document.');\n }\n if (!dialogPolyfill.dm.pushDialog(this)) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: There are too many open modal dialogs.');\n }\n\n if (createsStackingContext(this.dialog_.parentElement)) {\n console.warn('A dialog is being shown inside a stacking context. ' +\n 'This may cause it to be unusable. For more information, see this link: ' +\n 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context');\n }\n\n this.setOpen(true);\n this.openAsModal_ = true;\n\n // Optionally center vertically, relative to the current viewport.\n if (dialogPolyfill.needsCentering(this.dialog_)) {\n dialogPolyfill.reposition(this.dialog_);\n this.replacedStyleTop_ = true;\n } else {\n this.replacedStyleTop_ = false;\n }\n\n // Insert backdrop.\n this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling);\n\n // Focus on whatever inside the dialog.\n this.focus_();\n },\n\n /**\n * Closes this HTMLDialogElement. This is optional vs clearing the open\n * attribute, however this fires a 'close' event.\n *\n * @param {string=} opt_returnValue to use as the returnValue\n */\n close: function(opt_returnValue) {\n if (!this.dialog_.hasAttribute('open')) {\n throw new Error('Failed to execute \\'close\\' on dialog: The element does not have an \\'open\\' attribute, and therefore cannot be closed.');\n }\n this.setOpen(false);\n\n // Leave returnValue untouched in case it was set directly on the element\n if (opt_returnValue !== undefined) {\n this.dialog_.returnValue = opt_returnValue;\n }\n\n // Triggering \"close\" event for any attached listeners on the <dialog>.\n var closeEvent = new supportCustomEvent('close', {\n bubbles: false,\n cancelable: false\n });\n this.dialog_.dispatchEvent(closeEvent);\n }\n\n };\n\n var dialogPolyfill = {};\n\n dialogPolyfill.reposition = function(element) {\n var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2;\n element.style.top = Math.max(scrollTop, topValue) + 'px';\n };\n\n dialogPolyfill.isInlinePositionSetByStylesheet = function(element) {\n for (var i = 0; i < document.styleSheets.length; ++i) {\n var styleSheet = document.styleSheets[i];\n var cssRules = null;\n // Some browsers throw on cssRules.\n try {\n cssRules = styleSheet.cssRules;\n } catch (e) {}\n if (!cssRules) { continue; }\n for (var j = 0; j < cssRules.length; ++j) {\n var rule = cssRules[j];\n var selectedNodes = null;\n // Ignore errors on invalid selector texts.\n try {\n selectedNodes = document.querySelectorAll(rule.selectorText);\n } catch(e) {}\n if (!selectedNodes || !inNodeList(selectedNodes, element)) {\n continue;\n }\n var cssTop = rule.style.getPropertyValue('top');\n var cssBottom = rule.style.getPropertyValue('bottom');\n if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) {\n return true;\n }\n }\n }\n return false;\n };\n\n dialogPolyfill.needsCentering = function(dialog) {\n var computedStyle = window.getComputedStyle(dialog);\n if (computedStyle.position !== 'absolute') {\n return false;\n }\n\n // We must determine whether the top/bottom specified value is non-auto. In\n // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but\n // Firefox returns the used value. So we do this crazy thing instead: check\n // the inline style and then go through CSS rules.\n if ((dialog.style.top !== 'auto' && dialog.style.top !== '') ||\n (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) {\n return false;\n }\n return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog);\n };\n\n /**\n * @param {!Element} element to force upgrade\n */\n dialogPolyfill.forceRegisterDialog = function(element) {\n if (window.HTMLDialogElement || element.showModal) {\n console.warn('This browser already supports <dialog>, the polyfill ' +\n 'may not work correctly', element);\n }\n if (element.localName !== 'dialog') {\n throw new Error('Failed to register dialog: The element is not a dialog.');\n }\n new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element));\n };\n\n /**\n * @param {!Element} element to upgrade, if necessary\n */\n dialogPolyfill.registerDialog = function(element) {\n if (!element.showModal) {\n dialogPolyfill.forceRegisterDialog(element);\n }\n };\n\n /**\n * @constructor\n */\n dialogPolyfill.DialogManager = function() {\n /** @type {!Array<!dialogPolyfillInfo>} */\n this.pendingDialogStack = [];\n\n var checkDOM = this.checkDOM_.bind(this);\n\n // The overlay is used to simulate how a modal dialog blocks the document.\n // The blocking dialog is positioned on top of the overlay, and the rest of\n // the dialogs on the pending dialog stack are positioned below it. In the\n // actual implementation, the modal dialog stacking is controlled by the\n // top layer, where z-index has no effect.\n this.overlay = document.createElement('div');\n this.overlay.className = '_dialog_overlay';\n this.overlay.addEventListener('click', function(e) {\n this.forwardTab_ = undefined;\n e.stopPropagation();\n checkDOM([]); // sanity-check DOM\n }.bind(this));\n\n this.handleKey_ = this.handleKey_.bind(this);\n this.handleFocus_ = this.handleFocus_.bind(this);\n\n this.zIndexLow_ = 100000;\n this.zIndexHigh_ = 100000 + 150;\n\n this.forwardTab_ = undefined;\n\n if ('MutationObserver' in window) {\n this.mo_ = new MutationObserver(function(records) {\n var removed = [];\n records.forEach(function(rec) {\n for (var i = 0, c; c = rec.removedNodes[i]; ++i) {\n if (!(c instanceof Element)) {\n continue;\n } else if (c.localName === 'dialog') {\n removed.push(c);\n }\n removed = removed.concat(c.querySelectorAll('dialog'));\n }\n });\n removed.length && checkDOM(removed);\n });\n }\n };\n\n /**\n * Called on the first modal dialog being shown. Adds the overlay and related\n * handlers.\n */\n dialogPolyfill.DialogManager.prototype.blockDocument = function() {\n document.documentElement.addEventListener('focus', this.handleFocus_, true);\n document.addEventListener('keydown', this.handleKey_);\n this.mo_ && this.mo_.observe(document, {childList: true, subtree: true});\n };\n\n /**\n * Called on the first modal dialog being removed, i.e., when no more modal\n * dialogs are visible.\n */\n dialogPolyfill.DialogManager.prototype.unblockDocument = function() {\n document.documentElement.removeEventListener('focus', this.handleFocus_, true);\n document.removeEventListener('keydown', this.handleKey_);\n this.mo_ && this.mo_.disconnect();\n };\n\n /**\n * Updates the stacking of all known dialogs.\n */\n dialogPolyfill.DialogManager.prototype.updateStacking = function() {\n var zIndex = this.zIndexHigh_;\n\n for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n dpi.updateZIndex(--zIndex, --zIndex);\n if (i === 0) {\n this.overlay.style.zIndex = --zIndex;\n }\n }\n\n // Make the overlay a sibling of the dialog itself.\n var last = this.pendingDialogStack[0];\n if (last) {\n var p = last.dialog.parentNode || document.body;\n p.appendChild(this.overlay);\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n };\n\n /**\n * @param {Element} candidate to check if contained or is the top-most modal dialog\n * @return {boolean} whether candidate is contained in top dialog\n */\n dialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) {\n while (candidate = findNearestDialog(candidate)) {\n for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n if (dpi.dialog === candidate) {\n return i === 0; // only valid if top-most\n }\n }\n candidate = candidate.parentElement;\n }\n return false;\n };\n\n dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) {\n if (this.containedByTopDialog_(event.target)) { return; }\n\n event.preventDefault();\n event.stopPropagation();\n safeBlur(/** @type {Element} */ (event.target));\n\n if (this.forwardTab_ === undefined) { return; } // move focus only from a tab key\n\n var dpi = this.pendingDialogStack[0];\n var dialog = dpi.dialog;\n var position = dialog.compareDocumentPosition(event.target);\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.forwardTab_) { // forward\n dpi.focus_();\n } else { // backwards\n document.documentElement.focus();\n }\n } else {\n // TODO: Focus after the dialog, is ignored.\n }\n\n return false;\n };\n\n dialogPolyfill.DialogManager.prototype.handleKey_ = function(event) {\n this.forwardTab_ = undefined;\n if (event.keyCode === 27) {\n event.preventDefault();\n event.stopPropagation();\n var cancelEvent = new supportCustomEvent('cancel', {\n bubbles: false,\n cancelable: true\n });\n var dpi = this.pendingDialogStack[0];\n if (dpi && dpi.dialog.dispatchEvent(cancelEvent)) {\n dpi.dialog.close();\n }\n } else if (event.keyCode === 9) {\n this.forwardTab_ = !event.shiftKey;\n }\n };\n\n /**\n * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are\n * removed and immediately readded don't stay modal, they become normal.\n *\n * @param {!Array<!HTMLDialogElement>} removed that have definitely been removed\n */\n dialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) {\n // This operates on a clone because it may cause it to change. Each change also calls\n // updateStacking, which only actually needs to happen once. But who removes many modal dialogs\n // at a time?!\n var clone = this.pendingDialogStack.slice();\n clone.forEach(function(dpi) {\n if (removed.indexOf(dpi.dialog) !== -1) {\n dpi.downgradeModal();\n } else {\n dpi.maybeHideModal();\n }\n });\n };\n\n /**\n * @param {!dialogPolyfillInfo} dpi\n * @return {boolean} whether the dialog was allowed\n */\n dialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) {\n var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1;\n if (this.pendingDialogStack.length >= allowed) {\n return false;\n }\n if (this.pendingDialogStack.unshift(dpi) === 1) {\n this.blockDocument();\n }\n this.updateStacking();\n return true;\n };\n\n /**\n * @param {!dialogPolyfillInfo} dpi\n */\n dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) {\n var index = this.pendingDialogStack.indexOf(dpi);\n if (index === -1) { return; }\n\n this.pendingDialogStack.splice(index, 1);\n if (this.pendingDialogStack.length === 0) {\n this.unblockDocument();\n }\n this.updateStacking();\n };\n\n dialogPolyfill.dm = new dialogPolyfill.DialogManager();\n dialogPolyfill.formSubmitter = null;\n dialogPolyfill.useValue = null;\n\n /**\n * Installs global handlers, such as click listers and native method overrides. These are needed\n * even if a no dialog is registered, as they deal with <form method=\"dialog\">.\n */\n if (window.HTMLDialogElement === undefined) {\n\n /**\n * If HTMLFormElement translates method=\"DIALOG\" into 'get', then replace the descriptor with\n * one that returns the correct value.\n */\n var testForm = document.createElement('form');\n testForm.setAttribute('method', 'dialog');\n if (testForm.method !== 'dialog') {\n var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method');\n if (methodDescriptor) {\n // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything\n // and don't bother to update the element.\n var realGet = methodDescriptor.get;\n methodDescriptor.get = function() {\n if (isFormMethodDialog(this)) {\n return 'dialog';\n }\n return realGet.call(this);\n };\n var realSet = methodDescriptor.set;\n methodDescriptor.set = function(v) {\n if (typeof v === 'string' && v.toLowerCase() === 'dialog') {\n return this.setAttribute('method', v);\n }\n return realSet.call(this, v);\n };\n Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor);\n }\n }\n\n /**\n * Global 'click' handler, to capture the <input type=\"submit\"> or <button> element which has\n * submitted a <form method=\"dialog\">. Needed as Safari and others don't report this inside\n * document.activeElement.\n */\n document.addEventListener('click', function(ev) {\n dialogPolyfill.formSubmitter = null;\n dialogPolyfill.useValue = null;\n if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission\n\n var target = /** @type {Element} */ (ev.target);\n if (!target || !isFormMethodDialog(target.form)) { return; }\n\n var valid = (target.type === 'submit' && ['button', 'input'].indexOf(target.localName) > -1);\n if (!valid) {\n if (!(target.localName === 'input' && target.type === 'image')) { return; }\n // this is a <input type=\"image\">, which can submit forms\n dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY;\n }\n\n var dialog = findNearestDialog(target);\n if (!dialog) { return; }\n\n dialogPolyfill.formSubmitter = target;\n }, false);\n\n /**\n * Replace the native HTMLFormElement.submit() method, as it won't fire the\n * submit event and give us a chance to respond.\n */\n var nativeFormSubmit = HTMLFormElement.prototype.submit;\n var replacementFormSubmit = function () {\n if (!isFormMethodDialog(this)) {\n return nativeFormSubmit.call(this);\n }\n var dialog = findNearestDialog(this);\n dialog && dialog.close();\n };\n HTMLFormElement.prototype.submit = replacementFormSubmit;\n\n /**\n * Global form 'dialog' method handler. Closes a dialog correctly on submit\n * and possibly sets its return value.\n */\n document.addEventListener('submit', function(ev) {\n var form = /** @type {HTMLFormElement} */ (ev.target);\n if (!isFormMethodDialog(form)) { return; }\n ev.preventDefault();\n\n var dialog = findNearestDialog(form);\n if (!dialog) { return; }\n\n // Forms can only be submitted via .submit() or a click (?), but anyway: sanity-check that\n // the submitter is correct before using its value as .returnValue.\n var s = dialogPolyfill.formSubmitter;\n if (s && s.form === form) {\n dialog.close(dialogPolyfill.useValue || s.value);\n } else {\n dialog.close();\n }\n dialogPolyfill.formSubmitter = null;\n }, true);\n }\n\n dialogPolyfill['forceRegisterDialog'] = dialogPolyfill.forceRegisterDialog;\n dialogPolyfill['registerDialog'] = dialogPolyfill.registerDialog;\n\n if (typeof define === 'function' && 'amd' in define) {\n // AMD support\n define(function() { return dialogPolyfill; });\n } else if (typeof module === 'object' && typeof module['exports'] === 'object') {\n // CommonJS support\n module['exports'] = dialogPolyfill;\n } else {\n // all others\n window['dialogPolyfill'] = dialogPolyfill;\n }\n})();\n","'use strict';\n\nmodule.exports = function contains(other) {\n\tif (arguments.length < 1) {\n\t\tthrow new TypeError('1 argument is required');\n\t}\n\tif (typeof other !== 'object') {\n\t\tthrow new TypeError('Argument 1 (â€other“) to Node.contains must be an instance of Node');\n\t}\n\n\tvar node = other;\n\tdo {\n\t\tif (this === node) {\n\t\t\treturn true;\n\t\t}\n\t\tif (node) {\n\t\t\tnode = node.parentNode;\n\t\t}\n\t} while (node);\n\n\treturn false;\n};\n","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar boundContains = function contains(node, other) {\n\treturn polyfill.apply(node, [other]);\n};\n\ndefine(boundContains, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundContains;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.contains) {\n\t\t\treturn document.contains;\n\t\t}\n\t\tif (document.body && document.body.contains) {\n\t\t\ttry {\n\t\t\t\tif (typeof document.body.contains.call(document, '') === 'boolean') {\n\t\t\t\t\treturn document.body.contains;\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimContains() {\n\tvar polyfill = getPolyfill();\n\tif (typeof document !== 'undefined') {\n\t\tdefine(\n\t\t\tdocument,\n\t\t\t{ contains: polyfill },\n\t\t\t{ contains: function () { return document.contains !== polyfill; } }\n\t\t);\n\t\tif (typeof Element !== 'undefined') {\n\t\t\tdefine(\n\t\t\t\tElement.prototype,\n\t\t\t\t{ contains: polyfill },\n\t\t\t\t{ contains: function () { return Element.prototype.contains !== polyfill; } }\n\t\t\t);\n\t\t}\n\t}\n\treturn polyfill;\n};\n","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","/*! @license DOMPurify 3.1.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.4/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n } = Object;\n let {\n freeze,\n seal,\n create\n } = Object; // eslint-disable-line import/no-mutable-exports\n let {\n apply,\n construct\n } = typeof Reflect !== 'undefined' && Reflect;\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n if (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n }\n const arrayForEach = unapply(Array.prototype.forEach);\n const arrayPop = unapply(Array.prototype.pop);\n const arrayPush = unapply(Array.prototype.push);\n const stringToLowerCase = unapply(String.prototype.toLowerCase);\n const stringToString = unapply(String.prototype.toString);\n const stringMatch = unapply(String.prototype.match);\n const stringReplace = unapply(String.prototype.replace);\n const stringIndexOf = unapply(String.prototype.indexOf);\n const stringTrim = unapply(String.prototype.trim);\n const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n const regExpTest = unapply(RegExp.prototype.test);\n const typeErrorCreate = unconstruct(TypeError);\n function numberIsNaN(x) {\n // eslint-disable-next-line unicorn/prefer-number-properties\n return typeof x === 'number' && isNaN(x);\n }\n\n /**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n }\n\n /**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n }\n\n /**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\n function addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n }\n\n /**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\n function cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n }\n\n /**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\n function clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n }\n\n /**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\n function lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n }\n\n const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n const text = freeze(['#text']);\n\n const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\n const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n\n const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n const DOCTYPE_NAME = seal(/^html$/i);\n const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n ERB_EXPR: ERB_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR,\n DATA_ATTR: DATA_ATTR,\n ARIA_ATTR: ARIA_ATTR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n DOCTYPE_NAME: DOCTYPE_NAME,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT\n });\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n };\n\n const getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\n const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n function createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '3.1.4';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Specify the maximum element nesting depth to prevent mXSS */\n const MAX_NESTING_DEPTH = 255;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR,\n // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS),\n // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS,\n // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (\n // eslint-disable-next-line unicorn/no-typeof-undefined\n typeof elm.__depth !== 'undefined' && typeof elm.__depth !== 'number' ||\n // eslint-disable-next-line unicorn/no-typeof-undefined\n typeof elm.__removalCount !== 'undefined' && typeof elm.__removalCount !== 'number' || typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function _isNode(object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n arrayForEach(hooks[entryPoint], hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any ocurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement || value === '__depth' || value === '__removalCount')) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n const {\n attributes\n } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n const parentNode = getParentNode(shadowNode);\n\n /* Set the nesting depth of an element */\n if (shadowNode.nodeType === NODE_TYPE.element) {\n if (parentNode && parentNode.__depth) {\n /*\n We want the depth of the node in the original tree, which can\n change when it's removed from its parent.\n */\n shadowNode.__depth = (shadowNode.__removalCount || 0) + parentNode.__depth + 1;\n } else {\n shadowNode.__depth = 1;\n }\n }\n\n /*\n * Remove an element if nested too deeply to avoid mXSS\n * or if the __depth might have been tampered with\n */\n if (shadowNode.__depth >= MAX_NESTING_DEPTH || shadowNode.__depth < 0 || numberIsNaN(shadowNode.__depth)) {\n _forceRemove(shadowNode);\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n shadowNode.content.__depth = shadowNode.__depth;\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n const parentNode = getParentNode(currentNode);\n\n /* Set the nesting depth of an element */\n if (currentNode.nodeType === NODE_TYPE.element) {\n if (parentNode && parentNode.__depth) {\n /*\n We want the depth of the node in the original tree, which can\n change when it's removed from its parent.\n */\n currentNode.__depth = (currentNode.__removalCount || 0) + parentNode.__depth + 1;\n } else {\n currentNode.__depth = 1;\n }\n }\n\n /*\n * Remove an element if nested too deeply to avoid mXSS\n * or if the __depth might have been tampered with\n */\n if (currentNode.__depth >= MAX_NESTING_DEPTH || currentNode.__depth < 0 || numberIsNaN(currentNode.__depth)) {\n _forceRemove(currentNode);\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n currentNode.content.__depth = currentNode.__depth;\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n return DOMPurify;\n }\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\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","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst endsWithSuffixes = (suffixes, input) => {\n for (const suffix of suffixes) {\n if (input.endsWith(suffix)) return true;\n }\n return false;\n};\nconst suffixes = [`.html`, `.json`, `.js`, `.map`, `.txt`, `.xml`, `.pdf`];\nconst applyTrailingSlashOption = (input, option = `always`) => {\n if (input === `/`) return input;\n const hasTrailingSlash = input.endsWith(`/`);\n if (endsWithSuffixes(suffixes, input)) {\n return input;\n }\n if (option === `always`) {\n return hasTrailingSlash ? input : `${input}/`;\n }\n if (option === `never`) {\n return hasTrailingSlash ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-403-js\": () => import(\"./../../../src/pages/403.js\" /* webpackChunkName: \"component---src-pages-403-js\" */),\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-about-js\": () => import(\"./../../../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n \"component---src-pages-admin-js\": () => import(\"./../../../src/pages/admin.js\" /* webpackChunkName: \"component---src-pages-admin-js\" */),\n \"component---src-pages-admin-upload-js\": () => import(\"./../../../src/pages/admin-upload.js\" /* webpackChunkName: \"component---src-pages-admin-upload-js\" */),\n \"component---src-pages-assessment-personality-js\": () => import(\"./../../../src/pages/assessment/personality.js\" /* webpackChunkName: \"component---src-pages-assessment-personality-js\" */),\n \"component---src-pages-assessment-personality-results-js\": () => import(\"./../../../src/pages/assessment/personality/results.js\" /* webpackChunkName: \"component---src-pages-assessment-personality-results-js\" */),\n \"component---src-pages-cancel-subscription-js\": () => import(\"./../../../src/pages/cancel-subscription.js\" /* webpackChunkName: \"component---src-pages-cancel-subscription-js\" */),\n \"component---src-pages-career-builder-js\": () => import(\"./../../../src/pages/career-builder.js\" /* webpackChunkName: \"component---src-pages-career-builder-js\" */),\n \"component---src-pages-change-password-js\": () => import(\"./../../../src/pages/change-password.js\" /* webpackChunkName: \"component---src-pages-change-password-js\" */),\n \"component---src-pages-contact-js\": () => import(\"./../../../src/pages/contact.js\" /* webpackChunkName: \"component---src-pages-contact-js\" */),\n \"component---src-pages-create-a-plan-js\": () => import(\"./../../../src/pages/create-a-plan.js\" /* webpackChunkName: \"component---src-pages-create-a-plan-js\" */),\n \"component---src-pages-educator-js\": () => import(\"./../../../src/pages/educator.js\" /* webpackChunkName: \"component---src-pages-educator-js\" */),\n \"component---src-pages-es-es-member-js\": () => import(\"./../../../src/pages/es-ES/member.js\" /* webpackChunkName: \"component---src-pages-es-es-member-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-pages-login-individuals-js\": () => import(\"./../../../src/pages/login/individuals.js\" /* webpackChunkName: \"component---src-pages-login-individuals-js\" */),\n \"component---src-pages-login-js\": () => import(\"./../../../src/pages/login.js\" /* webpackChunkName: \"component---src-pages-login-js\" */),\n \"component---src-pages-membership-cancelled-js\": () => import(\"./../../../src/pages/membership-cancelled.js\" /* webpackChunkName: \"component---src-pages-membership-cancelled-js\" */),\n \"component---src-pages-news-js\": () => import(\"./../../../src/pages/news.js\" /* webpackChunkName: \"component---src-pages-news-js\" */),\n \"component---src-pages-newsletter-js\": () => import(\"./../../../src/pages/newsletter.js\" /* webpackChunkName: \"component---src-pages-newsletter-js\" */),\n \"component---src-pages-passwordless-authentication-js\": () => import(\"./../../../src/pages/passwordless/authentication.js\" /* webpackChunkName: \"component---src-pages-passwordless-authentication-js\" */),\n \"component---src-pages-passwordless-verifier-js\": () => import(\"./../../../src/pages/passwordless/verifier.js\" /* webpackChunkName: \"component---src-pages-passwordless-verifier-js\" */),\n \"component---src-pages-profile-js\": () => import(\"./../../../src/pages/profile.js\" /* webpackChunkName: \"component---src-pages-profile-js\" */),\n \"component---src-pages-signup-educators-js\": () => import(\"./../../../src/pages/signup/educators.js\" /* webpackChunkName: \"component---src-pages-signup-educators-js\" */),\n \"component---src-pages-signup-employers-js\": () => import(\"./../../../src/pages/signup/employers.js\" /* webpackChunkName: \"component---src-pages-signup-employers-js\" */),\n \"component---src-pages-signup-individuals-js\": () => import(\"./../../../src/pages/signup/individuals.js\" /* webpackChunkName: \"component---src-pages-signup-individuals-js\" */),\n \"component---src-pages-signup-promo-all-js\": () => import(\"./../../../src/pages/signup/promo/all.js\" /* webpackChunkName: \"component---src-pages-signup-promo-all-js\" */),\n \"component---src-pages-signup-promo-email-js\": () => import(\"./../../../src/pages/signup/promo/email.js\" /* webpackChunkName: \"component---src-pages-signup-promo-email-js\" */),\n \"component---src-pages-signup-promo-google-js\": () => import(\"./../../../src/pages/signup/promo/google.js\" /* webpackChunkName: \"component---src-pages-signup-promo-google-js\" */),\n \"component---src-pages-signup-promo-microsoft-js\": () => import(\"./../../../src/pages/signup/promo/microsoft.js\" /* webpackChunkName: \"component---src-pages-signup-promo-microsoft-js\" */),\n \"component---src-templates-basic-page-js\": () => import(\"./../../../src/templates/basic-page.js\" /* webpackChunkName: \"component---src-templates-basic-page-js\" */),\n \"component---src-templates-blog-js\": () => import(\"./../../../src/templates/blog.js\" /* webpackChunkName: \"component---src-templates-blog-js\" */),\n \"component---src-templates-career-js\": () => import(\"./../../../src/templates/career.js\" /* webpackChunkName: \"component---src-templates-career-js\" */),\n \"component---src-templates-career-plan-js\": () => import(\"./../../../src/templates/career-plan.js\" /* webpackChunkName: \"component---src-templates-career-plan-js\" */),\n \"component---src-templates-company-js\": () => import(\"./../../../src/templates/company.js\" /* webpackChunkName: \"component---src-templates-company-js\" */),\n \"component---src-templates-major-js\": () => import(\"./../../../src/templates/major.js\" /* webpackChunkName: \"component---src-templates-major-js\" */),\n \"component---src-templates-school-js\": () => import(\"./../../../src/templates/school.js\" /* webpackChunkName: \"component---src-templates-school-js\" */),\n \"component---src-templates-story-js\": () => import(\"./../../../src/templates/story.js\" /* webpackChunkName: \"component---src-templates-story-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-use-query-params/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Wingspans\",\"short_name\":\"Wingspans\",\"start_url\":\"/\",\"background_color\":\"#FFFFFF\",\"theme_color\":\"#363636\",\"display\":\"minimal-ui\",\"icon\":\"src/images/favicon-32x32.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"b6299cfb7381b5795d96d0e7a16f5e7d\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js'),\n options: {\"plugins\":[],\"id\":\"GTM-PQW6KWQ\",\"includeInDevelopment\":true,\"defaultDataLayer\":{\"type\":\"object\",\"value\":{\"platform\":\"gatsby\"}},\"routeChangeEventName\":\"gatsby-route-change\",\"enableWebVitalsTracking\":false,\"selfHostedOrigin\":\"https://www.googletagmanager.com\"},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","exports.createContentDigest = () => ``\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import React from \"react\"\n\nexport const ServerSliceRenderer = ({ sliceId, children }) => {\n const contents = [\n React.createElement(`slice-start`, {\n id: `${sliceId}-1`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-1`,\n }),\n ]\n\n if (children) {\n // if children exist, we split the slice into a before and after piece\n // see renderSlices in render-html\n contents.push(children)\n contents.push(\n React.createElement(`slice-start`, {\n id: `${sliceId}-2`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-2`,\n })\n )\n }\n\n return contents\n}\n","import React, { useContext } from \"react\"\nimport { createContentDigest } from \"gatsby-core-utils/create-content-digest\"\nimport { SlicesMapContext, SlicesPropsContext } from \"./context\"\nimport { ServerSliceRenderer } from \"./server-slice-renderer\"\n\nconst getSliceId = (sliceName, sliceProps) => {\n if (!Object.keys(sliceProps).length) {\n return sliceName\n }\n\n const propsString = createContentDigest(sliceProps)\n return `${sliceName}-${propsString}`\n}\n\nexport const ServerSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesProps = useContext(SlicesPropsContext)\n const concreteSliceName = slicesMap[sliceName]\n\n if (!concreteSliceName) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n const sliceId = getSliceId(concreteSliceName, sliceProps)\n\n // set props on context object for static-entry to return\n let sliceUsage = slicesProps[sliceId]\n if (!sliceUsage) {\n slicesProps[sliceId] = sliceUsage = {\n props: sliceProps,\n sliceName: concreteSliceName,\n hasChildren: !!children,\n }\n } else {\n if (children) {\n sliceUsage.hasChildren = true\n }\n }\n\n return <ServerSliceRenderer sliceId={sliceId}>{children}</ServerSliceRenderer>\n}\n","import React, { useContext } from \"react\"\nimport { SlicesMapContext, SlicesResultsContext } from \"./context\"\n\nexport const InlineSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesResultsMap = useContext(SlicesResultsContext)\n const concreteSliceName = slicesMap[sliceName]\n const slice = slicesResultsMap.get(concreteSliceName)\n\n if (!slice) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n return (\n <slice.component\n sliceContext={slice.sliceContext}\n data={slice.data}\n {...sliceProps}\n >\n {children}\n </slice.component>\n )\n}\n","\"use client\"\n\nimport React, { useContext } from \"react\"\nimport { ServerSlice } from \"./slice/server-slice\"\nimport { InlineSlice } from \"./slice/inline-slice\"\nimport { SlicesContext } from \"./slice/context\"\n\nexport function Slice(props) {\n if (process.env.GATSBY_SLICES) {\n // we use sliceName internally, so remap alias to sliceName\n const internalProps = {\n ...props,\n sliceName: props.alias,\n }\n delete internalProps.alias\n delete internalProps.__renderedByLocation\n\n const slicesContext = useContext(SlicesContext)\n\n // validate props\n const propErrors = validateSliceProps(props)\n if (Object.keys(propErrors).length) {\n throw new SlicePropsError(\n slicesContext.renderEnvironment === `browser`,\n internalProps.sliceName,\n propErrors,\n props.__renderedByLocation\n )\n }\n\n if (slicesContext.renderEnvironment === `server`) {\n return <ServerSlice {...internalProps} />\n } else if (slicesContext.renderEnvironment === `browser`) {\n // in the browser, we'll just render the component as is\n return <InlineSlice {...internalProps} />\n } else if (\n slicesContext.renderEnvironment === `engines` ||\n slicesContext.renderEnvironment === `dev-ssr`\n ) {\n // if we're in SSR, we'll just render the component as is\n return <InlineSlice {...internalProps} />\n } else if (slicesContext.renderEnvironment === `slices`) {\n // we are not yet supporting nested slices\n\n let additionalContextMessage = ``\n\n // just in case generating additional contextual information fails, we still want the base message to show\n // and not show another cryptic error message\n try {\n additionalContextMessage = `\\n\\nSlice component \"${slicesContext.sliceRoot.name}\" (${slicesContext.sliceRoot.componentPath}) tried to render <Slice alias=\"${props.alias}\"/>`\n } catch {\n // don't need to handle it, we will just skip the additional context message if we fail to generate it\n }\n\n throw new Error(\n `Nested slices are not supported.${additionalContextMessage}\\n\\nSee https://gatsbyjs.com/docs/reference/built-in-components/gatsby-slice#nested-slices`\n )\n } else {\n throw new Error(\n `Slice context \"${slicesContext.renderEnvironment}\" is not supported.`\n )\n }\n } else {\n throw new Error(`Slices are disabled.`)\n }\n}\n\nclass SlicePropsError extends Error {\n constructor(inBrowser, sliceName, propErrors, renderedByLocation) {\n const errors = Object.entries(propErrors)\n .map(\n ([key, value]) =>\n `not serializable \"${value}\" type passed to \"${key}\" prop`\n )\n .join(`, `)\n\n const name = `SlicePropsError`\n let stack = ``\n let message = ``\n\n if (inBrowser) {\n // They're just (kinda) kidding, I promise... You can still work here <3\n // https://www.gatsbyjs.com/careers/\n const fullStack =\n React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugCurrentFrame.getCurrentStack()\n\n // remove the first line of the stack trace\n const stackLines = fullStack.trim().split(`\\n`).slice(1)\n stackLines[0] = stackLines[0].trim()\n stack = `\\n` + stackLines.join(`\\n`)\n\n message = `Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n } else {\n // we can't really grab any extra info outside of the browser, so just print what we can\n message = `${name}: Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n const stackLines = new Error().stack.trim().split(`\\n`).slice(2)\n stack = `${message}\\n${stackLines.join(`\\n`)}`\n }\n\n super(message)\n this.name = name\n if (stack) {\n this.stack = stack\n } else {\n Error.captureStackTrace(this, SlicePropsError)\n }\n\n if (renderedByLocation) {\n this.forcedLocation = { ...renderedByLocation, functionName: `Slice` }\n }\n }\n}\n\nconst validateSliceProps = (\n props,\n errors = {},\n seenObjects = [],\n path = null\n) => {\n // recursively validate all props\n for (const [name, value] of Object.entries(props)) {\n if (\n value === undefined ||\n value === null ||\n (!path && name === `children`)\n ) {\n continue\n }\n\n const propPath = path ? `${path}.${name}` : name\n\n if (typeof value === `function`) {\n errors[propPath] = typeof value\n } else if (typeof value === `object` && seenObjects.indexOf(value) <= 0) {\n seenObjects.push(value)\n validateSliceProps(value, errors, seenObjects, propPath)\n }\n }\n\n return errors\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n slicesMap: pageData.slicesMap ?? {},\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.slicesDataDb = new Map()\n this.sliceInflightDb = new Map()\n this.slicesDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadSliceDataJson(sliceName) {\n if (this.slicesDataDb.has(sliceName)) {\n const jsonPayload = this.slicesDataDb.get(sliceName)\n return Promise.resolve({ sliceName, jsonPayload })\n }\n\n const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n return doFetch(url, `GET`).then(res => {\n const jsonPayload = JSON.parse(res.responseText)\n\n this.slicesDataDb.set(sliceName, jsonPayload)\n return { sliceName, jsonPayload }\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return Promise.resolve({\n error: page.error,\n status: page.status,\n })\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const loadDataPromises = [\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]\n\n if (global.hasPartialHydration) {\n loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n }\n\n const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n if (\n pageDataResponse.status === PageResourceStatus.Error ||\n rscDataResponse?.status === PageResourceStatus.Error\n ) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = pageDataResponse.payload\n\n const {\n componentChunkName,\n staticQueryHashes: pageStaticQueryHashes = [],\n slicesMap = {},\n } = pageData\n\n const finalResult = {}\n\n const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n const loadSlice = slice => {\n if (this.slicesDb.has(slice.name)) {\n return this.slicesDb.get(slice.name)\n } else if (this.sliceInflightDb.has(slice.name)) {\n return this.sliceInflightDb.get(slice.name)\n }\n\n const inFlight = this.loadComponent(slice.componentChunkName).then(\n component => {\n return {\n component: preferDefault(component),\n sliceContext: slice.result.sliceContext,\n data: slice.result.data,\n }\n }\n )\n\n this.sliceInflightDb.set(slice.name, inFlight)\n inFlight.then(results => {\n this.slicesDb.set(slice.name, results)\n this.sliceInflightDb.delete(slice.name)\n })\n\n return inFlight\n }\n\n return Promise.all(\n dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n ).then(slicesData => {\n const slices = []\n const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n slices.push({ name: sliceName, ...jsonPayload })\n for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n dedupedStaticQueryHashes.push(staticQueryHash)\n }\n }\n }\n\n const loadChunkPromises = [\n Promise.all(slices.map(loadSlice)),\n this.loadComponent(componentChunkName, `head`),\n ]\n\n if (!global.hasPartialHydration) {\n loadChunkPromises.push(this.loadComponent(componentChunkName))\n }\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n // get list of components to get\n const componentChunkPromises = Promise.all(loadChunkPromises).then(\n components => {\n const [sliceComponents, headComponent, pageComponent] = components\n\n finalResult.createdAt = new Date()\n\n for (const sliceComponent of sliceComponents) {\n if (!sliceComponent || sliceComponent instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = sliceComponent\n }\n }\n\n if (\n !global.hasPartialHydration &&\n (!pageComponent || pageComponent instanceof Error)\n ) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = pageComponent\n }\n\n let pageResources\n\n if (finalResult.status !== PageResourceStatus.Error) {\n finalResult.status = PageResourceStatus.Success\n if (\n pageDataResponse.notFound === true ||\n rscDataResponse?.notFound === true\n ) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appDataResponse\n ? appDataResponse.webpackCompilationHash\n : ``,\n })\n\n if (typeof rscDataResponse?.payload === `string`) {\n pageResources = toPageResources(pageData, null, headComponent)\n\n pageResources.partialHydration = rscDataResponse.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(rscDataResponse.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n } else {\n pageResources = toPageResources(\n pageData,\n pageComponent,\n headComponent\n )\n }\n }\n\n // undefined if final result is an error\n return pageResources\n }\n )\n\n // get list of static queries to get\n const staticQueryBatchPromise = Promise.all(\n dedupedStaticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromises, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n\nexport function getSliceResults() {\n if (instance) {\n return instance.slicesDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n `html`,\n `body`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n serverData: input.serverData,\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid function\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in Head which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = createWarningForInvalidTag(tagName)\n warnOnce(warning)\n }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n\nexport function getValidHeadNodesAndAttributes(\n rootNode,\n htmlAndBodyAttributes = {\n html: {},\n body: {},\n }\n) {\n const seenIds = new Map()\n const validHeadNodes = []\n\n // Filter out non-element nodes before looping since we don't care about them\n for (const node of rootNode.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!isElementType(node)) continue\n\n if (isValidNodeName(nodeName)) {\n // <html> and <body> tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n if (nodeName === `html` || nodeName === `body`) {\n for (const attribute of node.attributes) {\n const isStyleAttribute = attribute.name === `style`\n\n // Merge attributes for same nodeName from previous loop iteration\n htmlAndBodyAttributes[nodeName] = {\n ...htmlAndBodyAttributes[nodeName],\n }\n\n if (!isStyleAttribute) {\n htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n }\n\n // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n if (isStyleAttribute) {\n htmlAndBodyAttributes[nodeName].style = `${\n htmlAndBodyAttributes[nodeName]?.style\n ? htmlAndBodyAttributes[nodeName].style\n : ``\n }${attribute.value} `\n }\n }\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // // This is hack to make script tags work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n clonedNode = massageScript(clonedNode)\n }\n // Duplicate ids are not allowed in the head, so we need to dedupe them\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[\n indexOfPreviouslyInsertedNode\n ].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n } else {\n warnForInvalidTag(nodeName)\n }\n\n if (node.childNodes.length) {\n validHeadNodes.push(\n ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n .validHeadNodes\n )\n }\n }\n\n return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n const script = document.createElement(`script`)\n for (const attr of node.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = node.innerHTML\n\n return script\n}\n\nexport function isValidNodeName(nodeName) {\n return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n if (!htmlAndBodyAttributes) return\n\n const { html, body } = htmlAndBodyAttributes\n\n const htmlElement = document.querySelector(`html`)\n if (htmlElement) {\n Object.entries(html).forEach(([attributeName, attributeValue]) => {\n htmlElement.setAttribute(attributeName, attributeValue)\n })\n }\n\n const bodyElement = document.querySelector(`body`)\n if (bodyElement) {\n Object.entries(body).forEach(([attributeName, attributeValue]) => {\n bodyElement.setAttribute(attributeName, attributeValue)\n })\n }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n if (!htmlAndBodyattributeList) return\n\n const { html, body } = htmlAndBodyattributeList\n\n if (html) {\n const htmlElement = document.querySelector(`html`)\n html.forEach(attributeName => {\n if (htmlElement) {\n htmlElement.removeAttribute(attributeName)\n }\n })\n }\n\n if (body) {\n const bodyElement = document.querySelector(`body`)\n body.forEach(attributeName => {\n if (bodyElement) {\n bodyElement.removeAttribute(attributeName)\n }\n })\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport {\n headExportValidator,\n filterHeadProps,\n diffNodes,\n getValidHeadNodesAndAttributes,\n removePrevHeadElements,\n applyHtmlAndBodyAttributes,\n removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n html: [],\n body: [],\n}\n\nconst onHeadRendered = () => {\n const { validHeadNodes, htmlAndBodyAttributes } =\n getValidHeadNodesAndAttributes(hiddenRoot)\n\n keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n /**\n * The rest of the code block below is a diffing mechanism to ensure that\n * the head elements aren't duplicted on every re-render.\n */\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // sigh ... <html> and <body> elements are not valid descedents of <div> (our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to <div>, and just silence warnings for <html> and <body> elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `<html>` || args[1] === `<body>`)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate <head> after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n <pageComponent.Head {...filterHeadProps(pageComponentProps)} />\n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n <FireCallbackInEffect callback={onHeadRendered}>\n <StaticQueryContext.Provider value={staticQueryResults}>\n <LocationProvider>{WrapHeadElement}</LocationProvider>\n </StaticQueryContext.Provider>\n </FireCallbackInEffect>,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n <React.Fragment>\n {this.props.children}\n <RouteAnnouncer location={location} />\n </React.Fragment>\n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n <BaseContext.Provider\n value={{\n baseuri: `/`,\n basepath: `/`,\n }}\n >\n <PageRenderer {...props} />\n </BaseContext.Provider>\n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n <Location>\n {({ location }) => (\n <EnsureResources location={location}>\n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n <StaticQueryContext.Provider value={staticQueryResults}>\n <SlicesContext.Provider value={slicesContext}>\n <SlicesResultsContext.Provider value={sliceResults}>\n <SlicesMapContext.Provider\n value={pageResources.page.slicesMap}\n >\n <DataContext.Provider\n value={{ pageResources, location }}\n >\n {children}\n </DataContext.Provider>\n </SlicesMapContext.Provider>\n </SlicesResultsContext.Provider>\n </SlicesContext.Provider>\n </StaticQueryContext.Provider>\n )\n }}\n </EnsureResources>\n )}\n </Location>\n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n <DataContext.Consumer>\n {({ pageResources, location }) => (\n <RouteUpdates location={location}>\n <ScrollContext\n location={location}\n shouldUpdateScroll={shouldUpdateScroll}\n >\n <Router\n basepath={__BASE_PATH__}\n location={location}\n id=\"gatsby-focus-wrapper\"\n >\n <RouteHandler\n path={\n pageResources.page.path === `/404.html` ||\n pageResources.page.path === `/500.html`\n ? stripPrefix(location.pathname, __BASE_PATH__)\n : encodeURI(\n (\n pageResources.page.matchPath ||\n pageResources.page.path\n ).split(`?`)[0]\n )\n }\n {...this.props}\n location={location}\n pageResources={pageResources}\n {...pageResources.json}\n />\n </Router>\n </ScrollContext>\n </RouteUpdates>\n )}\n </DataContext.Consumer>\n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: <LocationHandler /> },\n <LocationHandler />,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return <GatsbyRoot>{SiteRoot}</GatsbyRoot>\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(<App />, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The <StaticQuery /> component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","/**\n * Implement Gatsby's Browser APIs in this file.\n *\n * See: https://www.gatsbyjs.org/docs/browser-apis/\n */\n\n// You can delete this file if you're not using it\nconst React = require(\"react\")\nconst Layout = require(\"./src/components/layout\").default\n\nexports.wrapPageElement = ({ element, props }) => {\n const { pageContext } = props\n if (typeof window !== \"undefined\") {\n window.___gatsbyIntl = pageContext\n }\n return <Layout {...props}>{element}</Layout>\n}\n\nconst { anchorate } = require(\"anchorate\")\n\nexports.onRouteUpdate = () => {\n anchorate()\n}\n\nexports.shouldUpdateScroll = ({\n routerProps: { location },\n getSavedScrollPosition,\n}) => {\n const currentPosition = getSavedScrollPosition(location)\n\n const defaultTopPaths = [\n \"story\",\n \"career\",\n \"school\",\n \"major\",\n \"company\",\n \"assessment\",\n \"signup\",\n \"login\",\n ]\n\n if (location.search) {\n // disables any scrolling upon algolia search URL updates\n return false\n } else if (defaultTopPaths.includes(location.pathname.split(\"/\")[1])) {\n // these routes default to the top of window\n window.scrollTo(0, 0)\n } else {\n // default behavior, routes return to last position upon back button navigation\n window.scrollTo(...(currentPosition || [0, 0]))\n }\n return false\n}\n","import escapeStringRegexp from \"escape-string-regexp\";\nimport { withPrefix } from \"gatsby\";\nexport const userIsForcingNavigation = event => event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n// IE does not include leading slash in anchor.pathname\nexport const slashedPathname = pathname => pathname[0] === `/` ? pathname : `/${pathname}`;\nexport const navigationWasHandledElsewhere = event => event.defaultPrevented;\nexport const findClosestAnchor = node => {\n for (; node.parentNode; node = node.parentNode) {\n if (node.nodeName.toLowerCase() === `a`) {\n return node;\n }\n }\n return null;\n};\nexport const anchorsTargetIsEquivalentToSelf = anchor => /* If target attribute is not present it's treated as _self */\nanchor.hasAttribute(`target`) === false ||\n/**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n/**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\nanchor.target == null ||\n/**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n[`_self`, ``].includes(anchor.target) ||\n/**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\nanchor.target === `_parent` && (!anchor.ownerDocument.defaultView.parent ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === `_top` && (!anchor.ownerDocument.defaultView.top ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView);\nexport const authorIsForcingNavigation = anchor =>\n/**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\nanchor.hasAttribute(`download`) === true ||\n/**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\nanchorsTargetIsEquivalentToSelf(anchor) === false;\n\n// https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\nexport const urlsAreOnSameOrigin = (origin, destination) => origin.protocol === destination.protocol && /* a.host includes both hostname and port in the expected format host:port */\norigin.host === destination.host;\nexport const pathIsNotHandledByApp = (destination, pathStartRegEx) => {\n const pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n return (\n /**\n * For when pathPrefix is used in an app and there happens to be a link\n * pointing to the same domain but outside of the app's pathPrefix. For\n * example, a Gatsby app lives at https://example.com/myapp/, with the\n * pathPrefix set to `/myapp`. When adding an absolute link to the same\n * domain but outside of the /myapp path, for example, `<a\n * href=\"https://example.com/not-my-app\">` the plugin won't catch it and\n * will navigate to an external link instead of doing a pushState resulting\n * in `https://example.com/myapp/https://example.com/not-my-app`\n */\n pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n /**\n * Don't catch links pointed at what look like file extensions (other than\n * .htm/html extensions).\n */\n destination.pathname.search(pathFileExtensionRegEx) !== -1\n );\n};\nexport const hashShouldBeFollowed = (origin, destination) => destination.hash !== `` && (\n/**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\ndestination.pathname === `` || /* Don't catch links pointed to the same page but with a hash. */\ndestination.pathname === origin.pathname);\nexport const routeThroughBrowserOrApp = (hrefHandler, pluginOptions) => event => {\n if (window.___failedResources) return true;\n if (userIsForcingNavigation(event)) return true;\n if (navigationWasHandledElsewhere(event)) return true;\n const clickedAnchor = findClosestAnchor(event.target);\n if (clickedAnchor == null) return true;\n if (authorIsForcingNavigation(clickedAnchor)) return true;\n\n // IE clears the host value if the anchor href changed after creation, e.g.\n // in React. Creating a new anchor element to ensure host value is present\n const destination = document.createElement(`a`);\n\n // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n // If clickedAnchor has no href attribute like `<a>example</a>`, the href getter returns empty string.\n if (clickedAnchor.href !== ``) {\n destination.href = clickedAnchor.href;\n }\n if (`SVGAnimatedString` in window && clickedAnchor.href instanceof SVGAnimatedString) {\n destination.href = clickedAnchor.href.animVal;\n }\n\n // In IE, the default port is included in the anchor host but excluded from\n // the location host. This affects the ability to directly compare\n // location host to anchor host. For example: http://example.com would\n // have a location.host of 'example.com' and an destination.host of\n // 'example.com:80' Creating anchor from the location.href to normalize the\n // host value.\n const origin = document.createElement(`a`);\n origin.href = window.location.href;\n if (urlsAreOnSameOrigin(origin, destination) === false) return true;\n\n // Regex to test pathname against pathPrefix\n const pathStartRegEx = new RegExp(`^${escapeStringRegexp(withPrefix(`/`))}`);\n if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n if (hashShouldBeFollowed(origin, destination)) return true;\n if (pluginOptions.excludePattern) {\n const excludeRegex = new RegExp(pluginOptions.excludePattern);\n if (excludeRegex.test(destination.pathname)) {\n return true;\n }\n }\n event.preventDefault();\n\n // See issue #8907: destination.pathname already includes pathPrefix added\n // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n const destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, `/`);\n hrefHandler(`${destinationPathname}${destination.search}${destination.hash}`);\n return false;\n};\nexport default function (root, pluginOptions, cb) {\n const clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n root.addEventListener(`click`, clickHandler);\n return () => root.removeEventListener(`click`, clickHandler);\n}","import { navigate } from \"gatsby\";\nimport catchLinks from \"./catch-links\";\nexport const onClientEntry = (_, pluginOptions = {}) => {\n catchLinks(window, pluginOptions, href => {\n navigate(href);\n });\n};","const listOfMetricsSend = new Set();\nfunction debounce(fn, timeout) {\n let timer = null;\n return function (...args) {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(fn, timeout, ...args);\n };\n}\nfunction sendWebVitals(dataLayerName = `dataLayer`) {\n const win = window;\n function sendData(data) {\n if (listOfMetricsSend.has(data.name)) {\n return;\n }\n listOfMetricsSend.add(data.name);\n sendToGTM(data, win[dataLayerName]);\n }\n return import(`web-vitals/base`).then(({\n getLCP,\n getFID,\n getCLS\n }) => {\n const debouncedCLS = debounce(sendData, 3000);\n // we don't need to debounce FID - we send it when it happens\n const debouncedFID = sendData;\n // LCP can occur multiple times so we debounce it\n const debouncedLCP = debounce(sendData, 3000);\n\n // With the true flag, we measure all previous occurences too, in case we start listening to late.\n getCLS(debouncedCLS, true);\n getFID(debouncedFID, true);\n getLCP(debouncedLCP, true);\n });\n}\nfunction sendToGTM({\n name,\n value,\n id\n}, dataLayer) {\n dataLayer.push({\n event: `core-web-vitals`,\n webVitalsMeasurement: {\n name: name,\n // The `id` value will be unique to the current page load. When sending\n // multiple values from the same page (e.g. for CLS), Google Analytics can\n // compute a total by grouping on this ID (note: requires `eventLabel` to\n // be a dimension in your report).\n id,\n // Google Analytics metrics must be integers, so the value is rounded.\n // For CLS the value is first multiplied by 1000 for greater precision\n // (note: increase the multiplier for greater precision if needed).\n value: Math.round(name === `CLS` ? value * 1000 : value)\n }\n });\n}\nexport function onRouteUpdate(_, pluginOptions) {\n if (process.env.NODE_ENV === `production` || pluginOptions.includeInDevelopment) {\n // wrap inside a timeout to ensure the title has properly been changed\n setTimeout(() => {\n const data = pluginOptions.dataLayerName ? window[pluginOptions.dataLayerName] : window.dataLayer;\n const eventName = pluginOptions.routeChangeEventName ? pluginOptions.routeChangeEventName : `gatsby-route-change`;\n data.push({\n event: eventName\n });\n }, 50);\n }\n}\nexport function onInitialClientRender(_, pluginOptions) {\n // we only load the polyfill in production so we can't enable it in development\n if (process.env.NODE_ENV === `production` && pluginOptions.enableWebVitalsTracking) {\n sendWebVitals(pluginOptions.dataLayerName);\n }\n}","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\";\n\n// when we don't have localisation in our manifest, we tree shake everything away\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n return pathname.startsWith(startUrl);\n });\n if (!localizedManifest) {\n return defaultFilename;\n }\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","import React from \"react\";\nimport { Location, globalHistory } from \"@reach/router\";\nimport { QueryParamProvider } from \"use-query-params\";\n\nexport default ({ children }) => (\n <Location>\n {({ location }) => (\n <QueryParamProvider location={location} reachHistory={globalHistory}>\n {children}\n </QueryParamProvider>\n )}\n </Location>\n);\n","import React from \"react\";\nimport Root from \"./root\";\n\nexport const wrapRootElement = ({ element }) => <Root>{element}</Root>;\n","import React, {useContext} from \"react\"\nimport PropTypes from \"prop-types\"\nimport { navigate } from \"@reach/router\"\nimport { FirebaseContext } from \"../../components/Firebase\"\n\nconst PrivateRoute = ({ component: Component, location, ...rest }) => {\n const {user, loading} = useContext(FirebaseContext)\n\n if (!user && !loading || user?.membership === null && !loading) {\n navigate('/403')\n return null\n }\n\n return <Component {...rest} />\n}\n\nPrivateRoute.propTypes = {\n component: PropTypes.any.isRequired,\n}\n\nexport default PrivateRoute\n","import React from \"react\"\n\nconst FirebaseContext = React.createContext({})\n\nexport default FirebaseContext\n","const firebaseConfig = {\n apiKey: process.env.GATSBY_FIREBASE_API_KEY,\n authDomain: process.env.GATSBY_FIREBASE_AUTH_DOMAIN,\n databaseURL: process.env.GATSBY_FIREBASE_DATABASE_URL,\n projectId: process.env.GATSBY_FIREBASE_PROJECT_ID,\n storageBucket: process.env.GATSBY_FIREBASE_STORAGE_BUCKET,\n messagingSenderId: process.env.GATSBY_FIREBASE_MESSAGING_ID,\n appId: process.env.GATSBY_FIREBASE_APP_ID\n};\n\nexport default firebaseConfig;\n\n","/**\n * Provides a sport data model.\n */\nexport default class Sport {\n /**\n * Constructor.\n *\n * @param {Object} firebaseData\n */\n constructor(firebaseData) {\n this._name = firebaseData?.label;\n this._intramuralMen = firebaseData?.intramuralMen;\n this._intramuralWomen = firebaseData?.intramuralWomen;\n this._intercollegiateMen = firebaseData?.intercollegiateMen;\n this._intercollegiateWomen = firebaseData?.intercollegiateWomen;\n this._scholarshipMen = firebaseData?.scholarshipMen;\n this._scholarshipWomen = firebaseData?.scholarshipWomen;\n }\n\n /**\n * @inheritDoc\n */\n toString() {\n return `${this.name}`;\n }\n\n /**\n * Gets the name of the sport.\n *\n * @return {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * If the sport is available for intramural men.\n *\n * @return {boolean}\n */\n get intramuralMen() {\n return this._intramuralMen;\n }\n\n /**\n * If the sport is available for intramural women.\n *\n * @return {boolean}\n */\n get intramuralWomen() {\n return this._intramuralWomen;\n }\n\n /**\n * If the sport is available for intercollegiate men.\n *\n * @return {boolean}\n */\n get intercollegiateMen() {\n return this._intercollegiateMen;\n }\n\n /**\n * If the sport is available for intercollegiate women.\n *\n * @return {boolean}\n */\n get intercollegiateWomen() {\n return this._intercollegiateWomen;\n }\n\n /**\n * If the sport has scholarships for men.\n *\n * @return {boolean}\n */\n get scholarshipMen() {\n return this._scholarshipMen;\n }\n\n /**\n * If the sport has scholarships for women.\n *\n * @return {boolean}\n */\n get scholarshipWomen() {\n return this._scholarshipWomen;\n }\n}\n","/**\n * Provides a cost data model.\n */\nexport default class Cost {\n /**\n * Constructor.\n *\n * @param {Object} firebaseData\n */\n constructor(firebaseData) {\n this._value = firebaseData?.value;\n this._symbol = firebaseData?.symbol;\n }\n\n /**\n * Gets the cost value.\n *\n * @return {number}\n */\n get value() {\n return this._value;\n }\n\n /**\n * Gets the currency symbol, most cases it is dollars, but some schools are not.\n *\n * @return {string}\n */\n get symbol() {\n return this._symbol;\n }\n}\n","/**\n * Provides major data list for schools.\n */\nexport default class MajorList {\n /**\n * Constructor.\n *\n * @param {Object} firestoreData\n */\n constructor(firestoreData) {\n this._majors = firestoreData?.majorList;\n this._majorGroupCips = firestoreData?.majorCipGroups;\n this._majorRender = firestoreData?.majorGroup;\n }\n\n /**\n * Provides a list of CIP group keys in alphabetical order of their group name.\n *\n * Use this array to walk through the default grouped majors listing, object\n * key names are in the `::majorRender` which will then provide the CIP group\n * names and organized majors.\n *\n * @return {string[]}\n */\n get majorGroupCips() {\n return this._majorGroupCips;\n }\n\n /**\n * Provides the default sorted major list @see `::majorGroupCips`.\n *\n * The major render follows this pattern:\n * {\n * [`major group CIP code; XX`]: {\n * groupName: {string} The name of the CIP group.\n * majorList: {Object[]} List of majors sorted alphabetically for this CIP group, see `::majors` for detailed description of a major object.\n * },\n * ...[`major group CIP code; XX`]: {...}\n * }\n *\n * @return {Object}\n */\n get majorRender() {\n return this._majorRender;\n }\n\n /**\n * Gets all the individual majors for a school. Use this list for search.\n *\n * A major list object follows this pattern:\n * {\n * associate: {boolean} If the major is offered for Associate degrees.\n * bachelor: {boolean} If the major is offered for Bachelor degrees.\n * graduate: {boolean} If the major is offered for Graduate degrees.\n * technical: {boolean} If the major is offered for technical degrees.\n * id: {string} CIP code for the major.\n * cipGroup: {string} CIP group for the major.\n * cipGroupName: {string} CIP group name.\n * cosmicId: {string} Cosmic ID.\n * cipDescription: {string} Description provided by CIP data.\n * slug: {string} The slug to the major page\n * name: {string} The name of the major.\n * }\n *\n * @return {Object[]}\n */\n get majors() {\n return this._majors;\n }\n}\n","import Sport from './Sport';\nimport Cost from \"./Cost\"\nimport MajorList from \"./MajorList\";\nimport ApplicationDeadline from \"./ApplicationDeadline\"\n\n/**\n * Provides a model of school data from firestore.\n *\n * PLEASE NOTE: Check the getters for each data type to see what to expect\n * for the type. Also remember many schools have partial data, and no data\n * so almost every single property can have a `null` value. This is important\n * to check for any front end display; `property !== null` before rendering and\n * displaying any piece of data.\n */\nexport default class School {\n\n /**\n * Constructor.\n *\n * @param {Object} firestoreData\n * Firestore school data.\n */\n constructor(firestoreData) {\n this._petersonId = firestoreData?.id;\n this._name = firestoreData?.name;\n this._schoolUrl = firestoreData?.schoolUrl;\n this._state = firestoreData?.state;\n this._country = firestoreData?.country;\n this._city = firestoreData?.city;\n this._zipCode = firestoreData?.zipCode;\n this._line1 = firestoreData?.line1;\n this._facultySize = firestoreData?.facultySize;\n this._ratioStudentFaculty = firestoreData?.ratioStudentFaculty;\n this._studentsLivingInHousing = firestoreData?.studentsLivingInHousing;\n this._diversityNonWhite = firestoreData?.diversityNonWhite;\n\n // School type\n this._ugSchooltype = firestoreData?.ugSchooltype;\n this._techSchooltype = firestoreData?.techSchooltype;\n this._gradSchooltype = firestoreData?.gradSchooltype;\n this._bachSchooltype = firestoreData?.bachSchooltype;\n this._associateSchooltype = firestoreData?.associateSchooltype;\n\n // Filters\n this._sizeFilter = firestoreData?.sizeFilter;\n this._locationSettingFilter = firestoreData?.locationSettingFilter;\n this._schoolTypeFilter = firestoreData?.schoolTypeFilter;\n this._schoolSelectivityFilter = firestoreData?.schoolSelectivityFilter;\n this._costFilter = firestoreData?.costFilter;\n\n // Admissions\n this._appliedCount = firestoreData?.appliedCount;\n this._acceptedCount = firestoreData?.acceptedCount;\n this._enrolledCount = firestoreData?.enrolledCount;\n this._averageSatReading = firestoreData?.averageSatReading;\n this._averageSatReading25th = firestoreData?.averageSatReading25th;\n this._averageSatReading75th = firestoreData?.averageSatReading75th;\n this._averageSatMath = firestoreData?.averageSatMath;\n this._averageSatMath25th = firestoreData?.averageSatMath25th;\n this._averageSatMath75th = firestoreData?.averageSatMath75th;\n this._acceptanceRate = firestoreData?.acceptanceRate;\n this._actCompositeScore = firestoreData?.actCompositeScore;\n this._actCompositeScore25th = firestoreData?.actCompositeScore25th;\n this._actCompositeScore75th = firestoreData?.actCompositeScore75th;\n this._averageHighSchoolGPA = firestoreData?.averageHighSchoolGPA;\n this._applicationFee = firestoreData?.applicationFee ? new Cost(firestoreData?.applicationFee) : null;\n this._applicationRequirements = firestoreData?.applicationRequirements;\n\n // Deadlines\n this._applicationDeadlineFreshman = firestoreData?.applicationDeadlineFreshman ? new ApplicationDeadline(firestoreData.applicationDeadlineFreshman) : null;\n this._applicationDeadlineOther = firestoreData?.applicationDeadlineOther ? new ApplicationDeadline(firestoreData.applicationDeadlineOther) : null;\n this._applicationDeadlineTransfer = firestoreData?.applicationDeadlineTransfer ? new ApplicationDeadline(firestoreData.applicationDeadlineTransfer) : null;\n this._applicationDeadlineEarly = firestoreData?.applicationDeadlineEarly ? new ApplicationDeadline(firestoreData.applicationDeadlineEarly) : null;\n this._applicationDeadlineOutOfState = firestoreData?.applicationDeadlineOutOfState ? new ApplicationDeadline(firestoreData.applicationDeadlineOutOfState) : null;\n\n // Tuition and Aid\n this._costBooksAndSuppliesCost = firestoreData?.costBooksAndSuppliesCost ? new Cost(firestoreData?.costBooksAndSuppliesCost) : null;\n this._costRoomAndBoard = firestoreData?.costRoomAndBoard ? new Cost(firestoreData?.costRoomAndBoard) : null;\n this._costRoomOnly = firestoreData?.costRoomOnly ? new Cost(firestoreData?.costRoomOnly) : null;\n this._generalTuition = firestoreData?.generalTuition ? new Cost(firestoreData?.generalTuition) : null;\n this._inStateTuition = firestoreData?.inStateTuition ? new Cost(firestoreData?.inStateTuition) : null;\n this._outOfStateTuition = firestoreData?.outOfStateTuition ? new Cost(firestoreData?.outOfStateTuition) : null;\n this._averageFinancialAid = firestoreData?.averageFinancialAid ? new Cost(firestoreData?.averageFinancialAid) : null;\n this._averageLoanAndWorkStudy = firestoreData?.averageLoanAndWorkStudy ? new Cost(firestoreData?.averageLoanAndWorkStudy) : null;\n this._averageScholarship = firestoreData?.averageScholarship ? new Cost(firestoreData?.averageScholarship) : null;\n this._averageFinancialAidCoverage = firestoreData?.averageFinancialAidCoverage;\n this._averageStudentNeedsMet = firestoreData?.averageStudentNeedsMet;\n\n // Student Population\n this._totalUndergradStudents = firestoreData?.totalUndergradStudents;\n this._totalAllRace = firestoreData?.totalAllRace;\n this._percentInStateStudents = firestoreData?.percentInStateStudents;\n this._percentOutOfStateStudents = firestoreData?.percentOutOfStateStudents;\n this._percentInternationalStudents = firestoreData?.percentInternationalStudents;\n this._percentFemaleStudents = firestoreData?.percentFemaleStudents;\n this._percentMaleStudents = firestoreData?.percentMaleStudents;\n this._demographicNativeAmerican = firestoreData?.demographicNativeAmerican;\n this._demographicAsian = firestoreData?.demographicAsian;\n this._demographicBlack = firestoreData?.demographicBlack;\n this._demographicLatin = firestoreData?.demographicLatin;\n this._demographicPacificIslander = firestoreData?.demographicPacificIslander;\n this._demographicOther = firestoreData?.demographicOther;\n this._demographicMixed = firestoreData?.demographicMixed;\n this._demographicWhite = firestoreData?.demographicWhite;\n\n // Athletics\n if (Array.isArray(firestoreData.athletics) && firestoreData.athletics.length > 0) {\n this._athletics = [];\n firestoreData.athletics.forEach((sportData) => {\n const sport = new Sport(sportData);\n this._athletics.push(sport);\n })\n } else {\n this._athletics = null;\n }\n\n // Cosmic Data\n this._slug = firestoreData?.slug;\n this._cosmicId = firestoreData?.cosmicId;\n\n // Majors data\n this._majors = firestoreData?.majors ? new MajorList(firestoreData?.majors) : null;\n\n // Tech school data\n this._techSchoolFunctionType = firestoreData?.techSchoolFunctionType;\n this._techSchoolPopType = firestoreData?.techSchoolPopType;\n }\n\n /**\n * Getter for teh tech school student body type (co-ed vs male/female)\n *\n * Please see the possible values and their definitions in format (value - definition):\n * {\n * CE - Coeducational\n * OM - Only Men\n * OW - Only Women\n * PM - Primarily Men\n * PW - Primarily Women\n * UM - Undergraduate: men only, graduate: coed\n * UW - Undergraduate: women only, graduate: coed\n * }\n * @return {null|string}\n */\n get techSchoolPopType() {\n return this._techSchoolPopType;\n }\n\n /**\n * Getter for the tech school type (2 year or 4 year)\n *\n * Please see the possible values and their definitions in format (value - definition):\n * {\n * 2GRAD - 2-year college with graduate programs\n * 2YEAR - 2-year college\n * 4YEAR - 4-year college\n * 5YEAR - five-year college\n * COMP - comprehensive higher education institution\n * GRAD - graduate institution [offers only graduate-level programs]\n * SYS - system [administers state-controlled institutions, public community colleges, independent institution systems, or proprietary school systems; does not, as a rule, award degrees]\n * UNIV - university [offers four years of undergraduate work, plus graduate degrees through the doctorate in more than two fields]\n * UPWG - upper-level higher education institution with graduate programs [offers last two years of bachelor’s program, and offers graduate degrees]\n * UPWOG - upper-level higher education institution without graduate programs [offers last two years of bachelor’s program]\n * }\n *\n * @return {null|string}\n */\n get techSchoolFunctionType() {\n return this._techSchoolFunctionType;\n }\n\n /**\n * Getter for out of state application deadline.\n *\n * @return {ApplicationDeadLine|null}\n */\n get applicationDeadlineOutOfState() {\n return this._applicationDeadlineOutOfState;\n }\n\n /**\n * Getter for early application deadlines.\n *\n * @return {ApplicationDeadLine|null}\n */\n get applicationDeadlineEarly() {\n return this._applicationDeadlineEarly;\n }\n\n /**\n * If this school offers associate degrees.\n *\n * @return {boolean}\n */\n get associateSchooltype() {\n return this._associateSchooltype;\n }\n\n /**\n * If the school offers bachelor degrees.\n *\n * @return {boolean}\n */\n get bachSchooltype() {\n return this._bachSchooltype;\n }\n\n /**\n * Array of sports offered, or null if none found.\n *\n * @return {Sport[]|null}\n */\n get athletics() {\n return this._athletics;\n }\n\n /**\n * Ratio of students to faculty.\n *\n * @return {number|null}\n */\n get ratioStudentFaculty() {\n return this._ratioStudentFaculty;\n }\n\n /**\n * Total students of all races, used in race calculations.\n *\n * @return {number|null}\n */\n get totalAllRace() {\n return this._totalAllRace;\n }\n\n /**\n * The cost of general tuition.\n *\n * Sometimes schools don't have in/out of state, so use this number in showing\n * cost data.\n *\n * @return {Cost|null}\n */\n get generalTuition() {\n return this._generalTuition;\n }\n\n /**\n * Getter for freshmen deadlines.\n *\n * @return {ApplicationDeadLine|null}\n */\n get applicationDeadlineFreshman() {\n return this._applicationDeadlineFreshman;\n }\n\n /**\n * Getter for early other application deadlines.\n *\n * @return {ApplicationDeadLine|null}\n */\n get applicationDeadlineOther() {\n return this._applicationDeadlineOther;\n }\n\n /**\n * Getter for transfer application deadlines.\n *\n * @return {ApplicationDeadLine|null}\n */\n get applicationDeadlineTransfer() {\n return this._applicationDeadlineTransfer;\n }\n\n /**\n * The school street address.\n *\n * Some of the data has the incorrect address here, in most cases\n * it lists a street, but in some it lists a PO Box and the street\n * is in line2 which we do not transfer.\n *\n * @return {string|null}\n */\n get line1() {\n return this._line1;\n }\n\n /**\n * Gets the school major list object, @see {MajorList}\n *\n * @return {MajorList|null}\n */\n get majors() {\n return this._majors;\n }\n\n /**\n * Gets the cosmic object slug.\n *\n * @return {string|null}\n */\n get slug() {\n return this._slug;\n }\n\n /**\n * Gets the cosmic ID.\n *\n * @return {string|null}\n */\n get cosmicId() {\n return this._cosmicId;\n }\n\n /**\n * Gets the school ID, same as Peterson's ID.\n *\n * The data saves this as an integer, but in Cosmic it is a string.\n *\n * @return {number}\n */\n get id() {\n return this._petersonId;\n }\n\n /**\n * The school ID.\n *\n * @return {number}\n */\n get petersonId() {\n return this._petersonId;\n }\n\n /**\n * The school name, is also title in Cosmic.\n *\n * @return {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * The school's website.\n *\n * @return {string|null}\n */\n get schoolUrl() {\n return this._schoolUrl;\n }\n\n /**\n * The school's state code in format `MA`.\n *\n * @return {string|null}\n */\n get state() {\n return this._state;\n }\n\n /**\n * The school's country code in format `USA`.\n *\n * @return {string|null}\n */\n get country() {\n return this._country;\n }\n\n /**\n * The school's city name.\n *\n * @return {string|null}\n */\n get city() {\n return this._city;\n }\n\n /**\n * The school's zip code.\n *\n * @return {string|null}\n */\n get zipCode() {\n return this._zipCode;\n }\n\n /**\n * The school's faculty size.\n *\n * This is usually UG only, does not include grad school faculty.\n *\n * @return {number|null}\n */\n get facultySize() {\n return this._facultySize;\n }\n\n /**\n * Percent of students living in campus housing.\n *\n * @return {string|null}\n */\n get studentsLivingInHousing() {\n return this._studentsLivingInHousing;\n }\n\n /**\n * Percent of non-white students.\n *\n * @return {string|null}\n */\n get diversityNonWhite() {\n return this._diversityNonWhite;\n }\n\n /**\n * School size filter, used in cosmic.\n *\n * @return {string|null}\n */\n get sizeFilter() {\n return this._sizeFilter;\n }\n\n /**\n * School location filter, used in cosmic.\n *\n * @return {string|null}\n */\n get locationSettingFilter() {\n return this._locationSettingFilter;\n }\n\n /**\n * School type filter, used in cosmic.\n *\n * @return {string|null}\n */\n get schoolTypeFilter() {\n return this._schoolTypeFilter;\n }\n\n /**\n * School selectivity filter, used in cosmic.\n *\n * @return {string|null}\n */\n get schoolSelectivityFilter() {\n return this._schoolSelectivityFilter;\n }\n\n /**\n * School cost filter, used in cosmic.\n *\n * @return {string|null}\n */\n get costFilter() {\n return this._costFilter;\n }\n\n /**\n * The number of students who applied.\n *\n * @return {number|null}\n */\n get appliedCount() {\n return this._appliedCount;\n }\n\n /**\n * The number of students who were accepted.\n *\n * @return {number|null}\n */\n get acceptedCount() {\n return this._acceptedCount;\n }\n\n /**\n * The number of students enrolled.\n *\n * For UG schools this is total UG students, for tech schools it is enrolled\n * count.\n *\n * @return {number|null}\n */\n get enrolledCount() {\n return this._enrolledCount;\n }\n\n /**\n * The average SAT reading score.\n *\n * @return {number|null}\n */\n get averageSatReading() {\n return this._averageSatReading;\n }\n\n /**\n * The 25th percentile average SAT reading score.\n *\n * @return {number|null}\n */\n get averageSatReading25th() {\n return this._averageSatReading25th;\n }\n\n /**\n * The 75th percentile average SAT reading score.\n *\n * @return {number|null}\n */\n get averageSatReading75th() {\n return this._averageSatReading75th;\n }\n\n /**\n * The average SAT math score.\n *\n * @return {number|null}\n */\n get averageSatMath() {\n return this._averageSatMath;\n }\n\n /**\n * The 25th percentile average SAT math score.\n *\n * @return {number|null}\n */\n get averageSatMath25th() {\n return this._averageSatMath25th;\n }\n\n /**\n * The 75th percentile average SAT math score.\n *\n * @return {number|null}\n */\n get averageSatMath75th() {\n return this._averageSatMath75th;\n }\n\n /**\n * The acceptance rate, a percentage.\n *\n * @return {string|null}\n */\n get acceptanceRate() {\n return this._acceptanceRate;\n }\n\n /**\n * The average ACT composite score.\n *\n * @return {number|null}\n */\n get actCompositeScore() {\n return this._actCompositeScore;\n }\n\n /**\n * The 25th percentile average ACT composite score.\n *\n * @return {number|null}\n */\n get actCompositeScore25th() {\n return this._actCompositeScore25th;\n }\n\n /**\n * The 75th percentile average ACT composite score.\n *\n * @return {number|null}\n */\n get actCompositeScore75th() {\n return this._actCompositeScore75th;\n }\n\n /**\n * The average high school GPA between `0.0` and `5.0`.\n *\n * @return {number|null}\n */\n get averageHighSchoolGPA() {\n return this._averageHighSchoolGPA;\n }\n\n /**\n * The application fee.\n *\n * @return {Cost|null}\n */\n get applicationFee() {\n return this._applicationFee;\n }\n\n /**\n * The application requirements, this is a list of strings.\n *\n * @return {string[]|null}\n */\n get applicationRequirements() {\n return this._applicationRequirements;\n }\n\n /**\n * Cost of books and supplies.\n *\n * @return {Cost|null}\n */\n get costBooksAndSuppliesCost() {\n return this._costBooksAndSuppliesCost;\n }\n\n /**\n * Cost of room and board.\n *\n * @return {Cost|null}\n */\n get costRoomAndBoard() {\n return this._costRoomAndBoard;\n }\n\n /**\n * Cost of room only.\n *\n * @return {Cost|null}\n */\n get costRoomOnly() {\n return this._costRoomOnly;\n }\n\n /**\n * In state tuition.\n *\n * @return {Cost|null}\n */\n get inStateTuition() {\n return this._inStateTuition;\n }\n\n /**\n * Out of state tuition.\n *\n * @return {Cost|null}\n */\n get outOfStateTuition() {\n return this._outOfStateTuition;\n }\n\n /**\n * The average financial aid.\n *\n * @return {Cost|null}\n */\n get averageFinancialAid() {\n return this._averageFinancialAid;\n }\n\n /**\n * The average loan and work study added together.\n *\n * @return {Cost|null}\n */\n get averageLoanAndWorkStudy() {\n return this._averageLoanAndWorkStudy;\n }\n\n /**\n * The average scholarship.\n *\n * @return {Cost|null}\n */\n get averageScholarship() {\n return this._averageScholarship;\n }\n\n /**\n * The average financial aid coverage.\n *\n * NOTE: This is a percentage of average financial aid to tuition. We first\n * try to find it with out of state tuition and then fallback to general\n * tuition. Make sure your text reflects this, it is not always out of\n * state tuition.\n *\n * @return {string|null}\n */\n get averageFinancialAidCoverage() {\n return this._averageFinancialAidCoverage;\n }\n\n /**\n * The average student needs met percentage.\n *\n * @return {string|null}\n */\n get averageStudentNeedsMet() {\n return this._averageStudentNeedsMet;\n }\n\n /**\n * The total undergrad students.\n *\n * @return {null|number}\n */\n get totalUndergradStudents() {\n return this._totalUndergradStudents;\n }\n\n /**\n * Percent of in state students.\n *\n * @return {string|null}\n */\n get percentInStateStudents() {\n return this._percentInStateStudents;\n }\n\n /**\n * Percent of out of state students.\n *\n * @return {string|null}\n */\n get percentOutOfStateStudents() {\n return this._percentOutOfStateStudents;\n }\n\n /**\n * Percent of international students.\n *\n * @return {string|null}\n */\n get percentInternationalStudents() {\n return this._percentInternationalStudents;\n }\n\n /**\n * Percent of female students.\n *\n * @return {string|null}\n */\n get percentFemaleStudents() {\n return this._percentFemaleStudents;\n }\n\n /**\n * Percent of male students.\n *\n * @return {string|null}\n */\n get percentMaleStudents() {\n return this._percentMaleStudents;\n }\n\n /**\n * Percent of native american students.\n *\n * @return {string|null}\n */\n get demographicNativeAmerican() {\n return this._demographicNativeAmerican;\n }\n\n /**\n * Percent of asian students.\n *\n * @return {string|null}\n */\n get demographicAsian() {\n return this._demographicAsian;\n }\n\n /**\n * Percent of black students.\n *\n * @return {string|null}\n */\n get demographicBlack() {\n return this._demographicBlack;\n }\n\n /**\n * Percent of hispanic students.\n *\n * @return {string|null}\n */\n get demographicLatin() {\n return this._demographicLatin;\n }\n\n /**\n * Percent of pacific islander.\n *\n * @return {string|null}\n */\n get demographicPacificIslander() {\n return this._demographicPacificIslander;\n }\n\n /**\n * Percent of other demographic.\n *\n * @return {string|null}\n */\n get demographicOther() {\n return this._demographicOther;\n }\n\n /**\n * Percent of mixed demographic.\n *\n * @return {string|null}\n */\n get demographicMixed() {\n return this._demographicMixed;\n }\n\n /**\n * Percent of white demographic.\n *\n * @return {string|null}\n */\n get demographicWhite() {\n return this._demographicWhite;\n }\n\n /**\n * If the school is a undergraduate school.\n *\n * @return {boolean}\n */\n get ugSchooltype() {\n return this._ugSchooltype;\n }\n\n /**\n * If the school is a technical school.\n *\n * @return {boolean}\n */\n get techSchooltype() {\n return this._techSchooltype;\n }\n\n /**\n * If the school is a graudate school type.\n *\n * @return {boolean}\n */\n get gradSchooltype() {\n return this._gradSchooltype;\n }\n\n /**\n * If the school is only a technical school.\n *\n * @return {boolean}\n */\n isTechSchoolOnly() {\n return this.techSchooltype && !this.ugSchooltype && !this.gradSchooltype;\n }\n}\n","/**\n * Provides a base class for school lists found in majors.\n */\nexport default class SchoolList {\n\n /**\n * SchoolList constructor.\n *\n * @param firestoreData\n * The firestore school data.\n */\n constructor(firestoreData) {\n this._schools = firestoreData?.schoolList ?? [];\n this._schoolIds = firestoreData?.schoolIds ?? [];\n }\n\n /**\n * Gets the list of schools offering the major.\n *\n * A school object follows this structure:\n * {\n * associateSchooltype: {boolean} If the school offers an associate's degree for the major.\n * bachSchooltype: {boolean} If the school offers a bachelor's dgree for the major.\n * city: {string} City of the school.\n * cosmicId: {string} Cosmic ID of the school.\n * country: {string} Country code of the school.\n * gradSchooltype: {boolean} If the school offers a graduate degree for the major.\n * id: {number} The school Peterson ID.\n * line1: {string} The school's address.\n * name: {string} The name of the school.\n * slug: {string} The slug for the school.\n * state: {string} State code for the school, not always USA.\n * techSchooltype: {boolean} If the school offers a technical degree for the major (is a tech school).\n * zipCode: {string} The zip code of the school.\n * }\n *\n * @return {string[]}\n */\n get schools() {\n return this._schools;\n }\n\n /**\n * List of school IDs.\n *\n * @return {number[]}\n */\n get schoolIds() {\n return this._schoolIds;\n }\n\n /**\n * Get a school by ID.\n *\n * @param pid\n * The school id.\n *\n * @return {object|null}\n * A school object see `::schools`\n */\n getSchoolById(pid) {\n if (!this.schoolIds.includes(pid)) {\n return null;\n }\n const location = this.schoolIds.indexOf(pid);\n return this.schools[location];\n }\n}\n","import SchoolList from \"./SchoolList\";\n\n/**\n * Provides a base class for major data from firestore.\n */\nexport default class Major {\n\n /**\n * If the major is offered as a doctorate degree.\n *\n * @return {boolean}\n */\n get doctorate() {\n return this._doctorate;\n }\n\n /**\n * If the major is offered as a master's degree.\n *\n * @return {boolean}\n */\n get master() {\n return this._master;\n }\n\n /**\n * The name of the CIP group of the major.\n *\n * @return {string|null}\n */\n get cipGroupName() {\n return this._cipGroupName;\n }\n\n /**\n * Gets the CIP group two digit code.\n *\n * @return {string|null}\n */\n get cipGroup() {\n return this._cipGroup;\n }\n\n /**\n * Gets the CIP description provided by school standards.\n *\n * @return {string|null}\n */\n get cipDescription() {\n return this._cipDescription;\n }\n\n /**\n * If the major is offered by a technical school.\n *\n * @return {boolean}\n */\n get technical() {\n return this._technical;\n }\n\n /**\n * If the major is offered by a graduate school.\n *\n * @return {boolean}\n */\n get graduate() {\n return this._graduate;\n }\n\n /**\n * If the major is offered as a bachelor's degree.\n *\n * @return {boolean}\n */\n get bachelor() {\n return this._bachelor;\n }\n\n /**\n * If the major is offered as an associate's degree.\n *\n * @return {boolean}\n */\n get associate() {\n return this._associate;\n }\n\n /**\n * The major's CIP code (these are currently 2020 standard).\n *\n * @return {string}\n */\n get id() {\n return this._id;\n }\n\n /**\n * Gets the major's name.\n *\n * @return {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Gets the list of schools offering the major.\n *\n * @see SchoolList\n * *This may change and be removed if large numbers of schools causes an issue.*\n *\n * @return {SchoolList|null}\n */\n get schools() {\n return this._schools;\n }\n\n /**\n * Major constructor.\n *\n * @param firestoreData\n * The firestore data.\n */\n constructor(firestoreData) {\n this._name = firestoreData?.name;\n this._bachelor = firestoreData?.bachelor;\n this._associate = firestoreData?.associate;\n this._id = firestoreData?.id;\n this._graduate = firestoreData?.graduate;\n this._master = firestoreData?.master;\n this._doctorate = firestoreData?.doctorate;\n this._technical = firestoreData?.technical;\n this._cipDescription = firestoreData?.cipDescription;\n this._cipGroup = firestoreData?.cipGroup;\n this._cipGroupName = firestoreData?.cipGroupName;\n this._schools = firestoreData?.schools ? new SchoolList(firestoreData?.schools) : null;\n }\n}\n","import firebase from '@firebase/app-compat';\nimport { FirestoreError, Bytes, _isBase64Available, enableIndexedDbPersistence, enableMultiTabIndexedDbPersistence, clearIndexedDbPersistence, _DatabaseId, _logWarn, connectFirestoreEmulator, enableNetwork, disableNetwork, _validateIsNotUsedTogether, waitForPendingWrites, onSnapshotsInSync, collection, doc, collectionGroup, runTransaction, ensureFirestoreConfigured, WriteBatch as WriteBatch$1, executeWrite, loadBundle, namedQuery, DocumentSnapshot as DocumentSnapshot$1, DocumentReference as DocumentReference$1, _DocumentKey, refEqual, setDoc, updateDoc, deleteDoc, onSnapshot, getDocFromCache, getDocFromServer, getDoc, snapshotEqual, query, where, orderBy, limit, limitToLast, startAt, startAfter, endBefore, endAt, queryEqual, getDocsFromCache, getDocsFromServer, getDocs, QuerySnapshot as QuerySnapshot$1, addDoc, _cast, AbstractUserDataWriter, setLogLevel as setLogLevel$1, QueryDocumentSnapshot as QueryDocumentSnapshot$1, _debugAssert, FieldPath as FieldPath$1, _FieldPath, serverTimestamp, deleteField, arrayUnion, arrayRemove, increment, GeoPoint, Timestamp, CACHE_SIZE_UNLIMITED } from '@firebase/firestore';\nimport { getModularInstance } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\nconst name = \"@firebase/firestore-compat\";\nconst version = \"0.3.12\";\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction validateSetOptions(methodName, options) {\r\n if (options === undefined) {\r\n return {\r\n merge: false\r\n };\r\n }\r\n if (options.mergeFields !== undefined && options.merge !== undefined) {\r\n throw new FirestoreError('invalid-argument', `Invalid options passed to function ${methodName}(): You cannot ` +\r\n 'specify both \"merge\" and \"mergeFields\".');\r\n }\r\n return options;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Helper function to assert Uint8Array is available at runtime. */\r\nfunction assertUint8ArrayAvailable() {\r\n if (typeof Uint8Array === 'undefined') {\r\n throw new FirestoreError('unimplemented', 'Uint8Arrays are not available in this environment.');\r\n }\r\n}\r\n/** Helper function to assert Base64 functions are available at runtime. */\r\nfunction assertBase64Available() {\r\n if (!_isBase64Available()) {\r\n throw new FirestoreError('unimplemented', 'Blobs are unavailable in Firestore in this environment.');\r\n }\r\n}\r\n/** Immutable class holding a blob (binary data) */\r\nclass Blob {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n static fromBase64String(base64) {\r\n assertBase64Available();\r\n return new Blob(Bytes.fromBase64String(base64));\r\n }\r\n static fromUint8Array(array) {\r\n assertUint8ArrayAvailable();\r\n return new Blob(Bytes.fromUint8Array(array));\r\n }\r\n toBase64() {\r\n assertBase64Available();\r\n return this._delegate.toBase64();\r\n }\r\n toUint8Array() {\r\n assertUint8ArrayAvailable();\r\n return this._delegate.toUint8Array();\r\n }\r\n isEqual(other) {\r\n return this._delegate.isEqual(other._delegate);\r\n }\r\n toString() {\r\n return 'Blob(base64: ' + this.toBase64() + ')';\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isPartialObserver(obj) {\r\n return implementsAnyMethods(obj, ['next', 'error', 'complete']);\r\n}\r\n/**\r\n * Returns true if obj is an object and contains at least one of the specified\r\n * methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n const object = obj;\r\n for (const method of methods) {\r\n if (method in object && typeof object[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The persistence provider included with the full Firestore SDK.\r\n */\r\nclass IndexedDbPersistenceProvider {\r\n enableIndexedDbPersistence(firestore, forceOwnership) {\r\n return enableIndexedDbPersistence(firestore._delegate, { forceOwnership });\r\n }\r\n enableMultiTabIndexedDbPersistence(firestore) {\r\n return enableMultiTabIndexedDbPersistence(firestore._delegate);\r\n }\r\n clearIndexedDbPersistence(firestore) {\r\n return clearIndexedDbPersistence(firestore._delegate);\r\n }\r\n}\r\n/**\r\n * Compat class for Firestore. Exposes Firestore Legacy API, but delegates\r\n * to the functional API of firestore-exp.\r\n */\r\nclass Firestore {\r\n constructor(databaseIdOrApp, _delegate, _persistenceProvider) {\r\n this._delegate = _delegate;\r\n this._persistenceProvider = _persistenceProvider;\r\n this.INTERNAL = {\r\n delete: () => this.terminate()\r\n };\r\n if (!(databaseIdOrApp instanceof _DatabaseId)) {\r\n this._appCompat = databaseIdOrApp;\r\n }\r\n }\r\n get _databaseId() {\r\n return this._delegate._databaseId;\r\n }\r\n settings(settingsLiteral) {\r\n const currentSettings = this._delegate._getSettings();\r\n if (!settingsLiteral.merge &&\r\n currentSettings.host !== settingsLiteral.host) {\r\n _logWarn('You are overriding the original host. If you did not intend ' +\r\n 'to override your settings, use {merge: true}.');\r\n }\r\n if (settingsLiteral.merge) {\r\n settingsLiteral = Object.assign(Object.assign({}, currentSettings), settingsLiteral);\r\n // Remove the property from the settings once the merge is completed\r\n delete settingsLiteral.merge;\r\n }\r\n this._delegate._setSettings(settingsLiteral);\r\n }\r\n useEmulator(host, port, options = {}) {\r\n connectFirestoreEmulator(this._delegate, host, port, options);\r\n }\r\n enableNetwork() {\r\n return enableNetwork(this._delegate);\r\n }\r\n disableNetwork() {\r\n return disableNetwork(this._delegate);\r\n }\r\n enablePersistence(settings) {\r\n let synchronizeTabs = false;\r\n let experimentalForceOwningTab = false;\r\n if (settings) {\r\n synchronizeTabs = !!settings.synchronizeTabs;\r\n experimentalForceOwningTab = !!settings.experimentalForceOwningTab;\r\n _validateIsNotUsedTogether('synchronizeTabs', synchronizeTabs, 'experimentalForceOwningTab', experimentalForceOwningTab);\r\n }\r\n return synchronizeTabs\r\n ? this._persistenceProvider.enableMultiTabIndexedDbPersistence(this)\r\n : this._persistenceProvider.enableIndexedDbPersistence(this, experimentalForceOwningTab);\r\n }\r\n clearPersistence() {\r\n return this._persistenceProvider.clearIndexedDbPersistence(this);\r\n }\r\n terminate() {\r\n if (this._appCompat) {\r\n this._appCompat._removeServiceInstance('firestore-compat');\r\n this._appCompat._removeServiceInstance('firestore');\r\n }\r\n return this._delegate._delete();\r\n }\r\n waitForPendingWrites() {\r\n return waitForPendingWrites(this._delegate);\r\n }\r\n onSnapshotsInSync(arg) {\r\n return onSnapshotsInSync(this._delegate, arg);\r\n }\r\n get app() {\r\n if (!this._appCompat) {\r\n throw new FirestoreError('failed-precondition', \"Firestore was not initialized using the Firebase SDK. 'app' is \" +\r\n 'not available');\r\n }\r\n return this._appCompat;\r\n }\r\n collection(pathString) {\r\n try {\r\n return new CollectionReference(this, collection(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collection()', 'Firestore.collection()');\r\n }\r\n }\r\n doc(pathString) {\r\n try {\r\n return new DocumentReference(this, doc(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'doc()', 'Firestore.doc()');\r\n }\r\n }\r\n collectionGroup(collectionId) {\r\n try {\r\n return new Query(this, collectionGroup(this._delegate, collectionId));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collectionGroup()', 'Firestore.collectionGroup()');\r\n }\r\n }\r\n runTransaction(updateFunction) {\r\n return runTransaction(this._delegate, transaction => updateFunction(new Transaction(this, transaction)));\r\n }\r\n batch() {\r\n ensureFirestoreConfigured(this._delegate);\r\n return new WriteBatch(new WriteBatch$1(this._delegate, mutations => executeWrite(this._delegate, mutations)));\r\n }\r\n loadBundle(bundleData) {\r\n return loadBundle(this._delegate, bundleData);\r\n }\r\n namedQuery(name) {\r\n return namedQuery(this._delegate, name).then(expQuery => {\r\n if (!expQuery) {\r\n return null;\r\n }\r\n return new Query(this, \r\n // We can pass `expQuery` here directly since named queries don't have a UserDataConverter.\r\n // Otherwise, we would have to create a new ExpQuery and pass the old UserDataConverter.\r\n expQuery);\r\n });\r\n }\r\n}\r\nclass UserDataWriter extends AbstractUserDataWriter {\r\n constructor(firestore) {\r\n super();\r\n this.firestore = firestore;\r\n }\r\n convertBytes(bytes) {\r\n return new Blob(new Bytes(bytes));\r\n }\r\n convertReference(name) {\r\n const key = this.convertDocumentKey(name, this.firestore._databaseId);\r\n return DocumentReference.forKey(key, this.firestore, /* converter= */ null);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n setLogLevel$1(level);\r\n}\r\n/**\r\n * A reference to a transaction.\r\n */\r\nclass Transaction {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(_firestore);\r\n }\r\n get(documentRef) {\r\n const ref = castReference(documentRef);\r\n return this._delegate\r\n .get(ref)\r\n .then(result => new DocumentSnapshot(this._firestore, new DocumentSnapshot$1(this._firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, ref.converter)));\r\n }\r\n set(documentRef, data, options) {\r\n const ref = castReference(documentRef);\r\n if (options) {\r\n validateSetOptions('Transaction.set', options);\r\n this._delegate.set(ref, data, options);\r\n }\r\n else {\r\n this._delegate.set(ref, data);\r\n }\r\n return this;\r\n }\r\n update(documentRef, dataOrField, value, ...moreFieldsAndValues) {\r\n const ref = castReference(documentRef);\r\n if (arguments.length === 2) {\r\n this._delegate.update(ref, dataOrField);\r\n }\r\n else {\r\n this._delegate.update(ref, dataOrField, value, ...moreFieldsAndValues);\r\n }\r\n return this;\r\n }\r\n delete(documentRef) {\r\n const ref = castReference(documentRef);\r\n this._delegate.delete(ref);\r\n return this;\r\n }\r\n}\r\nclass WriteBatch {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n set(documentRef, data, options) {\r\n const ref = castReference(documentRef);\r\n if (options) {\r\n validateSetOptions('WriteBatch.set', options);\r\n this._delegate.set(ref, data, options);\r\n }\r\n else {\r\n this._delegate.set(ref, data);\r\n }\r\n return this;\r\n }\r\n update(documentRef, dataOrField, value, ...moreFieldsAndValues) {\r\n const ref = castReference(documentRef);\r\n if (arguments.length === 2) {\r\n this._delegate.update(ref, dataOrField);\r\n }\r\n else {\r\n this._delegate.update(ref, dataOrField, value, ...moreFieldsAndValues);\r\n }\r\n return this;\r\n }\r\n delete(documentRef) {\r\n const ref = castReference(documentRef);\r\n this._delegate.delete(ref);\r\n return this;\r\n }\r\n commit() {\r\n return this._delegate.commit();\r\n }\r\n}\r\n/**\r\n * Wraps a `PublicFirestoreDataConverter` translating the types from the\r\n * experimental SDK into corresponding types from the Classic SDK before passing\r\n * them to the wrapped converter.\r\n */\r\nclass FirestoreDataConverter {\r\n constructor(_firestore, _userDataWriter, _delegate) {\r\n this._firestore = _firestore;\r\n this._userDataWriter = _userDataWriter;\r\n this._delegate = _delegate;\r\n }\r\n fromFirestore(snapshot, options) {\r\n const expSnapshot = new QueryDocumentSnapshot$1(this._firestore._delegate, this._userDataWriter, snapshot._key, snapshot._document, snapshot.metadata, \r\n /* converter= */ null);\r\n return this._delegate.fromFirestore(new QueryDocumentSnapshot(this._firestore, expSnapshot), options !== null && options !== void 0 ? options : {});\r\n }\r\n toFirestore(modelObject, options) {\r\n if (!options) {\r\n return this._delegate.toFirestore(modelObject);\r\n }\r\n else {\r\n return this._delegate.toFirestore(modelObject, options);\r\n }\r\n }\r\n // Use the same instance of `FirestoreDataConverter` for the given instances\r\n // of `Firestore` and `PublicFirestoreDataConverter` so that isEqual() will\r\n // compare equal for two objects created with the same converter instance.\r\n static getInstance(firestore, converter) {\r\n const converterMapByFirestore = FirestoreDataConverter.INSTANCES;\r\n let untypedConverterByConverter = converterMapByFirestore.get(firestore);\r\n if (!untypedConverterByConverter) {\r\n untypedConverterByConverter = new WeakMap();\r\n converterMapByFirestore.set(firestore, untypedConverterByConverter);\r\n }\r\n let instance = untypedConverterByConverter.get(converter);\r\n if (!instance) {\r\n instance = new FirestoreDataConverter(firestore, new UserDataWriter(firestore), converter);\r\n untypedConverterByConverter.set(converter, instance);\r\n }\r\n return instance;\r\n }\r\n}\r\nFirestoreDataConverter.INSTANCES = new WeakMap();\r\n/**\r\n * A reference to a particular document in a collection in the database.\r\n */\r\nclass DocumentReference {\r\n constructor(firestore, _delegate) {\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(firestore);\r\n }\r\n static forPath(path, firestore, converter) {\r\n if (path.length % 2 !== 0) {\r\n throw new FirestoreError('invalid-argument', 'Invalid document reference. Document ' +\r\n 'references must have an even number of segments, but ' +\r\n `${path.canonicalString()} has ${path.length}`);\r\n }\r\n return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, new _DocumentKey(path)));\r\n }\r\n static forKey(key, firestore, converter) {\r\n return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, key));\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get parent() {\r\n return new CollectionReference(this.firestore, this._delegate.parent);\r\n }\r\n get path() {\r\n return this._delegate.path;\r\n }\r\n collection(pathString) {\r\n try {\r\n return new CollectionReference(this.firestore, collection(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collection()', 'DocumentReference.collection()');\r\n }\r\n }\r\n isEqual(other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof DocumentReference$1)) {\r\n return false;\r\n }\r\n return refEqual(this._delegate, other);\r\n }\r\n set(value, options) {\r\n options = validateSetOptions('DocumentReference.set', options);\r\n try {\r\n if (options) {\r\n return setDoc(this._delegate, value, options);\r\n }\r\n else {\r\n return setDoc(this._delegate, value);\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'setDoc()', 'DocumentReference.set()');\r\n }\r\n }\r\n update(fieldOrUpdateData, value, ...moreFieldsAndValues) {\r\n try {\r\n if (arguments.length === 1) {\r\n return updateDoc(this._delegate, fieldOrUpdateData);\r\n }\r\n else {\r\n return updateDoc(this._delegate, fieldOrUpdateData, value, ...moreFieldsAndValues);\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'updateDoc()', 'DocumentReference.update()');\r\n }\r\n }\r\n delete() {\r\n return deleteDoc(this._delegate);\r\n }\r\n onSnapshot(...args) {\r\n const options = extractSnapshotOptions(args);\r\n const observer = wrapObserver(args, result => new DocumentSnapshot(this.firestore, new DocumentSnapshot$1(this.firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, this._delegate.converter)));\r\n return onSnapshot(this._delegate, options, observer);\r\n }\r\n get(options) {\r\n let snap;\r\n if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {\r\n snap = getDocFromCache(this._delegate);\r\n }\r\n else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {\r\n snap = getDocFromServer(this._delegate);\r\n }\r\n else {\r\n snap = getDoc(this._delegate);\r\n }\r\n return snap.then(result => new DocumentSnapshot(this.firestore, new DocumentSnapshot$1(this.firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, this._delegate.converter)));\r\n }\r\n withConverter(converter) {\r\n return new DocumentReference(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\n/**\r\n * Replaces the function name in an error thrown by the firestore-exp API\r\n * with the function names used in the classic API.\r\n */\r\nfunction replaceFunctionName(e, original, updated) {\r\n e.message = e.message.replace(original, updated);\r\n return e;\r\n}\r\n/**\r\n * Iterates the list of arguments from an `onSnapshot` call and returns the\r\n * first argument that may be an `SnapshotListenOptions` object. Returns an\r\n * empty object if none is found.\r\n */\r\nfunction extractSnapshotOptions(args) {\r\n for (const arg of args) {\r\n if (typeof arg === 'object' && !isPartialObserver(arg)) {\r\n return arg;\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Creates an observer that can be passed to the firestore-exp SDK. The\r\n * observer converts all observed values into the format expected by the classic\r\n * SDK.\r\n *\r\n * @param args - The list of arguments from an `onSnapshot` call.\r\n * @param wrapper - The function that converts the firestore-exp type into the\r\n * type used by this shim.\r\n */\r\nfunction wrapObserver(args, wrapper) {\r\n var _a, _b;\r\n let userObserver;\r\n if (isPartialObserver(args[0])) {\r\n userObserver = args[0];\r\n }\r\n else if (isPartialObserver(args[1])) {\r\n userObserver = args[1];\r\n }\r\n else if (typeof args[0] === 'function') {\r\n userObserver = {\r\n next: args[0],\r\n error: args[1],\r\n complete: args[2]\r\n };\r\n }\r\n else {\r\n userObserver = {\r\n next: args[1],\r\n error: args[2],\r\n complete: args[3]\r\n };\r\n }\r\n return {\r\n next: val => {\r\n if (userObserver.next) {\r\n userObserver.next(wrapper(val));\r\n }\r\n },\r\n error: (_a = userObserver.error) === null || _a === void 0 ? void 0 : _a.bind(userObserver),\r\n complete: (_b = userObserver.complete) === null || _b === void 0 ? void 0 : _b.bind(userObserver)\r\n };\r\n}\r\nclass DocumentSnapshot {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get ref() {\r\n return new DocumentReference(this._firestore, this._delegate.ref);\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get exists() {\r\n return this._delegate.exists();\r\n }\r\n data(options) {\r\n return this._delegate.data(options);\r\n }\r\n get(fieldPath, options\r\n // We are using `any` here to avoid an explicit cast by our users.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return this._delegate.get(fieldPath, options);\r\n }\r\n isEqual(other) {\r\n return snapshotEqual(this._delegate, other._delegate);\r\n }\r\n}\r\nclass QueryDocumentSnapshot extends DocumentSnapshot {\r\n data(options) {\r\n const data = this._delegate.data(options);\r\n _debugAssert(data !== undefined, 'Document in a QueryDocumentSnapshot should exist');\r\n return data;\r\n }\r\n}\r\nclass Query {\r\n constructor(firestore, _delegate) {\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(firestore);\r\n }\r\n where(fieldPath, opStr, value) {\r\n try {\r\n // The \"as string\" cast is a little bit of a hack. `where` accepts the\r\n // FieldPath Compat type as input, but is not typed as such in order to\r\n // not expose this via our public typings file.\r\n return new Query(this.firestore, query(this._delegate, where(fieldPath, opStr, value)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, /(orderBy|where)\\(\\)/, 'Query.$1()');\r\n }\r\n }\r\n orderBy(fieldPath, directionStr) {\r\n try {\r\n // The \"as string\" cast is a little bit of a hack. `orderBy` accepts the\r\n // FieldPath Compat type as input, but is not typed as such in order to\r\n // not expose this via our public typings file.\r\n return new Query(this.firestore, query(this._delegate, orderBy(fieldPath, directionStr)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, /(orderBy|where)\\(\\)/, 'Query.$1()');\r\n }\r\n }\r\n limit(n) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, limit(n)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'limit()', 'Query.limit()');\r\n }\r\n }\r\n limitToLast(n) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, limitToLast(n)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'limitToLast()', 'Query.limitToLast()');\r\n }\r\n }\r\n startAt(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, startAt(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'startAt()', 'Query.startAt()');\r\n }\r\n }\r\n startAfter(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, startAfter(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'startAfter()', 'Query.startAfter()');\r\n }\r\n }\r\n endBefore(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, endBefore(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'endBefore()', 'Query.endBefore()');\r\n }\r\n }\r\n endAt(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, endAt(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'endAt()', 'Query.endAt()');\r\n }\r\n }\r\n isEqual(other) {\r\n return queryEqual(this._delegate, other._delegate);\r\n }\r\n get(options) {\r\n let query;\r\n if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {\r\n query = getDocsFromCache(this._delegate);\r\n }\r\n else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {\r\n query = getDocsFromServer(this._delegate);\r\n }\r\n else {\r\n query = getDocs(this._delegate);\r\n }\r\n return query.then(result => new QuerySnapshot(this.firestore, new QuerySnapshot$1(this.firestore._delegate, this._userDataWriter, this._delegate, result._snapshot)));\r\n }\r\n onSnapshot(...args) {\r\n const options = extractSnapshotOptions(args);\r\n const observer = wrapObserver(args, snap => new QuerySnapshot(this.firestore, new QuerySnapshot$1(this.firestore._delegate, this._userDataWriter, this._delegate, snap._snapshot)));\r\n return onSnapshot(this._delegate, options, observer);\r\n }\r\n withConverter(converter) {\r\n return new Query(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\nclass DocumentChange {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get type() {\r\n return this._delegate.type;\r\n }\r\n get doc() {\r\n return new QueryDocumentSnapshot(this._firestore, this._delegate.doc);\r\n }\r\n get oldIndex() {\r\n return this._delegate.oldIndex;\r\n }\r\n get newIndex() {\r\n return this._delegate.newIndex;\r\n }\r\n}\r\nclass QuerySnapshot {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get query() {\r\n return new Query(this._firestore, this._delegate.query);\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get size() {\r\n return this._delegate.size;\r\n }\r\n get empty() {\r\n return this._delegate.empty;\r\n }\r\n get docs() {\r\n return this._delegate.docs.map(doc => new QueryDocumentSnapshot(this._firestore, doc));\r\n }\r\n docChanges(options) {\r\n return this._delegate\r\n .docChanges(options)\r\n .map(docChange => new DocumentChange(this._firestore, docChange));\r\n }\r\n forEach(callback, thisArg) {\r\n this._delegate.forEach(snapshot => {\r\n callback.call(thisArg, new QueryDocumentSnapshot(this._firestore, snapshot));\r\n });\r\n }\r\n isEqual(other) {\r\n return snapshotEqual(this._delegate, other._delegate);\r\n }\r\n}\r\nclass CollectionReference extends Query {\r\n constructor(firestore, _delegate) {\r\n super(firestore, _delegate);\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get path() {\r\n return this._delegate.path;\r\n }\r\n get parent() {\r\n const docRef = this._delegate.parent;\r\n return docRef ? new DocumentReference(this.firestore, docRef) : null;\r\n }\r\n doc(documentPath) {\r\n try {\r\n if (documentPath === undefined) {\r\n // Call `doc` without `documentPath` if `documentPath` is `undefined`\r\n // as `doc` validates the number of arguments to prevent users from\r\n // accidentally passing `undefined`.\r\n return new DocumentReference(this.firestore, doc(this._delegate));\r\n }\r\n else {\r\n return new DocumentReference(this.firestore, doc(this._delegate, documentPath));\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'doc()', 'CollectionReference.doc()');\r\n }\r\n }\r\n add(data) {\r\n return addDoc(this._delegate, data).then(docRef => new DocumentReference(this.firestore, docRef));\r\n }\r\n isEqual(other) {\r\n return refEqual(this._delegate, other._delegate);\r\n }\r\n withConverter(converter) {\r\n return new CollectionReference(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\nfunction castReference(documentRef) {\r\n return _cast(documentRef, DocumentReference$1);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// The objects that are a part of this API are exposed to third-parties as\r\n// compiled javascript so we want to flag our private members with a leading\r\n// underscore to discourage their use.\r\n/**\r\n * A `FieldPath` refers to a field in a document. The path may consist of a\r\n * single field name (referring to a top-level field in the document), or a list\r\n * of field names (referring to a nested field in the document).\r\n */\r\nclass FieldPath {\r\n /**\r\n * Creates a FieldPath from the provided field names. If more than one field\r\n * name is provided, the path will point to a nested field in a document.\r\n *\r\n * @param fieldNames - A list of field names.\r\n */\r\n constructor(...fieldNames) {\r\n this._delegate = new FieldPath$1(...fieldNames);\r\n }\r\n static documentId() {\r\n /**\r\n * Internal Note: The backend doesn't technically support querying by\r\n * document ID. Instead it queries by the entire document name (full path\r\n * included), but in the cases we currently support documentId(), the net\r\n * effect is the same.\r\n */\r\n return new FieldPath(_FieldPath.keyField().canonicalString());\r\n }\r\n isEqual(other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof FieldPath$1)) {\r\n return false;\r\n }\r\n return this._delegate._internalPath.isEqual(other._internalPath);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FieldValue {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n static serverTimestamp() {\r\n const delegate = serverTimestamp();\r\n delegate._methodName = 'FieldValue.serverTimestamp';\r\n return new FieldValue(delegate);\r\n }\r\n static delete() {\r\n const delegate = deleteField();\r\n delegate._methodName = 'FieldValue.delete';\r\n return new FieldValue(delegate);\r\n }\r\n static arrayUnion(...elements) {\r\n const delegate = arrayUnion(...elements);\r\n delegate._methodName = 'FieldValue.arrayUnion';\r\n return new FieldValue(delegate);\r\n }\r\n static arrayRemove(...elements) {\r\n const delegate = arrayRemove(...elements);\r\n delegate._methodName = 'FieldValue.arrayRemove';\r\n return new FieldValue(delegate);\r\n }\r\n static increment(n) {\r\n const delegate = increment(n);\r\n delegate._methodName = 'FieldValue.increment';\r\n return new FieldValue(delegate);\r\n }\r\n isEqual(other) {\r\n return this._delegate.isEqual(other._delegate);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst firestoreNamespace = {\r\n Firestore,\r\n GeoPoint,\r\n Timestamp,\r\n Blob,\r\n Transaction,\r\n WriteBatch,\r\n DocumentReference,\r\n DocumentSnapshot,\r\n Query,\r\n QueryDocumentSnapshot,\r\n QuerySnapshot,\r\n CollectionReference,\r\n FieldPath,\r\n FieldValue,\r\n setLogLevel,\r\n CACHE_SIZE_UNLIMITED\r\n};\r\n/**\r\n * Configures Firestore as part of the Firebase SDK by calling registerComponent.\r\n *\r\n * @param firebase - The FirebaseNamespace to register Firestore with\r\n * @param firestoreFactory - A factory function that returns a new Firestore\r\n * instance.\r\n */\r\nfunction configureForFirebase(firebase, firestoreFactory) {\r\n firebase.INTERNAL.registerComponent(new Component('firestore-compat', container => {\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const firestoreExp = container.getProvider('firestore').getImmediate();\r\n return firestoreFactory(app, firestoreExp);\r\n }, 'PUBLIC').setServiceProps(Object.assign({}, firestoreNamespace)));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Registers the main Firestore build with the components framework.\r\n * Persistence can be enabled via `firebase.firestore().enablePersistence()`.\r\n */\r\nfunction registerFirestore(instance) {\r\n configureForFirebase(instance, (app, firestoreExp) => new Firestore(app, firestoreExp, new IndexedDbPersistenceProvider()));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterFirestore(firebase);\n\nexport { registerFirestore };\n//# sourceMappingURL=index.esm2017.js.map\n","import { _registerComponent, registerVersion, _getProvider, getApp } from '@firebase/app';\nimport { FirebaseError, getModularInstance, getDefaultEmulatorHostnameAndPort } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';\r\nconst UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';\r\nfunction mapValues(\r\n// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no, f) {\r\n const result = {};\r\n for (const key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n result[key] = f(o[key]);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Takes data and encodes it in a JSON-friendly way, such that types such as\r\n * Date are preserved.\r\n * @internal\r\n * @param data - Data to encode.\r\n */\r\nfunction encode(data) {\r\n if (data == null) {\r\n return null;\r\n }\r\n if (data instanceof Number) {\r\n data = data.valueOf();\r\n }\r\n if (typeof data === 'number' && isFinite(data)) {\r\n // Any number in JS is safe to put directly in JSON and parse as a double\r\n // without any loss of precision.\r\n return data;\r\n }\r\n if (data === true || data === false) {\r\n return data;\r\n }\r\n if (Object.prototype.toString.call(data) === '[object String]') {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n return data.toISOString();\r\n }\r\n if (Array.isArray(data)) {\r\n return data.map(x => encode(x));\r\n }\r\n if (typeof data === 'function' || typeof data === 'object') {\r\n return mapValues(data, x => encode(x));\r\n }\r\n // If we got this far, the data is not encodable.\r\n throw new Error('Data cannot be encoded in JSON: ' + data);\r\n}\r\n/**\r\n * Takes data that's been encoded in a JSON-friendly form and returns a form\r\n * with richer datatypes, such as Dates, etc.\r\n * @internal\r\n * @param json - JSON to convert.\r\n */\r\nfunction decode(json) {\r\n if (json == null) {\r\n return json;\r\n }\r\n if (json['@type']) {\r\n switch (json['@type']) {\r\n case LONG_TYPE:\r\n // Fall through and handle this the same as unsigned.\r\n case UNSIGNED_LONG_TYPE: {\r\n // Technically, this could work return a valid number for malformed\r\n // data if there was a number followed by garbage. But it's just not\r\n // worth all the extra code to detect that case.\r\n const value = Number(json['value']);\r\n if (isNaN(value)) {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n return value;\r\n }\r\n default: {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n }\r\n }\r\n if (Array.isArray(json)) {\r\n return json.map(x => decode(x));\r\n }\r\n if (typeof json === 'function' || typeof json === 'object') {\r\n return mapValues(json, x => decode(x));\r\n }\r\n // Anything else is safe to return.\r\n return json;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Functions.\r\n */\r\nconst FUNCTIONS_TYPE = 'functions';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Standard error codes for different ways a request can fail, as defined by:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * This map is used primarily to convert from a backend error code string to\r\n * a client SDK error code string, and make sure it's in the supported set.\r\n */\r\nconst errorCodeMap = {\r\n OK: 'ok',\r\n CANCELLED: 'cancelled',\r\n UNKNOWN: 'unknown',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n DEADLINE_EXCEEDED: 'deadline-exceeded',\r\n NOT_FOUND: 'not-found',\r\n ALREADY_EXISTS: 'already-exists',\r\n PERMISSION_DENIED: 'permission-denied',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n RESOURCE_EXHAUSTED: 'resource-exhausted',\r\n FAILED_PRECONDITION: 'failed-precondition',\r\n ABORTED: 'aborted',\r\n OUT_OF_RANGE: 'out-of-range',\r\n UNIMPLEMENTED: 'unimplemented',\r\n INTERNAL: 'internal',\r\n UNAVAILABLE: 'unavailable',\r\n DATA_LOSS: 'data-loss'\r\n};\r\n/**\r\n * An explicit error that can be thrown from a handler to send an error to the\r\n * client that called the function.\r\n */\r\nclass FunctionsError extends FirebaseError {\r\n constructor(\r\n /**\r\n * A standard error code that will be returned to the client. This also\r\n * determines the HTTP status code of the response, as defined in code.proto.\r\n */\r\n code, message, \r\n /**\r\n * Extra data to be converted to JSON and included in the error response.\r\n */\r\n details) {\r\n super(`${FUNCTIONS_TYPE}/${code}`, message || '');\r\n this.details = details;\r\n }\r\n}\r\n/**\r\n * Takes an HTTP status code and returns the corresponding ErrorCode.\r\n * This is the standard HTTP status code -> error mapping defined in:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * @param status An HTTP status code.\r\n * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.\r\n */\r\nfunction codeForHTTPStatus(status) {\r\n // Make sure any successful status is OK.\r\n if (status >= 200 && status < 300) {\r\n return 'ok';\r\n }\r\n switch (status) {\r\n case 0:\r\n // This can happen if the server returns 500.\r\n return 'internal';\r\n case 400:\r\n return 'invalid-argument';\r\n case 401:\r\n return 'unauthenticated';\r\n case 403:\r\n return 'permission-denied';\r\n case 404:\r\n return 'not-found';\r\n case 409:\r\n return 'aborted';\r\n case 429:\r\n return 'resource-exhausted';\r\n case 499:\r\n return 'cancelled';\r\n case 500:\r\n return 'internal';\r\n case 501:\r\n return 'unimplemented';\r\n case 503:\r\n return 'unavailable';\r\n case 504:\r\n return 'deadline-exceeded';\r\n }\r\n return 'unknown';\r\n}\r\n/**\r\n * Takes an HTTP response and returns the corresponding Error, if any.\r\n */\r\nfunction _errorForResponse(status, bodyJSON) {\r\n let code = codeForHTTPStatus(status);\r\n // Start with reasonable defaults from the status code.\r\n let description = code;\r\n let details = undefined;\r\n // Then look through the body for explicit details.\r\n try {\r\n const errorJSON = bodyJSON && bodyJSON.error;\r\n if (errorJSON) {\r\n const status = errorJSON.status;\r\n if (typeof status === 'string') {\r\n if (!errorCodeMap[status]) {\r\n // They must've included an unknown error code in the body.\r\n return new FunctionsError('internal', 'internal');\r\n }\r\n code = errorCodeMap[status];\r\n // TODO(klimt): Add better default descriptions for error enums.\r\n // The default description needs to be updated for the new code.\r\n description = status;\r\n }\r\n const message = errorJSON.message;\r\n if (typeof message === 'string') {\r\n description = message;\r\n }\r\n details = errorJSON.details;\r\n if (details !== undefined) {\r\n details = decode(details);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // If we couldn't parse explicit error data, that's fine.\r\n }\r\n if (code === 'ok') {\r\n // Technically, there's an edge case where a developer could explicitly\r\n // return an error code of OK, and we will treat it as success, but that\r\n // seems reasonable.\r\n return null;\r\n }\r\n return new FunctionsError(code, description, details);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Helper class to get metadata that should be included with a function call.\r\n * @internal\r\n */\r\nclass ContextProvider {\r\n constructor(authProvider, messagingProvider, appCheckProvider) {\r\n this.auth = null;\r\n this.messaging = null;\r\n this.appCheck = null;\r\n this.auth = authProvider.getImmediate({ optional: true });\r\n this.messaging = messagingProvider.getImmediate({\r\n optional: true\r\n });\r\n if (!this.auth) {\r\n authProvider.get().then(auth => (this.auth = auth), () => {\r\n /* get() never rejects */\r\n });\r\n }\r\n if (!this.messaging) {\r\n messagingProvider.get().then(messaging => (this.messaging = messaging), () => {\r\n /* get() never rejects */\r\n });\r\n }\r\n if (!this.appCheck) {\r\n appCheckProvider.get().then(appCheck => (this.appCheck = appCheck), () => {\r\n /* get() never rejects */\r\n });\r\n }\r\n }\r\n async getAuthToken() {\r\n if (!this.auth) {\r\n return undefined;\r\n }\r\n try {\r\n const token = await this.auth.getToken();\r\n return token === null || token === void 0 ? void 0 : token.accessToken;\r\n }\r\n catch (e) {\r\n // If there's any error when trying to get the auth token, leave it off.\r\n return undefined;\r\n }\r\n }\r\n async getMessagingToken() {\r\n if (!this.messaging ||\r\n !('Notification' in self) ||\r\n Notification.permission !== 'granted') {\r\n return undefined;\r\n }\r\n try {\r\n return await this.messaging.getToken();\r\n }\r\n catch (e) {\r\n // We don't warn on this, because it usually means messaging isn't set up.\r\n // console.warn('Failed to retrieve instance id token.', e);\r\n // If there's any error when trying to get the token, leave it off.\r\n return undefined;\r\n }\r\n }\r\n async getAppCheckToken(limitedUseAppCheckTokens) {\r\n if (this.appCheck) {\r\n const result = limitedUseAppCheckTokens\r\n ? await this.appCheck.getLimitedUseToken()\r\n : await this.appCheck.getToken();\r\n if (result.error) {\r\n // Do not send the App Check header to the functions endpoint if\r\n // there was an error from the App Check exchange endpoint. The App\r\n // Check SDK will already have logged the error to console.\r\n return null;\r\n }\r\n return result.token;\r\n }\r\n return null;\r\n }\r\n async getContext(limitedUseAppCheckTokens) {\r\n const authToken = await this.getAuthToken();\r\n const messagingToken = await this.getMessagingToken();\r\n const appCheckToken = await this.getAppCheckToken(limitedUseAppCheckTokens);\r\n return { authToken, messagingToken, appCheckToken };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_REGION = 'us-central1';\r\n/**\r\n * Returns a Promise that will be rejected after the given duration.\r\n * The error will be of type FunctionsError.\r\n *\r\n * @param millis Number of milliseconds to wait before rejecting.\r\n */\r\nfunction failAfter(millis) {\r\n // Node timers and browser timers are fundamentally incompatible, but we\r\n // don't care about the value here\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let timer = null;\r\n return {\r\n promise: new Promise((_, reject) => {\r\n timer = setTimeout(() => {\r\n reject(new FunctionsError('deadline-exceeded', 'deadline-exceeded'));\r\n }, millis);\r\n }),\r\n cancel: () => {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * The main class for the Firebase Functions SDK.\r\n * @internal\r\n */\r\nclass FunctionsService {\r\n /**\r\n * Creates a new Functions service for the given app.\r\n * @param app - The FirebaseApp to use.\r\n */\r\n constructor(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain = DEFAULT_REGION, fetchImpl) {\r\n this.app = app;\r\n this.fetchImpl = fetchImpl;\r\n this.emulatorOrigin = null;\r\n this.contextProvider = new ContextProvider(authProvider, messagingProvider, appCheckProvider);\r\n // Cancels all ongoing requests when resolved.\r\n this.cancelAllRequests = new Promise(resolve => {\r\n this.deleteService = () => {\r\n return Promise.resolve(resolve());\r\n };\r\n });\r\n // Resolve the region or custom domain overload by attempting to parse it.\r\n try {\r\n const url = new URL(regionOrCustomDomain);\r\n this.customDomain = url.origin;\r\n this.region = DEFAULT_REGION;\r\n }\r\n catch (e) {\r\n this.customDomain = null;\r\n this.region = regionOrCustomDomain;\r\n }\r\n }\r\n _delete() {\r\n return this.deleteService();\r\n }\r\n /**\r\n * Returns the URL for a callable with the given name.\r\n * @param name - The name of the callable.\r\n * @internal\r\n */\r\n _url(name) {\r\n const projectId = this.app.options.projectId;\r\n if (this.emulatorOrigin !== null) {\r\n const origin = this.emulatorOrigin;\r\n return `${origin}/${projectId}/${this.region}/${name}`;\r\n }\r\n if (this.customDomain !== null) {\r\n return `${this.customDomain}/${name}`;\r\n }\r\n return `https://${this.region}-${projectId}.cloudfunctions.net/${name}`;\r\n }\r\n}\r\n/**\r\n * Modify this instance to communicate with the Cloud Functions emulator.\r\n *\r\n * Note: this must be called before this instance has been used to do any operations.\r\n *\r\n * @param host The emulator host (ex: localhost)\r\n * @param port The emulator port (ex: 5001)\r\n * @public\r\n */\r\nfunction connectFunctionsEmulator$1(functionsInstance, host, port) {\r\n functionsInstance.emulatorOrigin = `http://${host}:${port}`;\r\n}\r\n/**\r\n * Returns a reference to the callable https trigger with the given name.\r\n * @param name - The name of the trigger.\r\n * @public\r\n */\r\nfunction httpsCallable$1(functionsInstance, name, options) {\r\n return (data => {\r\n return call(functionsInstance, name, data, options || {});\r\n });\r\n}\r\n/**\r\n * Returns a reference to the callable https trigger with the given url.\r\n * @param url - The url of the trigger.\r\n * @public\r\n */\r\nfunction httpsCallableFromURL$1(functionsInstance, url, options) {\r\n return (data => {\r\n return callAtURL(functionsInstance, url, data, options || {});\r\n });\r\n}\r\n/**\r\n * Does an HTTP POST and returns the completed response.\r\n * @param url The url to post to.\r\n * @param body The JSON body of the post.\r\n * @param headers The HTTP headers to include in the request.\r\n * @return A Promise that will succeed when the request finishes.\r\n */\r\nasync function postJSON(url, body, headers, fetchImpl) {\r\n headers['Content-Type'] = 'application/json';\r\n let response;\r\n try {\r\n response = await fetchImpl(url, {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers\r\n });\r\n }\r\n catch (e) {\r\n // This could be an unhandled error on the backend, or it could be a\r\n // network error. There's no way to know, since an unhandled error on the\r\n // backend will fail to set the proper CORS header, and thus will be\r\n // treated as a network error by fetch.\r\n return {\r\n status: 0,\r\n json: null\r\n };\r\n }\r\n let json = null;\r\n try {\r\n json = await response.json();\r\n }\r\n catch (e) {\r\n // If we fail to parse JSON, it will fail the same as an empty body.\r\n }\r\n return {\r\n status: response.status,\r\n json\r\n };\r\n}\r\n/**\r\n * Calls a callable function asynchronously and returns the result.\r\n * @param name The name of the callable trigger.\r\n * @param data The data to pass as params to the function.s\r\n */\r\nfunction call(functionsInstance, name, data, options) {\r\n const url = functionsInstance._url(name);\r\n return callAtURL(functionsInstance, url, data, options);\r\n}\r\n/**\r\n * Calls a callable function asynchronously and returns the result.\r\n * @param url The url of the callable trigger.\r\n * @param data The data to pass as params to the function.s\r\n */\r\nasync function callAtURL(functionsInstance, url, data, options) {\r\n // Encode any special types, such as dates, in the input data.\r\n data = encode(data);\r\n const body = { data };\r\n // Add a header for the authToken.\r\n const headers = {};\r\n const context = await functionsInstance.contextProvider.getContext(options.limitedUseAppCheckTokens);\r\n if (context.authToken) {\r\n headers['Authorization'] = 'Bearer ' + context.authToken;\r\n }\r\n if (context.messagingToken) {\r\n headers['Firebase-Instance-ID-Token'] = context.messagingToken;\r\n }\r\n if (context.appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = context.appCheckToken;\r\n }\r\n // Default timeout to 70s, but let the options override it.\r\n const timeout = options.timeout || 70000;\r\n const failAfterHandle = failAfter(timeout);\r\n const response = await Promise.race([\r\n postJSON(url, body, headers, functionsInstance.fetchImpl),\r\n failAfterHandle.promise,\r\n functionsInstance.cancelAllRequests\r\n ]);\r\n // Always clear the failAfter timeout\r\n failAfterHandle.cancel();\r\n // If service was deleted, interrupted response throws an error.\r\n if (!response) {\r\n throw new FunctionsError('cancelled', 'Firebase Functions instance was deleted.');\r\n }\r\n // Check for an error status, regardless of http status.\r\n const error = _errorForResponse(response.status, response.json);\r\n if (error) {\r\n throw error;\r\n }\r\n if (!response.json) {\r\n throw new FunctionsError('internal', 'Response is not valid JSON object.');\r\n }\r\n let responseData = response.json.data;\r\n // TODO(klimt): For right now, allow \"result\" instead of \"data\", for\r\n // backwards compatibility.\r\n if (typeof responseData === 'undefined') {\r\n responseData = response.json.result;\r\n }\r\n if (typeof responseData === 'undefined') {\r\n // Consider the response malformed.\r\n throw new FunctionsError('internal', 'Response is missing data field.');\r\n }\r\n // Decode any special types, such as dates, in the returned data.\r\n const decodedData = decode(responseData);\r\n return { data: decodedData };\r\n}\n\nconst name = \"@firebase/functions\";\nconst version = \"0.10.0\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst AUTH_INTERNAL_NAME = 'auth-internal';\r\nconst APP_CHECK_INTERNAL_NAME = 'app-check-internal';\r\nconst MESSAGING_INTERNAL_NAME = 'messaging-internal';\r\nfunction registerFunctions(fetchImpl, variant) {\r\n const factory = (container, { instanceIdentifier: regionOrCustomDomain }) => {\r\n // Dependencies\r\n const app = container.getProvider('app').getImmediate();\r\n const authProvider = container.getProvider(AUTH_INTERNAL_NAME);\r\n const messagingProvider = container.getProvider(MESSAGING_INTERNAL_NAME);\r\n const appCheckProvider = container.getProvider(APP_CHECK_INTERNAL_NAME);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new FunctionsService(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain, fetchImpl);\r\n };\r\n _registerComponent(new Component(FUNCTIONS_TYPE, factory, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\r\n registerVersion(name, version, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a {@link Functions} instance for the given app.\r\n * @param app - The {@link @firebase/app#FirebaseApp} to use.\r\n * @param regionOrCustomDomain - one of:\r\n * a) The region the callable functions are located in (ex: us-central1)\r\n * b) A custom domain hosting the callable functions (ex: https://mydomain.com)\r\n * @public\r\n */\r\nfunction getFunctions(app = getApp(), regionOrCustomDomain = DEFAULT_REGION) {\r\n // Dependencies\r\n const functionsProvider = _getProvider(getModularInstance(app), FUNCTIONS_TYPE);\r\n const functionsInstance = functionsProvider.getImmediate({\r\n identifier: regionOrCustomDomain\r\n });\r\n const emulator = getDefaultEmulatorHostnameAndPort('functions');\r\n if (emulator) {\r\n connectFunctionsEmulator(functionsInstance, ...emulator);\r\n }\r\n return functionsInstance;\r\n}\r\n/**\r\n * Modify this instance to communicate with the Cloud Functions emulator.\r\n *\r\n * Note: this must be called before this instance has been used to do any operations.\r\n *\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 5001)\r\n * @public\r\n */\r\nfunction connectFunctionsEmulator(functionsInstance, host, port) {\r\n connectFunctionsEmulator$1(getModularInstance(functionsInstance), host, port);\r\n}\r\n/**\r\n * Returns a reference to the callable HTTPS trigger with the given name.\r\n * @param name - The name of the trigger.\r\n * @public\r\n */\r\nfunction httpsCallable(functionsInstance, name, options) {\r\n return httpsCallable$1(getModularInstance(functionsInstance), name, options);\r\n}\r\n/**\r\n * Returns a reference to the callable HTTPS trigger with the specified url.\r\n * @param url - The url of the trigger.\r\n * @public\r\n */\r\nfunction httpsCallableFromURL(functionsInstance, url, options) {\r\n return httpsCallableFromURL$1(getModularInstance(functionsInstance), url, options);\r\n}\n\n/**\r\n * Cloud Functions for Firebase\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterFunctions(fetch.bind(self));\n\nexport { connectFunctionsEmulator, getFunctions, httpsCallable, httpsCallableFromURL };\n//# sourceMappingURL=index.esm2017.js.map\n","import firebase from '@firebase/app-compat';\nimport { httpsCallable, httpsCallableFromURL, connectFunctionsEmulator } from '@firebase/functions';\nimport { FirebaseError } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\nconst name = \"@firebase/functions-compat\";\nconst version = \"0.3.5\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FunctionsService {\r\n constructor(app, _delegate) {\r\n this.app = app;\r\n this._delegate = _delegate;\r\n this._region = this._delegate.region;\r\n this._customDomain = this._delegate.customDomain;\r\n }\r\n httpsCallable(name, options) {\r\n return httpsCallable(this._delegate, name, options);\r\n }\r\n httpsCallableFromURL(url, options) {\r\n return httpsCallableFromURL(this._delegate, url, options);\r\n }\r\n /**\r\n * Deprecated in pre-modularized repo, does not exist in modularized\r\n * functions package, need to convert to \"host\" and \"port\" args that\r\n * `useFunctionsEmulatorExp` takes.\r\n * @deprecated\r\n */\r\n useFunctionsEmulator(origin) {\r\n const match = origin.match('[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?');\r\n if (match == null) {\r\n throw new FirebaseError('functions', 'No origin provided to useFunctionsEmulator()');\r\n }\r\n if (match[2] == null) {\r\n throw new FirebaseError('functions', 'Port missing in origin provided to useFunctionsEmulator()');\r\n }\r\n return connectFunctionsEmulator(this._delegate, match[1], Number(match[2]));\r\n }\r\n useEmulator(host, port) {\r\n return connectFunctionsEmulator(this._delegate, host, port);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_REGION = 'us-central1';\r\nconst factory = (container, { instanceIdentifier: regionOrCustomDomain }) => {\r\n // Dependencies\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const functionsServiceExp = container.getProvider('functions').getImmediate({\r\n identifier: regionOrCustomDomain !== null && regionOrCustomDomain !== void 0 ? regionOrCustomDomain : DEFAULT_REGION\r\n });\r\n return new FunctionsService(app, functionsServiceExp);\r\n};\r\nfunction registerFunctions() {\r\n const namespaceExports = {\r\n Functions: FunctionsService\r\n };\r\n firebase.INTERNAL.registerComponent(new Component('functions-compat', factory, \"PUBLIC\" /* ComponentType.PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterFunctions();\r\nfirebase.registerVersion(name, version);\n//# sourceMappingURL=index.esm2017.js.map\n","import { _getProvider, getApp, _registerComponent, registerVersion, SDK_VERSION } from '@firebase/app';\nimport { FirebaseError, isNode, createMockUserToken, getModularInstance, getDefaultEmulatorHostnameAndPort } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Constants used in the Firebase Storage library.\r\n */\r\n/**\r\n * Domain name for firebase storage.\r\n */\r\nconst DEFAULT_HOST = 'firebasestorage.googleapis.com';\r\n/**\r\n * The key in Firebase config json for the storage bucket.\r\n */\r\nconst CONFIG_STORAGE_BUCKET_KEY = 'storageBucket';\r\n/**\r\n * 2 minutes\r\n *\r\n * The timeout for all operations except upload.\r\n */\r\nconst DEFAULT_MAX_OPERATION_RETRY_TIME = 2 * 60 * 1000;\r\n/**\r\n * 10 minutes\r\n *\r\n * The timeout for upload.\r\n */\r\nconst DEFAULT_MAX_UPLOAD_RETRY_TIME = 10 * 60 * 1000;\r\n/**\r\n * 1 second\r\n */\r\nconst DEFAULT_MIN_SLEEP_TIME_MILLIS = 1000;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An error returned by the Firebase Storage SDK.\r\n * @public\r\n */\r\nclass StorageError extends FirebaseError {\r\n /**\r\n * @param code - A `StorageErrorCode` string to be prefixed with 'storage/' and\r\n * added to the end of the message.\r\n * @param message - Error message.\r\n * @param status_ - Corresponding HTTP Status Code\r\n */\r\n constructor(code, message, status_ = 0) {\r\n super(prependCode(code), `Firebase Storage: ${message} (${prependCode(code)})`);\r\n this.status_ = status_;\r\n /**\r\n * Stores custom error data unique to the `StorageError`.\r\n */\r\n this.customData = { serverResponse: null };\r\n this._baseMessage = this.message;\r\n // Without this, `instanceof StorageError`, in tests for example,\r\n // returns false.\r\n Object.setPrototypeOf(this, StorageError.prototype);\r\n }\r\n get status() {\r\n return this.status_;\r\n }\r\n set status(status) {\r\n this.status_ = status;\r\n }\r\n /**\r\n * Compares a `StorageErrorCode` against this error's code, filtering out the prefix.\r\n */\r\n _codeEquals(code) {\r\n return prependCode(code) === this.code;\r\n }\r\n /**\r\n * Optional response message that was added by the server.\r\n */\r\n get serverResponse() {\r\n return this.customData.serverResponse;\r\n }\r\n set serverResponse(serverResponse) {\r\n this.customData.serverResponse = serverResponse;\r\n if (this.customData.serverResponse) {\r\n this.message = `${this._baseMessage}\\n${this.customData.serverResponse}`;\r\n }\r\n else {\r\n this.message = this._baseMessage;\r\n }\r\n }\r\n}\r\n/**\r\n * @public\r\n * Error codes that can be attached to `StorageError` objects.\r\n */\r\nvar StorageErrorCode;\r\n(function (StorageErrorCode) {\r\n // Shared between all platforms\r\n StorageErrorCode[\"UNKNOWN\"] = \"unknown\";\r\n StorageErrorCode[\"OBJECT_NOT_FOUND\"] = \"object-not-found\";\r\n StorageErrorCode[\"BUCKET_NOT_FOUND\"] = \"bucket-not-found\";\r\n StorageErrorCode[\"PROJECT_NOT_FOUND\"] = \"project-not-found\";\r\n StorageErrorCode[\"QUOTA_EXCEEDED\"] = \"quota-exceeded\";\r\n StorageErrorCode[\"UNAUTHENTICATED\"] = \"unauthenticated\";\r\n StorageErrorCode[\"UNAUTHORIZED\"] = \"unauthorized\";\r\n StorageErrorCode[\"UNAUTHORIZED_APP\"] = \"unauthorized-app\";\r\n StorageErrorCode[\"RETRY_LIMIT_EXCEEDED\"] = \"retry-limit-exceeded\";\r\n StorageErrorCode[\"INVALID_CHECKSUM\"] = \"invalid-checksum\";\r\n StorageErrorCode[\"CANCELED\"] = \"canceled\";\r\n // JS specific\r\n StorageErrorCode[\"INVALID_EVENT_NAME\"] = \"invalid-event-name\";\r\n StorageErrorCode[\"INVALID_URL\"] = \"invalid-url\";\r\n StorageErrorCode[\"INVALID_DEFAULT_BUCKET\"] = \"invalid-default-bucket\";\r\n StorageErrorCode[\"NO_DEFAULT_BUCKET\"] = \"no-default-bucket\";\r\n StorageErrorCode[\"CANNOT_SLICE_BLOB\"] = \"cannot-slice-blob\";\r\n StorageErrorCode[\"SERVER_FILE_WRONG_SIZE\"] = \"server-file-wrong-size\";\r\n StorageErrorCode[\"NO_DOWNLOAD_URL\"] = \"no-download-url\";\r\n StorageErrorCode[\"INVALID_ARGUMENT\"] = \"invalid-argument\";\r\n StorageErrorCode[\"INVALID_ARGUMENT_COUNT\"] = \"invalid-argument-count\";\r\n StorageErrorCode[\"APP_DELETED\"] = \"app-deleted\";\r\n StorageErrorCode[\"INVALID_ROOT_OPERATION\"] = \"invalid-root-operation\";\r\n StorageErrorCode[\"INVALID_FORMAT\"] = \"invalid-format\";\r\n StorageErrorCode[\"INTERNAL_ERROR\"] = \"internal-error\";\r\n StorageErrorCode[\"UNSUPPORTED_ENVIRONMENT\"] = \"unsupported-environment\";\r\n})(StorageErrorCode || (StorageErrorCode = {}));\r\nfunction prependCode(code) {\r\n return 'storage/' + code;\r\n}\r\nfunction unknown() {\r\n const message = 'An unknown error occurred, please check the error payload for ' +\r\n 'server response.';\r\n return new StorageError(StorageErrorCode.UNKNOWN, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new StorageError(StorageErrorCode.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new StorageError(StorageErrorCode.QUOTA_EXCEEDED, \"Quota for bucket '\" +\r\n bucket +\r\n \"' exceeded, please view quota on \" +\r\n 'https://firebase.google.com/pricing/.');\r\n}\r\nfunction unauthenticated() {\r\n const message = 'User is not authenticated, please authenticate using Firebase ' +\r\n 'Authentication and try again.';\r\n return new StorageError(StorageErrorCode.UNAUTHENTICATED, message);\r\n}\r\nfunction unauthorizedApp() {\r\n return new StorageError(StorageErrorCode.UNAUTHORIZED_APP, 'This app does not have permission to access Firebase Storage on this project.');\r\n}\r\nfunction unauthorized(path) {\r\n return new StorageError(StorageErrorCode.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new StorageError(StorageErrorCode.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new StorageError(StorageErrorCode.CANCELED, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new StorageError(StorageErrorCode.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new StorageError(StorageErrorCode.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction noDefaultBucket() {\r\n return new StorageError(StorageErrorCode.NO_DEFAULT_BUCKET, 'No default bucket ' +\r\n \"found. Did you set the '\" +\r\n CONFIG_STORAGE_BUCKET_KEY +\r\n \"' property when initializing the app?\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new StorageError(StorageErrorCode.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new StorageError(StorageErrorCode.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new StorageError(StorageErrorCode.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\r\n}\r\nfunction missingPolyFill(polyFill) {\r\n return new StorageError(StorageErrorCode.UNSUPPORTED_ENVIRONMENT, `${polyFill} is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.`);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction invalidArgument(message) {\r\n return new StorageError(StorageErrorCode.INVALID_ARGUMENT, message);\r\n}\r\nfunction appDeleted() {\r\n return new StorageError(StorageErrorCode.APP_DELETED, 'The Firebase app was deleted.');\r\n}\r\n/**\r\n * @param name - The name of the operation that was invalid.\r\n *\r\n * @internal\r\n */\r\nfunction invalidRootOperation(name) {\r\n return new StorageError(StorageErrorCode.INVALID_ROOT_OPERATION, \"The operation '\" +\r\n name +\r\n \"' cannot be performed on a root reference, create a non-root \" +\r\n \"reference using child, such as .child('file.png').\");\r\n}\r\n/**\r\n * @param format - The format that was not valid.\r\n * @param message - A message describing the format violation.\r\n */\r\nfunction invalidFormat(format, message) {\r\n return new StorageError(StorageErrorCode.INVALID_FORMAT, \"String does not match format '\" + format + \"': \" + message);\r\n}\r\n/**\r\n * @param message - A message describing the internal error.\r\n */\r\nfunction internalError(message) {\r\n throw new StorageError(StorageErrorCode.INTERNAL_ERROR, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Firebase Storage location data.\r\n *\r\n * @internal\r\n */\r\nclass Location {\r\n constructor(bucket, path) {\r\n this.bucket = bucket;\r\n this.path_ = path;\r\n }\r\n get path() {\r\n return this.path_;\r\n }\r\n get isRoot() {\r\n return this.path.length === 0;\r\n }\r\n fullServerUrl() {\r\n const encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\r\n }\r\n bucketOnlyServerUrl() {\r\n const encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o';\r\n }\r\n static makeFromBucketSpec(bucketString, host) {\r\n let bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString, host);\r\n }\r\n catch (e) {\r\n // Not valid URL, use as-is. This lets you put bare bucket names in\r\n // config.\r\n return new Location(bucketString, '');\r\n }\r\n if (bucketLocation.path === '') {\r\n return bucketLocation;\r\n }\r\n else {\r\n throw invalidDefaultBucket(bucketString);\r\n }\r\n }\r\n static makeFromUrl(url, host) {\r\n let location = null;\r\n const bucketDomain = '([A-Za-z0-9.\\\\-_]+)';\r\n function gsModify(loc) {\r\n if (loc.path.charAt(loc.path.length - 1) === '/') {\r\n loc.path_ = loc.path_.slice(0, -1);\r\n }\r\n }\r\n const gsPath = '(/(.*))?$';\r\n const gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\r\n const gsIndices = { bucket: 1, path: 3 };\r\n function httpModify(loc) {\r\n loc.path_ = decodeURIComponent(loc.path);\r\n }\r\n const version = 'v[A-Za-z0-9_]+';\r\n const firebaseStorageHost = host.replace(/[.]/g, '\\\\.');\r\n const firebaseStoragePath = '(/([^?#]*).*)?$';\r\n const firebaseStorageRegExp = new RegExp(`^https?://${firebaseStorageHost}/${version}/b/${bucketDomain}/o${firebaseStoragePath}`, 'i');\r\n const firebaseStorageIndices = { bucket: 1, path: 3 };\r\n const cloudStorageHost = host === DEFAULT_HOST\r\n ? '(?:storage.googleapis.com|storage.cloud.google.com)'\r\n : host;\r\n const cloudStoragePath = '([^?#]*)';\r\n const cloudStorageRegExp = new RegExp(`^https?://${cloudStorageHost}/${bucketDomain}/${cloudStoragePath}`, 'i');\r\n const cloudStorageIndices = { bucket: 1, path: 2 };\r\n const groups = [\r\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\r\n {\r\n regex: firebaseStorageRegExp,\r\n indices: firebaseStorageIndices,\r\n postModify: httpModify\r\n },\r\n {\r\n regex: cloudStorageRegExp,\r\n indices: cloudStorageIndices,\r\n postModify: httpModify\r\n }\r\n ];\r\n for (let i = 0; i < groups.length; i++) {\r\n const group = groups[i];\r\n const captures = group.regex.exec(url);\r\n if (captures) {\r\n const bucketValue = captures[group.indices.bucket];\r\n let pathValue = captures[group.indices.path];\r\n if (!pathValue) {\r\n pathValue = '';\r\n }\r\n location = new Location(bucketValue, pathValue);\r\n group.postModify(location);\r\n break;\r\n }\r\n }\r\n if (location == null) {\r\n throw invalidUrl(url);\r\n }\r\n return location;\r\n }\r\n}\n\n/**\r\n * A request whose promise always fails.\r\n */\r\nclass FailRequest {\r\n constructor(error) {\r\n this.promise_ = Promise.reject(error);\r\n }\r\n /** @inheritDoc */\r\n getPromise() {\r\n return this.promise_;\r\n }\r\n /** @inheritDoc */\r\n cancel(_appDelete = false) { }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Accepts a callback for an action to perform (`doRequest`),\r\n * and then a callback for when the backoff has completed (`backoffCompleteCb`).\r\n * The callback sent to start requires an argument to call (`onRequestComplete`).\r\n * When `start` calls `doRequest`, it passes a callback for when the request has\r\n * completed, `onRequestComplete`. Based on this, the backoff continues, with\r\n * another call to `doRequest` and the above loop continues until the timeout\r\n * is hit, or a successful response occurs.\r\n * @description\r\n * @param doRequest Callback to perform request\r\n * @param backoffCompleteCb Callback to call when backoff has been completed\r\n */\r\nfunction start(doRequest, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nbackoffCompleteCb, timeout) {\r\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\r\n // type instead of a bunch of functions with state shared in the closure)\r\n let waitSeconds = 1;\r\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\r\n // TODO: find a way to exclude Node type definition for storage because storage only works in browser\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let retryTimeoutId = null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let globalTimeoutId = null;\r\n let hitTimeout = false;\r\n let cancelState = 0;\r\n function canceled() {\r\n return cancelState === 2;\r\n }\r\n let triggeredCallback = false;\r\n function triggerCallback(...args) {\r\n if (!triggeredCallback) {\r\n triggeredCallback = true;\r\n backoffCompleteCb.apply(null, args);\r\n }\r\n }\r\n function callWithDelay(millis) {\r\n retryTimeoutId = setTimeout(() => {\r\n retryTimeoutId = null;\r\n doRequest(responseHandler, canceled());\r\n }, millis);\r\n }\r\n function clearGlobalTimeout() {\r\n if (globalTimeoutId) {\r\n clearTimeout(globalTimeoutId);\r\n }\r\n }\r\n function responseHandler(success, ...args) {\r\n if (triggeredCallback) {\r\n clearGlobalTimeout();\r\n return;\r\n }\r\n if (success) {\r\n clearGlobalTimeout();\r\n triggerCallback.call(null, success, ...args);\r\n return;\r\n }\r\n const mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n clearGlobalTimeout();\r\n triggerCallback.call(null, success, ...args);\r\n return;\r\n }\r\n if (waitSeconds < 64) {\r\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\r\n waitSeconds *= 2;\r\n }\r\n let waitMillis;\r\n if (cancelState === 1) {\r\n cancelState = 2;\r\n waitMillis = 0;\r\n }\r\n else {\r\n waitMillis = (waitSeconds + Math.random()) * 1000;\r\n }\r\n callWithDelay(waitMillis);\r\n }\r\n let stopped = false;\r\n function stop(wasTimeout) {\r\n if (stopped) {\r\n return;\r\n }\r\n stopped = true;\r\n clearGlobalTimeout();\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (retryTimeoutId !== null) {\r\n if (!wasTimeout) {\r\n cancelState = 2;\r\n }\r\n clearTimeout(retryTimeoutId);\r\n callWithDelay(0);\r\n }\r\n else {\r\n if (!wasTimeout) {\r\n cancelState = 1;\r\n }\r\n }\r\n }\r\n callWithDelay(0);\r\n globalTimeoutId = setTimeout(() => {\r\n hitTimeout = true;\r\n stop(true);\r\n }, timeout);\r\n return stop;\r\n}\r\n/**\r\n * Stops the retry loop from repeating.\r\n * If the function is currently \"in between\" retries, it is invoked immediately\r\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\r\n * after the current invocation finishes iff the current invocation would have\r\n * triggered another retry.\r\n */\r\nfunction stop(id) {\r\n id(false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isNonArrayObject(p) {\r\n return typeof p === 'object' && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isNativeBlob(p) {\r\n return isNativeBlobDefined() && p instanceof Blob;\r\n}\r\nfunction isNativeBlobDefined() {\r\n // Note: The `isNode()` check can be removed when `node-fetch` adds native Blob support\r\n // PR: https://github.com/node-fetch/node-fetch/pull/1664\r\n return typeof Blob !== 'undefined' && !isNode();\r\n}\r\nfunction validateNumber(argument, minValue, maxValue, value) {\r\n if (value < minValue) {\r\n throw invalidArgument(`Invalid value for '${argument}'. Expected ${minValue} or greater.`);\r\n }\r\n if (value > maxValue) {\r\n throw invalidArgument(`Invalid value for '${argument}'. Expected ${maxValue} or less.`);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction makeUrl(urlPart, host, protocol) {\r\n let origin = host;\r\n if (protocol == null) {\r\n origin = `https://${host}`;\r\n }\r\n return `${protocol}://${origin}/v0${urlPart}`;\r\n}\r\nfunction makeQueryString(params) {\r\n const encode = encodeURIComponent;\r\n let queryPart = '?';\r\n for (const key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n const nextPart = encode(key) + '=' + encode(params[key]);\r\n queryPart = queryPart + nextPart + '&';\r\n }\r\n }\r\n // Chop off the extra '&' or '?' on the end\r\n queryPart = queryPart.slice(0, -1);\r\n return queryPart;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Error codes for requests made by the the XhrIo wrapper.\r\n */\r\nvar ErrorCode;\r\n(function (ErrorCode) {\r\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\r\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\r\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\r\n})(ErrorCode || (ErrorCode = {}));\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks the status code to see if the action should be retried.\r\n *\r\n * @param status Current HTTP status code returned by server.\r\n * @param additionalRetryCodes additional retry codes to check against\r\n */\r\nfunction isRetryStatusCode(status, additionalRetryCodes) {\r\n // The codes for which to retry came from this page:\r\n // https://cloud.google.com/storage/docs/exponential-backoff\r\n const isFiveHundredCode = status >= 500 && status < 600;\r\n const extraRetryCodes = [\r\n // Request Timeout: web server didn't receive full request in time.\r\n 408,\r\n // Too Many Requests: you're getting rate-limited, basically.\r\n 429\r\n ];\r\n const isExtraRetryCode = extraRetryCodes.indexOf(status) !== -1;\r\n const isAdditionalRetryCode = additionalRetryCodes.indexOf(status) !== -1;\r\n return isFiveHundredCode || isExtraRetryCode || isAdditionalRetryCode;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Handles network logic for all Storage Requests, including error reporting and\r\n * retries with backoff.\r\n *\r\n * @param I - the type of the backend's network response.\r\n * @param - O the output type used by the rest of the SDK. The conversion\r\n * happens in the specified `callback_`.\r\n */\r\nclass NetworkRequest {\r\n constructor(url_, method_, headers_, body_, successCodes_, additionalRetryCodes_, callback_, errorCallback_, timeout_, progressCallback_, connectionFactory_, retry = true) {\r\n this.url_ = url_;\r\n this.method_ = method_;\r\n this.headers_ = headers_;\r\n this.body_ = body_;\r\n this.successCodes_ = successCodes_;\r\n this.additionalRetryCodes_ = additionalRetryCodes_;\r\n this.callback_ = callback_;\r\n this.errorCallback_ = errorCallback_;\r\n this.timeout_ = timeout_;\r\n this.progressCallback_ = progressCallback_;\r\n this.connectionFactory_ = connectionFactory_;\r\n this.retry = retry;\r\n this.pendingConnection_ = null;\r\n this.backoffId_ = null;\r\n this.canceled_ = false;\r\n this.appDelete_ = false;\r\n this.promise_ = new Promise((resolve, reject) => {\r\n this.resolve_ = resolve;\r\n this.reject_ = reject;\r\n this.start_();\r\n });\r\n }\r\n /**\r\n * Actually starts the retry loop.\r\n */\r\n start_() {\r\n const doTheRequest = (backoffCallback, canceled) => {\r\n if (canceled) {\r\n backoffCallback(false, new RequestEndStatus(false, null, true));\r\n return;\r\n }\r\n const connection = this.connectionFactory_();\r\n this.pendingConnection_ = connection;\r\n const progressListener = progressEvent => {\r\n const loaded = progressEvent.loaded;\r\n const total = progressEvent.lengthComputable ? progressEvent.total : -1;\r\n if (this.progressCallback_ !== null) {\r\n this.progressCallback_(loaded, total);\r\n }\r\n };\r\n if (this.progressCallback_ !== null) {\r\n connection.addUploadProgressListener(progressListener);\r\n }\r\n // connection.send() never rejects, so we don't need to have a error handler or use catch on the returned promise.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n connection\r\n .send(this.url_, this.method_, this.body_, this.headers_)\r\n .then(() => {\r\n if (this.progressCallback_ !== null) {\r\n connection.removeUploadProgressListener(progressListener);\r\n }\r\n this.pendingConnection_ = null;\r\n const hitServer = connection.getErrorCode() === ErrorCode.NO_ERROR;\r\n const status = connection.getStatus();\r\n if (!hitServer ||\r\n (isRetryStatusCode(status, this.additionalRetryCodes_) &&\r\n this.retry)) {\r\n const wasCanceled = connection.getErrorCode() === ErrorCode.ABORT;\r\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\r\n return;\r\n }\r\n const successCode = this.successCodes_.indexOf(status) !== -1;\r\n backoffCallback(true, new RequestEndStatus(successCode, connection));\r\n });\r\n };\r\n /**\r\n * @param requestWentThrough - True if the request eventually went\r\n * through, false if it hit the retry limit or was canceled.\r\n */\r\n const backoffDone = (requestWentThrough, status) => {\r\n const resolve = this.resolve_;\r\n const reject = this.reject_;\r\n const connection = status.connection;\r\n if (status.wasSuccessCode) {\r\n try {\r\n const result = this.callback_(connection, connection.getResponse());\r\n if (isJustDef(result)) {\r\n resolve(result);\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }\r\n else {\r\n if (connection !== null) {\r\n const err = unknown();\r\n err.serverResponse = connection.getErrorText();\r\n if (this.errorCallback_) {\r\n reject(this.errorCallback_(connection, err));\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n else {\r\n if (status.canceled) {\r\n const err = this.appDelete_ ? appDeleted() : canceled();\r\n reject(err);\r\n }\r\n else {\r\n const err = retryLimitExceeded();\r\n reject(err);\r\n }\r\n }\r\n }\r\n };\r\n if (this.canceled_) {\r\n backoffDone(false, new RequestEndStatus(false, null, true));\r\n }\r\n else {\r\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\r\n }\r\n }\r\n /** @inheritDoc */\r\n getPromise() {\r\n return this.promise_;\r\n }\r\n /** @inheritDoc */\r\n cancel(appDelete) {\r\n this.canceled_ = true;\r\n this.appDelete_ = appDelete || false;\r\n if (this.backoffId_ !== null) {\r\n stop(this.backoffId_);\r\n }\r\n if (this.pendingConnection_ !== null) {\r\n this.pendingConnection_.abort();\r\n }\r\n }\r\n}\r\n/**\r\n * A collection of information about the result of a network request.\r\n * @param opt_canceled - Defaults to false.\r\n */\r\nclass RequestEndStatus {\r\n constructor(wasSuccessCode, connection, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.connection = connection;\r\n this.canceled = !!canceled;\r\n }\r\n}\r\nfunction addAuthHeader_(headers, authToken) {\r\n if (authToken !== null && authToken.length > 0) {\r\n headers['Authorization'] = 'Firebase ' + authToken;\r\n }\r\n}\r\nfunction addVersionHeader_(headers, firebaseVersion) {\r\n headers['X-Firebase-Storage-Version'] =\r\n 'webjs/' + (firebaseVersion !== null && firebaseVersion !== void 0 ? firebaseVersion : 'AppManager');\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\nfunction addAppCheckHeader_(headers, appCheckToken) {\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n}\r\nfunction makeRequest(requestInfo, appId, authToken, appCheckToken, requestFactory, firebaseVersion, retry = true) {\r\n const queryPart = makeQueryString(requestInfo.urlParams);\r\n const url = requestInfo.url + queryPart;\r\n const headers = Object.assign({}, requestInfo.headers);\r\n addGmpidHeader_(headers, appId);\r\n addAuthHeader_(headers, authToken);\r\n addVersionHeader_(headers, firebaseVersion);\r\n addAppCheckHeader_(headers, appCheckToken);\r\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, requestFactory, retry);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getBlobBuilder() {\r\n if (typeof BlobBuilder !== 'undefined') {\r\n return BlobBuilder;\r\n }\r\n else if (typeof WebKitBlobBuilder !== 'undefined') {\r\n return WebKitBlobBuilder;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Concatenates one or more values together and converts them to a Blob.\r\n *\r\n * @param args The values that will make up the resulting blob.\r\n * @return The blob.\r\n */\r\nfunction getBlob$1(...args) {\r\n const BlobBuilder = getBlobBuilder();\r\n if (BlobBuilder !== undefined) {\r\n const bb = new BlobBuilder();\r\n for (let i = 0; i < args.length; i++) {\r\n bb.append(args[i]);\r\n }\r\n return bb.getBlob();\r\n }\r\n else {\r\n if (isNativeBlobDefined()) {\r\n return new Blob(args);\r\n }\r\n else {\r\n throw new StorageError(StorageErrorCode.UNSUPPORTED_ENVIRONMENT, \"This browser doesn't seem to support creating Blobs\");\r\n }\r\n }\r\n}\r\n/**\r\n * Slices the blob. The returned blob contains data from the start byte\r\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\r\n *\r\n * @param blob The blob to be sliced.\r\n * @param start Index of the starting byte.\r\n * @param end Index of the ending byte.\r\n * @return The blob slice or null if not supported.\r\n */\r\nfunction sliceBlob(blob, start, end) {\r\n if (blob.webkitSlice) {\r\n return blob.webkitSlice(start, end);\r\n }\r\n else if (blob.mozSlice) {\r\n return blob.mozSlice(start, end);\r\n }\r\n else if (blob.slice) {\r\n return blob.slice(start, end);\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Converts a Base64 encoded string to a binary string. */\r\nfunction decodeBase64(encoded) {\r\n if (typeof atob === 'undefined') {\r\n throw missingPolyFill('base-64');\r\n }\r\n return atob(encoded);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An enumeration of the possible string formats for upload.\r\n * @public\r\n */\r\nconst StringFormat = {\r\n /**\r\n * Indicates the string should be interpreted \"raw\", that is, as normal text.\r\n * The string will be interpreted as UTF-16, then uploaded as a UTF-8 byte\r\n * sequence.\r\n * Example: The string 'Hello! \\\\ud83d\\\\ude0a' becomes the byte sequence\r\n * 48 65 6c 6c 6f 21 20 f0 9f 98 8a\r\n */\r\n RAW: 'raw',\r\n /**\r\n * Indicates the string should be interpreted as base64-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO++E6t7/rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64: 'base64',\r\n /**\r\n * Indicates the string should be interpreted as base64url-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO--E6t7_rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64URL: 'base64url',\r\n /**\r\n * Indicates the string is a data URL, such as one obtained from\r\n * canvas.toDataURL().\r\n * Example: the string 'data:application/octet-stream;base64,aaaa'\r\n * becomes the byte sequence\r\n * 69 a6 9a\r\n * (the content-type \"application/octet-stream\" is also applied, but can\r\n * be overridden in the metadata object).\r\n */\r\n DATA_URL: 'data_url'\r\n};\r\nclass StringData {\r\n constructor(data, contentType) {\r\n this.data = data;\r\n this.contentType = contentType || null;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction dataFromString(format, stringData) {\r\n switch (format) {\r\n case StringFormat.RAW:\r\n return new StringData(utf8Bytes_(stringData));\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n return new StringData(base64Bytes_(format, stringData));\r\n case StringFormat.DATA_URL:\r\n return new StringData(dataURLBytes_(stringData), dataURLContentType_(stringData));\r\n // do nothing\r\n }\r\n // assert(false);\r\n throw unknown();\r\n}\r\nfunction utf8Bytes_(value) {\r\n const b = [];\r\n for (let i = 0; i < value.length; i++) {\r\n let c = value.charCodeAt(i);\r\n if (c <= 127) {\r\n b.push(c);\r\n }\r\n else {\r\n if (c <= 2047) {\r\n b.push(192 | (c >> 6), 128 | (c & 63));\r\n }\r\n else {\r\n if ((c & 64512) === 55296) {\r\n // The start of a surrogate pair.\r\n const valid = i < value.length - 1 && (value.charCodeAt(i + 1) & 64512) === 56320;\r\n if (!valid) {\r\n // The second surrogate wasn't there.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n const hi = c;\r\n const lo = value.charCodeAt(++i);\r\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\r\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n else {\r\n if ((c & 64512) === 56320) {\r\n // Invalid low surrogate.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return new Uint8Array(b);\r\n}\r\nfunction percentEncodedBytes_(value) {\r\n let decoded;\r\n try {\r\n decoded = decodeURIComponent(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\r\n }\r\n return utf8Bytes_(decoded);\r\n}\r\nfunction base64Bytes_(format, value) {\r\n switch (format) {\r\n case StringFormat.BASE64: {\r\n const hasMinus = value.indexOf('-') !== -1;\r\n const hasUnder = value.indexOf('_') !== -1;\r\n if (hasMinus || hasUnder) {\r\n const invalidChar = hasMinus ? '-' : '_';\r\n throw invalidFormat(format, \"Invalid character '\" +\r\n invalidChar +\r\n \"' found: is it base64url encoded?\");\r\n }\r\n break;\r\n }\r\n case StringFormat.BASE64URL: {\r\n const hasPlus = value.indexOf('+') !== -1;\r\n const hasSlash = value.indexOf('/') !== -1;\r\n if (hasPlus || hasSlash) {\r\n const invalidChar = hasPlus ? '+' : '/';\r\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\r\n }\r\n value = value.replace(/-/g, '+').replace(/_/g, '/');\r\n break;\r\n }\r\n // do nothing\r\n }\r\n let bytes;\r\n try {\r\n bytes = decodeBase64(value);\r\n }\r\n catch (e) {\r\n if (e.message.includes('polyfill')) {\r\n throw e;\r\n }\r\n throw invalidFormat(format, 'Invalid character found');\r\n }\r\n const array = new Uint8Array(bytes.length);\r\n for (let i = 0; i < bytes.length; i++) {\r\n array[i] = bytes.charCodeAt(i);\r\n }\r\n return array;\r\n}\r\nclass DataURLParts {\r\n constructor(dataURL) {\r\n this.base64 = false;\r\n this.contentType = null;\r\n const matches = dataURL.match(/^data:([^,]+)?,/);\r\n if (matches === null) {\r\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[<mediatype>][;base64],<data>\");\r\n }\r\n const middle = matches[1] || null;\r\n if (middle != null) {\r\n this.base64 = endsWith(middle, ';base64');\r\n this.contentType = this.base64\r\n ? middle.substring(0, middle.length - ';base64'.length)\r\n : middle;\r\n }\r\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\r\n }\r\n}\r\nfunction dataURLBytes_(dataUrl) {\r\n const parts = new DataURLParts(dataUrl);\r\n if (parts.base64) {\r\n return base64Bytes_(StringFormat.BASE64, parts.rest);\r\n }\r\n else {\r\n return percentEncodedBytes_(parts.rest);\r\n }\r\n}\r\nfunction dataURLContentType_(dataUrl) {\r\n const parts = new DataURLParts(dataUrl);\r\n return parts.contentType;\r\n}\r\nfunction endsWith(s, end) {\r\n const longEnough = s.length >= end.length;\r\n if (!longEnough) {\r\n return false;\r\n }\r\n return s.substring(s.length - end.length) === end;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param opt_elideCopy - If true, doesn't copy mutable input data\r\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\r\n * modified after this blob's construction.\r\n *\r\n * @internal\r\n */\r\nclass FbsBlob {\r\n constructor(data, elideCopy) {\r\n let size = 0;\r\n let blobType = '';\r\n if (isNativeBlob(data)) {\r\n this.data_ = data;\r\n size = data.size;\r\n blobType = data.type;\r\n }\r\n else if (data instanceof ArrayBuffer) {\r\n if (elideCopy) {\r\n this.data_ = new Uint8Array(data);\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.byteLength);\r\n this.data_.set(new Uint8Array(data));\r\n }\r\n size = this.data_.length;\r\n }\r\n else if (data instanceof Uint8Array) {\r\n if (elideCopy) {\r\n this.data_ = data;\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.length);\r\n this.data_.set(data);\r\n }\r\n size = data.length;\r\n }\r\n this.size_ = size;\r\n this.type_ = blobType;\r\n }\r\n size() {\r\n return this.size_;\r\n }\r\n type() {\r\n return this.type_;\r\n }\r\n slice(startByte, endByte) {\r\n if (isNativeBlob(this.data_)) {\r\n const realBlob = this.data_;\r\n const sliced = sliceBlob(realBlob, startByte, endByte);\r\n if (sliced === null) {\r\n return null;\r\n }\r\n return new FbsBlob(sliced);\r\n }\r\n else {\r\n const slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\r\n return new FbsBlob(slice, true);\r\n }\r\n }\r\n static getBlob(...args) {\r\n if (isNativeBlobDefined()) {\r\n const blobby = args.map((val) => {\r\n if (val instanceof FbsBlob) {\r\n return val.data_;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n return new FbsBlob(getBlob$1.apply(null, blobby));\r\n }\r\n else {\r\n const uint8Arrays = args.map((val) => {\r\n if (isString(val)) {\r\n return dataFromString(StringFormat.RAW, val).data;\r\n }\r\n else {\r\n // Blobs don't exist, so this has to be a Uint8Array.\r\n return val.data_;\r\n }\r\n });\r\n let finalLength = 0;\r\n uint8Arrays.forEach((array) => {\r\n finalLength += array.byteLength;\r\n });\r\n const merged = new Uint8Array(finalLength);\r\n let index = 0;\r\n uint8Arrays.forEach((array) => {\r\n for (let i = 0; i < array.length; i++) {\r\n merged[index++] = array[i];\r\n }\r\n });\r\n return new FbsBlob(merged, true);\r\n }\r\n }\r\n uploadData() {\r\n return this.data_;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the Object resulting from parsing the given JSON, or null if the\r\n * given string does not represent a JSON object.\r\n */\r\nfunction jsonObjectOrNull(s) {\r\n let obj;\r\n try {\r\n obj = JSON.parse(s);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n if (isNonArrayObject(obj)) {\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Contains helper methods for manipulating paths.\r\n */\r\n/**\r\n * @return Null if the path is already at the root.\r\n */\r\nfunction parent(path) {\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n const index = path.lastIndexOf('/');\r\n if (index === -1) {\r\n return '';\r\n }\r\n const newPath = path.slice(0, index);\r\n return newPath;\r\n}\r\nfunction child(path, childPath) {\r\n const canonicalChildPath = childPath\r\n .split('/')\r\n .filter(component => component.length > 0)\r\n .join('/');\r\n if (path.length === 0) {\r\n return canonicalChildPath;\r\n }\r\n else {\r\n return path + '/' + canonicalChildPath;\r\n }\r\n}\r\n/**\r\n * Returns the last component of a path.\r\n * '/foo/bar' -> 'bar'\r\n * '/foo/bar/baz/' -> 'baz/'\r\n * '/a' -> 'a'\r\n */\r\nfunction lastComponent(path) {\r\n const index = path.lastIndexOf('/', path.length - 2);\r\n if (index === -1) {\r\n return path;\r\n }\r\n else {\r\n return path.slice(index + 1);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction noXform_(metadata, value) {\r\n return value;\r\n}\r\nclass Mapping {\r\n constructor(server, local, writable, xform) {\r\n this.server = server;\r\n this.local = local || server;\r\n this.writable = !!writable;\r\n this.xform = xform || noXform_;\r\n }\r\n}\r\nlet mappings_ = null;\r\nfunction xformPath(fullPath) {\r\n if (!isString(fullPath) || fullPath.length < 2) {\r\n return fullPath;\r\n }\r\n else {\r\n return lastComponent(fullPath);\r\n }\r\n}\r\nfunction getMappings() {\r\n if (mappings_) {\r\n return mappings_;\r\n }\r\n const mappings = [];\r\n mappings.push(new Mapping('bucket'));\r\n mappings.push(new Mapping('generation'));\r\n mappings.push(new Mapping('metageneration'));\r\n mappings.push(new Mapping('name', 'fullPath', true));\r\n function mappingsXformPath(_metadata, fullPath) {\r\n return xformPath(fullPath);\r\n }\r\n const nameMapping = new Mapping('name');\r\n nameMapping.xform = mappingsXformPath;\r\n mappings.push(nameMapping);\r\n /**\r\n * Coerces the second param to a number, if it is defined.\r\n */\r\n function xformSize(_metadata, size) {\r\n if (size !== undefined) {\r\n return Number(size);\r\n }\r\n else {\r\n return size;\r\n }\r\n }\r\n const sizeMapping = new Mapping('size');\r\n sizeMapping.xform = xformSize;\r\n mappings.push(sizeMapping);\r\n mappings.push(new Mapping('timeCreated'));\r\n mappings.push(new Mapping('updated'));\r\n mappings.push(new Mapping('md5Hash', null, true));\r\n mappings.push(new Mapping('cacheControl', null, true));\r\n mappings.push(new Mapping('contentDisposition', null, true));\r\n mappings.push(new Mapping('contentEncoding', null, true));\r\n mappings.push(new Mapping('contentLanguage', null, true));\r\n mappings.push(new Mapping('contentType', null, true));\r\n mappings.push(new Mapping('metadata', 'customMetadata', true));\r\n mappings_ = mappings;\r\n return mappings_;\r\n}\r\nfunction addRef(metadata, service) {\r\n function generateRef() {\r\n const bucket = metadata['bucket'];\r\n const path = metadata['fullPath'];\r\n const loc = new Location(bucket, path);\r\n return service._makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(service, resource, mappings) {\r\n const metadata = {};\r\n metadata['type'] = 'file';\r\n const len = mappings.length;\r\n for (let i = 0; i < len; i++) {\r\n const mapping = mappings[i];\r\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\r\n }\r\n addRef(metadata, service);\r\n return metadata;\r\n}\r\nfunction fromResourceString(service, resourceString, mappings) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n const resource = obj;\r\n return fromResource(service, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString, host, protocol) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n if (!isString(obj['downloadTokens'])) {\r\n // This can happen if objects are uploaded through GCS and retrieved\r\n // through list, so we don't want to throw an Error.\r\n return null;\r\n }\r\n const tokens = obj['downloadTokens'];\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n const encode = encodeURIComponent;\r\n const tokensList = tokens.split(',');\r\n const urls = tokensList.map((token) => {\r\n const bucket = metadata['bucket'];\r\n const path = metadata['fullPath'];\r\n const urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\r\n const base = makeUrl(urlPart, host, protocol);\r\n const queryString = makeQueryString({\r\n alt: 'media',\r\n token\r\n });\r\n return base + queryString;\r\n });\r\n return urls[0];\r\n}\r\nfunction toResourceString(metadata, mappings) {\r\n const resource = {};\r\n const len = mappings.length;\r\n for (let i = 0; i < len; i++) {\r\n const mapping = mappings[i];\r\n if (mapping.writable) {\r\n resource[mapping.server] = metadata[mapping.local];\r\n }\r\n }\r\n return JSON.stringify(resource);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PREFIXES_KEY = 'prefixes';\r\nconst ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(service, bucket, resource) {\r\n const listResult = {\r\n prefixes: [],\r\n items: [],\r\n nextPageToken: resource['nextPageToken']\r\n };\r\n if (resource[PREFIXES_KEY]) {\r\n for (const path of resource[PREFIXES_KEY]) {\r\n const pathWithoutTrailingSlash = path.replace(/\\/$/, '');\r\n const reference = service._makeStorageReference(new Location(bucket, pathWithoutTrailingSlash));\r\n listResult.prefixes.push(reference);\r\n }\r\n }\r\n if (resource[ITEMS_KEY]) {\r\n for (const item of resource[ITEMS_KEY]) {\r\n const reference = service._makeStorageReference(new Location(bucket, item['name']));\r\n listResult.items.push(reference);\r\n }\r\n }\r\n return listResult;\r\n}\r\nfunction fromResponseString(service, bucket, resourceString) {\r\n const obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n const resource = obj;\r\n return fromBackendResponse(service, bucket, resource);\r\n}\n\n/**\r\n * Contains a fully specified request.\r\n *\r\n * @param I - the type of the backend's network response.\r\n * @param O - the output response type used by the rest of the SDK.\r\n */\r\nclass RequestInfo {\r\n constructor(url, method, \r\n /**\r\n * Returns the value with which to resolve the request's promise. Only called\r\n * if the request is successful. Throw from this function to reject the\r\n * returned Request's promise with the thrown error.\r\n * Note: The XhrIo passed to this function may be reused after this callback\r\n * returns. Do not keep a reference to it in any way.\r\n */\r\n handler, timeout) {\r\n this.url = url;\r\n this.method = method;\r\n this.handler = handler;\r\n this.timeout = timeout;\r\n this.urlParams = {};\r\n this.headers = {};\r\n this.body = null;\r\n this.errorHandler = null;\r\n /**\r\n * Called with the current number of bytes uploaded and total size (-1 if not\r\n * computable) of the request body (i.e. used to report upload progress).\r\n */\r\n this.progressCallback = null;\r\n this.successCodes = [200];\r\n this.additionalRetryCodes = [];\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws the UNKNOWN StorageError if cndn is false.\r\n */\r\nfunction handlerCheck(cndn) {\r\n if (!cndn) {\r\n throw unknown();\r\n }\r\n}\r\nfunction metadataHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n const metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(service, bucket) {\r\n function handler(xhr, text) {\r\n const listResult = fromResponseString(service, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n const metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text, service.host, service._protocol);\r\n }\r\n return handler;\r\n}\r\nfunction sharedErrorHandler(location) {\r\n function errorHandler(xhr, err) {\r\n let newErr;\r\n if (xhr.getStatus() === 401) {\r\n if (\r\n // This exact message string is the only consistent part of the\r\n // server's error response that identifies it as an App Check error.\r\n xhr.getErrorText().includes('Firebase App Check token is invalid')) {\r\n newErr = unauthorizedApp();\r\n }\r\n else {\r\n newErr = unauthenticated();\r\n }\r\n }\r\n else {\r\n if (xhr.getStatus() === 402) {\r\n newErr = quotaExceeded(location.bucket);\r\n }\r\n else {\r\n if (xhr.getStatus() === 403) {\r\n newErr = unauthorized(location.path);\r\n }\r\n else {\r\n newErr = err;\r\n }\r\n }\r\n }\r\n newErr.status = xhr.getStatus();\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction objectErrorHandler(location) {\r\n const shared = sharedErrorHandler(location);\r\n function errorHandler(xhr, err) {\r\n let newErr = shared(xhr, err);\r\n if (xhr.getStatus() === 404) {\r\n newErr = objectNotFound(location.path);\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata$2(service, location, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list$2(service, location, delimiter, pageToken, maxResults) {\r\n const urlParams = {};\r\n if (location.isRoot) {\r\n urlParams['prefix'] = '';\r\n }\r\n else {\r\n urlParams['prefix'] = location.path + '/';\r\n }\r\n if (delimiter && delimiter.length > 0) {\r\n urlParams['delimiter'] = delimiter;\r\n }\r\n if (pageToken) {\r\n urlParams['pageToken'] = pageToken;\r\n }\r\n if (maxResults) {\r\n urlParams['maxResults'] = maxResults;\r\n }\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, listHandler(service, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getBytes$1(service, location, maxDownloadSizeBytes) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol) + '?alt=media';\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, (_, data) => data, timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n if (maxDownloadSizeBytes !== undefined) {\r\n requestInfo.headers['Range'] = `bytes=0-${maxDownloadSizeBytes}`;\r\n requestInfo.successCodes = [200 /* OK */, 206 /* Partial Content */];\r\n }\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(service, location, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'GET';\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, downloadUrlHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata$2(service, location, metadata, mappings) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'PATCH';\r\n const body = toResourceString(metadata, mappings);\r\n const headers = { 'Content-Type': 'application/json; charset=utf-8' };\r\n const timeout = service.maxOperationRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction deleteObject$2(service, location) {\r\n const urlPart = location.fullServerUrl();\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'DELETE';\r\n const timeout = service.maxOperationRetryTime;\r\n function handler(_xhr, _text) { }\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.successCodes = [200, 204];\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction determineContentType_(metadata, blob) {\r\n return ((metadata && metadata['contentType']) ||\r\n (blob && blob.type()) ||\r\n 'application/octet-stream');\r\n}\r\nfunction metadataForUpload_(location, blob, metadata) {\r\n const metadataClone = Object.assign({}, metadata);\r\n metadataClone['fullPath'] = location.path;\r\n metadataClone['size'] = blob.size();\r\n if (!metadataClone['contentType']) {\r\n metadataClone['contentType'] = determineContentType_(null, blob);\r\n }\r\n return metadataClone;\r\n}\r\n/**\r\n * Prepare RequestInfo for uploads as Content-Type: multipart.\r\n */\r\nfunction multipartUpload(service, location, mappings, blob, metadata) {\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const headers = {\r\n 'X-Goog-Upload-Protocol': 'multipart'\r\n };\r\n function genBoundary() {\r\n let str = '';\r\n for (let i = 0; i < 2; i++) {\r\n str = str + Math.random().toString().slice(2);\r\n }\r\n return str;\r\n }\r\n const boundary = genBoundary();\r\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\r\n const metadata_ = metadataForUpload_(location, blob, metadata);\r\n const metadataString = toResourceString(metadata_, mappings);\r\n const preBlobPart = '--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\r\n metadataString +\r\n '\\r\\n--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: ' +\r\n metadata_['contentType'] +\r\n '\\r\\n\\r\\n';\r\n const postBlobPart = '\\r\\n--' + boundary + '--';\r\n const body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n const urlParams = { name: metadata_['fullPath'] };\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param current The number of bytes that have been uploaded so far.\r\n * @param total The total number of bytes in the upload.\r\n * @param opt_finalized True if the server has finished the upload.\r\n * @param opt_metadata The upload metadata, should\r\n * only be passed if opt_finalized is true.\r\n */\r\nclass ResumableUploadStatus {\r\n constructor(current, total, finalized, metadata) {\r\n this.current = current;\r\n this.total = total;\r\n this.finalized = !!finalized;\r\n this.metadata = metadata || null;\r\n }\r\n}\r\nfunction checkResumeHeader_(xhr, allowed) {\r\n let status = null;\r\n try {\r\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n const allowedStatus = allowed || ['active'];\r\n handlerCheck(!!status && allowedStatus.indexOf(status) !== -1);\r\n return status;\r\n}\r\nfunction createResumableUpload(service, location, mappings, blob, metadata) {\r\n const urlPart = location.bucketOnlyServerUrl();\r\n const metadataForUpload = metadataForUpload_(location, blob, metadata);\r\n const urlParams = { name: metadataForUpload['fullPath'] };\r\n const url = makeUrl(urlPart, service.host, service._protocol);\r\n const method = 'POST';\r\n const headers = {\r\n 'X-Goog-Upload-Protocol': 'resumable',\r\n 'X-Goog-Upload-Command': 'start',\r\n 'X-Goog-Upload-Header-Content-Length': `${blob.size()}`,\r\n 'X-Goog-Upload-Header-Content-Type': metadataForUpload['contentType'],\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n const body = toResourceString(metadataForUpload, mappings);\r\n const timeout = service.maxUploadRetryTime;\r\n function handler(xhr) {\r\n checkResumeHeader_(xhr);\r\n let url;\r\n try {\r\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n handlerCheck(isString(url));\r\n return url;\r\n }\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n */\r\nfunction getResumableUploadStatus(service, location, url, blob) {\r\n const headers = { 'X-Goog-Upload-Command': 'query' };\r\n function handler(xhr) {\r\n const status = checkResumeHeader_(xhr, ['active', 'final']);\r\n let sizeString = null;\r\n try {\r\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n if (!sizeString) {\r\n // null or empty string\r\n handlerCheck(false);\r\n }\r\n const size = Number(sizeString);\r\n handlerCheck(!isNaN(size));\r\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\r\n }\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * Any uploads via the resumable upload API must transfer a number of bytes\r\n * that is a multiple of this number.\r\n */\r\nconst RESUMABLE_UPLOAD_CHUNK_SIZE = 256 * 1024;\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n * @param chunkSize Number of bytes to upload.\r\n * @param status The previous status.\r\n * If not passed or null, we start from the beginning.\r\n * @throws fbs.Error If the upload is already complete, the passed in status\r\n * has a final size inconsistent with the blob, or the blob cannot be sliced\r\n * for upload.\r\n */\r\nfunction continueResumableUpload(location, service, url, blob, chunkSize, mappings, status, progressCallback) {\r\n // TODO(andysoto): standardize on internal asserts\r\n // assert(!(opt_status && opt_status.finalized));\r\n const status_ = new ResumableUploadStatus(0, 0);\r\n if (status) {\r\n status_.current = status.current;\r\n status_.total = status.total;\r\n }\r\n else {\r\n status_.current = 0;\r\n status_.total = blob.size();\r\n }\r\n if (blob.size() !== status_.total) {\r\n throw serverFileWrongSize();\r\n }\r\n const bytesLeft = status_.total - status_.current;\r\n let bytesToUpload = bytesLeft;\r\n if (chunkSize > 0) {\r\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\r\n }\r\n const startByte = status_.current;\r\n const endByte = startByte + bytesToUpload;\r\n let uploadCommand = '';\r\n if (bytesToUpload === 0) {\r\n uploadCommand = 'finalize';\r\n }\r\n else if (bytesLeft === bytesToUpload) {\r\n uploadCommand = 'upload, finalize';\r\n }\r\n else {\r\n uploadCommand = 'upload';\r\n }\r\n const headers = {\r\n 'X-Goog-Upload-Command': uploadCommand,\r\n 'X-Goog-Upload-Offset': `${status_.current}`\r\n };\r\n const body = blob.slice(startByte, endByte);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n function handler(xhr, text) {\r\n // TODO(andysoto): Verify the MD5 of each uploaded range:\r\n // the 'x-range-md5' header comes back with status code 308 responses.\r\n // We'll only be able to bail out though, because you can't re-upload a\r\n // range that you previously uploaded.\r\n const uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\r\n const newCurrent = status_.current + bytesToUpload;\r\n const size = blob.size();\r\n let metadata;\r\n if (uploadStatus === 'final') {\r\n metadata = metadataHandler(service, mappings)(xhr, text);\r\n }\r\n else {\r\n metadata = null;\r\n }\r\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\r\n }\r\n const method = 'POST';\r\n const timeout = service.maxUploadRetryTime;\r\n const requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.progressCallback = progressCallback || null;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An event that is triggered on a task.\r\n * @internal\r\n */\r\nconst TaskEvent = {\r\n /**\r\n * For this event,\r\n * <ul>\r\n * <li>The `next` function is triggered on progress updates and when the\r\n * task is paused/resumed with an `UploadTaskSnapshot` as the first\r\n * argument.</li>\r\n * <li>The `error` function is triggered if the upload is canceled or fails\r\n * for another reason.</li>\r\n * <li>The `complete` function is triggered if the upload completes\r\n * successfully.</li>\r\n * </ul>\r\n */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\n// type keys = keyof TaskState\r\n/**\r\n * Represents the current state of a running upload.\r\n * @internal\r\n */\r\nconst TaskState = {\r\n /** The task is currently transferring data. */\r\n RUNNING: 'running',\r\n /** The task was paused by the user. */\r\n PAUSED: 'paused',\r\n /** The task completed successfully. */\r\n SUCCESS: 'success',\r\n /** The task was canceled. */\r\n CANCELED: 'canceled',\r\n /** The task failed with an error. */\r\n ERROR: 'error'\r\n};\r\nfunction taskStateFromInternalTaskState(state) {\r\n switch (state) {\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n return TaskState.RUNNING;\r\n case \"paused\" /* InternalTaskState.PAUSED */:\r\n return TaskState.PAUSED;\r\n case \"success\" /* InternalTaskState.SUCCESS */:\r\n return TaskState.SUCCESS;\r\n case \"canceled\" /* InternalTaskState.CANCELED */:\r\n return TaskState.CANCELED;\r\n case \"error\" /* InternalTaskState.ERROR */:\r\n return TaskState.ERROR;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n return TaskState.ERROR;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Observer {\r\n constructor(nextOrObserver, error, complete) {\r\n const asFunctions = isFunction(nextOrObserver) || error != null || complete != null;\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error !== null && error !== void 0 ? error : undefined;\r\n this.complete = complete !== null && complete !== void 0 ? complete : undefined;\r\n }\r\n else {\r\n const observer = nextOrObserver;\r\n this.next = observer.next;\r\n this.error = observer.error;\r\n this.complete = observer.complete;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a function that invokes f with its arguments asynchronously as a\r\n * microtask, i.e. as soon as possible after the current script returns back\r\n * into browser code.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(f) {\r\n return (...argsToForward) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.resolve().then(() => f(...argsToForward));\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** An override for the text-based Connection. Used in tests. */\r\nlet textFactoryOverride = null;\r\n/**\r\n * Network layer for browsers. We use this instead of goog.net.XhrIo because\r\n * goog.net.XhrIo is hyuuuuge and doesn't work in React Native on Android.\r\n */\r\nclass XhrConnection {\r\n constructor() {\r\n this.sent_ = false;\r\n this.xhr_ = new XMLHttpRequest();\r\n this.initXhr();\r\n this.errorCode_ = ErrorCode.NO_ERROR;\r\n this.sendPromise_ = new Promise(resolve => {\r\n this.xhr_.addEventListener('abort', () => {\r\n this.errorCode_ = ErrorCode.ABORT;\r\n resolve();\r\n });\r\n this.xhr_.addEventListener('error', () => {\r\n this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve();\r\n });\r\n this.xhr_.addEventListener('load', () => {\r\n resolve();\r\n });\r\n });\r\n }\r\n send(url, method, body, headers) {\r\n if (this.sent_) {\r\n throw internalError('cannot .send() more than once');\r\n }\r\n this.sent_ = true;\r\n this.xhr_.open(method, url, true);\r\n if (headers !== undefined) {\r\n for (const key in headers) {\r\n if (headers.hasOwnProperty(key)) {\r\n this.xhr_.setRequestHeader(key, headers[key].toString());\r\n }\r\n }\r\n }\r\n if (body !== undefined) {\r\n this.xhr_.send(body);\r\n }\r\n else {\r\n this.xhr_.send();\r\n }\r\n return this.sendPromise_;\r\n }\r\n getErrorCode() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorCode() before sending');\r\n }\r\n return this.errorCode_;\r\n }\r\n getStatus() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getStatus() before sending');\r\n }\r\n try {\r\n return this.xhr_.status;\r\n }\r\n catch (e) {\r\n return -1;\r\n }\r\n }\r\n getResponse() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getResponse() before sending');\r\n }\r\n return this.xhr_.response;\r\n }\r\n getErrorText() {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorText() before sending');\r\n }\r\n return this.xhr_.statusText;\r\n }\r\n /** Aborts the request. */\r\n abort() {\r\n this.xhr_.abort();\r\n }\r\n getResponseHeader(header) {\r\n return this.xhr_.getResponseHeader(header);\r\n }\r\n addUploadProgressListener(listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n }\r\n removeUploadProgressListener(listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n }\r\n}\r\nclass XhrTextConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'text';\r\n }\r\n}\r\nfunction newTextConnection() {\r\n return textFactoryOverride ? textFactoryOverride() : new XhrTextConnection();\r\n}\r\nclass XhrBytesConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'arraybuffer';\r\n }\r\n}\r\nfunction newBytesConnection() {\r\n return new XhrBytesConnection();\r\n}\r\nclass XhrBlobConnection extends XhrConnection {\r\n initXhr() {\r\n this.xhr_.responseType = 'blob';\r\n }\r\n}\r\nfunction newBlobConnection() {\r\n return new XhrBlobConnection();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\r\n * upload and manage callbacks for various events.\r\n * @internal\r\n */\r\nclass UploadTask {\r\n /**\r\n * @param ref - The firebaseStorage.Reference object this task came\r\n * from, untyped to avoid cyclic dependencies.\r\n * @param blob - The blob to upload.\r\n */\r\n constructor(ref, blob, metadata = null) {\r\n /**\r\n * Number of bytes transferred so far.\r\n */\r\n this._transferred = 0;\r\n this._needToFetchStatus = false;\r\n this._needToFetchMetadata = false;\r\n this._observers = [];\r\n this._error = undefined;\r\n this._uploadUrl = undefined;\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n this._ref = ref;\r\n this._blob = blob;\r\n this._metadata = metadata;\r\n this._mappings = getMappings();\r\n this._resumable = this._shouldDoResumable(this._blob);\r\n this._state = \"running\" /* InternalTaskState.RUNNING */;\r\n this._errorHandler = error => {\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n if (error._codeEquals(StorageErrorCode.CANCELED)) {\r\n this._needToFetchStatus = true;\r\n this.completeTransitions_();\r\n }\r\n else {\r\n const backoffExpired = this.isExponentialBackoffExpired();\r\n if (isRetryStatusCode(error.status, [])) {\r\n if (backoffExpired) {\r\n error = retryLimitExceeded();\r\n }\r\n else {\r\n this.sleepTime = Math.max(this.sleepTime * 2, DEFAULT_MIN_SLEEP_TIME_MILLIS);\r\n this._needToFetchStatus = true;\r\n this.completeTransitions_();\r\n return;\r\n }\r\n }\r\n this._error = error;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n }\r\n };\r\n this._metadataErrorHandler = error => {\r\n this._request = undefined;\r\n if (error._codeEquals(StorageErrorCode.CANCELED)) {\r\n this.completeTransitions_();\r\n }\r\n else {\r\n this._error = error;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n }\r\n };\r\n this.sleepTime = 0;\r\n this.maxSleepTime = this._ref.storage.maxUploadRetryTime;\r\n this._promise = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n this._start();\r\n });\r\n // Prevent uncaught rejections on the internal promise from bubbling out\r\n // to the top level with a dummy handler.\r\n this._promise.then(null, () => { });\r\n }\r\n isExponentialBackoffExpired() {\r\n return this.sleepTime > this.maxSleepTime;\r\n }\r\n _makeProgressCallback() {\r\n const sizeBefore = this._transferred;\r\n return loaded => this._updateProgress(sizeBefore + loaded);\r\n }\r\n _shouldDoResumable(blob) {\r\n return blob.size() > 256 * 1024;\r\n }\r\n _start() {\r\n if (this._state !== \"running\" /* InternalTaskState.RUNNING */) {\r\n // This can happen if someone pauses us in a resume callback, for example.\r\n return;\r\n }\r\n if (this._request !== undefined) {\r\n return;\r\n }\r\n if (this._resumable) {\r\n if (this._uploadUrl === undefined) {\r\n this._createResumable();\r\n }\r\n else {\r\n if (this._needToFetchStatus) {\r\n this._fetchStatus();\r\n }\r\n else {\r\n if (this._needToFetchMetadata) {\r\n // Happens if we miss the metadata on upload completion.\r\n this._fetchMetadata();\r\n }\r\n else {\r\n this.pendingTimeout = setTimeout(() => {\r\n this.pendingTimeout = undefined;\r\n this._continueUpload();\r\n }, this.sleepTime);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._oneShotUpload();\r\n }\r\n }\r\n _resolveToken(callback) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.all([\r\n this._ref.storage._getAuthToken(),\r\n this._ref.storage._getAppCheckToken()\r\n ]).then(([authToken, appCheckToken]) => {\r\n switch (this._state) {\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n callback(authToken, appCheckToken);\r\n break;\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n this._transition(\"canceled\" /* InternalTaskState.CANCELED */);\r\n break;\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n this._transition(\"paused\" /* InternalTaskState.PAUSED */);\r\n break;\r\n }\r\n });\r\n }\r\n // TODO(andysoto): assert false\r\n _createResumable() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = createResumableUpload(this._ref.storage, this._ref._location, this._mappings, this._blob, this._metadata);\r\n const createRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = createRequest;\r\n createRequest.getPromise().then((url) => {\r\n this._request = undefined;\r\n this._uploadUrl = url;\r\n this._needToFetchStatus = false;\r\n this.completeTransitions_();\r\n }, this._errorHandler);\r\n });\r\n }\r\n _fetchStatus() {\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n const url = this._uploadUrl;\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = getResumableUploadStatus(this._ref.storage, this._ref._location, url, this._blob);\r\n const statusRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = statusRequest;\r\n statusRequest.getPromise().then(status => {\r\n status = status;\r\n this._request = undefined;\r\n this._updateProgress(status.current);\r\n this._needToFetchStatus = false;\r\n if (status.finalized) {\r\n this._needToFetchMetadata = true;\r\n }\r\n this.completeTransitions_();\r\n }, this._errorHandler);\r\n });\r\n }\r\n _continueUpload() {\r\n const chunkSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n const status = new ResumableUploadStatus(this._transferred, this._blob.size());\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n const url = this._uploadUrl;\r\n this._resolveToken((authToken, appCheckToken) => {\r\n let requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(this._ref._location, this._ref.storage, url, this._blob, chunkSize, this._mappings, status, this._makeProgressCallback());\r\n }\r\n catch (e) {\r\n this._error = e;\r\n this._transition(\"error\" /* InternalTaskState.ERROR */);\r\n return;\r\n }\r\n const uploadRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken, \r\n /*retry=*/ false // Upload requests should not be retried as each retry should be preceded by another query request. Which is handled in this file.\r\n );\r\n this._request = uploadRequest;\r\n uploadRequest.getPromise().then((newStatus) => {\r\n this._increaseMultiplier();\r\n this._request = undefined;\r\n this._updateProgress(newStatus.current);\r\n if (newStatus.finalized) {\r\n this._metadata = newStatus.metadata;\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }\r\n else {\r\n this.completeTransitions_();\r\n }\r\n }, this._errorHandler);\r\n });\r\n }\r\n _increaseMultiplier() {\r\n const currentSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n // Max chunk size is 32M.\r\n if (currentSize * 2 < 32 * 1024 * 1024) {\r\n this._chunkMultiplier *= 2;\r\n }\r\n }\r\n _fetchMetadata() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = getMetadata$2(this._ref.storage, this._ref._location, this._mappings);\r\n const metadataRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = metadataRequest;\r\n metadataRequest.getPromise().then(metadata => {\r\n this._request = undefined;\r\n this._metadata = metadata;\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }, this._metadataErrorHandler);\r\n });\r\n }\r\n _oneShotUpload() {\r\n this._resolveToken((authToken, appCheckToken) => {\r\n const requestInfo = multipartUpload(this._ref.storage, this._ref._location, this._mappings, this._blob, this._metadata);\r\n const multipartRequest = this._ref.storage._makeRequest(requestInfo, newTextConnection, authToken, appCheckToken);\r\n this._request = multipartRequest;\r\n multipartRequest.getPromise().then(metadata => {\r\n this._request = undefined;\r\n this._metadata = metadata;\r\n this._updateProgress(this._blob.size());\r\n this._transition(\"success\" /* InternalTaskState.SUCCESS */);\r\n }, this._errorHandler);\r\n });\r\n }\r\n _updateProgress(transferred) {\r\n const old = this._transferred;\r\n this._transferred = transferred;\r\n // A progress update can make the \"transferred\" value smaller (e.g. a\r\n // partial upload not completed by server, after which the \"transferred\"\r\n // value may reset to the value at the beginning of the request).\r\n if (this._transferred !== old) {\r\n this._notifyObservers();\r\n }\r\n }\r\n _transition(state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n switch (state) {\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n else if (this.pendingTimeout) {\r\n clearTimeout(this.pendingTimeout);\r\n this.pendingTimeout = undefined;\r\n this.completeTransitions_();\r\n }\r\n break;\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n const wasPaused = this._state === \"paused\" /* InternalTaskState.PAUSED */;\r\n this._state = state;\r\n if (wasPaused) {\r\n this._notifyObservers();\r\n this._start();\r\n }\r\n break;\r\n case \"paused\" /* InternalTaskState.PAUSED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"canceled\" /* InternalTaskState.CANCELED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._error = canceled();\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"error\" /* InternalTaskState.ERROR */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"success\" /* InternalTaskState.SUCCESS */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n }\r\n }\r\n completeTransitions_() {\r\n switch (this._state) {\r\n case \"pausing\" /* InternalTaskState.PAUSING */:\r\n this._transition(\"paused\" /* InternalTaskState.PAUSED */);\r\n break;\r\n case \"canceling\" /* InternalTaskState.CANCELING */:\r\n this._transition(\"canceled\" /* InternalTaskState.CANCELED */);\r\n break;\r\n case \"running\" /* InternalTaskState.RUNNING */:\r\n this._start();\r\n break;\r\n }\r\n }\r\n /**\r\n * A snapshot of the current task state.\r\n */\r\n get snapshot() {\r\n const externalState = taskStateFromInternalTaskState(this._state);\r\n return {\r\n bytesTransferred: this._transferred,\r\n totalBytes: this._blob.size(),\r\n state: externalState,\r\n metadata: this._metadata,\r\n task: this,\r\n ref: this._ref\r\n };\r\n }\r\n /**\r\n * Adds a callback for an event.\r\n * @param type - The type of event to listen for.\r\n * @param nextOrObserver -\r\n * The `next` function, which gets called for each item in\r\n * the event stream, or an observer object with some or all of these three\r\n * properties (`next`, `error`, `complete`).\r\n * @param error - A function that gets called with a `StorageError`\r\n * if the event stream ends due to an error.\r\n * @param completed - A function that gets called if the\r\n * event stream ends normally.\r\n * @returns\r\n * If only the event argument is passed, returns a function you can use to\r\n * add callbacks (see the examples above). If more than just the event\r\n * argument is passed, returns a function you can call to unregister the\r\n * callbacks.\r\n */\r\n on(type, nextOrObserver, error, completed) {\r\n // Note: `type` isn't being used. Its type is also incorrect. TaskEvent should not be a string.\r\n const observer = new Observer(nextOrObserver || undefined, error || undefined, completed || undefined);\r\n this._addObserver(observer);\r\n return () => {\r\n this._removeObserver(observer);\r\n };\r\n }\r\n /**\r\n * This object behaves like a Promise, and resolves with its snapshot data\r\n * when the upload completes.\r\n * @param onFulfilled - The fulfillment callback. Promise chaining works as normal.\r\n * @param onRejected - The rejection callback.\r\n */\r\n then(onFulfilled, onRejected) {\r\n // These casts are needed so that TypeScript can infer the types of the\r\n // resulting Promise.\r\n return this._promise.then(onFulfilled, onRejected);\r\n }\r\n /**\r\n * Equivalent to calling `then(null, onRejected)`.\r\n */\r\n catch(onRejected) {\r\n return this.then(null, onRejected);\r\n }\r\n /**\r\n * Adds the given observer.\r\n */\r\n _addObserver(observer) {\r\n this._observers.push(observer);\r\n this._notifyObserver(observer);\r\n }\r\n /**\r\n * Removes the given observer.\r\n */\r\n _removeObserver(observer) {\r\n const i = this._observers.indexOf(observer);\r\n if (i !== -1) {\r\n this._observers.splice(i, 1);\r\n }\r\n }\r\n _notifyObservers() {\r\n this._finishPromise();\r\n const observers = this._observers.slice();\r\n observers.forEach(observer => {\r\n this._notifyObserver(observer);\r\n });\r\n }\r\n _finishPromise() {\r\n if (this._resolve !== undefined) {\r\n let triggered = true;\r\n switch (taskStateFromInternalTaskState(this._state)) {\r\n case TaskState.SUCCESS:\r\n async(this._resolve.bind(null, this.snapshot))();\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n const toCall = this._reject;\r\n async(toCall.bind(null, this._error))();\r\n break;\r\n default:\r\n triggered = false;\r\n break;\r\n }\r\n if (triggered) {\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n }\r\n _notifyObserver(observer) {\r\n const externalState = taskStateFromInternalTaskState(this._state);\r\n switch (externalState) {\r\n case TaskState.RUNNING:\r\n case TaskState.PAUSED:\r\n if (observer.next) {\r\n async(observer.next.bind(observer, this.snapshot))();\r\n }\r\n break;\r\n case TaskState.SUCCESS:\r\n if (observer.complete) {\r\n async(observer.complete.bind(observer))();\r\n }\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n break;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n }\r\n }\r\n /**\r\n * Resumes a paused task. Has no effect on a currently running or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n resume() {\r\n const valid = this._state === \"paused\" /* InternalTaskState.PAUSED */ ||\r\n this._state === \"pausing\" /* InternalTaskState.PAUSING */;\r\n if (valid) {\r\n this._transition(\"running\" /* InternalTaskState.RUNNING */);\r\n }\r\n return valid;\r\n }\r\n /**\r\n * Pauses a currently running task. Has no effect on a paused or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n pause() {\r\n const valid = this._state === \"running\" /* InternalTaskState.RUNNING */;\r\n if (valid) {\r\n this._transition(\"pausing\" /* InternalTaskState.PAUSING */);\r\n }\r\n return valid;\r\n }\r\n /**\r\n * Cancels a currently running or paused task. Has no effect on a complete or\r\n * failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n cancel() {\r\n const valid = this._state === \"running\" /* InternalTaskState.RUNNING */ ||\r\n this._state === \"pausing\" /* InternalTaskState.PAUSING */;\r\n if (valid) {\r\n this._transition(\"canceling\" /* InternalTaskState.CANCELING */);\r\n }\r\n return valid;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provides methods to interact with a bucket in the Firebase Storage service.\r\n * @internal\r\n * @param _location - An fbs.location, or the URL at\r\n * which to base this object, in one of the following forms:\r\n * gs://<bucket>/<object-path>\r\n * http[s]://firebasestorage.googleapis.com/\r\n * <api-version>/b/<bucket>/o/<object-path>\r\n * Any query or fragment strings will be ignored in the http[s]\r\n * format. If no value is passed, the storage object will use a URL based on\r\n * the project ID of the base firebase.App instance.\r\n */\r\nclass Reference {\r\n constructor(_service, location) {\r\n this._service = _service;\r\n if (location instanceof Location) {\r\n this._location = location;\r\n }\r\n else {\r\n this._location = Location.makeFromUrl(location, _service.host);\r\n }\r\n }\r\n /**\r\n * Returns the URL for the bucket and path this object references,\r\n * in the form gs://<bucket>/<object-path>\r\n * @override\r\n */\r\n toString() {\r\n return 'gs://' + this._location.bucket + '/' + this._location.path;\r\n }\r\n _newRef(service, location) {\r\n return new Reference(service, location);\r\n }\r\n /**\r\n * A reference to the root of this object's bucket.\r\n */\r\n get root() {\r\n const location = new Location(this._location.bucket, '');\r\n return this._newRef(this._service, location);\r\n }\r\n /**\r\n * The name of the bucket containing this reference's object.\r\n */\r\n get bucket() {\r\n return this._location.bucket;\r\n }\r\n /**\r\n * The full path of this object.\r\n */\r\n get fullPath() {\r\n return this._location.path;\r\n }\r\n /**\r\n * The short name of this object, which is the last component of the full path.\r\n * For example, if fullPath is 'full/path/image.png', name is 'image.png'.\r\n */\r\n get name() {\r\n return lastComponent(this._location.path);\r\n }\r\n /**\r\n * The `StorageService` instance this `StorageReference` is associated with.\r\n */\r\n get storage() {\r\n return this._service;\r\n }\r\n /**\r\n * A `StorageReference` pointing to the parent location of this `StorageReference`, or null if\r\n * this reference is the root.\r\n */\r\n get parent() {\r\n const newPath = parent(this._location.path);\r\n if (newPath === null) {\r\n return null;\r\n }\r\n const location = new Location(this._location.bucket, newPath);\r\n return new Reference(this._service, location);\r\n }\r\n /**\r\n * Utility function to throw an error in methods that do not accept a root reference.\r\n */\r\n _throwIfRoot(name) {\r\n if (this._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n }\r\n}\r\n/**\r\n * Download the bytes at the object's location.\r\n * @returns A Promise containing the downloaded bytes.\r\n */\r\nfunction getBytesInternal(ref, maxDownloadSizeBytes) {\r\n ref._throwIfRoot('getBytes');\r\n const requestInfo = getBytes$1(ref.storage, ref._location, maxDownloadSizeBytes);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newBytesConnection)\r\n .then(bytes => maxDownloadSizeBytes !== undefined\r\n ? // GCS may not honor the Range header for small files\r\n bytes.slice(0, maxDownloadSizeBytes)\r\n : bytes);\r\n}\r\n/**\r\n * Download the bytes at the object's location.\r\n * @returns A Promise containing the downloaded blob.\r\n */\r\nfunction getBlobInternal(ref, maxDownloadSizeBytes) {\r\n ref._throwIfRoot('getBlob');\r\n const requestInfo = getBytes$1(ref.storage, ref._location, maxDownloadSizeBytes);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newBlobConnection)\r\n .then(blob => maxDownloadSizeBytes !== undefined\r\n ? // GCS may not honor the Range header for small files\r\n blob.slice(0, maxDownloadSizeBytes)\r\n : blob);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload is not resumable.\r\n *\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadBytes$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytes');\r\n const requestInfo = multipartUpload(ref.storage, ref._location, getMappings(), new FbsBlob(data, true), metadata);\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newTextConnection)\r\n .then(finalMetadata => {\r\n return {\r\n metadata: finalMetadata,\r\n ref\r\n };\r\n });\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytesResumable');\r\n return new UploadTask(ref, new FbsBlob(data), metadata);\r\n}\r\n/**\r\n * Uploads a string to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - StorageReference where string should be uploaded.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @param metadata - Metadata for the newly uploaded string.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadString$1(ref, value, format = StringFormat.RAW, metadata) {\r\n ref._throwIfRoot('uploadString');\r\n const data = dataFromString(format, value);\r\n const metadataClone = Object.assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return uploadBytes$1(ref, data.data, metadataClone);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - StorageReference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll$1(ref) {\r\n const accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return listAllHelper(ref, accumulator).then(() => accumulator);\r\n}\r\n/**\r\n * Separated from listAll because async functions can't use \"arguments\".\r\n * @param ref\r\n * @param accumulator\r\n * @param pageToken\r\n */\r\nasync function listAllHelper(ref, accumulator, pageToken) {\r\n const opt = {\r\n // maxResults is 1000 by default.\r\n pageToken\r\n };\r\n const nextPage = await list$1(ref, opt);\r\n accumulator.prefixes.push(...nextPage.prefixes);\r\n accumulator.items.push(...nextPage.items);\r\n if (nextPage.nextPageToken != null) {\r\n await listAllHelper(ref, accumulator, nextPage.nextPageToken);\r\n }\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - StorageReference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list$1(ref, options) {\r\n if (options != null) {\r\n if (typeof options.maxResults === 'number') {\r\n validateNumber('options.maxResults', \r\n /* minValue= */ 1, \r\n /* maxValue= */ 1000, options.maxResults);\r\n }\r\n }\r\n const op = options || {};\r\n const requestInfo = list$2(ref.storage, ref._location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - StorageReference to get metadata from.\r\n */\r\nfunction getMetadata$1(ref) {\r\n ref._throwIfRoot('getMetadata');\r\n const requestInfo = getMetadata$2(ref.storage, ref._location, getMappings());\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - StorageReference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves\r\n * with the new metadata for this object.\r\n * See `firebaseStorage.Reference.prototype.getMetadata`\r\n */\r\nfunction updateMetadata$1(ref, metadata) {\r\n ref._throwIfRoot('updateMetadata');\r\n const requestInfo = updateMetadata$2(ref.storage, ref._location, metadata, getMappings());\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL$1(ref) {\r\n ref._throwIfRoot('getDownloadURL');\r\n const requestInfo = getDownloadUrl(ref.storage, ref._location, getMappings());\r\n return ref.storage\r\n .makeRequestWithTokens(requestInfo, newTextConnection)\r\n .then(url => {\r\n if (url === null) {\r\n throw noDownloadURL();\r\n }\r\n return url;\r\n });\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - StorageReference for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject$1(ref) {\r\n ref._throwIfRoot('deleteObject');\r\n const requestInfo = deleteObject$2(ref.storage, ref._location);\r\n return ref.storage.makeRequestWithTokens(requestInfo, newTextConnection);\r\n}\r\n/**\r\n * Returns reference for object obtained by appending `childPath` to `ref`.\r\n *\r\n * @param ref - StorageReference to get child of.\r\n * @param childPath - Child path from provided ref.\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n *\r\n */\r\nfunction _getChild$1(ref, childPath) {\r\n const newPath = child(ref._location.path, childPath);\r\n const location = new Location(ref._location.bucket, newPath);\r\n return new Reference(ref.storage, location);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given url.\r\n */\r\nfunction refFromURL(service, url) {\r\n return new Reference(service, url);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\nfunction refFromPath(ref, path) {\r\n if (ref instanceof FirebaseStorageImpl) {\r\n const service = ref;\r\n if (service._bucket == null) {\r\n throw noDefaultBucket();\r\n }\r\n const reference = new Reference(service, service._bucket);\r\n if (path != null) {\r\n return refFromPath(reference, path);\r\n }\r\n else {\r\n return reference;\r\n }\r\n }\r\n else {\r\n // ref is a Reference\r\n if (path !== undefined) {\r\n return _getChild$1(ref, path);\r\n }\r\n else {\r\n return ref;\r\n }\r\n }\r\n}\r\nfunction ref$1(serviceOrRef, pathOrUrl) {\r\n if (pathOrUrl && isUrl(pathOrUrl)) {\r\n if (serviceOrRef instanceof FirebaseStorageImpl) {\r\n return refFromURL(serviceOrRef, pathOrUrl);\r\n }\r\n else {\r\n throw invalidArgument('To use ref(service, url), the first argument must be a Storage instance.');\r\n }\r\n }\r\n else {\r\n return refFromPath(serviceOrRef, pathOrUrl);\r\n }\r\n}\r\nfunction extractBucket(host, config) {\r\n const bucketString = config === null || config === void 0 ? void 0 : config[CONFIG_STORAGE_BUCKET_KEY];\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n return Location.makeFromBucketSpec(bucketString, host);\r\n}\r\nfunction connectStorageEmulator$1(storage, host, port, options = {}) {\r\n storage.host = `${host}:${port}`;\r\n storage._protocol = 'http';\r\n const { mockUserToken } = options;\r\n if (mockUserToken) {\r\n storage._overrideAuthToken =\r\n typeof mockUserToken === 'string'\r\n ? mockUserToken\r\n : createMockUserToken(mockUserToken, storage.app.options.projectId);\r\n }\r\n}\r\n/**\r\n * A service that provides Firebase Storage Reference instances.\r\n * @param opt_url - gs:// url to a custom Storage Bucket\r\n *\r\n * @internal\r\n */\r\nclass FirebaseStorageImpl {\r\n constructor(\r\n /**\r\n * FirebaseApp associated with this StorageService instance.\r\n */\r\n app, _authProvider, \r\n /**\r\n * @internal\r\n */\r\n _appCheckProvider, \r\n /**\r\n * @internal\r\n */\r\n _url, _firebaseVersion) {\r\n this.app = app;\r\n this._authProvider = _authProvider;\r\n this._appCheckProvider = _appCheckProvider;\r\n this._url = _url;\r\n this._firebaseVersion = _firebaseVersion;\r\n this._bucket = null;\r\n /**\r\n * This string can be in the formats:\r\n * - host\r\n * - host:port\r\n */\r\n this._host = DEFAULT_HOST;\r\n this._protocol = 'https';\r\n this._appId = null;\r\n this._deleted = false;\r\n this._maxOperationRetryTime = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this._maxUploadRetryTime = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this._requests = new Set();\r\n if (_url != null) {\r\n this._bucket = Location.makeFromBucketSpec(_url, this._host);\r\n }\r\n else {\r\n this._bucket = extractBucket(this._host, this.app.options);\r\n }\r\n }\r\n /**\r\n * The host string for this service, in the form of `host` or\r\n * `host:port`.\r\n */\r\n get host() {\r\n return this._host;\r\n }\r\n set host(host) {\r\n this._host = host;\r\n if (this._url != null) {\r\n this._bucket = Location.makeFromBucketSpec(this._url, host);\r\n }\r\n else {\r\n this._bucket = extractBucket(host, this.app.options);\r\n }\r\n }\r\n /**\r\n * The maximum time to retry uploads in milliseconds.\r\n */\r\n get maxUploadRetryTime() {\r\n return this._maxUploadRetryTime;\r\n }\r\n set maxUploadRetryTime(time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxUploadRetryTime = time;\r\n }\r\n /**\r\n * The maximum time to retry operations other than uploads or downloads in\r\n * milliseconds.\r\n */\r\n get maxOperationRetryTime() {\r\n return this._maxOperationRetryTime;\r\n }\r\n set maxOperationRetryTime(time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxOperationRetryTime = time;\r\n }\r\n async _getAuthToken() {\r\n if (this._overrideAuthToken) {\r\n return this._overrideAuthToken;\r\n }\r\n const auth = this._authProvider.getImmediate({ optional: true });\r\n if (auth) {\r\n const tokenData = await auth.getToken();\r\n if (tokenData !== null) {\r\n return tokenData.accessToken;\r\n }\r\n }\r\n return null;\r\n }\r\n async _getAppCheckToken() {\r\n const appCheck = this._appCheckProvider.getImmediate({ optional: true });\r\n if (appCheck) {\r\n const result = await appCheck.getToken();\r\n // TODO: What do we want to do if there is an error getting the token?\r\n // Context: appCheck.getToken() will never throw even if an error happened. In the error case, a dummy token will be\r\n // returned along with an error field describing the error. In general, we shouldn't care about the error condition and just use\r\n // the token (actual or dummy) to send requests.\r\n return result.token;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n */\r\n _delete() {\r\n if (!this._deleted) {\r\n this._deleted = true;\r\n this._requests.forEach(request => request.cancel());\r\n this._requests.clear();\r\n }\r\n return Promise.resolve();\r\n }\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this StorageService\r\n * at the given Location.\r\n */\r\n _makeStorageReference(loc) {\r\n return new Reference(this, loc);\r\n }\r\n /**\r\n * @param requestInfo - HTTP RequestInfo object\r\n * @param authToken - Firebase auth token\r\n */\r\n _makeRequest(requestInfo, requestFactory, authToken, appCheckToken, retry = true) {\r\n if (!this._deleted) {\r\n const request = makeRequest(requestInfo, this._appId, authToken, appCheckToken, requestFactory, this._firebaseVersion, retry);\r\n this._requests.add(request);\r\n // Request removes itself from set when complete.\r\n request.getPromise().then(() => this._requests.delete(request), () => this._requests.delete(request));\r\n return request;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n }\r\n async makeRequestWithTokens(requestInfo, requestFactory) {\r\n const [authToken, appCheckToken] = await Promise.all([\r\n this._getAuthToken(),\r\n this._getAppCheckToken()\r\n ]);\r\n return this._makeRequest(requestInfo, requestFactory, authToken, appCheckToken).getPromise();\r\n }\r\n}\n\nconst name = \"@firebase/storage\";\nconst version = \"0.11.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Storage.\r\n */\r\nconst STORAGE_TYPE = 'storage';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Downloads the data at the object's location. Returns an error if the object\r\n * is not found.\r\n *\r\n * To use this functionality, you have to whitelist your app's origin in your\r\n * Cloud Storage bucket. See also\r\n * https://cloud.google.com/storage/docs/configuring-cors\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A Promise containing the object's bytes\r\n */\r\nfunction getBytes(ref, maxDownloadSizeBytes) {\r\n ref = getModularInstance(ref);\r\n return getBytesInternal(ref, maxDownloadSizeBytes);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - {@link StorageReference} where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadBytes(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytes$1(ref, data, metadata);\r\n}\r\n/**\r\n * Uploads a string to this object's location.\r\n * The upload is not resumable.\r\n * @public\r\n * @param ref - {@link StorageReference} where string should be uploaded.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @param metadata - Metadata for the string to upload.\r\n * @returns A Promise containing an UploadResult\r\n */\r\nfunction uploadString(ref, value, format, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadString$1(ref, value, format, metadata);\r\n}\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - {@link StorageReference} where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytesResumable$1(ref, data, metadata);\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - {@link StorageReference} to get metadata from.\r\n */\r\nfunction getMetadata(ref) {\r\n ref = getModularInstance(ref);\r\n return getMetadata$1(ref);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - {@link StorageReference} to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves with the new metadata for this object.\r\n */\r\nfunction updateMetadata(ref, metadata) {\r\n ref = getModularInstance(ref);\r\n return updateMetadata$1(ref, metadata);\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - {@link StorageReference} to get list from.\r\n * @param options - See {@link ListOptions} for details.\r\n * @returns A `Promise` that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list(ref, options) {\r\n ref = getModularInstance(ref);\r\n return list$1(ref, options);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: `listAll` may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - {@link StorageReference} to get list from.\r\n *\r\n * @returns A `Promise` that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll(ref) {\r\n ref = getModularInstance(ref);\r\n return listAll$1(ref);\r\n}\r\n/**\r\n * Returns the download URL for the given {@link StorageReference}.\r\n * @public\r\n * @param ref - {@link StorageReference} to get the download URL for.\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL(ref) {\r\n ref = getModularInstance(ref);\r\n return getDownloadURL$1(ref);\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - {@link StorageReference} for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject(ref) {\r\n ref = getModularInstance(ref);\r\n return deleteObject$1(ref);\r\n}\r\nfunction ref(serviceOrRef, pathOrUrl) {\r\n serviceOrRef = getModularInstance(serviceOrRef);\r\n return ref$1(serviceOrRef, pathOrUrl);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction _getChild(ref, childPath) {\r\n return _getChild$1(ref, childPath);\r\n}\r\n/**\r\n * Gets a {@link FirebaseStorage} instance for the given Firebase app.\r\n * @public\r\n * @param app - Firebase app to get {@link FirebaseStorage} instance for.\r\n * @param bucketUrl - The gs:// url to your Firebase Storage Bucket.\r\n * If not passed, uses the app's default Storage Bucket.\r\n * @returns A {@link FirebaseStorage} instance.\r\n */\r\nfunction getStorage(app = getApp(), bucketUrl) {\r\n app = getModularInstance(app);\r\n const storageProvider = _getProvider(app, STORAGE_TYPE);\r\n const storageInstance = storageProvider.getImmediate({\r\n identifier: bucketUrl\r\n });\r\n const emulator = getDefaultEmulatorHostnameAndPort('storage');\r\n if (emulator) {\r\n connectStorageEmulator(storageInstance, ...emulator);\r\n }\r\n return storageInstance;\r\n}\r\n/**\r\n * Modify this {@link FirebaseStorage} instance to communicate with the Cloud Storage emulator.\r\n *\r\n * @param storage - The {@link FirebaseStorage} instance\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 5001)\r\n * @param options - Emulator options. `options.mockUserToken` is the mock auth\r\n * token to use for unit testing Security Rules.\r\n * @public\r\n */\r\nfunction connectStorageEmulator(storage, host, port, options = {}) {\r\n connectStorageEmulator$1(storage, host, port, options);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Downloads the data at the object's location. Returns an error if the object\r\n * is not found.\r\n *\r\n * To use this functionality, you have to whitelist your app's origin in your\r\n * Cloud Storage bucket. See also\r\n * https://cloud.google.com/storage/docs/configuring-cors\r\n *\r\n * This API is not available in Node.\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A Promise that resolves with a Blob containing the object's bytes\r\n */\r\nfunction getBlob(ref, maxDownloadSizeBytes) {\r\n ref = getModularInstance(ref);\r\n return getBlobInternal(ref, maxDownloadSizeBytes);\r\n}\r\n/**\r\n * Downloads the data at the object's location. Raises an error event if the\r\n * object is not found.\r\n *\r\n * This API is only available in Node.\r\n *\r\n * @public\r\n * @param ref - StorageReference where data should be downloaded.\r\n * @param maxDownloadSizeBytes - If set, the maximum allowed size in bytes to\r\n * retrieve.\r\n * @returns A stream with the object's data as bytes\r\n */\r\nfunction getStream(ref, maxDownloadSizeBytes) {\r\n throw new Error('getStream() is only supported by NodeJS builds');\r\n}\n\n/**\r\n * Cloud Storage for Firebase\r\n *\r\n * @packageDocumentation\r\n */\r\nfunction factory(container, { instanceIdentifier: url }) {\r\n const app = container.getProvider('app').getImmediate();\r\n const authProvider = container.getProvider('auth-internal');\r\n const appCheckProvider = container.getProvider('app-check-internal');\r\n return new FirebaseStorageImpl(app, authProvider, appCheckProvider, url, SDK_VERSION);\r\n}\r\nfunction registerStorage() {\r\n _registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\r\n //RUNTIME_ENV will be replaced during the compilation to \"node\" for nodejs and an empty string for browser\r\n registerVersion(name, version, '');\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\r\nregisterStorage();\n\nexport { StorageError, StorageErrorCode, StringFormat, FbsBlob as _FbsBlob, Location as _Location, TaskEvent as _TaskEvent, TaskState as _TaskState, UploadTask as _UploadTask, dataFromString as _dataFromString, _getChild, invalidArgument as _invalidArgument, invalidRootOperation as _invalidRootOperation, connectStorageEmulator, deleteObject, getBlob, getBytes, getDownloadURL, getMetadata, getStorage, getStream, list, listAll, ref, updateMetadata, uploadBytes, uploadBytesResumable, uploadString };\n//# sourceMappingURL=index.esm2017.js.map\n","import firebase from '@firebase/app-compat';\nimport { _getChild, uploadBytesResumable, _dataFromString, _UploadTask, _FbsBlob, StringFormat, listAll, list, getMetadata, updateMetadata, getDownloadURL, deleteObject, _invalidRootOperation, _invalidArgument, ref, _Location, connectStorageEmulator, _TaskState, _TaskEvent } from '@firebase/storage';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass UploadTaskSnapshotCompat {\r\n constructor(_delegate, task, ref) {\r\n this._delegate = _delegate;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n get bytesTransferred() {\r\n return this._delegate.bytesTransferred;\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get state() {\r\n return this._delegate.state;\r\n }\r\n get totalBytes() {\r\n return this._delegate.totalBytes;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass UploadTaskCompat {\r\n constructor(_delegate, _ref) {\r\n this._delegate = _delegate;\r\n this._ref = _ref;\r\n this.cancel = this._delegate.cancel.bind(this._delegate);\r\n this.catch = this._delegate.catch.bind(this._delegate);\r\n this.pause = this._delegate.pause.bind(this._delegate);\r\n this.resume = this._delegate.resume.bind(this._delegate);\r\n }\r\n get snapshot() {\r\n return new UploadTaskSnapshotCompat(this._delegate.snapshot, this, this._ref);\r\n }\r\n then(onFulfilled, onRejected) {\r\n return this._delegate.then(snapshot => {\r\n if (onFulfilled) {\r\n return onFulfilled(new UploadTaskSnapshotCompat(snapshot, this, this._ref));\r\n }\r\n }, onRejected);\r\n }\r\n on(type, nextOrObserver, error, completed) {\r\n let wrappedNextOrObserver = undefined;\r\n if (!!nextOrObserver) {\r\n if (typeof nextOrObserver === 'function') {\r\n wrappedNextOrObserver = (taskSnapshot) => nextOrObserver(new UploadTaskSnapshotCompat(taskSnapshot, this, this._ref));\r\n }\r\n else {\r\n wrappedNextOrObserver = {\r\n next: !!nextOrObserver.next\r\n ? (taskSnapshot) => nextOrObserver.next(new UploadTaskSnapshotCompat(taskSnapshot, this, this._ref))\r\n : undefined,\r\n complete: nextOrObserver.complete || undefined,\r\n error: nextOrObserver.error || undefined\r\n };\r\n }\r\n }\r\n return this._delegate.on(type, wrappedNextOrObserver, error || undefined, completed || undefined);\r\n }\r\n}\n\nclass ListResultCompat {\r\n constructor(_delegate, _service) {\r\n this._delegate = _delegate;\r\n this._service = _service;\r\n }\r\n get prefixes() {\r\n return this._delegate.prefixes.map(ref => new ReferenceCompat(ref, this._service));\r\n }\r\n get items() {\r\n return this._delegate.items.map(ref => new ReferenceCompat(ref, this._service));\r\n }\r\n get nextPageToken() {\r\n return this._delegate.nextPageToken || null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ReferenceCompat {\r\n constructor(_delegate, storage) {\r\n this._delegate = _delegate;\r\n this.storage = storage;\r\n }\r\n get name() {\r\n return this._delegate.name;\r\n }\r\n get bucket() {\r\n return this._delegate.bucket;\r\n }\r\n get fullPath() {\r\n return this._delegate.fullPath;\r\n }\r\n toString() {\r\n return this._delegate.toString();\r\n }\r\n /**\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\n child(childPath) {\r\n const reference = _getChild(this._delegate, childPath);\r\n return new ReferenceCompat(reference, this.storage);\r\n }\r\n get root() {\r\n return new ReferenceCompat(this._delegate.root, this.storage);\r\n }\r\n /**\r\n * @returns A reference to the parent of the\r\n * current object, or null if the current object is the root.\r\n */\r\n get parent() {\r\n const reference = this._delegate.parent;\r\n if (reference == null) {\r\n return null;\r\n }\r\n return new ReferenceCompat(reference, this.storage);\r\n }\r\n /**\r\n * Uploads a blob to this object's location.\r\n * @param data - The blob to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n put(data, metadata) {\r\n this._throwIfRoot('put');\r\n return new UploadTaskCompat(uploadBytesResumable(this._delegate, data, metadata), this);\r\n }\r\n /**\r\n * Uploads a string to this object's location.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n putString(value, format = StringFormat.RAW, metadata) {\r\n this._throwIfRoot('putString');\r\n const data = _dataFromString(format, value);\r\n const metadataClone = Object.assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return new UploadTaskCompat(new _UploadTask(this._delegate, new _FbsBlob(data.data, true), metadataClone), this);\r\n }\r\n /**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\n listAll() {\r\n return listAll(this._delegate).then(r => new ListResultCompat(r, this.storage));\r\n }\r\n /**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure. Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n *\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\n list(options) {\r\n return list(this._delegate, options || undefined).then(r => new ListResultCompat(r, this.storage));\r\n }\r\n /**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n */\r\n getMetadata() {\r\n return getMetadata(this._delegate);\r\n }\r\n /**\r\n * Updates the metadata for this object.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves\r\n * with the new metadata for this object.\r\n * @see firebaseStorage.Reference.prototype.getMetadata\r\n */\r\n updateMetadata(metadata) {\r\n return updateMetadata(this._delegate, metadata);\r\n }\r\n /**\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\n getDownloadURL() {\r\n return getDownloadURL(this._delegate);\r\n }\r\n /**\r\n * Deletes the object at this location.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\n delete() {\r\n this._throwIfRoot('delete');\r\n return deleteObject(this._delegate);\r\n }\r\n _throwIfRoot(name) {\r\n if (this._delegate._location.path === '') {\r\n throw _invalidRootOperation(name);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A service that provides firebaseStorage.Reference instances.\r\n * @param opt_url gs:// url to a custom Storage Bucket\r\n */\r\nclass StorageServiceCompat {\r\n constructor(app, _delegate) {\r\n this.app = app;\r\n this._delegate = _delegate;\r\n }\r\n get maxOperationRetryTime() {\r\n return this._delegate.maxOperationRetryTime;\r\n }\r\n get maxUploadRetryTime() {\r\n return this._delegate.maxUploadRetryTime;\r\n }\r\n /**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\n ref(path) {\r\n if (isUrl(path)) {\r\n throw _invalidArgument('ref() expected a child path but got a URL, use refFromURL instead.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, path), this);\r\n }\r\n /**\r\n * Returns a firebaseStorage.Reference object for the given absolute URL,\r\n * which must be a gs:// or http[s]:// URL.\r\n */\r\n refFromURL(url) {\r\n if (!isUrl(url)) {\r\n throw _invalidArgument('refFromURL() expected a full URL but got a child path, use ref() instead.');\r\n }\r\n try {\r\n _Location.makeFromUrl(url, this._delegate.host);\r\n }\r\n catch (e) {\r\n throw _invalidArgument('refFromUrl() expected a valid full URL but got an invalid one.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, url), this);\r\n }\r\n setMaxUploadRetryTime(time) {\r\n this._delegate.maxUploadRetryTime = time;\r\n }\r\n setMaxOperationRetryTime(time) {\r\n this._delegate.maxOperationRetryTime = time;\r\n }\r\n useEmulator(host, port, options = {}) {\r\n connectStorageEmulator(this._delegate, host, port, options);\r\n }\r\n}\r\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\n\nconst name = \"@firebase/storage-compat\";\nconst version = \"0.3.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Storage.\r\n */\r\nconst STORAGE_TYPE = 'storage-compat';\r\nfunction factory(container, { instanceIdentifier: url }) {\r\n // Dependencies\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const storageExp = container\r\n .getProvider('storage')\r\n .getImmediate({ identifier: url });\r\n const storageServiceCompat = new StorageServiceCompat(app, storageExp);\r\n return storageServiceCompat;\r\n}\r\nfunction registerStorage(instance) {\r\n const namespaceExports = {\r\n // no-inline\r\n TaskState: _TaskState,\r\n TaskEvent: _TaskEvent,\r\n StringFormat,\r\n Storage: StorageServiceCompat,\r\n Reference: ReferenceCompat\r\n };\r\n instance.INTERNAL.registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* ComponentType.PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterStorage(firebase);\n\nexport { registerStorage };\n//# sourceMappingURL=index.esm2017.js.map\n","import firebaseConfig from \"./config\"\nimport CareerPlan from \"../careers/CareerPlan\"\nimport School from \"../schools/School\"\nimport Major from \"../majors/Major\"\nimport { v4 } from 'uuid';\nimport firebase from 'firebase/compat/app'\nimport 'firebase/compat/auth'\nimport 'firebase/compat/firestore'\nimport 'firebase/compat/functions'\nimport 'firebase/compat/storage'\nimport { ImportResponseFailure, ImportResponseSuccess } from \"../admin/AdminFirebaseFunctions\";\n\n/**\n * Add constant for the time window of general notifications (7 days).\n *\n * @type {number}\n */\nconst newContentAlertTimeFrame = 604800000\n\n/**\n * Set default expiration time of 6 hours.\n *\n * @type {number}\n */\nconst sessionExpirationTime = 21600000\n\nclass Firebase {\n constructor() {\n if (!firebaseInstance) {\n firebase.initializeApp(firebaseConfig)\n this.app = firebase\n this.auth = this.app.auth()\n this.db = this.app.firestore()\n this.functions = this.app.functions()\n this.storage = this.app.storage()\n }\n }\n\n /**\n * Subscribe to global config data\n * @param onSnapshot\n * @returns {Promise<null|*>}\n */\n async getGlobalSiteConfig({ onSnapshot }) {\n const user = this.auth.currentUser\n if (user) {\n return this.db.collection(\"globalSiteConfig\").doc(\"CONFIG\").onSnapshot(onSnapshot)\n } else {\n return null\n }\n }\n\n /**\n * Subscribe to userActivity data\n * @param onSnapshot\n * @returns {Promise<null|*>}\n */\n async subscribeToUserActivities({ onSnapshot }) {\n const user = this.auth.currentUser\n if (user) {\n return this.db.collection(\"userActivities\").doc(user.uid).onSnapshot(onSnapshot)\n } else {\n return null\n }\n }\n\n /** Get User Activity\n */\n async getUserActivities(userId) {\n try {\n const resp = await this.db.collection(\"userActivities\").doc(userId).get()\n if (resp.exists) {\n return resp.data()\n } else {\n return null\n }\n } catch (error) {\n return error\n }\n }\n\n /**\n * Subscribe to userNotifications data\n * @param onSnapshot\n * @returns {Promise<null|*>}\n */\n async subscribeToUserNotifications({ onSnapshot }) {\n const user = this.auth.currentUser\n if (user) {\n return this.db.collection(\"userNotifications\").doc(user.uid).onSnapshot(onSnapshot)\n } else {\n return null\n }\n }\n\n /**\n * Subscribe to userNotifications data\n * @param onSnapshot\n * @returns {Promise<null|*>}\n */\n async subscribeToUserPointTotal({ onSnapshot }) {\n const user = this.auth.currentUser\n if (user) {\n return this.db.collection(\"pointTotals\").doc(user.uid).onSnapshot(onSnapshot)\n } else {\n return null\n }\n }\n\n /**\n * Retrieve a user's membership information\n *\n * @returns {Promise<null|*>}\n */\n async getUserMembership() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n const doc = await this.db.collection(\"memberships\").doc(user.uid).get()\n if (doc.exists) {\n return doc.data()\n } else {\n return null\n }\n }\n\n /**\n * Retrieve a user's visit information\n *\n * @returns {Promise<null|*>}\n */\n async getVisitCount() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n const doc = await this.db.collection(\"userMetrics\").doc(user.uid).get()\n if (doc.exists) {\n const data = doc.data()\n return data.siteVisitCount\n } else {\n return null\n }\n }\n\n /**\n * Retrieve a user's assessment information\n *\n * @returns {Promise<null|*>}\n */\n async getAssessmentRecord() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n const doc = await this.db.collection(\"assessments\").doc(user.uid).get()\n if (doc.exists) {\n return doc.data()\n } else {\n return null\n }\n }\n\n /**\n * Retrieve a user's activity information\n *\n * @returns {Promise<null|*>}\n */\n async getActivityRecord() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n const doc = await this.db.collection(\"userActivities\").doc(user.uid).get()\n if (doc.exists) {\n return doc.data()\n } else {\n return []\n }\n }\n\n /**\n * Retrieve a user's response record for a specific quest\n *\n * @returns {Promise<null|*>}\n */\n async getDailyQuestRecord(questId) {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n const doc = await this.db.collection(\"userQuests\").doc(`${questId}-${user.uid}`).get()\n if (doc.exists) {\n return doc.data()\n } else {\n return null\n }\n }\n\n /**\n *\n */\n async getPast5DaysQuestCompletionCount() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n const currentTime = new Date()\n const fiveDaysAgo = new Date()\n fiveDaysAgo.setDate(currentTime.getDate() - 5)\n\n const docs = await this.db.collection(\"userQuests\").where(\"createdDate\", \">=\", fiveDaysAgo).where(\"userId\", \"==\", user.uid).get()\n\n const questRecords = []\n\n docs.forEach((doc) => {\n questRecords.push({ id: doc.id, ...doc.data() })\n })\n\n return questRecords.length\n }\n\n /**\n * remove a user's membership information\n */\n async removeUserMembership({ userId, onSnapshot }) {\n const deleteSubscriptionCallable = this.functions.httpsCallable(\"deleteSubscription\")\n const callableResult = await deleteSubscriptionCallable()\n return callableResult.data\n }\n\n /**\n * Subscribe to user profile data for current user\n * @param onSnapshot\n * @returns {() => void}\n */\n getUserProfile({ userId, onSnapshot }) {\n const user = this.auth.currentUser\n if (user) {\n return this.db.collection(\"users\").doc(user.uid).onSnapshot(onSnapshot)\n } else {\n return null\n }\n }\n\n /**\n * Retrieve the current user's profile as a static object, rather\n * than subscribing to the data.\n *\n * @return {Promise<null|*>}\n */\n async getProfile() {\n const user = this.auth.currentUser\n try {\n const snapshot = await this.db.collection(\"users\").doc(user.uid).get()\n\n if (!snapshot.exists) {\n return null\n } else {\n return snapshot.data()\n }\n } catch (e) {\n return null\n }\n }\n\n async getCareerData(title, locale) {\n try {\n const snapshot = await this.db\n .collection(locale === \"en-US\" ? \"wages\" : \"wagesEs\")\n .where(\"docId\", \"==\", title)\n .get()\n if (snapshot.empty) {\n return null\n } else {\n const career = []\n snapshot.forEach((doc) => {\n career.push({\n ...doc.data(),\n })\n })\n return career[0]\n }\n } catch (e) {\n return null\n }\n }\n\n async createNewCareer(careerTitle, locale) {\n try {\n const data = {\n hardSkills: [],\n salaryData: [],\n softSkills: [],\n title: careerTitle,\n docId: careerTitle.toLowerCase(),\n }\n const response = {\n success: true,\n message: \"saved\",\n }\n const checkDuplicate = await this.getCareerData(careerTitle, locale)\n if (checkDuplicate && checkDuplicate.title === careerTitle) {\n response.message = `Career with name ${careerTitle} already exist`\n response.success = false\n return response\n }\n await this.db.collection(\"wages\").doc(careerTitle).set(data)\n return response\n } catch (e) {\n return e\n }\n }\n\n async getSchoolData(studentId) {\n try {\n const snapshot = await this.db.collection(\"schoolData\").doc(studentId).get()\n\n if (!snapshot.exists) {\n return null\n } else {\n return snapshot.data()\n }\n } catch (e) {\n return null\n }\n }\n\n async getOtherUserPointTotal(studentId) {\n const getOtherUserPointTotal = this.functions.httpsCallable(\"getOtherUserPointTotal\")\n\n try {\n const res = await getOtherUserPointTotal({ userId: studentId })\n return res?.data\n } catch (e) {\n return 0\n }\n }\n\n async getCampusList(schCode) {\n const fetchCampus = this.functions.httpsCallable(\"onGetCampusBySchoolCode\")\n try {\n const resp = await fetchCampus({ sch_code: schCode })\n return resp?.data\n } catch (error) {\n return error\n }\n }\n\n async getDepartmentList(schCode) {\n const fetchDepartment = this.functions.httpsCallable(\"onGetDepartmentBySchoolCode\")\n try {\n const resp = await fetchDepartment({ sch_code: schCode })\n return resp?.data\n } catch (error) {\n return error\n }\n }\n\n async groupsListCreatedByUser(type) {\n const grouplist = this.functions.httpsCallable(\"getGroupsByUserId\")\n try {\n const resp = await grouplist({ type })\n return resp\n } catch (error) {\n return error\n }\n }\n\n async addNewGroup(data) {\n const groupAdd = this.functions.httpsCallable(\"createGroup\")\n try {\n const resp = await groupAdd(data)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async associateStudentToGroup(payload) {\n const groupsResponse = this.functions.httpsCallable(\"onAddUsersToGroup\")\n try {\n const resp = await groupsResponse(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getAllUserListing(data) {\n const getAllUsersList = this.functions.httpsCallable(\"onGetAllUsers\")\n try {\n const resp = await getAllUsersList(data)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getAllUserFromGroup(data) {\n const getAllUsersListFromGroup = this.functions.httpsCallable(\"onGetUsersFromGroup\")\n try {\n const resp = await getAllUsersListFromGroup(data)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getActiveGroupMembersById(type) {\n const getActiveGroupMembersById = this.functions.httpsCallable(\"onGetActiveGroupMembersById\")\n try {\n const resp = await getActiveGroupMembersById({ type })\n return resp\n } catch (error) {\n return error\n }\n }\n\n async editGroupName(data) {\n const groupEdit = this.functions.httpsCallable(\"onUpdateGroupByGroupId\")\n try {\n const resp = await groupEdit(data)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async deleteGroup(data) {\n const groupDelete = this.functions.httpsCallable(\"onDeleteGroups\")\n try {\n const resp = await groupDelete(data)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getAllRaisecListing() {\n const getRiasecList = this.functions.httpsCallable(\"onGetRIASEC\")\n try {\n const resp = await getRiasecList()\n return resp\n } catch (error) {\n return error\n }\n }\n\n async updateCareerSkillsAndStateData(title, data) {\n const careerRef = this.db.collection(\"wages\").doc(title)\n const updateWagesEs = this.functions.httpsCallable(\"setCareerDataInEs\")\n try {\n await careerRef.update(data)\n await updateWagesEs(data)\n return true\n } catch (error) {\n return error\n }\n }\n\n async getAllCareerSkillsAndStateData() {\n try {\n const snapshot = await this.db.collection(\"wages\").get()\n const d = []\n snapshot.forEach((doc) => {\n d.push(doc.data())\n })\n return d\n } catch (e) {\n return null\n }\n }\n\n async getDailyQuestListPerUser(userId) {\n const doc = await this.db.collection(\"userQuests\").where(\"userId\", \"==\", userId).get()\n try {\n if (doc.empty) {\n return []\n } else {\n const quest = []\n doc.forEach((doc) => {\n quest.push({\n ...doc.data(),\n })\n })\n return quest\n }\n } catch (error) {\n return error\n }\n }\n async getOtherUserCareerPlans(userId) {\n\n const getOtherUserCareerPlans = this.functions.httpsCallable(\"getOtherUserCareerPlans\")\n\n try {\n const res = await getOtherUserCareerPlans({ userId: userId })\n return res?.data\n } catch (error) {\n return error\n }\n }\n\n async getFacultyListing(payload) {\n const facultyListing = this.functions.httpsCallable(\"facultyListings\")\n try {\n const resp = await facultyListing(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getStudentListing(payload) {\n const studentListing = this.functions.httpsCallable(\"studentListings\")\n try {\n const resp = await studentListing(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getProfileDetails(userId) {\n const profileDetails = this.functions.httpsCallable(\"getProfileDetails\")\n try {\n return await profileDetails({ userId: userId })\n } catch (error) {\n return error\n }\n }\n\n async addUser(payload) {\n const addUser = this.functions.httpsCallable(\"onAddUser\")\n try {\n const resp = await addUser(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n async editUser(payload) {\n const editUser = this.functions.httpsCallable(\"onEditUser\")\n try {\n const resp = await editUser(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n async OnDeleteUser(payload) {\n const OnDeleteUser = this.functions.httpsCallable(\"onDeleteUser\")\n try {\n const resp = await OnDeleteUser(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async studentActivitySnapshot(payload) {\n const getStudentActivity = this.functions.httpsCallable(\"onUserActivity\")\n try {\n const resp = await getStudentActivity(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getFacultyQueryResponse(payload) {\n const facultyQuery = this.functions.httpsCallable(\"onGetFacultyReport\")\n try {\n const resp = await facultyQuery(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getStudentQueryResponse(payload) {\n const studentQuery = this.functions.httpsCallable(\"onGetStudentReport\")\n try {\n const resp = await studentQuery(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getAllReports(payload) {\n const reports = this.functions.httpsCallable(\"onGetAllReports\")\n try {\n const resp = await reports(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async saveReports(payload) {\n const saveReports = this.functions.httpsCallable(\"onSaveReport\")\n try {\n const resp = await saveReports(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async saveSchedule(payload) {\n const saveSchedule = this.functions.httpsCallable(\"onSaveScheduler\")\n try {\n const resp = await saveSchedule(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async editSchedule(payload) {\n const editSchedule = this.functions.httpsCallable(\"onEditScheduler\")\n try {\n const resp = await editSchedule(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getSchedularInfo(payload) {\n const getSchedular = this.functions.httpsCallable(\"onGetSchedulerById\")\n try {\n const resp = await getSchedular(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getReports(payload) {\n const exportReport = this.functions.httpsCallable(\"onGetReportById\")\n try {\n const resp = await exportReport(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async deleteReport(payload) {\n const deleteReport = this.functions.httpsCallable(\"onDeleteReportById\")\n try {\n const resp = await deleteReport(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async deleteSchedule(payload) {\n const deleteSchedule = this.functions.httpsCallable(\"onDeleteSchedulerById\")\n try {\n const resp = await deleteSchedule(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async getSchedulers(payload) {\n const schedulers = this.functions.httpsCallable(\"onGetSchedulers\")\n try {\n const resp = await schedulers(payload)\n return resp\n } catch (error) {\n return error\n }\n }\n\n async importUsers(fileData, fileName, type, defaultPassword) {\n const importer = this.functions.httpsCallable(\"onImportUser\")\n try {\n const response = await importer({ fileData, fileName, type, defaultPassword })\n return new ImportResponseSuccess(response.data)\n } catch (e) {\n if (e.code === \"invalid-argument\") {\n return new ImportResponseFailure(e.message)\n }\n return e\n }\n }\n\n /**\n * Copy user profile to the public record, making it available to all.\n *\n * @return {Promise<boolean>}\n */\n async makeProfilePublic() {\n try {\n await this.updateProfile({ data: { profileIsPublic: true } })\n return true\n } catch (e) {\n return false\n }\n }\n\n /**\n * Copy section of user profile to the public record, making it available to all.\n *\n * @return {Promise<boolean>}\n */\n async makeProfileSectionPublic(section) {\n try {\n await this.updateProfile({\n data: { [`profilePublicSections.${section}`]: true },\n })\n return true\n } catch (e) {\n return false\n }\n }\n\n /**\n * Delete public profile data and mark main profile flag as a private profile.\n *\n * @return {Promise<boolean>}\n */\n async makeProfilePrivate() {\n try {\n await this.updateProfile({ data: { profileIsPublic: false } })\n return true\n } catch (e) {\n return false\n }\n }\n\n /**\n * Delete public profile section data.\n *\n * @return {Promise<boolean>}\n */\n async makeProfileSectionPrivate(section) {\n try {\n await this.updateProfile({\n data: { [`profilePublicSections.${section}`]: false },\n })\n return true\n } catch (e) {\n return false\n }\n }\n\n /**\n * Load a public user profile if the user has set it to public.\n *\n * @param userId\n * @return {Promise<*>}\n */\n async loadPublicProfile(userId) {\n const loadPublicProfileCallable = this.functions.httpsCallable(\"loadPublicProfile\")\n const callableResult = await loadPublicProfileCallable({ userId: userId })\n return callableResult.data\n }\n\n async deleteUser(uid) {\n const deleteUser = this.functions.httpsCallable(\"deleteUser\")\n return await deleteUser({ userId: uid })\n }\n\n async initializeUser(user) {\n // if (!user.uid) {\n // return false\n // }\n\n this.createFirestoreUser(user)\n }\n\n /**\n * Gets resume data from firestore based on id.\n *\n * @param {string} planId\n * The resume document ID.\n *\n * @return {Promise<null|T>}\n */\n async getResumeData() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n try {\n const query = await this.db.collection(\"userResumes\").doc(user.uid).get()\n if (query.exists) {\n return query.data()\n } else {\n return null\n }\n } catch {\n return null\n }\n }\n\n async getResumeDataForStudents(userId) {\n if (!userId) {\n return null\n }\n\n try {\n const query = await this.db.collection(\"userResumes\").doc(userId).get()\n if (query.exists) {\n return query.data()\n } else {\n return null\n }\n } catch {\n return null\n }\n }\n\n /**\n * Saves a resume.\n *\n * @param {CareerPlan} resume\n *\n * @return {Promise<void>}\n */\n async editResumeExperience(experience) {\n const editResumeExperienceCallable = this.functions.httpsCallable(\"editResumeExperience\")\n const callableResult = await editResumeExperienceCallable({\n experience: experience,\n })\n const result = callableResult.data\n\n // resume.id = result.id\n // resume.updated = result.updated\n // if (result.created) {\n // // resume.created = result.created\n // }\n }\n\n /**\n * Saves a resume.\n *\n * @param {CareerPlan} resume\n *\n * @return {Promise<void>}\n */\n async createResumeExperience(experience) {\n const uuid = v4()\n const resumeCreateExperienceCallable = this.functions.httpsCallable(\"createResumeExperience\")\n const callableResult = await resumeCreateExperienceCallable({\n experience: { id: uuid, ...experience },\n })\n const result = callableResult.data\n // resume.id = result.id\n // resume.updated = result.updated\n // if (result.created) {\n // // resume.created = result.created\n // }\n }\n\n /**\n * Saves a resume.\n *\n * @param {CareerPlan} resume\n *\n * @return {Promise<void>}\n */\n async deleteResumeExperience(experienceId) {\n const deleteResumeExperienceCallable = this.functions.httpsCallable(\"deleteResumeExperience\")\n const callableResult = await deleteResumeExperienceCallable({\n id: experienceId,\n })\n const result = callableResult.data\n\n // resume.id = result.id\n // resume.updated = result.updated\n // if (result.created) {\n // // resume.created = result.created\n // }\n }\n \n /**\n * Given a resume bullet, returns 3 optimized versions\n *\n * @param {ResumeBullet} bullet\n *\n * @return {Promise<Array>}\n */\n async optimizeText(text, type) {\n const optimizeBulletCallable = this.functions.httpsCallable(\"optimizeText\")\n const callableResult = await optimizeBulletCallable({\n text: text,\n type: type,\n })\n\n const result = callableResult.data\n return result\n }\n\n /**\n * Gets career plan data from firestore based on id.\n *\n * @param {string} planId\n * The career plan document ID.\n *\n * @return {Promise<null|T>}\n */\n async getCareerPlansData(planId) {\n try {\n const query = await this.db.collection(\"userCareerPlans\").doc(planId).get()\n if (query.exists) {\n return query.data()\n } else {\n return null\n }\n } catch {\n return null\n }\n }\n\n /**\n * Loads all careers for a user.\n *\n * @param userId\n * The uid of the firebase user.\n *\n * @return {Promise<null|[CareerPlan]>}\n */\n async loadCareerPlans(userId) {\n const careers = []\n try {\n const allCareersSnapshot = await this.db.collection(\"userCareerPlans\").where(\"userId\", \"==\", userId).get()\n if (allCareersSnapshot.empty) {\n return null\n }\n allCareersSnapshot.forEach((doc) => {\n careers.push(new CareerPlan(doc.id, doc.data()))\n })\n return careers\n } catch {\n return null\n }\n }\n\n /**\n * Retrieve a user's career plans for use on public profiles.\n *\n * @param userId\n * @return {Promise<null|[]>}\n */\n async loadPublicCareerPlans(userId) {\n const careerPlansCallable = this.functions.httpsCallable(\"loadPublicCareerPlans\")\n const plans = await careerPlansCallable(userId)\n if (Array.isArray(plans.data) && plans.data.length > 0) {\n let careerPlans = []\n plans.data.forEach((plan) => {\n // Don't include plans with no milestones\n if (plan.milestones && plan.milestones.length > 0) {\n careerPlans.push(new CareerPlan(null, plan))\n }\n })\n return careerPlans\n }\n return null\n }\n\n /**\n * Deletes a career plan.\n *\n * @param planId\n * The document ID of the plan to delete.\n *\n * @return {Promise<boolean>}\n */\n async deleteCareerPlan(planId) {\n const careerDeleteCallable = this.functions.httpsCallable(\"deleteCareerPlan\")\n await careerDeleteCallable(planId)\n return true\n }\n\n /**\n * Saves a career plan.\n *\n * @param {CareerPlan} careerPlan\n *\n * @return {Promise<void>}\n */\n async saveCareerPlan(careerPlan) {\n const careerSaveCallable = this.functions.httpsCallable(\"saveCareerPlan\")\n const callableResult = await careerSaveCallable(careerPlan.getData())\n const result = callableResult.data\n careerPlan.id = result.id\n careerPlan.updated = result.updated\n if (result.created) {\n careerPlan.created = result.created\n }\n }\n\n /**\n * Loads school data from firestore.\n *\n * @param id\n * The school ID.\n *\n * @return {Promise<null|School>}\n * The school data or null.\n */\n async loadSchool(id, locale) {\n try {\n const localeId = locale === \"en-US\" ? `${id}` : `${id}-es`\n const query = await this.db.collection(\"schools\").doc(localeId).get()\n if (query.exists) {\n return new School(query.data())\n } else {\n return null\n }\n } catch (e) {\n return null\n }\n }\n\n /**\n * Loads major data from firestore.\n *\n * @param cip\n * The major CIP.\n *\n * @return {Promise<null|Major>}\n * The major data or null.\n */\n async loadMajor(cip) {\n try {\n const query = await this.db.collection(\"majors\").doc(`${cip}`).get()\n if (query.exists) {\n return new Major(query.data())\n } else {\n return null\n }\n } catch (e) {\n return null\n }\n }\n\n updateUserEmail(email) {\n const user = this.auth.currentUser\n return user.updateEmail(email)\n }\n\n updateUserPassword(password) {\n const user = this.auth.currentUser\n return user.updatePassword(password)\n }\n\n updateProfile(record) {\n const user = this.auth.currentUser\n return this.db.collection(\"users\").doc(user.uid).update(record.data)\n }\n\n /**\n * Dismisses the weekly Monday notification.\n *\n * @return {Promise}\n */\n dismissMondayNotification() {\n const user = this.auth.currentUser\n return this.db.collection(\"users\").doc(user.uid).update({\n \"dismissedNotifications.monday\": this.app.firestore.FieldValue.serverTimestamp(),\n })\n }\n\n /**\n * Dismisses the 10 day story notification.\n *\n * @return {Promise}\n */\n dismissStoryTenDayNotification() {\n const user = this.auth.currentUser\n return this.db.collection(\"users\").doc(user.uid).update({\n \"dismissedNotifications.storyTenDay\": this.app.firestore.FieldValue.serverTimestamp(),\n })\n }\n\n /**\n * Dismisses the 10 day login notification.\n *\n * @return {Promise}\n */\n dismissLoginTenDayNotification() {\n const user = this.auth.currentUser\n return this.db.collection(\"users\").doc(user.uid).update({\n \"dismissedNotifications.loginTenDay\": this.app.firestore.FieldValue.serverTimestamp(),\n })\n }\n\n dismissNewContentNotification(userProfile, notification) {\n const user = this.auth.currentUser\n if (!userProfile?.dismissedNotifications?.newContent || userProfile?.dismissedNotifications?.newContent.length === 0) {\n return this.db\n .collection(\"users\")\n .doc(user.uid)\n .update({\n \"dismissedNotifications.newContent\": [notification],\n })\n }\n let dismissals = userProfile.dismissedNotifications.newContent\n // Filter out any old dismissals that are out of timeframe\n dismissals = dismissals.filter((dismissedNotification) => Date.now() - dismissedNotification.createdDate.toMillis() <= newContentAlertTimeFrame)\n dismissals.push(notification)\n return this.db.collection(\"users\").doc(user.uid).update({\n \"dismissedNotifications.newContent\": dismissals,\n })\n }\n\n /**\n * Store a user's profile photo to Firebase Storage.\n *\n * @param {File} file\n * @return {Promise<null|string>} Firebase Download URL or null\n */\n async storeProfileImage(file) {\n // Properly configured Storage rules will validate file type and file size\n const user = this.auth.currentUser\n const extension = file.type.split(\"/\")[1]\n\n if (!extension) {\n return null\n }\n\n const storageRef = this.storage.ref()\n const profileImageRef = storageRef.child(`profile-images/${user.uid}/profile.${extension}`)\n\n await profileImageRef.put(file).catch(() => {\n return null\n })\n\n const fileUrl = await profileImageRef.getDownloadURL()\n if (fileUrl) {\n return fileUrl\n } else {\n return null\n }\n }\n\n /**\n * Store a user's wallpaper photo to Firebase Storage.\n *\n * @param {File} file\n * @return {Promise<null|string>} Firebase Download URL or null\n */\n async storeWallpaperImage(file) {\n // Properly configured Storage rules will validate file type and file size\n const user = this.auth.currentUser\n const extension = file.type.split(\"/\")[1]\n\n if (!extension) {\n return null\n }\n\n const storageRef = this.storage.ref()\n const wallpaperImageRef = storageRef.child(`profile-images/${user.uid}/wallpaper.${extension}`)\n\n await wallpaperImageRef.put(file).catch(() => {\n return null\n })\n\n const fileUrl = await wallpaperImageRef.getDownloadURL()\n if (fileUrl) {\n return fileUrl\n } else {\n return null\n }\n }\n\n // async register({email, password, username}) {\n // await this.auth.createUserWithEmailAndPassword(email, password);\n // const createProfileCallable = this.functions.httpsCallable('createPublicProfile');\n // return createProfileCallable({\n // username\n // })\n // }\n async register(user) {\n await this.auth.createUserWithEmailAndPassword(user.email, user.password)\n\n await this.initializeUser(user)\n\n // const createProfileCallable = this.functions.httpsCallable('createPublicProfile');\n // return createProfileCallable({\n // username\n // })\n }\n\n\n /**\n * Creates a school based user\n *\n */\n async createSchoolUser(schoolId, locale, authResultDisplayName = '', isNameReversed = false) {\n if (typeof window !== \"undefined\") {\n const hostname = window.location.hostname\n const createSchoolUserCallable = this.functions.httpsCallable(\n \"createSchoolUser\"\n )\n const callableResult = await createSchoolUserCallable({ schoolId, locale, authResultDisplayName, isNameReversed, hostname })\n return callableResult.data\n }\n }\n\n // async postComment({text, bookId}){\n // const postCommentCallable = this.functions.httpsCallable('postComment');\n // return postCommentCallable({\n // text,\n // bookId\n // });\n // }\n\n async logout() {\n if (this.auth.currentUser?.uid) {\n localStorage.removeItem(`wings-session:${this.auth.currentUser.uid}`)\n }\n await this.auth.signOut()\n }\n\n /**\n * Adds login count to user profile.\n *\n * This will only increase login count if the user does not have a session\n * in local storage. Otherwise at least 24 hours needs to pass for a new\n * login to register. This is due to firebase and google auth automatically\n * logging users in and generating new tokens on hard refresh which would\n * result in a large number of login events.\n *\n * @param {string} uid\n * The user id.\n *\n * @return {Promise<void>}\n */\n async loginCount(uid) {\n const wingsSessionKey = `wings-session:${this.auth.currentUser.uid}`\n const sessionExpiration = localStorage.getItem(wingsSessionKey)\n if (sessionExpiration && Date.now() < sessionExpiration) {\n return\n }\n localStorage.setItem(wingsSessionKey, Date.now() + sessionExpirationTime)\n\n try {\n // must occur on a delay in order for firebase user to exist upon account creation first login\n setTimeout(async () => {\n await this.db\n .collection(\"users\")\n .doc(uid)\n .update({\n loginCount: this.app.firestore.FieldValue.increment(1),\n lastLoginDate: this.app.firestore.FieldValue.serverTimestamp(),\n })\n }, 20000)\n \n } catch (e) {\n console.error(e)\n }\n }\n\n /**\n * Handles storing contact form submissions to Firestore.\n *\n * @param formValues\n * @returns {Promise<HttpsCallableResult>}\n */\n async storeContactFormSubmission(formValues) {\n const storeSubmission = this.functions.httpsCallable(\"storeContactFormSubmission\")\n return storeSubmission(formValues)\n }\n\n /**\n * Handles storing form submission from /signup/employers to Firestore.\n *\n * @param formValues\n * @returns {Promise<HttpsCallableResult>}\n */\n async storeCompanySignUpFormSubmission(formValues) {\n const storeSubmission = this.functions.httpsCallable(\"storeCompanySignUpFormSubmission\")\n return storeSubmission(formValues)\n }\n\n /**\n * Handles storing form submission from /signup/educators to Firestore.\n *\n * @param formValues\n * @returns {Promise<HttpsCallableResult>}\n */\n async storeEducatorSignUpFormSubmission(formValues) {\n const storeSubmission = this.functions.httpsCallable(\"storeEducatorSignUpFormSubmission\")\n return storeSubmission(formValues)\n }\n\n /**\n * send email\n *\n * @param formValues\n * @returns {Promise<HttpsCallableResult>}\n */\n async sendEmail(formValues) {\n const sendEmail = this.functions.httpsCallable(\"sendEmail\")\n return sendEmail(formValues)\n }\n\n async loadDashbardNotifications() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n const notifications = []\n\n try {\n const snapshot = await this.db.collection(\"notifications\").where(\"userId\", \"==\", user.uid).get()\n\n if (!snapshot.empty) {\n snapshot.forEach((doc) => {\n notifications.push({\n ...doc.data(),\n docId: doc.id,\n })\n })\n }\n\n // Only add general notifications for time frame.\n const timeFrame = new Date(Date.now() - newContentAlertTimeFrame)\n\n // 1 hour delay for new content notifications\n const hourDelay = new Date(Date.now() - 3600000)\n\n const snapshotGeneral = await this.db.collection(\"generalNotifications\").where(\"createdDate\", \">\", timeFrame).get()\n\n if (!snapshotGeneral.empty) {\n snapshotGeneral.forEach((doc) => {\n if (doc.data().createdDate.toDate() < hourDelay || doc.data().type !== \"newContent\") {\n notifications.push({\n ...doc.data(),\n docId: doc.id,\n })\n }\n })\n }\n\n return notifications.length > 0 ? notifications : null\n } catch (e) {\n console.error(\"☠ï¸\", e)\n return null\n }\n }\n\n async removeDashboardNotifications(data) {\n // A specific document is required.\n if (!data.docId) {\n return\n }\n\n const user = this.auth.currentUser\n if (!user) {\n return false\n }\n\n try {\n await this.db.collection(\"notifications\").doc(data.docId).delete()\n return true\n } catch (e) {\n console.error(\"â˜ ï¸ removeDashboardNotifications ☠ï¸\", e)\n return false\n }\n }\n\n async createDashboardNotification(data) {\n const createDashboardNotification = this.functions.httpsCallable(\"createDashboardNotification\")\n return createDashboardNotification(data)\n }\n\n addAssessmentCareersFeedback(data) {\n const addAssessmentCareersFeedback = this.functions.httpsCallable(\"handleAssessmentCareersFeedback\")\n return addAssessmentCareersFeedback({ ...data, isRemoval: false })\n }\n\n async removeAssessmentCareersFeedback(data) {\n const removeAssessmentCareersFeedback = this.functions.httpsCallable(\"handleAssessmentCareersFeedback\")\n return removeAssessmentCareersFeedback({ ...data, isRemoval: true })\n }\n\n async saveAssessment(data) {\n const saveAssessment = this.functions.httpsCallable(\"saveAssessment\")\n return saveAssessment(data)\n }\n\n async saveAssessmentResponses(data) {\n const saveAssessmentResponses = this.functions.httpsCallable(\"saveAssessmentResponses\")\n return saveAssessmentResponses(data)\n }\n\n async savePointEvents(data) {\n const savePointEvents = this.functions.httpsCallable(\"savePointEvents\")\n return savePointEvents(data)\n }\n\n async saveVisitedStory(data) {\n const saveVisitedStory = this.functions.httpsCallable(\"saveVisitedStory\")\n return saveVisitedStory(data)\n }\n\n async loadVisitedStories() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n try {\n const snapshot = await this.db.collection(\"visitedStories\").where(\"userId\", \"==\", user.uid).get()\n\n if (snapshot.empty) {\n return null\n } else {\n const stories = []\n snapshot.forEach((doc) => {\n stories.push({\n ...doc.data(),\n docId: doc.id,\n })\n })\n\n return stories\n }\n } catch (e) {\n console.error(\"☠ï¸\", e)\n return null\n }\n }\n\n async saveVisitedBlog(data) {\n const saveVisitedBlog = this.functions.httpsCallable(\"saveVisitedBlog\")\n return saveVisitedBlog(data)\n }\n\n async loadVisitedBlogs() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n try {\n const snapshot = await this.db.collection(\"visitedBlogs\").where(\"userId\", \"==\", user.uid).get()\n\n if (snapshot.empty) {\n return null\n } else {\n const blogs = []\n snapshot.forEach((doc) => {\n blogs.push({\n ...doc.data(),\n docId: doc.id,\n })\n })\n\n return blogs\n }\n } catch (e) {\n console.error(\"☠ï¸\", e)\n return null\n }\n }\n\n async saveVisitedSchool(data) {\n const saveVisitedSchool = this.functions.httpsCallable(\"saveVisitedSchool\")\n return saveVisitedSchool(data)\n }\n\n async loadVisitedSchools() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n try {\n const snapshot = await this.db.collection(\"visitedSchools\").where(\"userId\", \"==\", user.uid).get()\n\n if (snapshot.empty) {\n return null\n } else {\n const schools = []\n snapshot.forEach((doc) => {\n schools.push({\n ...doc.data(),\n docId: doc.id,\n })\n })\n return schools\n }\n } catch (e) {\n console.error(\"☠ï¸\", e)\n return null\n }\n }\n\n /**\n * Retrieve the current user's pointTotal as a static object, rather\n * than subscribing to the data.\n *\n * @return {Promise<null|*>}\n */\n async getPointTotal() {\n const user = this.auth.currentUser\n try {\n const snapshot = await this.db.collection(\"pointTotals\").doc(user.uid).get()\n\n if (!snapshot.exists) {\n return null\n } else {\n return snapshot.data()\n }\n } catch (e) {\n return null\n }\n }\n\n async loadPointEvents() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n try {\n const snapshot = await this.db.collection(\"pointEvents\").where(\"userId\", \"==\", user.uid).get()\n\n if (snapshot.empty) {\n return null\n } else {\n const pointEvents = []\n snapshot.forEach((doc) => {\n pointEvents.push({\n ...doc.data(),\n docId: doc.id,\n })\n })\n\n return pointEvents\n }\n } catch (e) {\n console.error(\"☠ï¸\", e)\n return null\n }\n }\n\n /**\n * Saves walkthrough steps.\n *\n * @param {stepKey, stepValue}\n *\n * @return {Promise<void>}\n */\n async saveWalkthroughStep(stepKey, stepValue) {\n const saveWalkthroughStepCallable = this.functions.httpsCallable(\"saveWalkthroughStep\")\n const callableResult = await saveWalkthroughStepCallable({\n stepKey,\n stepValue,\n })\n const result = callableResult.data\n return result\n }\n\n async getWalkthroughSteps() {\n const user = this.auth.currentUser\n if (!user) {\n return null\n }\n\n const doc = await this.db.collection(\"userWalkthroughs\").doc(user.uid).get()\n if (doc.exists) {\n return doc.data()\n } else {\n return null\n }\n }\n\n // saves user story rating to firestore, cosmic, and algolia\n async saveUserStoryRating(data) {\n const saveUserStoryRating = this.functions.httpsCallable(\"saveUserStoryRating\")\n return saveUserStoryRating(data)\n }\n\n // gets users history of ratings across all stories\n async getUserStoryRatingsRecord(data) {\n const getUserStoryRatingsRecord = this.functions.httpsCallable(\"getUserStoryRatingsRecord\")\n return getUserStoryRatingsRecord(data)\n }\n\n // gets record of all story ratings\n async getAllStoryMetrics() {\n const getAllStoryMetrics = this.functions.httpsCallable(\"getAllStoryMetrics\")\n return getAllStoryMetrics()\n }\n\n // saves user activity completion\n async setActivityCompletion(data) {\n const setActivityCompletion = this.functions.httpsCallable(\"setActivityCompletion\")\n return setActivityCompletion(data)\n }\n\n // removes user activity completion\n async unsetActivityCompletion(data) {\n const unsetActivityCompletion = this.functions.httpsCallable(\"unsetActivityCompletion\")\n return unsetActivityCompletion(data)\n }\n\n // saves user activity completion\n async setDailyQuest(data) {\n const setDailyQuest = this.functions.httpsCallable(\"setDailyQuest\")\n return setDailyQuest(data)\n }\n\n /**\n * Creates a new user via the magic link.\n */\n async createMagicLinkUser(data) {\n const createMagicLinkUserCallable = this.functions.httpsCallable(\"createMagicLinkUser\")\n const callableResult = await createMagicLinkUserCallable(data)\n return callableResult.data\n }\n\n /**\n * Generate and send sign in link.\n */\n async generateAndSendSignInLink(data) {\n const generateAndSendSignInLinkCallable = this.functions.httpsCallable(\"generateAndSendSignInLink\")\n await generateAndSendSignInLinkCallable(data)\n }\n\n /**\n * Send client side event details to GCP logs.\n * @param {string} message\n * @param {string} severity - info, warning, error\n * @returns {Promise<HttpsCallableResult>}\n */\n async logClientSideEvent(message, severity = \"info\") {\n const data = {\n message,\n severity,\n }\n const logClientSideEvent = this.functions.httpsCallable(\"logClientSideEvent\")\n return logClientSideEvent(data)\n }\n\n /**\n * creates user notification, can be used for to trigger notification based on template ID or custom notification composed in client\n * @param {object} data.notificationData - object custom notification data\n * @param {string} data.notificationData - string template ID for notification\n */\n async createUserNotification(data) {\n const createUserNotification = this.functions.httpsCallable(\"createUserNotification\")\n return createUserNotification({ notificationData: data })\n }\n\n /**\n * creates user notification, can be used for to trigger notification based on template ID or custom notification composed in client\n * @param {object} data.notificationData - object custom notification data\n * @param {string} data.notificationData - string template ID for notification\n */\n async createEducatorNotification(data) {\n const createEducatorNotification = this.functions.httpsCallable(\"createEducatorNotification\")\n return createEducatorNotification({ notificationData: data })\n }\n\n /**\n * admin function for creating global notification\n */\n async createGlobalNotification(data) {\n const createGlobalNotification = this.functions.httpsCallable(\"createGlobalNotification\")\n return createGlobalNotification(data)\n }\n\n /**\n * admin function for deleting notification globally by template ID\n */\n async deleteGlobalNotification(data) {\n const deleteGlobalNotification = this.functions.httpsCallable(\"deleteGlobalNotification2\")\n return deleteGlobalNotification(data)\n }\n\n /**\n * Marks all notifications as read. Happens when notification drawer is opened.\n */\n async markUserNotificationsAsRead() {\n const markUserNotificationsAsRead = this.functions.httpsCallable(\"markUserNotificationsAsRead\")\n return markUserNotificationsAsRead()\n }\n\n /**\n * Deletes a user notification, hides permanent notifications.\n *\n * @param {string} data.notificationId - the notification ID\n */\n async deleteUserNotification(data) {\n const deleteUserNotification = this.functions.httpsCallable(\"deleteUserNotification\")\n return deleteUserNotification(data)\n }\n\n /**\n * Publishes a user notification\n *\n * @param {string} data.notificationId - the notification ID\n */\n async publishScheduledUserNotification(data) {\n const publishScheduledUserNotification = this.functions.httpsCallable(\"publishScheduledUserNotification\")\n return publishScheduledUserNotification(data)\n }\n\n async logUserSiteVisit(data) {\n const logUserSiteVisit = this.functions.httpsCallable(\"logUserSiteVisit\")\n return logUserSiteVisit({ siteVisitData: data })\n }\n \n async getEducatorAccountInfo() {\n const getEducatorAccountInfo = this.functions.httpsCallable(\"getEducatorAccountInfo\")\n return getEducatorAccountInfo()\n }\n\n async getPetersonsSchoolData(institutionId) {\n const getPetersonsSchoolData = this.functions.httpsCallable(\"getPetersonsSchoolData\")\n return getPetersonsSchoolData({institutionId: institutionId})\n }\n\n async getPetersonsMajorSchoolsData(majorId) {\n const getPetersonsMajorSchoolsData = this.functions.httpsCallable(\"getPetersonsMajorSchoolsData\")\n return getPetersonsMajorSchoolsData({majorId: majorId})\n }\n\n\n /**\n * Creates a snapshot listener that responds to changes to a user's storyboard\n * @param {string} userId - the user's id. If this isn't defined, defaults to\n * the current user's id\n * @param {function} updatePanelOrder - function that runs when the order of the\n * storyboard panels changes\n * @returns the snapshot listener's cleanup function\n */\n subscribeToStoryboardChanges(userId, updatePanelOrder) {\n const onChange = (docRef) => {\n if (docRef.exists) {\n updatePanelOrder(docRef.data().panelsOrder || [])\n }\n }\n if (!userId) {\n userId = this.auth.currentUser.uid\n }\n return this.db.collection(\"userStoryboards\").doc(userId).onSnapshot((docRef) => onChange(docRef))\n }\n\n /**\n * Creates a snapshot listener that responds to changes to a single storyboard panel\n * @param {string} userId - the user's id. If this isn't defined, defaults to\n * the current user's id\n * @param {string} panelId\n * @param {function} updateTitle\n * @param {function} updateDescription\n * @param {function} updateMonth\n * @param {function} updateYear\n * @param {function} updateFiles\n * @returns the snapshot listener's cleanup function\n */\n subscribeToPanelChanges(userId, panelId, updateTitle, updateDescription, updateMonth, updateYear, updateFiles) {\n const onChange = (docRef) => {\n if (docRef.exists) {\n updateTitle(docRef.data().title || \"\")\n updateDescription(docRef.data().description || \"\")\n updateMonth(docRef.data().endDateMonth || \"\")\n updateYear(docRef.data().endDateYear || \"\")\n updateFiles(docRef.data().filesOrder || [])\n }\n }\n if (!userId) {\n userId = this.auth.currentUser.uid\n }\n return this.db.collection(\"userStoryboards\").doc(userId).collection(\"panels\").doc(panelId).onSnapshot((docRef) => onChange(docRef))\n }\n\n /**\n * Update the order of a user's storyboard panels.\n * \n * Only one of panelID and newPanelsOrder should be defined.\n * \n * @param {string} panelID - the id of the panel to add or delete\n * @param {boolean} removePanel - if true, then remove panelId\n * @param {string[]} newPanelsOrder - the new order of the storyboard panels\n */\n async updatePanelsOrder(panelID, removePanel, newPanelsOrder) {\n const userId = this.auth.currentUser.uid\n const storyboardDocRef = this.db.collection(\"userStoryboards\").doc(userId)\n const storyboardDoc = await storyboardDocRef.get()\n\n if (panelID) {\n let oldPanelsOrder = []\n if (storyboardDoc.exists && storyboardDoc.data().panelsOrder) {\n oldPanelsOrder = storyboardDoc.data().panelsOrder\n }\n if (removePanel) {\n const panelIndex = oldPanelsOrder.findIndex(id => id === panelID)\n // TODO: best way to handle if panel ID isn't in this?\n oldPanelsOrder.splice(panelIndex, 1)\n } else {\n oldPanelsOrder.push(panelID)\n }\n newPanelsOrder = oldPanelsOrder\n }\n\n await storyboardDocRef.set({panelsOrder: newPanelsOrder})\n }\n\n /**\n * Creates a new storyboard panel\n * \n * @param {string} title \n * @param {string} description \n * @param {string} month \n * @param {string} year \n * @param {string[]} filesOrder \n */\n async addPanel(title, description, month, year, filesOrder) {\n const newPanelID = v4()\n await this.updatePanelsOrder(newPanelID, false, undefined)\n await this.editPanel(newPanelID, false, title, description, month, year, filesOrder)\n }\n\n /**\n * Modify a single storyboard panel document in firestore\n * \n * @param {string} panelID \n * @param {boolean} deletePanel - if true, the panel will be deleted\n * @param {string} title \n * @param {string} description \n * @param {string} month \n * @param {string} year \n * @param {string[]} filesOrder \n */\n async editPanel(panelID, deletePanel, title, description, month, year, filesOrder) {\n const userID = this.auth.currentUser.uid\n const docRef = this.db.collection(\"userStoryboards\").doc(userID).collection(\"panels\").doc(panelID)\n\n if (deletePanel) {\n await docRef.delete()\n } else {\n const newPanel = {\n title: title || \"\",\n description: description || \"\",\n endDateMonth: month || \"\",\n endDateYear: year || \"\",\n filesOrder: filesOrder || [],\n }\n await docRef.set(newPanel)\n } \n }\n\n /**\n * Delete a storyboard panel\n * @param {*} panelID \n */\n async deletePanel(panelID) {\n await this.updatePanelsOrder(panelID, true, undefined)\n await this.editPanel(panelID, true, undefined, undefined, undefined, undefined, undefined)\n }\n\n /**\n * Upload a user's file\n * @param {string} purpose - Ex: \"storyboard\"\n * @param {string} fileID - a unique identifier for the file\n * @param {File} file \n * @param {File} thumbnail - if the file has a thumbnail, then this thumbnail\n * file will also be uploaded\n */\n async uploadUserFile(purpose, fileID, file, thumbnail) {\n if (!fileID) {\n fileID = v4()\n }\n const userID = this.auth.currentUser.uid\n const fileRef = this.storage.ref(`user-files/${userID}/${purpose}/${fileID}/${file.name}`)\n await fileRef.put(file)\n if (thumbnail) {\n const thumbnailRef = this.storage.ref(`user-files/${userID}/${purpose}/thumbnails/${fileID}`)\n await thumbnailRef.put(thumbnail)\n }\n }\n\n /**\n * Get the MIME type of a user-uploaded file, or \"\" on error\n * @param {string} userId \n * @param {string} purpose - Ex: \"storyboard\"\n * @param {string} fileID - a unique identifier for the file\n * @returns {string}\n */\n async getUserFileType(userId, purpose, fileID) {\n if (!userId) {\n userId = this.auth.currentUser.uid\n }\n const directoryFileRef = this.storage.ref(`user-files/${userId}/${purpose}/${fileID}`)\n try {\n const directoryContents = await directoryFileRef.listAll()\n if (directoryContents.items && directoryContents.items.length > 0) {\n const fileRef = directoryContents.items[0]\n const metadata = await fileRef.getMetadata()\n return metadata.contentType\n }\n } catch (e) {\n console.log(e)\n return \"\"\n }\n }\n\n /**\n * Get a download URL for a user-uploaded file, or \"\" on error\n * @param {string} userId \n * @param {string} purpose - Ex: \"storyboard\"\n * @param {string} fileID - a unique identifier for the file\n * @returns {string}\n */\n async getUserFileURL(userId, purpose, fileID) {\n if (!userId) {\n userId = this.auth.currentUser.uid\n }\n try {\n const directoryFileRef = this.storage.ref(`user-files/${userId}/${purpose}/${fileID}`)\n const directoryContents = await directoryFileRef.listAll()\n if (directoryContents.items && directoryContents.items.length > 0) {\n const fileRef = directoryContents.items[0]\n const url = await fileRef.getDownloadURL()\n return url\n }\n } catch (e) {\n console.log(e)\n return \"\"\n }\n }\n\n /**\n * Get a download URL of a user-uploaded file's thumbnail, or \"\" on error\n * @param {string} userId \n * @param {string} purpose - Ex: \"storyboard\"\n * @param {string} fileID - a unique identifier for the file\n * @returns {string}\n */\n async getUserFileThumbnailURL(userId, purpose, fileID) {\n if (!userId) {\n userId = this.auth.currentUser.uid\n }\n try {\n const fileRef = this.storage.ref(`user-files/${userId}/${purpose}/thumbnails/${fileID}`)\n const url = await fileRef.getDownloadURL()\n return url\n } catch (e) {\n console.log(e)\n return \"\"\n }\n }\n\n /**\n * Delete a user uploaded file\n * @param {string} purpose - Ex: \"storyboard\" \n * @param {string} fileID - a unique identifier for the file\n */\n async deleteUserFile(purpose, fileID) {\n const userId = this.auth.currentUser.uid\n\n const directoryFileRef = this.storage.ref(`user-files/${userId}/${purpose}/${fileID}`)\n try {\n const directoryContents = await directoryFileRef.listAll()\n if (directoryContents.items && directoryContents.items.length > 0) {\n const fileRef = directoryContents.items[0]\n await fileRef.delete()\n }\n } catch (e) {\n console.log(\"failed to delete file\", e)\n }\n\n const thumbnailRef = this.storage.ref(`user-files/${userId}/${purpose}/thumbnails/${fileID}`)\n try {\n await thumbnailRef.delete()\n } catch (e) {\n\n } \n }\n\n /**\n * Create a snapshot listener that runs whenever the order of a user's resume \n * items changes\n * @param {string} userID \n * @param {string} columnNumber - either \"1\" or \"2\"\n * @param {function} updateOrder - takes in an array of experience type strings\n * @returns {function} the unsubscribe function\n */\n subscribeToResumeOrderChanges(userID, columnNumber, updateOrder) {\n const onChange = (docRef) => {\n if (docRef.exists && docRef.data().order) {\n updateOrder(docRef.data().order)\n } else {\n updateOrder([])\n }\n }\n return this.db.collection(\"userResumes\").doc(userID).collection(\"columnOrders\").doc(columnNumber).onSnapshot((docRef) => onChange(docRef))\n }\n\n /**\n * Update the order of experiences for a given resume column\n * @param {string} columnNumber - either \"1\" or \"2\"\n * @param {string[]} newOrder - array of experience type strings\n */\n async updateResumeColumnOrder(columnNumber, newOrder) {\n const userID = this.auth.currentUser.uid\n await this.db.collection(\"userResumes\").doc(userID).collection(\"columnOrders\").doc(columnNumber).set({order: newOrder})\n }\n\n /**\n * Create a snapshot listener that runs whenever a user's resume experiences\n * change\n * @param {string} userID \n * @param {string} updateExperiences \n * @returns {function} the unsubscribe function\n */\n subscribeToResumeExperienceChanges(userID, updateExperiences) {\n const onChange = (docRef) => {\n if (docRef.exists && docRef.data().experiences) {\n updateExperiences(docRef.data().experiences)\n }\n }\n return this.db.collection(\"userResumes\").doc(userID).onSnapshot((docRef) => onChange(docRef))\n }\n\n /**\n * Create a snapshot listener that runs when a user's skills or interests change\n * @param {string} userID \n * @param {function} updateSkills \n * @param {function} updateInterests \n * @returns {function} the snapshot listener's unsubscribe function\n */\n subscribeToSkillsInterestsChanges(userID, updateSkills, updateInterests) {\n const onChange = (docRef) => {\n if (docRef.exists) {\n updateSkills(docRef.data().skills || [])\n }\n if (docRef.exists) {\n updateInterests(docRef.data().interests || [])\n }\n }\n return this.db.collection(\"users\").doc(userID).onSnapshot((docRef) => onChange(docRef))\n }\n\n /**\n * Get the experience type order that the current user has saved for a resume \n * column\n * @param {string} columnNumber - a string representing the column number (for\n * now, either \"1\" or \"2\")\n * @returns {string[]} array of experience types representing the order, or \n * null if no order is saved for the column\n */\n async getResumeColumnOrder(columnNumber) {\n const userId = this.auth?.currentUser?.uid\n if (!userId || !columnNumber) {\n return null\n }\n\n let order = null\n try {\n const orderDoc = await this.db.collection(\"userResumes\").doc(userId).collection(\"columnOrders\").doc(columnNumber).get()\n if (orderDoc.exists && orderDoc.data().order) {\n order = orderDoc.data().order\n }\n } catch (e) {\n console.log(e)\n }\n return order\n }\n}\n\nlet firebaseInstance\n\nfunction getFirebaseInstance() {\n if (!firebaseInstance) {\n firebaseInstance = new Firebase()\n return firebaseInstance\n } else if (firebaseInstance) {\n return firebaseInstance\n } else {\n return null\n }\n}\n\nexport default getFirebaseInstance\n","import { toast } from \"sonner\"\nimport DOMPurify from \"dompurify\"\nimport React, { useState } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faChevronRight, faArrowRight } from \"@fortawesome/pro-light-svg-icons\"\nimport { navigate } from \"gatsby\"\nimport { faCompass as farCompass } from \"@fortawesome/free-regular-svg-icons\"\nimport { faMapMarkerAlt as farMapMarkerAlt } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faLightbulbOn as farLightbulbOn, faChevronRight as faRegChevronRight } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faChevronRight as faBoldChevronRight } from \"@fortawesome/pro-solid-svg-icons\"\nimport { faReadme as fabReadme } from \"@fortawesome/free-brands-svg-icons\"\nimport { useIntl } from \"react-intl\"\nimport \"./toasts.css\"\n\nconst sendUserNotificationToast = (notification) => {\n // class we can assign to toast to prevent duplicate toasts from being displayed off the same notification\n const classIdentifier = `toast-${notification.notificationId}`\n let isWindowWide = false\n\n if (typeof window !== \"undefined\") {\n const element = document.querySelector(`.${classIdentifier}`)\n isWindowWide = window.innerWidth > 1100\n if (element) return\n }\n\n toast.dismiss(classIdentifier)\n\n toast(<UserNotification notification={notification} handleDelete={() => toast.dismiss(classIdentifier)} />, {\n position: isWindowWide ? \"top-right\" : \"bottom-right\",\n closeButton: true,\n duration: 12000,\n id: notification.notificationId,\n className: classIdentifier,\n style: {\n marginTop: \"4rem\",\n padding: \"0\",\n },\n })\n}\n\nconst UserNotification = ({ notification, handleDelete }) => {\n // destriucture notification object found in firebase userNotifications collection\n const { message, messageEs, type, publicationDate, notificationId, isRead, pageLink, heading, headingEs } = notification\n const { locale } = useIntl()\n\n const [isHovered, setIsHovered] = useState(false)\n\n const isNavigational = !!pageLink\n\n const handleMouseEnter = () => {\n setIsHovered(true)\n }\n\n const handleMouseLeave = () => {\n setIsHovered(false)\n }\n\n function CleanHTML({ dirtyHTML }) {\n if (!dirtyHTML) return \"\"\n\n // Sanitize the text\n const sanitizedText = DOMPurify.sanitize(dirtyHTML)\n\n // OLD CODE for bolding numbers, keeping in case we need to revert\n\n // // Define a regular expression to match numbers\n // const regex = /(\\d+)/g\n\n // // Split the text into parts based on the regex\n // const parts = sanitizedText.split(regex)\n\n // // Map through the parts, wrapping numbers in <strong> tags\n // const formattedText = parts.map((part, index) => {\n // if (part.match(regex)) {\n // return <span key={index}>{part}</span>\n // } else {\n // return part\n // }\n // })\n\n return <div dangerouslySetInnerHTML={{ __html: sanitizedText }} />\n }\n\n const handleNavigation = (notificationId) => {\n if (isNavigational) {\n navigate(`${pageLink}`)\n toast.dismiss(notificationId)\n }\n }\n\n // map icons to notification types\n const icons = {\n newContent: <FontAwesomeIcon icon={fabReadme} color=\"#37c742\" size=\"2x\" />,\n motivational: <FontAwesomeIcon icon={farLightbulbOn} color=\"#e07306\" size=\"2x\" />,\n accomplishment: <FontAwesomeIcon icon={farCompass} color=\"#c737d3\" size=\"2x\" />,\n initial: <FontAwesomeIcon icon={farMapMarkerAlt} color=\"#00b8ef\" size=\"2x\" />,\n }\n\n return (\n <>\n <div\n className={`notifications-toast-item ${type} ${isNavigational ? \"link\" : \"\"}`}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role={`${isNavigational ? \"link\" : \"\"}`}\n onClick={() => handleNavigation(notificationId)}\n >\n <div className={`notifications-toast-item-circle ${type}`}>\n <i>{icons[type]}</i>\n </div>\n <div className=\"notifications-toast-item-message\">\n <label>{locale === \"es-ES\" ? headingEs : heading}</label>\n <span>\n <CleanHTML dirtyHTML={locale === \"es-ES\" ? messageEs : message} />\n </span>\n\n <span style={isRead ? { fontStyle: \"italic\", color: \"#959595\" } : { fontWeight: \"bold\" }}>{/* {displayTime} */}</span>\n {isNavigational && (\n <div style={{ float: \"right\" }}>\n <FontAwesomeIcon icon={faArrowRight} size=\"1x\" />\n </div>\n )}\n </div>\n </div>\n </>\n )\n}\n\nexport default sendUserNotificationToast\n","import { useState, useEffect } from \"react\"\nimport { useDailyQuest } from \"../daily-quest/useDailyQuest\"\nimport LEVELS from \"../levels/Levels\"\nimport sendUserNotificationToast from \"../toasts/user-notification-toast\"\n\n/**\n * Custom React hook for managing local Firestore state.\n * @param {Object} firebase - Firebase instance with required methods.\n * @returns {Object} - State variables and methods for interacting with local Firestore.\n */\nconst useLocalFirestore = firebase => {\n // states for local Firestore\n const [assessmentRecord, setAssessmentRecord] = useState([])\n const [activityRecord, setActivityRecord] = useState(null)\n const [storyMetricsRecord, setStoryMetricsRecord] = useState([])\n const [storyRatingsRecord, setStoryRatingsRecord] = useState([])\n const [notificationsRecord, setNotificationsRecord] = useState([])\n const [educatorNotificationsRecord, setEducatorNotificationsRecord] = useState([])\n const [educatorStudentGroups, setEducatorStudentGroups] = useState([])\n const [scheduledNotificationsRecord, setScheduledNotificationsRecord] = useState([])\n const [loadedActivities, setLoadedActivities] = useState([])\n const [dailyQuest, setDailyQuest] = useState([])\n const [dailyQuestId, setDailyQuestId] = useState(null)\n const [isInitialized, setIsInitialized] = useState(false)\n const [pointTotalRecord, setPointTotalRecord] = useState(null)\n const [level, setLevel] = useState(null)\n\n // loading states\n const [isQuestLoading, setIsQuestLoading] = useState(true)\n\n // misc variables and hooks\n const dailyQuestsData = useDailyQuest()\n\n useEffect(() => {\n /**\n * Initialize the local Firestore state.\n * Fetches user activity record, story ratings record, and story metrics record.\n */\n const init = async () => {\n const userId = firebase?.auth?._delegate?.currentUser?.uid || null\n\n if (isInitialized) return\n if (!userId) return\n\n initDailyQuestWithResponses()\n\n const storyRatingsRecordRes = await firebase.getUserStoryRatingsRecord(userId)\n const storyMetricsRecordRes = await firebase.getAllStoryMetrics()\n const assessmentRecordRes = await firebase.getAssessmentRecord(userId)\n\n setStoryMetricsRecord(storyMetricsRecordRes?.data?.storyMetrics || [])\n setStoryRatingsRecord(storyRatingsRecordRes?.data?.storyRatings || [])\n setAssessmentRecord(assessmentRecordRes || [])\n\n setIsInitialized(true)\n }\n\n const initDailyQuestWithResponses = async () => {\n setIsQuestLoading(true)\n try {\n const { question_playlist, active_group } = dailyQuestsData.find(({ locale }) => locale === \"en-US\")?.metadata || {}\n const todaysQuestId = question_playlist?.[active_group].id\n const todaysQuestStoryImage = question_playlist?.[active_group]?.metadata?.daily_quest_story?.metadata?.story_personal_photo?.imgix_url\n const todaysQuestStorySlug = question_playlist?.[active_group]?.metadata?.daily_quest_story?.slug\n\n // record of users responses to daily quest questions, may be incomplete or ordered different than displayed\n const dailyQuestResponseRecord = (await firebase.getDailyQuestRecord(todaysQuestId)) || []\n\n // record of users responses to daily quest questions, complete and ordered as displayed\n const completeQuestData = question_playlist[active_group].metadata.daily_quest_questions.map(question => {\n const matchingValueFromRecord = dailyQuestResponseRecord?.questResponses?.find(response => response.promptId === question.id) || null\n\n return {\n ...question.metadata,\n promptId: question.id,\n response: matchingValueFromRecord?.response || null,\n storyImage: todaysQuestStoryImage,\n storySlug: todaysQuestStorySlug,\n }\n })\n setDailyQuestId(todaysQuestId)\n setDailyQuestRecord(completeQuestData)\n } catch (e) {\n console.error(e)\n }\n setIsQuestLoading(false)\n }\n\n init()\n }, [firebase?.auth?._delegate?.currentUser?.uid, isInitialized])\n\n /**\n * Add an activity to the local record and update Firestore.\n * @param {Object} activity - The activity to be added.\n */\n const addActivity = async activity => {\n setActivityRecord(prevActivityRecord => [...prevActivityRecord, activity])\n await firebase.setActivityCompletion(activity)\n }\n\n /**\n * Remove an activity from the local record and update Firestore.\n * @param {Object} param0 - The ID of the activity to be removed.\n */\n const removeActivity = async ({ slug }) => {\n const updatedActivityRecord = activityRecord.filter(activity => activity.slug !== slug)\n setActivityRecord(updatedActivityRecord)\n await firebase.unsetActivityCompletion({ slug })\n }\n\n /**\n * Set the daily quest record in the local state.\n * @param {Array} questPlaylist - The daily quest playlist to be set.\n */\n const setDailyQuestRecord = questPlaylist => {\n setDailyQuest(questPlaylist)\n }\n\n /**\n * Set the response for a specific prompt in the daily quest and update Firestore.\n * @param {Object} param0 - The response and prompt ID to be set.\n */\n const setDailyQuestResponse = async ({ response, promptId }) => {\n const activityIndex = dailyQuest.findIndex(question => question.promptId === promptId)\n\n setDailyQuest(prevDailyQuest => {\n const updatedQuest = [...prevDailyQuest]\n updatedQuest[activityIndex].response = response\n return updatedQuest\n })\n\n await firebase.setDailyQuest({\n questId: dailyQuestId,\n promptId,\n response,\n })\n }\n\n /**\n * Get the results of the daily quest.\n * @returns {Object} - Object containing total correct, total questions, and points awarded.\n */\n const getDailyQuestResults = () => {\n let totalCorrect = 0\n\n dailyQuest.forEach(question => {\n switch (question.question_type.value) {\n case \"multiple choice\":\n if (question.response === question.multiple_choice_answer) {\n totalCorrect++\n }\n break\n case \"yes / no\":\n case \"open response\":\n if (!!question.response) {\n totalCorrect++\n }\n break\n default:\n break\n }\n })\n\n let points = totalCorrect\n\n return {\n totalCorrect,\n totalQuestions: dailyQuest.length,\n pointsAwarded: points,\n }\n }\n\n /**\n * Get the completion status of the daily quest.\n * @returns {Object} - Object containing quest completion status and current question index.\n */\n const getDailyQuestCompletionStatus = () => {\n const currentQuestionIndex = dailyQuest.findIndex(prompt => prompt.response === null)\n\n if (currentQuestionIndex === -1) {\n return {\n questCompletionStatus: \"COMPLETE\",\n currentQuestionIndex: dailyQuest.length - 1,\n }\n } else {\n return {\n questCompletionStatus: \"ACTIVE\",\n currentQuestionIndex,\n }\n }\n }\n\n /**\n * Update the user's story ratings record and story metrics record.\n * @param {Object} param0 - Object containing story ID, rating, and name.\n * @returns {Object} - Object containing updated rating count and average.\n */\n const updateStoryRatingsRecord = async ({ storySlug, rating, name }) => {\n const storyMetrics = storyMetricsRecord.find(r => r.storySlug === storySlug)\n const storyMetricsIndex = storyMetricsRecord.findIndex(r => r.storySlug === storySlug)\n const userStoryRating = storyRatingsRecord.find(r => r.storySlug === storySlug)\n const userStoryRatingIndex = storyRatingsRecord.findIndex(r => r.storySlug === storySlug)\n\n let ratingCount\n let ratingAverage\n\n if (!storyMetrics && !userStoryRating) {\n ratingCount = 1\n ratingAverage = rating\n } else if (storyMetrics && !userStoryRating) {\n ratingCount = storyMetrics.ratingCount + 1\n ratingAverage = (storyMetrics.ratingAverage * storyMetrics.ratingCount + rating) / ratingCount\n } else if (!storyMetrics && userStoryRating) {\n ratingCount = 1\n ratingAverage = rating\n } else if (storyMetrics && userStoryRating) {\n ratingCount = storyMetrics.ratingCount\n ratingAverage = (storyMetrics.ratingAverage * storyMetrics.ratingCount - userStoryRating.rating + rating) / ratingCount\n }\n\n if (storyMetrics) {\n // Update metrics record if it exists\n setStoryMetricsRecord(prev => {\n const updatedMetrics = [...prev]\n updatedMetrics[storyMetricsIndex] = {\n storySlug,\n ratingAverage,\n ratingCount,\n }\n return updatedMetrics\n })\n } else {\n // Add new metrics record if it doesn't exist\n setStoryMetricsRecord(prev => [...prev, { storySlug, ratingAverage, ratingCount }])\n }\n\n if (userStoryRating) {\n // Update rating record if it exists\n setStoryRatingsRecord(prev => {\n const updatedRatings = [...prev]\n updatedRatings[userStoryRatingIndex] = { storySlug, rating, name }\n return updatedRatings\n })\n } else {\n // Add new rating record if it doesn't exist\n setStoryRatingsRecord(prev => [...prev, { storySlug, rating, name }])\n }\n\n return { ratingCount, ratingAverage }\n }\n\n /**\n * Mark all notifications as read and update Firestore. Needs to happen immediately here for quickest feedback\n */\n const markUserNotificationsAsRead = async () => {\n const notifications = notificationsRecord.map(notification => {\n return {\n ...notification,\n isRead: true,\n }\n })\n setNotificationsRecord(notifications)\n await firebase.markUserNotificationsAsRead()\n }\n\n const deleteUserNotification = async notificationId => {\n setNotificationsRecord(prevNotificationsRecord => prevNotificationsRecord.filter(notification => notification.notificationId !== notificationId))\n await firebase.deleteUserNotification({ notificationId })\n }\n\n // observes changes made to the scheduledNotificationsRecord array, if there are any then it will schedule a notification for publication at the time indicated by the publicationDate field\n // scheduled notifcations that are past their date will be published immediately, and removed from the scheduledNotificationsRecord array. This will not produce toast notifications if older than 10 seconds\n useEffect(() => {\n const isDateInThePast = date => {\n const now = new Date()\n return date < now\n }\n\n const waitUntilDateTime = targetDateTime => {\n return new Promise(resolve => {\n const now = new Date().getTime()\n const target = new Date(targetDateTime).getTime()\n const delay = target - now\n\n if (delay <= 0) {\n // If the target date is already passed, resolve immediately\n resolve()\n } else {\n // Otherwise, wait until the target date\n setTimeout(resolve, delay)\n }\n })\n }\n\n // Function to deliver a notification at specific time\n const deliverDelayedNotification = async (date, notificationId) => {\n await waitUntilDateTime(date)\n\n // firebase call to move into notifications array from scheduledNotifications array\n await firebase.publishScheduledUserNotification({ notificationId })\n }\n\n // Define a variable to hold the setTimeout IDs\n let timeouts = []\n\n scheduledNotificationsRecord.forEach(undeliveredNotification => {\n const timeObject = undeliveredNotification.publicationDate\n const notificationId = undeliveredNotification.notificationId\n\n // Convert nanoseconds to milliseconds\n const milliseconds = Math.floor(timeObject.nanoseconds / 1000000)\n\n // Create a new Date object and set its time\n const date = new Date(timeObject.seconds * 1000 + milliseconds)\n\n if (!isDateInThePast(date)) {\n const timeoutId = setTimeout(() => deliverDelayedNotification(date, notificationId), date.getTime() - new Date().getTime())\n timeouts.push(timeoutId) // Push the timeout ID to the array\n }\n })\n\n // Clear all the timeouts when the component unmounts or when scheduledNotificationsRecord changes\n return () => {\n timeouts.forEach(timeoutId => clearTimeout(timeoutId))\n }\n }, [scheduledNotificationsRecord])\n\n /**\n * Function for handling new notifications, called by the Firebase listener.\n * This function will check if a new notification is within 10 seconds of the current time and display a toast notification if so.\n *\n * @param {Array} newNotifications\n */\n const handleNewNotifications = newNotifications => {\n // setting local state with new notifications and performing a check to see if any notifications are new\n setNotificationsRecord(prevActivityRecord => {\n\n const findUnmatchedObjects = (arr1, arr2) => {\n // Create a map of ids from the first array for efficient lookup\n const idMap = {}\n arr1.forEach(obj => {\n idMap[obj.notificationId] = true\n })\n\n // Filter objects from the second array that don't have a matching id in the first array\n return arr2.filter(obj => !idMap[obj.notificationId])\n }\n\n // any new notifications that are not in the previous record, will be full record on initial load, and then only new notifications after that\n const unmatchedNotifications = findUnmatchedObjects(prevActivityRecord, newNotifications)\n\n // check each new notification to see if it was published within the last 10 seconds\n unmatchedNotifications.forEach(notification => {\n const timeObject = notification.publicationDate\n\n // Convert nanoseconds to milliseconds\n const milliseconds = Math.floor(timeObject.nanoseconds / 1000000)\n\n // Create a new Date object and set its time\n const date = new Date(timeObject.seconds * 1000 + milliseconds)\n\n const isWithinTenSeconds = (date) => {\n const now = new Date() // Get current time\n const difference = Math.abs(now.getTime() - date.getTime()) // Calculate difference in milliseconds\n return difference <= 15000 // Check if within 1 seconds (10000 milliseconds)\n }\n\n if (isWithinTenSeconds(date)) {\n sendUserNotificationToast(notification)\n }\n })\n\n return [...newNotifications]\n })\n }\n\n useEffect(() => {\n if (pointTotalRecord !== null) {\n const userLevel = LEVELS.findIndex(level => pointTotalRecord >= level.points[0] && pointTotalRecord < level.points[1])\n setLevel(userLevel)\n }\n }, [pointTotalRecord])\n\n useEffect(() => {\n const loadGroups = async () => {\n const data = await firebase?.getActiveGroupMembersById('student')\n return data\n }\n loadGroups()\n .then((response) => {\n if (response) {\n setEducatorStudentGroups(response?.data)\n }\n })\n .catch((error) => {\n console.error(\"Failed Loading Groups list:-\", error)\n })\n }, [educatorNotificationsRecord])\n\n return {\n assessmentRecord,\n activityRecord,\n storyMetricsRecord,\n storyRatingsRecord,\n notificationsRecord,\n educatorNotificationsRecord,\n educatorStudentGroups,\n loadedActivities,\n dailyQuest,\n dailyQuestId,\n isInitialized,\n isQuestLoading,\n pointTotalRecord,\n level,\n setScheduledNotificationsRecord,\n setEducatorNotificationsRecord,\n addActivity,\n removeActivity,\n setNotificationsRecord,\n markUserNotificationsAsRead,\n deleteUserNotification,\n setActivityRecord,\n setLoadedActivities,\n setDailyQuestRecord,\n setDailyQuestId,\n setDailyQuestResponse,\n getDailyQuestResults,\n getDailyQuestCompletionStatus,\n updateStoryRatingsRecord,\n setPointTotalRecord,\n handleNewNotifications,\n }\n}\n\nexport default useLocalFirestore\n","import { useStaticQuery, graphql } from \"gatsby\"\n\nexport const useDailyQuest = () => {\n const { allCosmicjsDailyQuest } = useStaticQuery(graphql`\n query {\n allCosmicjsDailyQuest {\n nodes {\n slug\n id\n title\n locale\n metadata {\n active_group\n question_playlist {\n id\n metadata {\n daily_quest_story {\n slug\n metadata {\n story_personal_photo {\n imgix_url\n }\n }\n }\n daily_quest_questions {\n id\n metadata {\n question_type {\n value\n }\n question_prompt\n question_prompt_es\n multiple_choice_option_1\n multiple_choice_option_2\n multiple_choice_option_3\n multiple_choice_option_4\n multiple_choice_option_1_es\n multiple_choice_option_2_es\n multiple_choice_option_3_es\n multiple_choice_option_4_es\n open_response_answer\n multiple_choice_answer\n }\n }\n }\n }\n }\n }\n }\n }\n `)\n return allCosmicjsDailyQuest.nodes\n}\n","import { useState, useEffect } from \"react\"\n\n// This is a custom hook that handles notifications, local state is used to keep track of dynamic values used in composing notifications\nconst useSiteMetrics = (firebase) => {\n const [isInitialized, setIsInitialized] = useState(false)\n\n useEffect(() => {\n /**\n * Initialize so that we can check if the user is logged in before any actions are taken\n */\n const init = async () => {\n const userId = firebase?.auth?._delegate?.currentUser?.uid || null\n\n if (isInitialized) return\n if (!userId) return\n logUserSiteVisit()\n setIsInitialized(true)\n }\n\n init()\n }, [firebase?.auth?._delegate?.currentUser?.uid, isInitialized])\n\n const logUserSiteVisit = async () => {\n const detectBrowserName = () => {\n const userAgent = navigator.userAgent\n\n if (userAgent.includes(\"Chrome\") && !userAgent.includes(\"Edg\")) {\n return \"Chrome\"\n } else if (userAgent.includes(\"Safari\") && !userAgent.includes(\"Chrome\")) {\n return \"Safari\"\n } else if (userAgent.includes(\"Firefox\")) {\n return \"Firefox\"\n } else if (userAgent.includes(\"MSIE\") || userAgent.includes(\"Trident\")) {\n return \"Internet Explorer\"\n } else if (userAgent.includes(\"Edg\")) {\n return \"Edge\"\n } else {\n return \"Unknown\"\n }\n }\n\n const detectDeviceType = () => {\n const userAgent = navigator.userAgent\n\n if (/Mobi|Android/i.test(userAgent)) {\n return \"Mobile\"\n } else if (/Tablet|iPad/i.test(userAgent)) {\n return \"Tablet\"\n } else {\n return \"Desktop\"\n }\n }\n\n const detectOperatingSystem = () => {\n const userAgent = navigator.userAgent.toLowerCase() // Normalize to lower case\n\n if (userAgent.includes(\"win\")) {\n return \"Windows\"\n } else if (userAgent.includes(\"mac\")) {\n return \"macOS\"\n } else if (userAgent.includes(\"linux\")) {\n return \"Linux\"\n } else if (userAgent.includes(\"android\")) {\n return \"Android\"\n } else if (userAgent.includes(\"iphone\") || userAgent.includes(\"ipad\")) {\n return \"iOS\"\n } else {\n return \"Unknown\" // If no match is found\n }\n }\n\n const detectBrowserVersion = () => {\n const userAgent = navigator.userAgent\n let match\n\n // Checking for common browser version patterns\n if ((match = userAgent.match(/Chrome\\/([0-9.]+)/))) {\n return match[1] // Extract the version from Chrome\n } else if ((match = userAgent.match(/Firefox\\/([0-9.]+)/))) {\n return match[1] // Extract the version from Firefox\n } else if ((match = userAgent.match(/Version\\/([0-9.]+)/))) {\n return match[1] // Extract the version from Safari\n } else if ((match = userAgent.match(/Edge\\/([0-9.]+)/))) {\n return match[1] // Extract the version from Edge\n } else if ((match = userAgent.match(/Trident.*rv:([0-9.]+)/))) {\n return match[1] // Extract the version from Internet Explorer 11\n }\n\n return \"Unknown\" // Return \"Unknown\" if no match is found\n }\n\n const browserName = detectBrowserName()\n const browserVersion = detectBrowserVersion()\n const deviceType = detectDeviceType()\n const operatingSystem = detectOperatingSystem()\n\n const userSiteVisit = {\n os: operatingSystem,\n browser: browserName,\n browserVersion: browserVersion,\n device: deviceType,\n }\n\n await firebase.logUserSiteVisit(userSiteVisit)\n }\n\n return {}\n}\n\nexport default useSiteMetrics\n","import { useEffect, useState } from \"react\"\nimport getFirebaseInstance from \"./firebase\"\nimport useLocalFirestore from \"./useLocalFirestore\"\nimport useNotifications from \"../notifications/useNotifications\"\nimport useSiteMetrics from \"../siteMetrics/useSiteMetrics\"\nimport { hotjar } from \"react-hotjar\"\n\nfunction useAuth() {\n const [user, setUser] = useState(null)\n const [firebase, setFirebase] = useState(null)\n const [loading, setLoading] = useState(true)\n const [profile, setProfile] = useState(null)\n const [globalSiteConfig, setGlobalSiteConfig] = useState(null)\n\n const localFirestore = useLocalFirestore(firebase)\n const notifier = useNotifications(firebase)\n const siteMetrics = useSiteMetrics(firebase)\n\n const updateAssessment = async () => {\n const assessmentRecord = await firebase?.getAssessmentRecord(user.uid)\n\n if (assessmentRecord) {\n setProfile({ ...profile, assessmentRecord })\n }\n }\n\n useEffect(() => {\n if (!!profile) {\n hotjar.initialize(\"3484205\", \"6\")\n\n const { userId } = profile\n if (userId) {\n hotjar.identify(userId)\n }\n }\n }, [profile])\n\n useEffect(() => {\n let unsubscribe\n let profileUnsubscribe\n let globalSiteConfigUnsubscribe\n let userActivitiesUnsubscribe\n let userNotificationsUnsubscribe\n let userPointTotalUnsubscribe\n\n const firebaseInstance = getFirebaseInstance()\n setFirebase(firebaseInstance)\n\n unsubscribe = firebaseInstance.auth.onAuthStateChanged((userResult) => {\n if (userResult) {\n firebaseInstance.loginCount(userResult.uid)\n profileUnsubscribe = firebaseInstance.getUserProfile({\n userId: userResult.uid,\n onSnapshot: async (r) => {\n const userMembership = await firebaseInstance.getUserMembership(userResult.uid)\n const assessmentRecord = await firebaseInstance.getAssessmentRecord(userResult.uid)\n\n setUser({\n ...userResult,\n email: userResult._delegate.email,\n providerId: userResult._delegate.providerId,\n membership: userMembership,\n })\n\n setProfile(r.empty ? null : { ...r.data(), assessmentRecord })\n\n setLoading(false)\n },\n })\n\n globalSiteConfigUnsubscribe = firebaseInstance.getGlobalSiteConfig({\n onSnapshot: async (r) => {\n const globalSiteConfig = r.data()\n setGlobalSiteConfig(globalSiteConfig)\n },\n })\n\n userActivitiesUnsubscribe = firebaseInstance.subscribeToUserActivities({\n onSnapshot: async (r) => {\n const object = r.data()\n localFirestore.setActivityRecord(object?.completedActivities || [])\n },\n })\n\n userNotificationsUnsubscribe = firebaseInstance.subscribeToUserNotifications({\n onSnapshot: async (r) => {\n const object = r.data()\n\n const notifications = object?.notifications?.filter((notification) => notification.isHidden !== true) || []\n const educatorNotifications = object?.educatorNotifications?.filter((notification) => notification.isHidden !== true) || []\n\n const scheduledNotifications = object?.scheduledNotifications || []\n\n // Get the current date\n const currentDate = new Date()\n\n // Function to convert expiration data to JavaScript Date\n function getDateFromTimestamp(timestamp) {\n if (!timestamp) return null\n const { seconds, nanoseconds } = timestamp\n const milliseconds = seconds * 1000 + nanoseconds / 1000000\n return new Date(milliseconds)\n }\n\n const sortedNotifications = notifications\n .sort((a, b) => {\n return b.publicationDate - a.publicationDate\n })\n .filter((item) => {\n const expDate = getDateFromTimestamp(item.expirationDate)\n return !expDate || expDate > currentDate // keep if no expiration date or expiration is in the future\n })\n\n const sortedEducatorNotifications = educatorNotifications\n .sort((a, b) => {\n return b.publicationDate - a.publicationDate\n })\n .filter((item) => {\n const expDate = getDateFromTimestamp(item.expirationDate)\n return !expDate || expDate > currentDate // keep if no expiration date or expiration is in the future\n })\n\n localFirestore.handleNewNotifications(sortedNotifications || [])\n localFirestore.setScheduledNotificationsRecord(scheduledNotifications || [])\n localFirestore.setEducatorNotificationsRecord(sortedEducatorNotifications || [])\n notifier.setHistoricalNotificationsRecord(object?.notifications || [])\n notifier.setHistoricalEducatorNotificationsRecord(object?.educatorNotifications || [])\n },\n })\n\n userPointTotalUnsubscribe = firebaseInstance.subscribeToUserPointTotal({\n onSnapshot: async (r) => {\n const object = r.data()\n const pointTotal = object?.pointTotal || null\n localFirestore.setPointTotalRecord(pointTotal)\n },\n })\n } else {\n // When we no longer have a logged in user\n // we cancel the snapshot listener for their profile.\n if (profileUnsubscribe) {\n profileUnsubscribe()\n }\n if (globalSiteConfigUnsubscribe) {\n globalSiteConfigUnsubscribe()\n }\n\n if (userActivitiesUnsubscribe) {\n userActivitiesUnsubscribe()\n }\n\n if (userNotificationsUnsubscribe) {\n userNotificationsUnsubscribe()\n }\n\n if (userPointTotalUnsubscribe) {\n userPointTotalUnsubscribe()\n }\n\n setUser(null)\n setLoading(false)\n setProfile(null)\n }\n })\n\n return () => {\n // on unmount, cancel firebase snapshot listeners\n if (unsubscribe) {\n unsubscribe()\n }\n\n if (profileUnsubscribe) {\n profileUnsubscribe()\n }\n }\n }, [])\n\n return {\n user,\n firebase,\n loading,\n profile,\n globalSiteConfig,\n updateAssessment,\n localFirestore,\n notifier,\n }\n}\n\nexport default useAuth\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","// @generated from time-data-gen.ts\n// prettier-ignore \nexport var timeData = {\n \"001\": [\n \"H\",\n \"h\"\n ],\n \"AC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AD\": [\n \"H\",\n \"hB\"\n ],\n \"AE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"AF\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"AG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AL\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"AM\": [\n \"H\",\n \"hB\"\n ],\n \"AO\": [\n \"H\",\n \"hB\"\n ],\n \"AR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"AS\": [\n \"h\",\n \"H\"\n ],\n \"AT\": [\n \"H\",\n \"hB\"\n ],\n \"AU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AW\": [\n \"H\",\n \"hB\"\n ],\n \"AX\": [\n \"H\"\n ],\n \"AZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BD\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"BE\": [\n \"H\",\n \"hB\"\n ],\n \"BF\": [\n \"H\",\n \"hB\"\n ],\n \"BG\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"BJ\": [\n \"H\",\n \"hB\"\n ],\n \"BL\": [\n \"H\",\n \"hB\"\n ],\n \"BM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BN\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"BO\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"BQ\": [\n \"H\"\n ],\n \"BR\": [\n \"H\",\n \"hB\"\n ],\n \"BS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BT\": [\n \"h\",\n \"H\"\n ],\n \"BW\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BZ\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CA\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"CC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CD\": [\n \"hB\",\n \"H\"\n ],\n \"CF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CG\": [\n \"H\",\n \"hB\"\n ],\n \"CH\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"CI\": [\n \"H\",\n \"hB\"\n ],\n \"CK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CL\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CN\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"CO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"CP\": [\n \"H\"\n ],\n \"CR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CU\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CV\": [\n \"H\",\n \"hB\"\n ],\n \"CX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CY\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"CZ\": [\n \"H\"\n ],\n \"DE\": [\n \"H\",\n \"hB\"\n ],\n \"DG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"DJ\": [\n \"h\",\n \"H\"\n ],\n \"DK\": [\n \"H\"\n ],\n \"DM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"DO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"DZ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"EC\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"EE\": [\n \"H\",\n \"hB\"\n ],\n \"EG\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ER\": [\n \"h\",\n \"H\"\n ],\n \"ES\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"ET\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"FI\": [\n \"H\"\n ],\n \"FJ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"FM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FR\": [\n \"H\",\n \"hB\"\n ],\n \"GA\": [\n \"H\",\n \"hB\"\n ],\n \"GB\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GD\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GE\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"GF\": [\n \"H\",\n \"hB\"\n ],\n \"GG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GH\": [\n \"h\",\n \"H\"\n ],\n \"GI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GN\": [\n \"H\",\n \"hB\"\n ],\n \"GP\": [\n \"H\",\n \"hB\"\n ],\n \"GQ\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"GR\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"GT\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"GU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GW\": [\n \"H\",\n \"hB\"\n ],\n \"GY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"HK\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"HN\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"HR\": [\n \"H\",\n \"hB\"\n ],\n \"IC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"ID\": [\n \"H\"\n ],\n \"IE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IL\": [\n \"H\",\n \"hB\"\n ],\n \"IM\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IN\": [\n \"h\",\n \"H\"\n ],\n \"IO\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IQ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"IR\": [\n \"hB\",\n \"H\"\n ],\n \"IS\": [\n \"H\"\n ],\n \"IT\": [\n \"H\",\n \"hB\"\n ],\n \"JE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"JM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"JO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"JP\": [\n \"H\",\n \"h\",\n \"K\"\n ],\n \"KE\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"KG\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KH\": [\n \"hB\",\n \"h\",\n \"H\",\n \"hb\"\n ],\n \"KI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KM\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KN\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KP\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KW\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"KY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KZ\": [\n \"H\",\n \"hB\"\n ],\n \"LA\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"LB\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LI\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"LK\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"LR\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LS\": [\n \"h\",\n \"H\"\n ],\n \"LT\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"LU\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"LV\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"LY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MC\": [\n \"H\",\n \"hB\"\n ],\n \"MD\": [\n \"H\",\n \"hB\"\n ],\n \"ME\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"MF\": [\n \"H\",\n \"hB\"\n ],\n \"MH\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ML\": [\n \"H\"\n ],\n \"MM\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"MN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MP\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MQ\": [\n \"H\",\n \"hB\"\n ],\n \"MR\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MS\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MW\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MX\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MY\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"MZ\": [\n \"H\",\n \"hB\"\n ],\n \"NA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"NC\": [\n \"H\",\n \"hB\"\n ],\n \"NE\": [\n \"H\"\n ],\n \"NF\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NI\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"NL\": [\n \"H\",\n \"hB\"\n ],\n \"NP\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"NR\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NU\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"OM\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PE\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"PF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"PG\": [\n \"h\",\n \"H\"\n ],\n \"PH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PK\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"PM\": [\n \"H\",\n \"hB\"\n ],\n \"PN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"PR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PS\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PT\": [\n \"H\",\n \"hB\"\n ],\n \"PW\": [\n \"h\",\n \"H\"\n ],\n \"PY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"QA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"RE\": [\n \"H\",\n \"hB\"\n ],\n \"RO\": [\n \"H\",\n \"hB\"\n ],\n \"RS\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"RU\": [\n \"H\"\n ],\n \"SA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SC\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SD\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SE\": [\n \"H\"\n ],\n \"SG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SH\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SI\": [\n \"H\",\n \"hB\"\n ],\n \"SJ\": [\n \"H\"\n ],\n \"SK\": [\n \"H\"\n ],\n \"SL\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SN\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SO\": [\n \"h\",\n \"H\"\n ],\n \"SR\": [\n \"H\",\n \"hB\"\n ],\n \"SS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"ST\": [\n \"H\",\n \"hB\"\n ],\n \"SV\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"SX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"TC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TD\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"TF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"TG\": [\n \"H\",\n \"hB\"\n ],\n \"TL\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"TN\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"TO\": [\n \"h\",\n \"H\"\n ],\n \"TR\": [\n \"H\",\n \"hB\"\n ],\n \"TT\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TW\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"TZ\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UG\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"US\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"UY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"UZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"VA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"VC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VE\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"VG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VU\": [\n \"h\",\n \"H\"\n ],\n \"WF\": [\n \"H\",\n \"hB\"\n ],\n \"WS\": [\n \"h\",\n \"H\"\n ],\n \"XK\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"YE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"YT\": [\n \"H\",\n \"hB\"\n ],\n \"ZA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ZM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"af-ZA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"ar-001\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ca-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"en-001\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"es-BO\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-EC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-ES\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-GQ\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-PE\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"fr-CA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gl-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gu-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"hi-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"it-CH\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-IT\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"kn-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ml-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"mr-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"pa-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"ta-IN\": [\n \"hB\",\n \"h\",\n \"hb\",\n \"H\"\n ],\n \"te-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"zu-ZA\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ]\n};\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith && '_a'.startsWith('a', 1);\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.locale = options.locale;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('</')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n if (tagName !== closingTagName) {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (!this.bumpIf('>')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var dateTimePattern = skeleton;\n // Get \"best match\" pattern only if locale is passed, if not, let it\n // pass as-is where `parseDateTimeSkeleton()` will throw an error\n // for unsupported patterns.\n if (this.locale) {\n dateTimePattern = getBestPattern(skeleton, this.locale);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: dateTimePattern,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(dateTimePattern)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n var skeletonCopy = '';\n for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n var patternChar = skeleton.charAt(patternPos);\n if (patternChar === 'j') {\n var extraLength = 0;\n while (patternPos + 1 < skeleton.length &&\n skeleton.charAt(patternPos + 1) === patternChar) {\n extraLength++;\n patternPos++;\n }\n var hourLen = 1 + (extraLength & 1);\n var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n var dayPeriodChar = 'a';\n var hourChar = getDefaultHourSymbolFromLocale(locale);\n if (hourChar == 'H' || hourChar == 'k') {\n dayPeriodLen = 0;\n }\n while (dayPeriodLen-- > 0) {\n skeletonCopy += dayPeriodChar;\n }\n while (hourLen-- > 0) {\n skeletonCopy = hourChar + skeletonCopy;\n }\n }\n else if (patternChar === 'J') {\n skeletonCopy += 'H';\n }\n else {\n skeletonCopy += patternChar;\n }\n }\n return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n var hourCycle = locale.hourCycle;\n if (hourCycle === undefined &&\n // @ts-ignore hourCycle(s) is not identified yet\n locale.hourCycles &&\n // @ts-ignore\n locale.hourCycles.length) {\n // @ts-ignore\n hourCycle = locale.hourCycles[0];\n }\n if (hourCycle) {\n switch (hourCycle) {\n case 'h24':\n return 'k';\n case 'h23':\n return 'H';\n case 'h12':\n return 'h';\n case 'h11':\n return 'K';\n default:\n throw new Error('Invalid hourCycle');\n }\n }\n // TODO: Once hourCycle is fully supported remove the following with data generation\n var languageTag = locale.language;\n var regionTag;\n if (languageTag !== 'root') {\n regionTag = locale.maximize().region;\n }\n var hourCycles = timeData[regionTag || ''] ||\n timeData[languageTag || ''] ||\n timeData[\"\".concat(languageTag, \"-001\")] ||\n timeData['001'];\n return hourCycles[0];\n}\n","import { __assign } from \"tslib\";\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { IntlMessageFormat, } from 'intl-messageformat';\nimport { MissingTranslationError, MessageFormatError } from './error';\nimport { TYPE } from '@formatjs/icu-messageformat-parser';\nfunction setTimeZoneInOptions(opts, timeZone) {\n return Object.keys(opts).reduce(function (all, k) {\n all[k] = __assign({ timeZone: timeZone }, opts[k]);\n return all;\n }, {});\n}\nfunction deepMergeOptions(opts1, opts2) {\n var keys = Object.keys(__assign(__assign({}, opts1), opts2));\n return keys.reduce(function (all, k) {\n all[k] = __assign(__assign({}, (opts1[k] || {})), (opts2[k] || {}));\n return all;\n }, {});\n}\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n if (!timeZone) {\n return f1;\n }\n var mfFormats = IntlMessageFormat.formats;\n return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });\n}\nexport var formatMessage = function (_a, state, messageDescriptor, values, opts) {\n var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, fallbackOnEmptyString = _a.fallbackOnEmptyString, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;\n if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }\n var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;\n // `id` is a required field of a Message Descriptor.\n invariant(!!msgId, \"[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue\");\n var id = String(msgId);\n var message = \n // In case messages is Object.create(null)\n // e.g import('foo.json') from webpack)\n // See https://github.com/formatjs/formatjs/issues/1914\n messages &&\n Object.prototype.hasOwnProperty.call(messages, id) &&\n messages[id];\n // IMPORTANT: Hot path if `message` is AST with a single literal node\n if (Array.isArray(message) &&\n message.length === 1 &&\n message[0].type === TYPE.literal) {\n return message[0].value;\n }\n // IMPORTANT: Hot path straight lookup for performance\n if (!values &&\n message &&\n typeof message === 'string' &&\n !defaultRichTextElements) {\n return message.replace(/'\\{(.*?)\\}'/gi, \"{$1}\");\n }\n values = __assign(__assign({}, defaultRichTextElements), (values || {}));\n formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n if (!message) {\n if (fallbackOnEmptyString === false && message === '') {\n return message;\n }\n if (!defaultMessage ||\n (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())) {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale.\n onError(new MissingTranslationError(messageDescriptor, locale));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting default message for: \\\"\".concat(id, \"\\\", rendering default message verbatim\"), locale, messageDescriptor, e));\n return typeof defaultMessage === 'string' ? defaultMessage : id;\n }\n }\n return id;\n }\n // We have the translated message\n try {\n var formatter = state.getMessageFormat(message, locale, formats, __assign({ formatters: state }, (opts || {})));\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting message: \\\"\".concat(id, \"\\\", using \").concat(defaultMessage ? 'default message' : 'id', \" as fallback.\"), locale, messageDescriptor, e));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting the default message for: \\\"\".concat(id, \"\\\", rendering message verbatim\"), locale, messageDescriptor, e));\n }\n }\n if (typeof message === 'string') {\n return message;\n }\n if (typeof defaultMessage === 'string') {\n return defaultMessage;\n }\n return id;\n};\n","/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(\"\".concat(pl, \" InternalSlot has not been initialized\"));\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value,\n });\n}\nexport var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err) {\n if (Err === void 0) { Err = Error; }\n if (!condition) {\n throw new Err(message);\n }\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { IntlFormatError } from './error';\nvar NUMBER_FORMAT_OPTIONS = [\n 'style',\n 'currency',\n 'currencyDisplay',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n // ES2020 NumberFormat\n 'compactDisplay',\n 'currencyDisplay',\n 'currencySign',\n 'notation',\n 'signDisplay',\n 'unit',\n 'unitDisplay',\n 'numberingSystem',\n];\nexport function getFormatter(_a, getNumberFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = ((format &&\n getNamedFormat(formats, 'number', format, onError)) ||\n {});\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n return getNumberFormat(locale, filteredOptions);\n}\nexport function formatNumber(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).format(value);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting number.', config.locale, e));\n }\n return String(value);\n}\nexport function formatNumberToParts(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).formatToParts(value);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting number.', config.locale, e));\n }\n return [];\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style'];\nfunction getFormatter(_a, getRelativeTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = (!!format && getNamedFormat(formats, 'relative', format, onError)) || {};\n var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n return getRelativeTimeFormat(locale, filteredOptions);\n}\nexport function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n if (options === void 0) { options = {}; }\n if (!unit) {\n unit = 'second';\n }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n if (!RelativeTimeFormat) {\n config.onError(new FormatError(\"Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-relativetimeformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n try {\n return getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting relative time.', config.locale, e));\n }\n return String(value);\n}\n","import { __assign } from \"tslib\";\nimport { filterProps, getNamedFormat } from './utils';\nimport { IntlFormatError } from './error';\nvar DATE_TIME_FORMAT_OPTIONS = [\n 'formatMatcher',\n 'timeZone',\n 'hour12',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n 'hourCycle',\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n // 'dayPeriod',\n 'numberingSystem',\n 'fractionalSecondDigits',\n];\nexport function getFormatter(_a, type, getDateTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError, timeZone = _a.timeZone;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = __assign(__assign({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);\n if (type === 'time' &&\n !filteredOptions.hour &&\n !filteredOptions.minute &&\n !filteredOptions.second &&\n !filteredOptions.timeStyle &&\n !filteredOptions.dateStyle) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = __assign(__assign({}, filteredOptions), { hour: 'numeric', minute: 'numeric' });\n }\n return getDateTimeFormat(locale, filteredOptions);\n}\nexport function formatDate(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting date.', config.locale, e));\n }\n return String(date);\n}\nexport function formatTime(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting time.', config.locale, e));\n }\n return String(date);\n}\nexport function formatDateTimeRange(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var from = _a[0], to = _a[1], _b = _a[2], options = _b === void 0 ? {} : _b;\n var timeZone = config.timeZone, locale = config.locale, onError = config.onError;\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? { timeZone: timeZone } : {});\n try {\n return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n }\n catch (e) {\n onError(new IntlFormatError('Error formatting date time range.', config.locale, e));\n }\n return String(from);\n}\nexport function formatDateToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting date.', config.locale, e));\n }\n return [];\n}\nexport function formatTimeToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting time.', config.locale, e));\n }\n return [];\n}\n","import { filterProps } from './utils';\nimport { IntlFormatError } from './error';\nimport { ErrorCode, FormatError } from 'intl-messageformat';\nvar PLURAL_FORMAT_OPTIONS = ['type'];\nexport function formatPlural(_a, getPluralRules, value, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n if (!Intl.PluralRules) {\n onError(new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n try {\n return getPluralRules(locale, filteredOptions).select(value);\n }\n catch (e) {\n onError(new IntlFormatError('Error formatting plural.', locale, e));\n }\n return 'other';\n}\n","import { __assign } from \"tslib\";\nimport { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar LIST_FORMAT_OPTIONS = [\n 'type',\n 'style',\n];\nvar now = Date.now();\nfunction generateToken(i) {\n return \"\".concat(now, \"_\").concat(i, \"_\").concat(now);\n}\nexport function formatList(opts, getListFormat, values, options) {\n if (options === void 0) { options = {}; }\n var results = formatListToParts(opts, getListFormat, values, options).reduce(function (all, el) {\n var val = el.value;\n if (typeof val !== 'string') {\n all.push(val);\n }\n else if (typeof all[all.length - 1] === 'string') {\n all[all.length - 1] += val;\n }\n else {\n all.push(val);\n }\n return all;\n }, []);\n return results.length === 1 ? results[0] : results.length === 0 ? '' : results;\n}\nexport function formatListToParts(_a, getListFormat, values, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var ListFormat = Intl.ListFormat;\n if (!ListFormat) {\n onError(new FormatError(\"Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-listformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);\n try {\n var richValues_1 = {};\n var serializedValues = values.map(function (v, i) {\n if (typeof v === 'object') {\n var id = generateToken(i);\n richValues_1[id] = v;\n return id;\n }\n return String(v);\n });\n return getListFormat(locale, filteredOptions)\n .formatToParts(serializedValues)\n .map(function (part) {\n return part.type === 'literal'\n ? part\n : __assign(__assign({}, part), { value: richValues_1[part.value] || part.value });\n });\n }\n catch (e) {\n onError(new IntlFormatError('Error formatting list.', locale, e));\n }\n // @ts-ignore\n return values;\n}\n","import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar DISPLAY_NAMES_OPTONS = [\n 'style',\n 'type',\n 'fallback',\n 'languageDisplay',\n];\nexport function formatDisplayName(_a, getDisplayNames, value, options) {\n var locale = _a.locale, onError = _a.onError;\n var DisplayNames = Intl.DisplayNames;\n if (!DisplayNames) {\n onError(new FormatError(\"Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-displaynames\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);\n try {\n return getDisplayNames(locale, filteredOptions).of(value);\n }\n catch (e) {\n onError(new IntlFormatError('Error formatting display name.', locale, e));\n }\n}\n","import { __assign } from \"tslib\";\nimport { createFormatters, DEFAULT_INTL_CONFIG } from './utils';\nimport { InvalidConfigError, MissingDataError } from './error';\nimport { formatNumber, formatNumberToParts } from './number';\nimport { formatRelativeTime } from './relativeTime';\nimport { formatDate, formatDateToParts, formatTime, formatTimeToParts, formatDateTimeRange, } from './dateTime';\nimport { formatPlural } from './plural';\nimport { formatMessage } from './message';\nimport { formatList, formatListToParts } from './list';\nimport { formatDisplayName } from './displayName';\nfunction messagesContainString(messages) {\n var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n return typeof firstMessage === 'string';\n}\nfunction verifyConfigMessages(config) {\n if (config.onWarn &&\n config.defaultRichTextElements &&\n messagesContainString(config.messages || {})) {\n config.onWarn(\"[@formatjs/intl] \\\"defaultRichTextElements\\\" was specified but \\\"message\\\" was not pre-compiled. \\nPlease consider using \\\"@formatjs/cli\\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution\");\n }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport function createIntl(config, cache) {\n var formatters = createFormatters(cache);\n var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG), config);\n var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;\n if (!locale) {\n if (onError) {\n onError(new InvalidConfigError(\"\\\"locale\\\" was not configured, using \\\"\".concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details\")));\n }\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';\n }\n else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.NumberFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n }\n else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length &&\n onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.DateTimeFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n }\n verifyConfigMessages(resolvedConfig);\n return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), \n // @ts-expect-error TODO: will get to this later\n formatMessage: formatMessage.bind(null, resolvedConfig, formatters), \n // @ts-expect-error TODO: will get to this later\n $t: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __assign, __extends, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { Provider } from './injectIntl';\nimport { DEFAULT_INTL_CONFIG, invariantIntlContext, assignUniqueKeysToParts, shallowEqual, } from '../utils';\nimport { formatMessage as coreFormatMessage, createIntl as coreCreateIntl, createIntlCache, } from '@formatjs/intl';\nimport { isFormatXMLElementFn, } from 'intl-messageformat';\nfunction processIntlConfig(config) {\n return {\n locale: config.locale,\n timeZone: config.timeZone,\n fallbackOnEmptyString: config.fallbackOnEmptyString,\n formats: config.formats,\n textComponent: config.textComponent,\n messages: config.messages,\n defaultLocale: config.defaultLocale,\n defaultFormats: config.defaultFormats,\n onError: config.onError,\n onWarn: config.onWarn,\n wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n defaultRichTextElements: config.defaultRichTextElements,\n };\n}\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n if (!values) {\n return values;\n }\n return Object.keys(values).reduce(function (acc, k) {\n var v = values[k];\n acc[k] = isFormatXMLElementFn(v)\n ? assignUniqueKeysToParts(v)\n : v;\n return acc;\n }, {});\n}\nvar formatMessage = function (config, formatters, descriptor, rawValues) {\n var rest = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n rest[_i - 4] = arguments[_i];\n }\n var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n var chunks = coreFormatMessage.apply(void 0, __spreadArray([config,\n formatters,\n descriptor,\n values], rest, false));\n if (Array.isArray(chunks)) {\n return React.Children.toArray(chunks);\n }\n return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport var createIntl = function (_a, cache) {\n var rawDefaultRichTextElements = _a.defaultRichTextElements, config = __rest(_a, [\"defaultRichTextElements\"]);\n var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n var coreIntl = coreCreateIntl(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), { defaultRichTextElements: defaultRichTextElements }), cache);\n var resolvedConfig = {\n locale: coreIntl.locale,\n timeZone: coreIntl.timeZone,\n fallbackOnEmptyString: coreIntl.fallbackOnEmptyString,\n formats: coreIntl.formats,\n defaultLocale: coreIntl.defaultLocale,\n defaultFormats: coreIntl.defaultFormats,\n messages: coreIntl.messages,\n onError: coreIntl.onError,\n defaultRichTextElements: defaultRichTextElements,\n };\n return __assign(__assign({}, coreIntl), { \n // @ts-expect-error fix this\n formatMessage: formatMessage.bind(null, resolvedConfig, coreIntl.formatters), \n // @ts-expect-error fix this\n $t: formatMessage.bind(null, resolvedConfig, coreIntl.formatters) });\n};\nvar IntlProvider = /** @class */ (function (_super) {\n __extends(IntlProvider, _super);\n function IntlProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = createIntlCache();\n _this.state = {\n cache: _this.cache,\n intl: createIntl(processIntlConfig(_this.props), _this.cache),\n prevConfig: processIntlConfig(_this.props),\n };\n return _this;\n }\n IntlProvider.getDerivedStateFromProps = function (props, _a) {\n var prevConfig = _a.prevConfig, cache = _a.cache;\n var config = processIntlConfig(props);\n if (!shallowEqual(prevConfig, config)) {\n return {\n intl: createIntl(config, cache),\n prevConfig: config,\n };\n }\n return null;\n };\n IntlProvider.prototype.render = function () {\n invariantIntlContext(this.state.intl);\n return React.createElement(Provider, { value: this.state.intl }, this.props.children);\n };\n IntlProvider.displayName = 'IntlProvider';\n IntlProvider.defaultProps = DEFAULT_INTL_CONFIG;\n return IntlProvider;\n}(React.PureComponent));\nexport default IntlProvider;\n","import React from \"react\"\nimport { IntlProvider } from \"react-intl\"\n\nfunction SimpleLocalize(props) {\n const messages = props.pageContext.messages\n const language = props.pageContext.language\n return (\n <IntlProvider \n locale={language} \n messages={messages}\n defaultRichTextElements={{\n i: (text) => <i>{text}</i>,\n }}\n >\n {props.children}\n </IntlProvider>\n )\n}\n\nexport default SimpleLocalize\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { FirebaseContext } from \"../../components/Firebase\"\nimport SEO from \"../../components/seo\"\nimport ReactPasswordStrength from \"react-password-strength/dist/universal\"\nimport \"./account.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport ProfileImageModal from \"../../components/dashboard/portfolio-profile-image-modal\"\nimport PortfolioProfile from \"../../../static/assets/images/portfolio-profile-default.jpg\"\nimport { format } from \"util\"\nimport { Alert } from \"react-bootstrap\"\nimport { sendStandardToast } from \"../../components/toasts/standard-toast\"\nimport LoadingSpinner from \"../loading/LoadingSpinner\"\n\nconst MyAccount = ({ isEducatorView }) => {\n const { firebase, user, loading, profile } = useContext(FirebaseContext)\n const [errorMessages, setErrorMessages] = useState([])\n const [messages, setMessages] = useState([])\n const [formValues, setFormValues] = useState({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n password: \"\",\n confirmPassword: \"\",\n city: \"\",\n state: \"\",\n schools: [],\n groups: [],\n departments: [],\n campuses: [],\n role: \"\",\n gender: \"\",\n })\n const [errors, setErrors] = useState({})\n const [pointEvents, setPointEvents] = useState(null)\n const misMatchErrorMessage = \"Password and Password Confirm must match\"\n const weakPasswordMessage = \"Password is not strong enough\"\n const { locale } = useIntl()\n\n const formatRoleText = (role) => {\n // super admin, admin, educator, student\n switch (role) {\n case \"super-admin\":\n return \"Super Admin\"\n case \"admin\":\n return \"Admin\"\n case \"educator\":\n return \"Educator\"\n case \"student\":\n return \"Student\"\n default:\n return \"Student\"\n }\n }\n\n useEffect(() => {\n if (profile && firebase) {\n const getFullProfile = async () => {\n const educatorProfile = await firebase.getEducatorAccountInfo()\n const { user, schools, ownedGroups, memberOfGroups, departments, campuses } = educatorProfile.data\n\n setFormValues({\n ...formValues,\n firstName: profile.firstName ?? \"\",\n lastName: profile.lastName ?? \"\",\n email: profile.email ?? \"\",\n state: profile.state ?? \"\",\n city: profile.city ?? \"\",\n schools: schools || [],\n groups: ownedGroups || [],\n departments: departments || [],\n campuses: campuses || [],\n role: formatRoleText(user.role),\n })\n }\n getFullProfile()\n }\n }, [profile]) /* eslint-disable-line */\n\n useEffect(() => {\n let isCancelled = false\n\n if (loading) {\n return\n }\n\n if (firebase) {\n try {\n const loadPointEvents = async () => {\n const res = await firebase.loadPointEvents()\n if (!isCancelled && res) {\n setPointEvents(res.sort((a, b) => b.eventDate - a.eventDate))\n }\n }\n loadPointEvents()\n } catch (e) {\n console.error(\"💣\", e)\n }\n }\n\n return () => {\n isCancelled = true\n }\n }, [firebase, loading])\n\n function handleInputChange(e) {\n e.persist()\n setFormValues((currentValues) => ({\n ...currentValues,\n [e.target.name]: e.target.value,\n }))\n\n if (formValues.password && e.target.name === \"confirmPassword\") {\n const passwordError = e.target.value !== formValues.password ? misMatchErrorMessage : \"\"\n setErrors({\n ...errors,\n confirmPassword: passwordError,\n })\n }\n }\n\n function handlePasswordChange({ isValid, password }) {\n // if password is being changed, confirm should be wiped clear\n setFormValues({\n ...formValues,\n password: password,\n confirmPassword: \"\",\n })\n\n const prevErrors = errors\n\n if (!isValid && password.length > 0) {\n prevErrors.password = weakPasswordMessage\n } else {\n if (prevErrors.password) {\n delete prevErrors.password\n }\n }\n\n if (errors.confirmPassword) {\n delete errors.confirmPassword\n }\n\n setErrors(prevErrors)\n }\n\n function validates() {\n // password validation\n const validations = {}\n if (formValues.password) {\n if (formValues.password !== formValues.confirmPassword) {\n validations.confirmPassword = misMatchErrorMessage\n }\n }\n\n // carry over password validation\n if (errors.password === weakPasswordMessage) {\n validations.password = errors.password\n }\n\n // first and last name validation\n if (formValues.firstName.length < 2) {\n validations.firstName = \"First name is required and must be at least 2 characters\"\n }\n\n if (formValues.lastName.length < 2) {\n validations.lastName = \"Last name is required and must be at least 2 characters\"\n }\n\n setErrors(validations)\n return JSON.stringify(validations) === \"{}\"\n }\n\n async function handleSubmit(e) {\n e.preventDefault()\n\n setMessages([])\n\n if (!validates()) {\n setErrorMessages([\"Please correct the problems above\"])\n } else {\n setErrorMessages([])\n // set up firestore fields\n const profileData = {\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n email: formValues.email,\n city: formValues.city,\n state: formValues.state,\n }\n\n if (formValues.email !== user.email && user.providerData[0].providerId === \"password\") {\n try {\n await firebase.updateUserEmail(formValues.email)\n setMessages([...messages, \"Email address updated\"])\n } catch (e) {\n setErrorMessages([\n ...errorMessages,\n e.code === \"auth/requires-recent-login\"\n ? \"Updating email address or password is a sensitive operation. Please log in again before trying this request.\"\n : e.message,\n ])\n return\n }\n }\n\n if (formValues.password) {\n try {\n await firebase.updateUserPassword(formValues.password)\n setMessages([...messages, \"Password updated\"])\n } catch (e) {\n setErrorMessages([...errorMessages, e.message])\n return\n }\n }\n\n // Profile update\n try {\n await firebase.updateProfile({ userId: user.uid, data: profileData })\n\n if (isEducatorView) {\n setMessages([...messages, \"Account information has been updated\"])\n } else {\n sendStandardToast({\n type: \"success\",\n heading: \"Account information has been updated\",\n })\n }\n } catch (e) {\n setErrorMessages([...errorMessages, e.message])\n }\n }\n }\n\n if (profile === null || !!loading) {\n return <LoadingSpinner />\n }\n\n return (\n <div className=\"inner account\" style={{ padding: isEducatorView ? \"0px 0px\" : \"3rem 6rem \" }}>\n <h2>Account Information</h2>\n <div className=\"account-info\">\n <section className=\"account-info-details\">\n <form onSubmit={handleSubmit}>\n <div className=\"profile-info\">\n <div className=\"form-element\">\n <label htmlFor=\"firstName\">\n <FormattedMessage id=\"account-first-name\" defaultMessage=\"First Name\" /> <span className=\"input-required\">*</span>\n </label>\n <input onChange={handleInputChange} name=\"firstName\" type=\"text\" required value={formValues.firstName} />\n <span style={{ color: \"red\" }}>{errors.firstName}</span>\n </div>\n <div className=\"form-element\">\n <label htmlFor=\"lastName\">\n <FormattedMessage id=\"account-last-name\" defaultMessage=\"Last Name\" /> <span className=\"input-required\">*</span>\n </label>\n <input onChange={handleInputChange} name=\"lastName\" type=\"text\" required value={formValues.lastName} />\n <span style={{ color: \"red\" }}>{errors.lastName}</span>\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"email\">\n <FormattedMessage id=\"account-email\" defaultMessage=\"Email\" />\n </label>\n {!!user.providerData && user.providerData[0].providerId !== \"password\" && (\n <small>\n <FormattedMessage\n id=\"account-email-password-managed-by-provider\"\n defaultMessage=\"Your email and password is managed through your login provider\"\n />\n </small>\n )}\n <input onChange={handleInputChange} name=\"email\" type=\"text\" value={formValues.email} disabled={true} />\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"school\">\n <label>\n <FormattedMessage id=\"school\" defaultMessage=\"School\" />\n {formValues?.schools?.length > 1 ? \"s\" : \"\"}</label>\n </label>\n <textarea\n onChange={handleInputChange}\n name=\"school\"\n type=\"text\"\n rows={1}\n value={formValues.schools.map((school) => school.name).join(\", \")}\n disabled={true}\n />\n </div>\n\n {isEducatorView && (\n <>\n <div className=\"form-element\">\n <label htmlFor=\"department\">Departments</label>\n <textarea\n onChange={handleInputChange}\n name=\"department\"\n type=\"text\"\n rows={1}\n value={formValues.departments.map((department) => department.name).join(\", \")}\n disabled={true}\n />\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"campus\">Campuses</label>\n <textarea\n onChange={handleInputChange}\n name=\"campus\"\n type=\"text\"\n rows={1}\n value={formValues.campuses.map((campus) => campus.name).join(\", \")}\n disabled={true}\n />\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"group\">Groups</label>\n <textarea\n onChange={handleInputChange}\n name=\"group\"\n type=\"text\"\n rows={1}\n value={formValues.groups.map((group) => group.name).join(\", \")}\n disabled={true}\n />\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"role\">Role</label>\n <input onChange={handleInputChange} name=\"role\" type=\"text\" value={formValues.role} disabled={true} />\n </div>\n </>\n )}\n\n {!!user.providerData && user.providerData[0].providerId === \"password\" && (\n <>\n <div className=\"form-element\">\n <label htmlFor=\"password\">\n <FormattedMessage id=\"account-update-password\" defaultMessage=\"Update Password\" />: <span className=\"input-required\">*</span>\n </label>\n <span\n style={{\n fontWeight: \"normal\",\n color: \"#565656\",\n display: \"block\",\n }}\n >\n <FormattedMessage id=\"account-strength-meter\" defaultMessage=\"Strength Meter\" />:\n </span>\n <ReactPasswordStrength\n className=\"react-form-element\"\n minLength={8}\n minScore={2}\n scoreWords={[\"Weak\", \"Ok\", \"Good\", \"Strong\", \"Stronger\"]}\n inputProps={{ name: \"password\", autoComplete: \"off\" }}\n changeCallback={handlePasswordChange}\n />\n <span style={{ color: \"red\" }}>{errors.password}</span>\n </div>\n <div className=\"form-element\">\n <label htmlFor=\"confirmPassword\">\n <FormattedMessage id=\"account-confirm-password\" defaultMessage=\"Confirm Password\" />:\n </label>\n <input\n type=\"password\"\n name=\"confirmPassword\"\n value={formValues.confirmPassword}\n onChange={handleInputChange}\n style={{\n borderColor: errors.confirmPassword ? \"red\" : \"\",\n }}\n />\n {!!errors.confirmPassword && <span style={{ color: \"red\" }}>{errors.confirmPassword}</span>}\n </div>\n </>\n )}\n\n <div className=\"form-element\">\n <label htmlFor=\"city\">\n <FormattedMessage id=\"account-city\" defaultMessage=\"City\" />\n </label>\n <input onChange={handleInputChange} name=\"city\" type=\"text\" maxLength=\"50\" value={formValues.city} />\n </div>\n\n <div className=\"form-element\">\n <label htmlFor=\"state\">\n <FormattedMessage id=\"account-state\" defaultMessage=\"State\" />\n </label>\n <input onChange={handleInputChange} name=\"state\" type=\"text\" maxLength=\"15\" value={formValues.state} />\n </div>\n\n <div className=\"form-element\">\n <button className=\"component-button component-button-submit\" type=\"submit\" style={{maxWidth: 'unset'}}>\n <FormattedMessage id=\"account-save\" defaultMessage=\"Save\" />\n </button>\n </div>\n </div>\n\n {messages.length > 0 && (\n <section className=\"messages\" style={{ width: \"100%\" }}>\n <Alert variant=\"success\">\n <ul style={{ listStyleType: \"none\", margin: \"0\" }}>\n {messages.map((message, index) => (\n <li style={{ marginBottom: \"0\" }} key={index}>\n {message}\n </li>\n ))}\n </ul>\n </Alert>\n </section>\n )}\n {errorMessages.length > 0 && (\n <section className=\"messages\" style={{ width: \"100%\" }}>\n <Alert variant=\"danger\">\n <ul>\n {errorMessages.map((message, index) => (\n <li key={index}>{message}</li>\n ))}\n </ul>\n </Alert>\n </section>\n )}\n </form>\n </section>\n <section className=\"account-info-picture\">\n <section className=\"profile-image\">\n <div>\n <label htmlFor=\"firstName\">\n <FormattedMessage id=\"account-profile-pic\" defaultMessage=\"Profile Picture\" />\n </label>\n\n {!!profile.profileImageUrl ? (\n <img\n src={profile.profileImageUrl}\n alt=\"\"\n />\n ) : (\n <div className=\"portfolio-hero-profile-image-placheholder\">\n <img\n src={PortfolioProfile}\n alt=\"\"\n />{\" \"}\n </div>\n )}\n </div>\n <ProfileImageModal hasText={true} currentImage={!!profile.profileImageUrl ? profile.profileImageUrl : PortfolioProfile} />\n </section>\n </section>\n </div>\n </div>\n )\n}\n\nexport default MyAccount\n","/**\n * The User model.\n */\nexport class User {\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_realistic() {\n return this._personality_type_realistic;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_realistic(value) {\n this._personality_type_realistic = value;\n }\n\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_investigative() {\n return this._personality_type_investigative;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_investigative(value) {\n this._personality_type_investigative = value;\n }\n\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_artistic() {\n return this._personality_type_artistic;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_artistic(value) {\n this._personality_type_artistic = value;\n }\n\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_social() {\n return this._personality_type_social;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_social(value) {\n this._personality_type_social = value;\n }\n\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_conventional() {\n return this._personality_type_conventional;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_conventional(value) {\n this._personality_type_conventional = value;\n }\n\n /**\n * Get RIASEC value for user.\n *\n * @return {number}\n */\n get personality_type_enterprising() {\n return this._personality_type_enterprising;\n }\n\n /**\n * Set RIASEC value for user.\n *\n * @param {number} value\n */\n set personality_type_enterprising(value) {\n this._personality_type_enterprising = value;\n }\n\n /**\n * Get the RIASEC assessment profile scores for the user.\n * @return {[]|null}\n */\n get assessmentResultProfile() {\n return this._assessmentResultProfile;\n }\n\n /**\n * Set the RIASEC assessment profile scores for the user.\n * @param {[]|null} value\n */\n set assessmentResultProfile(value) {\n this._assessmentResultProfile = value;\n }\n\n /**\n * Gets the last login date.\n *\n * @return {Date|null}\n */\n get lastLoginDate() {\n return this._lastLoginDate\n }\n\n /**\n * Sets the last login date.\n *\n * @param {Date|null} value\n */\n set lastLoginDate(value) {\n this._lastLoginDate = value\n }\n\n /**\n * Gets the user's interests.\n *\n * @return {[]}\n */\n get interests() {\n return this._interests\n }\n\n /**\n * Gets the user's SchCodes.\n *\n * @return {[]}\n */\n get schCodes() {\n return this._schCodes\n }\n\n /**\n * Gets the user's SchCodes label.\n *\n * @return {[]}\n */\n get schCodesName() {\n return this._schCodesName\n }\n\n /**\n * Sets the user's interests.\n *\n * @param value\n */\n set interests(value) {\n this._interests = value\n }\n\n /**\n * Sets the user's SchCodes.\n *\n * @param value\n */\n set schCodes(value) {\n this._schCodes = value\n }\n \n /**\n * Sets the user's SchCodes label.\n *\n * @param value\n */\n set schCodesName(value) {\n this._schCodesName = value\n }\n\n /**\n * Gets the user's skills.\n *\n * @return {[]}\n */\n get skills() {\n return this._skills\n }\n\n /**\n * Sets the user's skills.\n *\n * @param value\n */\n set skills(value) {\n this._skills = value\n }\n\n /**\n * Get if the user has completed the assessment quiz.\n *\n * @return {boolean}\n */\n get assessmentTaken() {\n return this._assessmentTaken\n }\n\n /**\n * Sets if the user has completed the assessment quiz.\n *\n * @param {boolean} value\n */\n set assessmentTaken(value) {\n this._assessmentTaken = value\n }\n\n // todo add assessment scores\n /**\n * Gets the bookmark titles of stories.\n *\n * @return {string[]|null}\n */\n get bookmarkStoryTitles() {\n return this._bookmarkStoryTitles;\n }\n\n /**\n * Adds a bookmark story title to the titles.\n *\n * @param {string} value\n */\n set bookmarkStoryTitles(value) {\n this._bookmarkStoryTitles.push(value);\n }\n\n /**\n * Gets the bookmark career titles.\n *\n * @return {string[]}\n */\n get bookmarkCareerTitles() {\n return this._bookmarkCareerTitles;\n }\n\n /**\n * Adds a bookmark career title to titles.\n *\n * @param {string} value\n */\n set bookmarkCareerTitles(value) {\n this._bookmarkCareerTitles.push(value);\n }\n\n /**\n * Gets the bookmark school titles.\n *\n * @return {string[]}\n */\n get bookmarkSchoolTitles() {\n return this._bookmarkSchoolTitles;\n }\n\n /**\n * Adds a school bookmark titles.\n *\n * @param {string} value\n */\n set bookmarkSchoolTitles(value) {\n this._bookmarkSchoolTitles.push(value);\n }\n\n /**\n * Gets the major titles.\n *\n * @return {string[]}\n */\n get bookmarkMajorTitles() {\n return this._bookmarkMajorTitles;\n }\n\n /**\n * Adds a major to the major titles.\n *\n * @param {string} value\n */\n set bookmarkMajorTitles(value) {\n this._bookmarkMajorTitles.push(value);\n }\n\n /**\n * Gets bookmark blog titles.\n *\n * @return {string[]}\n */\n get bookmarkBlogTitles() {\n return this._bookmarkBlogTitles;\n }\n\n /**\n * Adds a bookmark blog title.\n *\n * @param {string} value\n */\n set bookmarkBlogTitles(value) {\n this._bookmarkBlogTitles.push(value);\n }\n\n /**\n * Gets the city.\n *\n * @return {null|string}\n */\n get city() {\n return this._city;\n }\n\n /**\n * Sets the city.\n *\n * @param {string|null} value\n */\n set city(value) {\n this._city = value;\n }\n\n /**\n * Gets the state.\n *\n * @return {null}\n */\n get state() {\n return this._state;\n }\n\n /**\n * Sets the state.\n *\n * @param value\n */\n set state(value) {\n this._state = value;\n }\n\n /**\n * Gets the created date.\n *\n * @return {Date|null}\n */\n get createdDate() {\n return this._createdDate;\n }\n\n /**\n * Sets the created date.\n *\n * @param {Date|null} value\n */\n set createdDate(value) {\n this._createdDate = value;\n }\n\n /**\n * Gets the expiration date.\n *\n * @return {Date|null}\n */\n get expirationDate() {\n return this._expirationDate;\n }\n\n /**\n * Sets the expiration date.\n *\n * @param {Date|null} value\n */\n set expirationDate(value) {\n this._expirationDate = value;\n }\n\n /**\n * Gets the if the user has filled out a goal.\n *\n * @return {boolean}\n */\n get doMyGoal() {\n return this._doMyGoal;\n }\n\n /**\n * Sets the if the user has a goal set.\n *\n * @param {boolean} value\n */\n set doMyGoal(value) {\n this._doMyGoal = value;\n }\n\n /**\n * Gets if the user has filled out the looking forward to field.\n *\n * @return {boolean}\n */\n get doLookingForward() {\n return this._doLookingForward;\n }\n\n /**\n * Sets if the user has filled out the looking forward to field.\n *\n * @param {boolean} value\n */\n set doLookingForward(value) {\n this._doLookingForward = value;\n }\n\n /**\n * Gets the user's point count.\n *\n * @return {number}\n */\n get pointsCount() {\n return this._pointsCount;\n }\n\n /**\n * Sets the user's point count.\n *\n * @param {number} value\n */\n set pointsCount(value) {\n this._pointsCount = value;\n }\n\n /**\n * Gets the user's first name.\n *\n * @return {*}\n */\n get firstName() {\n return this._firstName;\n }\n\n /**\n * Sets the user's firstname.\n *\n * @param {string} value\n */\n set firstName(value) {\n this._firstName = value;\n }\n\n /**\n * Gets the user's last name.\n *\n * @return {*}\n */\n get lastName() {\n return this._lastName;\n }\n\n /**\n * Sets the user's last name.\n *\n * @param {string} value\n */\n set lastName(value) {\n this._lastName = value;\n }\n\n /**\n * Gets the user's email.\n *\n * @return {*}\n */\n get email() {\n return this._email;\n }\n\n /**\n * Sets the user's email.\n *\n * @param {string} value\n */\n set email(value) {\n this._email = value;\n }\n\n /**\n * Gets the user's auth ID.\n *\n * @return {*}\n */\n get userId() {\n return this._userId;\n }\n\n /**\n * Sets the user's auth ID.\n *\n * @param value\n */\n set userId(value) {\n this._userId = value;\n }\n\n /**\n * Gets if the user has filled out any their portfolio.\n *\n * @return {boolean}\n */\n get doPortfolio() {\n return this._doPortfolio;\n }\n\n /**\n * Sets if the user has filled out their portfolio.\n *\n * @param {boolean} value\n */\n set doPortfolio(value) {\n this._doPortfolio = value;\n }\n\n /**\n * Gets the number of career plans the user has.\n *\n * @return {number}\n */\n get careerPlanCount() {\n return this._careerPlanCount;\n }\n\n /**\n * Sets the career plan count.\n *\n * @param {number} value\n */\n set careerPlanCount(value) {\n this._careerPlanCount = value;\n }\n\n /**\n * Gets the number of skills the user has filled out.\n *\n * @return {number}\n */\n get skillCount() {\n return this._skillCount;\n }\n\n /**\n * Sets the user's skill count.\n *\n * @param {number} value\n */\n set skillCount(value) {\n this._skillCount = value;\n }\n\n /**\n * Gets the number of interests the user has filled out.\n *\n * @return {number}\n */\n get interestCount() {\n return this._interestCount;\n }\n\n /**\n * Sets the interest count the user has filled out.\n *\n * @param {number} value\n */\n set interestCount(value) {\n this._interestCount = value;\n }\n\n /**\n * Gets if the user has filled out their weekly goal.\n *\n * @return {boolean}\n */\n get doWeeklyGoal() {\n return this._doWeeklyGoal;\n }\n\n /**\n * Sets if the weekly goal has a value.\n *\n * @param {boolean} value\n */\n set doWeeklyGoal(value) {\n this._doWeeklyGoal = value;\n }\n\n /**\n * Gets the number of times a user has logged in.\n *\n * @return {number}\n */\n get loginCount() {\n return this._loginCount;\n }\n\n /**\n * Sets the login count.\n *\n * @param {number} value\n */\n set loginCount(value) {\n this._loginCount = value;\n }\n\n /**\n * Gets the story bookmark count.\n *\n * @return {number}\n */\n get bookmarkStoryCount() {\n return this._bookmarkStoryCount;\n }\n\n /**\n * Sets the bookmark story count.\n *\n * @param {number} value\n */\n set bookmarkStoryCount(value) {\n this._bookmarkStoryCount = value;\n }\n\n /**\n * Gets the bookmark career count.\n *\n * @return {number}\n */\n get bookmarkCareerCount() {\n return this._bookmarkCareerCount;\n }\n\n /**\n * Sets the bookmark career count.\n *\n * @param {number} value\n */\n set bookmarkCareerCount(value) {\n this._bookmarkCareerCount = value;\n }\n\n /**\n * Gets the bookmark school count.\n *\n * @return {number}\n */\n get bookmarkSchoolCount() {\n return this._bookmarkSchoolCount;\n }\n\n /**\n * Sets the bookmark school count.\n *\n * @param {number} value\n */\n set bookmarkSchoolCount(value) {\n this._bookmarkSchoolCount = value;\n }\n\n /**\n * Gets the bookmark major count.\n *\n * @return {number}\n */\n get bookmarkMajorCount() {\n return this._bookmarkMajorCount;\n }\n\n /**\n * Sets the bookmark major count.\n *\n * @param {number} value\n */\n set bookmarkMajorCount(value) {\n this._bookmarkMajorCount = value;\n }\n\n /**\n * Gets the bookmark blog count.\n *\n * @return {number}\n */\n get bookmarkBlogCount() {\n return this._bookmarkBlogCount;\n }\n\n /**\n * Sets the bookmark blog count.\n *\n * @param {number} value\n */\n set bookmarkBlogCount(value) {\n this._bookmarkBlogCount = value;\n }\n\n /**\n * Gets the user type.\n *\n * @return {string}\n */\n get userType() {\n return this._userType;\n }\n \n /**\n * Gets the user role.\n *\n * @return {string}\n */\n get role() {\n return this._role;\n }\n\n /**\n * Sets the user type.\n *\n * @param value\n */\n set userType(value) {\n this._userType = value;\n }\n\n /**\n * Sets the user role.\n *\n * @param value\n */\n set role(value) {\n this._role = value;\n }\n\n /**\n * Gets the current promo code applied by the user.\n *\n * @return {null}\n */\n get promoCode() {\n return this._promoCode;\n }\n\n /**\n * Sets the promo code applied by the user.\n *\n * @param value\n */\n set promoCode(value) {\n this._promoCode = value;\n }\n\n /**\n * Gets the user's organization code.\n *\n * @return {string}\n */\n get organizationCode() {\n return this._organizationCode;\n }\n\n /**\n * Sets the user's organization code.\n *\n * @param value\n */\n set organizationCode(value) {\n this._organizationCode = value;\n }\n\n /**\n * Gets the organization name.\n *\n * @return {null}\n */\n get organizationName() {\n return this._organizationName;\n }\n\n /**\n * Sets the organization name.\n *\n * @param value\n */\n set organizationName(value) {\n this._organizationName = value;\n }\n\n /**\n * Gets the user's school code.\n *\n * @return {string}\n */\n get schcode() {\n return this._schcode;\n }\n\n /**\n * Sets the user's school code.\n *\n * @param {string} value\n */\n set schcode(value) {\n this._schcode = value;\n }\n\n /**\n * Gets the district code.\n *\n * @return {string|null}\n */\n get distcode() {\n return this._distcode;\n }\n\n /**\n * Sets the district code.\n *\n * @param value\n */\n set distcode(value) {\n this._distcode = value;\n }\n\n /**\n * Gets the grade.\n *\n * @return {string|null}\n */\n get grade() {\n return this._grade;\n }\n\n /**\n * Sets the grade.\n *\n * @param value\n */\n set grade(value) {\n this._grade = value;\n }\n\n /**\n * Gets the LASID.\n *\n * @return {string|null}\n */\n get lasid() {\n return this._lasid;\n }\n\n /**\n * Sets the LASID.\n *\n * @param value\n */\n set lasid(value) {\n this._lasid = value;\n }\n\n /**\n * Gets the SASID.\n *\n * @return {string|null}\n */\n get sasid() {\n return this._sasid;\n }\n\n /**\n * Sets the SASID.\n *\n * @param value\n */\n set sasid(value) {\n this._sasid = value;\n }\n\n /**\n * Gets the school name.\n *\n * @return {string|null}\n */\n get schoolName() {\n return this._schoolName;\n }\n\n /**\n * Sets the school name.\n *\n * @param value\n */\n set schoolName(value) {\n this._schoolName = value;\n }\n\n /**\n * Gets the expiration status of the user.\n *\n * @return {boolean}\n * If the user is expired or not.\n */\n isExpired() {\n // Users who never expire have empty date set.\n if (!this.expirationDate) {\n return false\n }\n return Date.now() > this.expirationDate.getTime()\n }\n\n /**\n * @constructor\n *\n * @param {string} userId\n * User's auth id.\n */\n constructor(\n userId\n ) {\n this._firstName = null;\n this._lastName = null;\n this._email = null;\n this._userId = userId;\n this._doPortfolio = false;\n this._careerPlanCount = 0;\n this._skillCount = 0;\n this._interestCount = 0;\n this._doWeeklyGoal = false;\n this._loginCount = 0;\n this._bookmarkStoryCount = 0;\n this._bookmarkCareerCount = 0;\n this._bookmarkSchoolCount = 0;\n this._bookmarkMajorCount = 0;\n this._bookmarkBlogCount = 0;\n this._createdDate = null;\n this._expirationDate = null;\n this._doMyGoal = false;\n this._doLookingForward = false;\n this._pointsCount = 0;\n this._city = null;\n this._state = null;\n this._userType = null;\n this._role = null;\n this._schCodes = [];\n this._schCodesName = [];\n this._promoCode = null;\n this._bookmarkStoryTitles = [];\n this._bookmarkCareerTitles = [];\n this._bookmarkSchoolTitles = [];\n this._bookmarkMajorTitles = [];\n this._bookmarkBlogTitles = [];\n this._interests = [];\n this._skills = [];\n this._schcode = null;\n this._distcode = null;\n this._grade = null;\n this._lasid = null;\n this._sasid = null;\n this._schoolName = null;\n this._organizationCode = null;\n this._organizationName = null;\n this._lastLoginDate = null;\n this._assessmentTaken = null;\n this._assessmentResultProfile = null;\n this._personality_type_realistic = null;\n this._personality_type_investigative = null;\n this._personality_type_artistic = null;\n this._personality_type_social = null;\n this._personality_type_enterprising = null;\n this._personality_type_conventional = null;\n }\n\n}\n","import { userEntityFactoryFromDoc } from \"./UserEntity\"\nimport { userEntityType } from \"./adminOptions\"\nimport { User } from \"./UserModel\"\nimport { expirationType } from \"../user/userType\"\nimport {schoolOrganizationOptions} from \"../organizationOptions\"\n\n/**\n * Provides a base class for function responses.\n */\nclass FunctionResponse {\n\n /**\n * Function response constructor.\n *\n * @param {string|Object} data\n * The data from the functon response.\n */\n constructor(data) {\n this._data = data\n }\n\n /**\n * If the import response type is a successful import.\n *\n * @return {boolean}\n */\n get isSuccessful() {\n return false;\n }\n\n /**\n * Gets the data related to the import response.\n *\n * @return {*}\n */\n get data() {\n return this._data\n }\n}\n\n/**\n * Provides a class for imports that fail, the data will be the error message.\n */\nexport class ImportResponseFailure extends FunctionResponse {\n\n /**\n * @inheritDoc\n */\n get isSuccessful() {\n return false;\n }\n}\n\n/**\n * Provides a class for a successful import.\n */\nexport class ImportResponseSuccess extends FunctionResponse {\n\n /**\n * If the import had any record errors.\n *\n * @return {boolean}\n */\n isError() {\n return this.data.errors.length > 0\n }\n\n /**\n * Get the errors from the response.\n *\n * @return {string[]}\n */\n getErrors() {\n return this.data.errors;\n }\n\n /**\n * Gets the total records imported.\n *\n * @return {number}\n */\n getTotal() {\n return this.data.totalRecords;\n }\n\n /**\n * Gets the total records successfully imported.\n *\n * @return {number}\n */\n getProcessedTotal() {\n return this.data.recordsProcessed;\n }\n\n /**\n * Gets the new users created count.\n *\n * @return {number}\n */\n getNewUserCount() {\n return this.data.newUserCount;\n }\n\n /**\n * Gets the users updated count.\n *\n * @return {number}\n */\n getUpdateUserCount() {\n return this.data.updateUserCount;\n }\n\n /**\n * @inheritDoc\n */\n get isSuccessful() {\n return true;\n }\n}\n\n/**\n * Provides a successful export response.\n */\nexport class ExportResponseSuccess extends FunctionResponse {\n\n /**\n * @inheritDoc\n */\n get isSuccessful() {\n return true;\n }\n\n /**\n * Gets the CSV data in the response.\n *\n * @return {string}\n */\n getCsvData() {\n return this.data.csvData\n }\n\n /**\n * Gets the total records in the data.\n *\n * @return {number}\n */\n getTotalRecords() {\n return this.data.totalRecords\n }\n}\n\n/**\n * Provides an export failure response.\n */\nexport class ExportResponseFailure extends FunctionResponse {\n\n /**\n * @inheritDoc\n */\n get isSuccessful() {\n return false;\n }\n}\n\n/**\n * Creates a class for handling admin firebase functions.\n */\nexport default class AdminFirebaseFunctions {\n\n /**\n * @constructor\n *\n * @param firebase\n * The firebase instance.\n */\n constructor(firebase) {\n this._firebase = firebase\n }\n\n /**\n * Gets the firebase instance.\n *\n * @return {*}\n */\n get firebase() {\n return this._firebase\n }\n\n /**\n * Calls the user import function.\n *\n * @param {string} fileData\n * Base 64 encoded csv data.\n * @param fileName\n * The file name of the csv.\n * @param type\n * The import type.\n *\n * @return {Promise<FunctionResponse>}\n */\n async importCsv(fileData, fileName, type, defaultPassword) {\n const importer = this.firebase.functions.httpsCallable(\n \"importUser\"\n )\n try {\n const response = await importer({fileData, type, fileName, defaultPassword})\n return new ImportResponseSuccess(response.data)\n } catch(e) {\n if (e.code === 'invalid-argument') {\n return new ImportResponseFailure(e.message)\n }\n return new ImportResponseFailure(\n \"An internal error has occurred processing the data\"\n )\n }\n }\n\n /**\n * Provides a caller for the export csv firebase function.\n *\n * @param {Object} options\n * The filter options, and type of the export.\n *\n * @return {Promise<FunctionResponse>}\n */\n async exportCsv(options) {\n const exporter = this.firebase.functions.httpsCallable(\n \"exportUser\"\n )\n try {\n const response = await exporter({options})\n return new ExportResponseSuccess(response.data)\n } catch (e) {\n if (e.code === 'invalid-argument') {\n return new ExportResponseFailure(e.message)\n }\n if (e.code === 'not-found') {\n return new ExportResponseFailure(e.message)\n }\n return new ExportResponseFailure(\"An internal error has occurred exporting the data\")\n }\n }\n\n /**\n * Gets all user entities.\n *\n * @return {Promise<*[]>}\n */\n async getUserEntities() {\n const entities = []\n const snapshot = await this.firebase.db\n .collection(\"userEntities\")\n .get()\n if (snapshot.empty) {\n return entities\n }\n snapshot.forEach((document) => {\n entities.push(userEntityFactoryFromDoc(document))\n })\n return entities\n }\n\n /**\n * Gets a user entity by document id.\n *\n * @param {string} id\n * The document ID.\n *\n * @return {Promise<UserEntity>}\n */\n async getUserEntity(id) {\n const document = await this.firebase.db\n .collection(\"userEntities\")\n .doc(id)\n .get()\n if (!document.exists) {\n throw new Error(\"No entity exists with the ID provided\")\n }\n return userEntityFactoryFromDoc(document)\n }\n\n async getUserEntityByName(name, type) {\n const snapshot = await this.firebase.db\n .collection(\"userEntities\")\n .where('label', '==', name)\n .where('type', '==', type)\n .get()\n if (snapshot.empty) {\n return null\n }\n return userEntityFactoryFromDoc(snapshot.docs[0])\n }\n\n async getUserEntityByCode(code, type) {\n const snapShot = await this.firebase.db\n .collection(\"userEntities\")\n .where('id', '==', code)\n .get()\n if (snapShot.empty) {\n return null\n }\n let entity = null\n snapShot.forEach(doc => {\n if (doc.data().type === type) {\n entity = userEntityFactoryFromDoc(doc)\n }\n })\n return entity\n }\n\n async getUserEntityByCodeWithHash(code, type, hash) {\n if (Object.prototype.hasOwnProperty.call(hash, `${type}:${code}`)) {\n return hash[`${type}:${code}`]\n }\n const entity = await this.getUserEntityByCode(code, type)\n hash[`${type}:${code}`] = entity\n return entity\n }\n\n /**\n * Saves a user entity.\n *\n * @param {UserEntity} entity\n * The user entity to save.\n *\n * @return {Promise<UserEntity>}\n */\n async saveUserEntity(entity) {\n if (!entity.docId) {\n const result = await this.firebase.db\n .collection(\"userEntities\")\n .add(entity.getData())\n entity.docId = result.id\n } else {\n await this.firebase.db\n .collection(\"userEntities\")\n .doc(entity.docId)\n .update(entity.getData())\n }\n return entity\n }\n\n /**\n * Deletes a user entity.\n *\n * @param {UserEntity} entity\n * The user entity to delete.\n *\n * @return {Promise<void>}\n */\n async deleteUserEntity(entity) {\n if (!entity.docId) {\n return\n }\n await this.firebase.db\n .collection(\"userEntities\")\n .doc(entity.docId)\n .delete()\n }\n\n /**\n * The default search gets all the users from `users` collection.\n *\n * @param {number} limit\n * The limit of results.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n * @param {[]|null} sort\n * The orderBy sort arguments.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getAllUsers(limit, cursor, sort) {\n if (!sort) {\n sort = [this.firebase.app.firestore.FieldPath.documentId()]\n }\n const usersSnapshotBase = this.firebase.db\n .collection('memberships')\n .orderBy(...sort)\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users from `users` collection with the given email.\n *\n * @param {string} email\n * User email to search.\n * @param {number} limit\n * The limit of results.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersByEmail(email, limit, cursor = null) {\n const usersSnapshot = await this.firebase.db\n .collection('users')\n .where('email', '==', email)\n .limit(limit + 1)\n .get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users from `users` collection with names sent, empty names will be skipped.\n *\n * @param {string|null} firstName\n * The user's first name.\n * @param {string|null} lastName\n * The user's last name.\n * @param {number} limit\n * The limit of results.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<*[][]|[[], null]|[*[], null]>}\n */\n async getUsersByName(firstName, lastName, limit, cursor = null) {\n if ((firstName === null || firstName.length === 0) && (lastName === null || lastName.length === 0)) {\n return [[], null]\n }\n const usersSnapshotBase = this.firebase.db\n .collection('users')\n let usersSnapshotQuery\n if (firstName) {\n usersSnapshotQuery = usersSnapshotBase.where('firstName', '==', firstName)\n }\n if (lastName) {\n if (usersSnapshotQuery) {\n usersSnapshotQuery = usersSnapshotQuery.where('lastName', '==', lastName)\n } else {\n usersSnapshotQuery = usersSnapshotBase.where('lastName', '==', lastName)\n }\n }\n usersSnapshotQuery = usersSnapshotQuery.orderBy(this.firebase.app.firestore.FieldPath.documentId())\n if (cursor) {\n usersSnapshotQuery = usersSnapshotQuery\n .startAfter(cursor)\n .limit(limit + 1)\n } else {\n usersSnapshotQuery = usersSnapshotQuery\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users from the `schoolData` collection based on field sent.\n *\n * @param {string} fieldName\n * The name of the field.\n * @param {string} fieldValue\n * The value to search for.\n * @param {number} limit\n * The limit of results.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersBySchoolDataField(fieldName, fieldValue, limit, cursor = null) {\n const usersSnapshotBase = this.firebase.db\n .collection('schoolData')\n .where(fieldName, '==', fieldValue)\n .orderBy(this.firebase.app.firestore.FieldPath.documentId())\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users from the `memberships` collection based on field sent.\n *\n * @param {string} fieldName\n * The name of the field.\n * @param {string} fieldValue\n * The value to search for.\n * @param {number} limit\n * The limit of results.\n * @param {[]|null} sort\n * The `orderBy` sort options.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersByMembershipDataFieldWithSort(fieldName, fieldValue, limit, sort, cursor = null) {\n if (!sort) {\n sort = [this.firebase.app.firestore.FieldPath.documentId()]\n }\n const usersSnapshotBase = this.firebase.db\n .collection('memberships')\n .where(fieldName, '==', fieldValue)\n .orderBy(...sort)\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets the user by type in `memberships` collection.\n *\n * @param {string} type\n * The user type.\n * @param {number} limit\n * The limit of results.\n * @param {[]|null} sort\n * The orderBy sort arguments.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersByType(type, limit, sort, cursor = null) {\n if (!sort) {\n sort = [this.firebase.app.firestore.FieldPath.documentId()]\n }\n const usersSnapshotBase = this.firebase.db\n .collection('memberships')\n .where('membershipType', '==', type)\n .orderBy(...sort)\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets the users created since the date sent.\n *\n * @param {Date} date\n * The date since to search for.\n * @param {number} limit\n * The limit of results.\n * @param {'asc'|'desc'} sort\n * The sort applied to the created date.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersBySinceCreatedDate(date, limit, sort, cursor = null) {\n const usersSnapshotBase = this.firebase.db\n .collection('memberships')\n .where('createdDate', '>=', date)\n .orderBy('createdDate', sort)\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users by expiration status.\n *\n * @param {string} status\n * The status of the user.\n * @param {number} limit\n * The limit of results.\n * @param {string|null} sort\n * The date sort, for users who never expire this is ignored.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<[[], null]|[*[], null]>}\n */\n async getUsersByExpiration(status, limit, sort, cursor = null) {\n let operation\n let value\n let sortArgs\n const currentTime = new Date()\n if (expirationType.ACTIVE === status) {\n operation = '>'\n value = currentTime\n sortArgs = ['expiresDate', sort]\n }\n if (expirationType.INACTIVE === status) {\n operation = '<='\n value = currentTime\n sortArgs = ['expiresDate', sort]\n }\n if (expirationType.NEVER === status) {\n operation = '=='\n value = ''\n sortArgs = [this.firebase.app.firestore.FieldPath.documentId()]\n }\n const usersSnapshotBase = this.firebase.db\n .collection('memberships')\n .where('expiresDate', operation, value)\n .orderBy(...sortArgs)\n let usersSnapshotQuery\n if (cursor) {\n usersSnapshotQuery = usersSnapshotBase\n .startAfter(cursor)\n .limit(limit + 1)\n }\n else {\n usersSnapshotQuery = usersSnapshotBase\n .limit(limit + 1)\n }\n const usersSnapshot = await usersSnapshotQuery.get()\n return await this.buildUserDataFromSnapshot(usersSnapshot, limit)\n }\n\n /**\n * Gets users linked to the school/org name.\n *\n * @param {string} name\n * The entity name.\n * @param {string} type\n * The entity type.\n * @param {number} limit\n * The limit of results.\n * @param {string[]|null} sort\n * The current sort value.\n * @param {{}|null} cursor\n * The current cursor to get results after.\n *\n * @return {Promise<*[][]|(*[]|null)[]|(*[]|null)[]>}\n */\n async getUsersByEntityName(name, type, limit, sort, cursor = null) {\n const entity = await this.getUserEntityByName(name, type)\n if (!entity) {\n return [[], null]\n }\n if (type === userEntityType.SCHOOL) {\n return await this.getUsersByMembershipDataFieldWithSort('schcode', entity.id, limit, sort, cursor)\n }\n if (type === userEntityType.ORGANIZATION) {\n return await this.getUsersByMembershipDataFieldWithSort('organization', entity.id, limit, sort, cursor)\n }\n return [[], null]\n }\n\n /**\n * Builds user data from the query snapshot.\n *\n * @param usersSnapshot\n * The query snapshot.\n * @param {number} limit\n * The limit of results.\n *\n * @return {Promise<*[][]>}\n */\n async buildUserDataFromSnapshot(usersSnapshot, limit) {\n if (usersSnapshot.empty) {\n return [[], null]\n }\n const promises = []\n const users = []\n const queryCount = usersSnapshot.size\n let doNextRecordExists = false\n if (queryCount === limit + 1) {\n doNextRecordExists = true\n }\n let userSnapshot = null\n let iteratorCount = 1\n const entityHash = {}\n usersSnapshot.forEach((doc) => {\n if (iteratorCount === limit + 1) {\n return\n }\n const uid = doc.id\n const user = new User(uid)\n users.push(user)\n promises.push(this.buildUser(uid, user, entityHash))\n if (doNextRecordExists && iteratorCount === limit) {\n userSnapshot = doc\n }\n iteratorCount++\n })\n await Promise.all(promises)\n return [users, userSnapshot]\n }\n\n async getUserEntitiesBySchoolCodes(schoolCodes) {\n const entities = [];\n for (const code of schoolCodes) {\n const school = schoolOrganizationOptions.find(option => option.value === code);\n if (school) {\n entities.push(school.text);\n }\n }\n return entities;\n}\n\n /**\n * Builds user data from uid sent.\n *\n * @param {string} uid\n * The uid of the user.\n * @param {User} user\n * The user model.\n * @param {{}} hash\n * The entity hash.\n *\n * @return {Promise<void>}\n */\n async buildUser(uid, user, hash) {\n await this.getProfileData(uid, user)\n await this.getSchoolData(uid, user)\n if (user.schcode) {\n const entity = await this.getUserEntityByCodeWithHash(user.schcode, 'school', hash)\n if (entity) {\n user.schoolName = entity.label\n }\n }\n if (user.organizationCode) {\n const entity = await this.getUserEntityByCodeWithHash(user.organizationCode, 'organization', hash)\n if (entity) {\n user.organizationName = entity.label\n }\n }\n if (user.schCodes) {\n user.schCodesName = await this.getUserEntitiesBySchoolCodes(user.schCodes)\n }\n await this.getCareersData(uid, user)\n await this.getUserPoints(uid, user)\n await this.getUserMembership(uid, user)\n await this.getAssessmentData(uid, user)\n }\n\n /**\n * Gets data for user form the `schoolData` collection.\n *\n * @param {string} uid\n * The uid of the user.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getSchoolData(uid, user) {\n const schoolDataSnapshot = await this.firebase.db\n .collection('schoolData')\n .doc(uid)\n .get()\n if (!schoolDataSnapshot.exists) {\n return\n }\n const data = schoolDataSnapshot.data()\n user.schcode = data.schcode\n user.organizationCode = data.organization\n user.distcode = data.distcode\n user.grade = data.grade\n user.lasid = data.lasid\n user.sasid = data.sasid\n }\n\n /**\n * Gets user data from the `memberships` collection.\n *\n * @param {string} uid\n * The user uid.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getUserMembership(uid, user) {\n const membershipSnapshot = await this.firebase.db\n .collection('memberships')\n .doc(uid)\n .get()\n if (!membershipSnapshot.exists) {\n return\n }\n const data = membershipSnapshot.data()\n if (data.expiresDate) {\n user.expirationDate = data.expiresDate.toDate()\n }\n if (data.promoCode) {\n user.promoCode = data.promoCode\n }\n if (data.createdDate && data.createdDate.toDate) {\n user.createdDate = data.createdDate.toDate()\n }\n user.userType = data.membershipType\n }\n\n /**\n * Gets user's point data.\n *\n * @param {string} uid\n * The uid of the user.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getUserPoints(uid, user) {\n const pointSnapshot = await this.firebase.db\n .collection(\"pointTotals\")\n .doc(uid)\n .get()\n if (!pointSnapshot.exists) {\n return\n }\n const data = pointSnapshot.data()\n user.pointsCount = parseInt(data.pointTotal)\n }\n\n /**\n * Gets the data from `users` collection.\n *\n * @param {string} uid\n * The uid of the user.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getProfileData(uid, user) {\n const profileSnapshot = await this.firebase.db\n .collection(\"users\")\n .doc(uid)\n .get()\n if (!profileSnapshot.exists) {\n return\n }\n const profile = profileSnapshot.data()\n if (profile.firstName) {\n user.firstName = profile.firstName\n }\n if (profile.lastName) {\n user.lastName = profile.lastName\n }\n if (!user.email) {\n user.email = profile.email\n }\n if (profile.createdDate && profile.createdDate.toDate) {\n user.createdDate = profile.createdDate.toDate()\n }\n if (profile.lastLoginDate && profile.lastLoginDate.toDate) {\n user.lastLoginDate = profile.lastLoginDate.toDate()\n }\n user.doPortfolio = Boolean(profile.myStrengths || profile.myWeaknesses || profile.aboutMe || profile.profileQuote)\n if (profile.skills && Array.isArray(profile.skills)) {\n user.skillCount = profile.skills.length\n user.skills = profile.skills\n }\n if (profile.interests && Array.isArray(profile.interests)) {\n user.interests = profile.interests\n user.interestCount = profile.interests.length\n }\n user.doMyGoal = Boolean(profile.goals)\n user.doLookingForward = Boolean(profile.lookingForwardTo)\n const setBookmarkData = (bookmarks, type, titlesMethod) => {\n if (!bookmarks) {\n return 0\n }\n const bookmarkValues = Object.values(bookmarks)\n if (!Array.isArray(bookmarkValues)) {\n return 0\n }\n return bookmarkValues.filter(\n (bookmark) => {\n if (bookmark.contentType === type) {\n if (bookmark.contentTitle) {\n user[titlesMethod] = bookmark.contentTitle\n }\n return true\n } else {\n return false\n }\n }\n ).length\n }\n user.bookmarkStoryCount = setBookmarkData(profile.bookmarks, \"stories\", \"bookmarkStoryTitles\")\n user.bookmarkBlogCount = setBookmarkData(profile.bookmarks, \"blogs\", \"bookmarkBlogTitles\")\n user.bookmarkMajorCount = setBookmarkData(profile.bookmarks, \"majors\", \"bookmarkMajorTitles\")\n user.bookmarkSchoolCount = setBookmarkData(profile.bookmarks, \"schools\", \"bookmarkSchoolTitles\")\n user.bookmarkCareerCount = setBookmarkData(profile.bookmarks, \"careers\", \"bookmarkCareerTitles\")\n if (profile.city) {\n user.city = profile.city\n }\n if (profile.state) {\n user.state = profile.state\n }\n if (profile.loginCount) {\n user.loginCount = profile.loginCount\n }\n if (profile.role) {\n user.role = profile.role\n }\n if (profile.schCodes) {\n user.schCodes = profile.schCodes\n }\n }\n\n /**\n * Gets data from `userCareerPlans` collection.\n *\n * @param {string} uid\n * The user uid.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getCareersData(uid, user) {\n const userCareerPlanSnapshot = await this.firebase.db\n .collection('userCareerPlans')\n .where(\"userId\", \"==\", uid)\n .get()\n if (!userCareerPlanSnapshot.empty) {\n user.careerPlanCount = userCareerPlanSnapshot.size\n }\n }\n\n /**\n * Gets data from `assessments` collection.\n *\n * @param {string} uid\n * The user uid.\n * @param {User} user\n * The user model.\n *\n * @return {Promise<void>}\n */\n async getAssessmentData(uid, user) {\n const userAssessmentSnapshot = await this.firebase.db\n .collection('assessments')\n .doc(uid)\n .get()\n\n // default\n user.assessmentTaken = false;\n\n if (userAssessmentSnapshot.exists) {\n const assessmentData = userAssessmentSnapshot.data()\n // It is possible that the user has started the assessment without yet finishing,\n // so check for the presence of a result profile to indicate assessment is complete.\n if (assessmentData.resultProfile) {\n user.assessmentTaken = true\n // This is the object with all score data in case we want to output\n // it to a single column.\n user.assessmentResultProfile = assessmentData.resultProfile\n\n // Separates each of the RIASEC values into user properties so each\n // can have a separate column if exported.\n const setAssessmentResults = (data) => {\n for (const personalityFacet in data) {\n user[personalityFacet] = data[personalityFacet]\n }\n }\n\n setAssessmentResults(assessmentData.resultProfile)\n }\n }\n }\n\n /**\n * Deletes the user using the deletion function.\n *\n * This deletes the user from all collections.\n *\n * @param {string} uid\n *\n * @return {Promise<*>}\n */\n async deleteUser(uid) {\n const deleteUser = this.firebase.functions.httpsCallable(\n 'deleteUser'\n )\n return await deleteUser({ userId: uid })\n }\n\n /**\n * Gets the total membership docs from the counts collection.\n *\n * @return {Promise<number>}\n */\n async getTotalUsers() {\n const countSnapshot = await this.firebase.db\n .collection('counts')\n .doc('memberships')\n .get()\n if (countSnapshot.exists) {\n return countSnapshot.data().count\n }\n return 0\n }\n\n async modifyOnUser (data) {\n try {\n const onUpdateUserCallable = this.firebase.functions.httpsCallable(\"onboardingSuperAdmin\")\n const onUpdateUserResult = await onUpdateUserCallable(data)\n return onUpdateUserResult\n } catch (error) {\n return error\n }\n }\n\n}\n","/**\n * Provides a class the a user entities address.\n */\nclass UserEntityAddress {\n\n /**\n * Getter for the city.\n *\n * @return {null|string}\n */\n get city() {\n return this._city\n }\n\n /**\n * Setter for the city.\n *\n * @param {null|string} value\n */\n set city(value) {\n this._city = value\n }\n\n /**\n * Getter for street.\n *\n * @return {null|string}\n */\n get street() {\n return this._street\n }\n\n /**\n * Setter for the street.\n *\n * @param {null|string} value\n */\n set street(value) {\n this._street = value\n }\n\n /**\n * Getter for the postal code.\n *\n * @return {null|string}\n */\n get postalCode() {\n return this._postalCode\n }\n\n /**\n * Setter for postal code.\n *\n * @param {null|string} value\n */\n set postalCode(value) {\n this._postalCode = value\n }\n\n /**\n * Getter for state.\n *\n * @return {null|string}\n */\n get state() {\n return this._state\n }\n\n /**\n * Setter for the state.\n *\n * @param {null|string} value\n */\n set state(value) {\n this._state = value\n }\n\n /**\n * Setter for the country.\n *\n * @return {null|string}\n */\n get country() {\n return this._country\n }\n\n /**\n * Setter for the country.\n *\n * @param {null|string} value\n */\n set country(value) {\n this._country = value\n }\n\n /**\n * Gets the render display of the address.\n *\n * @return {string|null}\n */\n getDisplay() {\n const values = [\n this.street,\n this.city,\n this.postalCode,\n this.state,\n this.country\n ].filter((value) => Boolean(value))\n\n return values.length > 0 ? values.join(\", \") : null\n }\n\n /**\n * Address constructor.\n *\n * @param {null|string} street\n * The street.\n * @param {null|string} postalCode\n * The postal code.\n * @param {null|string} state\n * The state.\n * @param {null|string} country\n * The country.\n * @param {null|string} city\n * The city.\n */\n constructor(\n street = null,\n postalCode = null,\n state = null,\n country = null,\n city = null\n ) {\n this._street = street\n this._postalCode = postalCode\n this._state = state\n this._country = country\n this._city = city\n }\n\n /**\n * Gets the data to be stored in firestore.\n *\n * @return {{country: (null|string), city: (null|string), street: (null|string), postalCode: (null|string), state: (null|string)}|null}\n */\n getData() {\n if (\n !this.street\n && !this.postalCode\n && !this.state\n && !this.country\n && !this.city\n ) {\n return null\n }\n\n return {\n street: this.street,\n postalCode: this.postalCode,\n state: this.state,\n country: this.country,\n city: this.city,\n }\n }\n\n}\n\n/**\n * Provides a user contact class.\n */\nclass UserEntityContact {\n\n /**\n * Getter for the name of the contact.\n *\n * @return {null|string}\n */\n get name() {\n return this._name\n }\n\n /**\n * Setter for the name.\n *\n * @param {null|string} value\n */\n set name(value) {\n this._name = value\n }\n\n /**\n * Getter for the phone address.\n *\n * @return {null|string}\n */\n get phone() {\n return this._phone\n }\n\n /**\n * Setter for the phone.\n *\n * @param {null|string} value\n */\n set phone(value) {\n this._phone = value\n }\n\n /**\n * Getter for the email address.\n *\n * @return {null|string}\n */\n get email() {\n return this._email\n }\n\n /**\n * Setter for the email.\n *\n * @param {null|string} value\n */\n set email(value) {\n this._email = value\n }\n\n /**\n * Gets the contact information render.\n *\n * @return {string|null}\n */\n getDisplay() {\n const displayData = []\n if (this.name) {\n displayData.push(this.name)\n }\n if (this.email) {\n displayData.push(this.email)\n }\n if (this.phone) {\n displayData.push(this.phone)\n }\n return displayData.length > 0 ? displayData.join(\", \") : null\n }\n\n /**\n * Contact constructor.\n *\n * @param {null|string} name\n * Contact name.\n * @param {null|string} phone\n * Contact Phone.\n * @param {null|string} email\n * Contact email.\n */\n constructor(name = null, phone = null, email = null) {\n this._name = name\n this._phone = phone\n this._email = email\n }\n\n /**\n * Gets the contact data for firestore.\n *\n * @return {{phone: (null|string), name: (null|string), email: (null|string)}|null}\n */\n getData() {\n if (!this.name && !this.phone && !this.email) {\n return null\n }\n return {\n name: this.name,\n phone: this.phone,\n email: this.email\n }\n }\n\n}\n\n/**\n * Provides a class for user entities.\n */\nexport default class UserEntity {\n\n /**\n * Getter for the active promo code for that entity.\n *\n * @return {string|null}\n */\n get activePromo() {\n return this._activePromo\n }\n\n /**\n * Setter for active promo code.\n *\n * @param {string|null} value\n */\n set activePromo(value) {\n this._activePromo = value\n }\n\n /**\n * Getter for the document ID.\n *\n * @return {string|null}\n */\n get docId() {\n return this._docId\n }\n\n /**\n * Setter for the document ID.\n *\n * @param {string|null} value\n */\n set docId(value) {\n this._docId = value\n }\n\n /**\n * Getter for the entity label.\n *\n * @return {string|null}\n */\n get label() {\n return this._label\n }\n\n /**\n * Setter for the entity label.\n *\n * @param {string|null} value\n */\n set label(value) {\n this._label = value\n }\n\n /**\n * Getter for the entity type.\n *\n * @return {string|null}\n */\n get type() {\n return this._type\n }\n\n /**\n * Setter for the entity type.\n *\n * @param {string|null} value\n */\n set type(value) {\n this._type = value\n }\n\n /**\n * Getter for the entity ID (code).\n *\n * @return {string|null}\n */\n get id() {\n return this._id\n }\n\n /**\n * Setter for the ID (code).\n *\n * @param {string|null} value\n */\n set id(value) {\n this._id = value\n }\n\n /**\n * Getter for the address.\n *\n * @return {UserEntityAddress|null}\n */\n get address() {\n return this._address\n }\n\n /**\n * Setter for the address info.\n *\n * @param {UserEntityAddress|null} value\n */\n set address(value) {\n this._address = value\n }\n\n /**\n * Getter for the contact info.\n *\n * @return {UserEntityContact|null}\n */\n get contact() {\n return this._contact\n }\n\n /**\n * Setter for the contact info.\n *\n * @param {UserEntityContact|null} value\n */\n set contact(value) {\n this._contact = value\n }\n\n /**\n * Constructor for the user entity.\n *\n * @param {string|null} label\n * The entity label/name.\n * @param {string|null} type\n * The entity type (school/organization)\n * @param {string|null} id\n * The entity ID, the code.\n * @param {string|null} docId\n * The firestore document ID.\n * @param {UserEntityAddress|null} address\n * The address info.\n * @param {UserEntityContact|null} contact\n * The contact info.\n * @param {string|null} activePromo\n * The active promo code for the user entity.\n */\n constructor(\n label,\n type,\n id,\n docId,\n address,\n contact,\n activePromo\n ) {\n this._label = label\n this._type = type\n this._id = id\n this._address = address\n this._contact = contact\n this._docId = docId\n this._activePromo = activePromo\n }\n\n /**\n * Gets the firestore data of the entity.\n *\n * @return {{address: ({country: (null|string), city: (null|string), street: (null|string), postalCode: (null|string), state: (null|string)}|null), contact: ({phone: (null|string), name: (null|string), email: (null|string)}|null), activePromo: (string|null), label: (string|null), id: (string|null), type: (string|null)}}\n */\n getData() {\n return {\n label: this.label,\n type: this.type,\n id: this.id,\n address: this.address ? this.address.getData() : null,\n contact: this.contact ? this.contact.getData() : null,\n activePromo: this.activePromo\n }\n }\n\n}\n\n/**\n * Builds an entity from a firestore document.\n *\n * @param document\n *\n * @return {UserEntity}\n */\nexport const userEntityFactoryFromDoc = (document) => {\n const documentData = document.data()\n const address = new UserEntityAddress(\n documentData.address?.street ?? null,\n documentData.address?.postalCode ?? null,\n documentData.address?.state ?? null,\n documentData.address?.country ?? null,\n documentData.address?.city ?? null\n )\n const contact = new UserEntityContact(\n documentData.contact?.name ?? null,\n documentData.contact?.phone ?? null,\n documentData.contact?.email ?? null\n )\n return new UserEntity(\n documentData.label,\n documentData.type,\n documentData.id,\n document.id,\n address,\n contact,\n documentData.activePromo\n )\n}\n\n/**\n * Builds a new user entity from the type sent.\n *\n * @param {string|null} type\n * The type of entity (school/organization).\n *\n * @return {UserEntity}\n */\nexport const userEntityFactoryFromType = (type) => {\n return new UserEntity(\n null,\n type,\n null,\n null,\n new UserEntityAddress(),\n new UserEntityContact(),\n null\n )\n}\n","/**\n * Allowed user csv import types.\n *\n * @type {{SCHOOL: string, ORGANIZATION: string, INDIVIDUAL: string}}\n */\nexport const csvImportType = {\n SCHOOL: 'school',\n INDIVIDUAL: 'individual',\n ORGANIZATION: 'organization'\n}\n\n/**\n * Array of the csv user import types.\n *\n * @type {string[]}\n */\nexport const csvImportTypes = Object.values(csvImportType)\n\n/**\n * Allowed csv export types.\n *\n * @type {{SCHOOL: string, ORGANIZATION: string, INDIVIDUAL: string}}\n */\nexport const csvExportType = {\n SCHOOL: 'school',\n ORGANIZATION: 'organization',\n INDIVIDUAL: 'individual'\n}\n\n/**\n * Array of the csv user export types.\n *\n * @type {string[]}\n */\nexport const csvExportTypes = Object.values(csvExportType)\n\n/**\n * Allowed user entity types.\n *\n * @type {{SCHOOL: string, ORGANIZATION: string}}\n */\nexport const userEntityType = {\n SCHOOL: 'school',\n ORGANIZATION: 'organization'\n}\n\n/**\n * Array of user entity types.\n *\n * @type {string[]}\n */\nexport const userEntityTypes = Object.values(userEntityType)\n\n/**\n * User dashboard types.\n *\n * @type {{SCHOOL: string, ORGANIZATION: string, ALL: string, INDIVIDUAL: string}}\n */\nexport const userDashboardType = {\n SCHOOL: 'school',\n ORGANIZATION: 'organization',\n INDIVIDUAL: 'individual',\n ALL: 'all'\n}\n\n/**\n * The possible search selections in the user dashboard.\n */\nexport const userDashboardFilter = {\n NAME: 'name',\n SCHCODE: 'schcode',\n DEFAULT: 'default',\n ORGCODE: 'orgcode',\n EMAIL: 'email',\n ORGNAME: 'orgname',\n SCHOOLNAME: 'schoolname',\n EXPIRE: 'expire',\n USERTYPE: 'usertype',\n CREATED: 'created',\n}\n\n/**\n * The search selection values as an array.\n *\n * @type {(string)[]}\n */\nexport const userDashboardFilterIds = Object.values(userDashboardFilter)\n\nexport const userDashboardSort = {\n DEFAULT: 'default',\n EXPIRE_DESC: 'expire_desc',\n EXPIRE_ASC: 'expire_asc',\n CREATED_DESC: 'created_desc',\n CREATED_ASC: 'created_asc'\n}\n\n/**\n * Provides a class to manage the user dashboard search selections.\n */\nexport class UserDashBoardFilterSelection {\n\n /**\n * Getter for the id of the search selection.\n *\n * @return {string}\n */\n get id() {\n return this._id\n }\n\n /**\n * Setter for the id of the search selection.\n *\n * @param {string} value\n */\n set id(value) {\n this._id = value\n }\n\n /**\n * Getter for the search selection label.\n *\n * @return {string}\n */\n get label() {\n return this._label\n }\n\n /**\n * Setter for the search selection label.\n *\n * @param {string} value\n */\n set label(value) {\n this._label = value\n }\n\n /**\n * Getter for the description of the search selection.\n *\n * @return {string}\n */\n get description() {\n return this._description\n }\n\n /**\n * Setter for the description of the search selection.\n *\n * @param {string} value\n */\n set description(value) {\n this._description = value\n }\n\n /**\n * @constructor\n *\n * @param {string} id\n * The search type ID.\n * @param {string} label\n * The label of the search type.\n * @param {string} description\n * The description of the search type.\n */\n constructor(id, label, description) {\n this._id = id\n this._label = label\n this._description = description\n }\n}\n\n/**\n * Provides a class to manage result sorts.\n */\nexport class UserDashBoardSortSelection extends UserDashBoardFilterSelection {\n\n /**\n * Getter for display list.\n *\n * @return {string[]}\n */\n get displayList() {\n return this._displayList\n }\n\n /**\n * Setter for display list.\n *\n * This is the list of search filters/types that the sort should display for.\n * @see userDashboardFilter\n *\n * @param {string[]} value\n */\n set displayList(value) {\n this._displayList = value\n }\n\n /**\n * Determines if the sort should display for this search type.\n *\n * @param {string} currentSearchFilter\n * The current search type.\n *\n * @return {boolean}\n */\n isSortEnabled(currentSearchFilter) {\n return this.displayList.includes(currentSearchFilter)\n }\n\n /**\n * Gets the sort value that is passed to firebase `orderBy`\n *\n * @return {string[]|null}\n */\n get sortValue() {\n return this._sortValue\n }\n\n /**\n * Sets the sort value that is passed to firebase.\n *\n * @param {string[]|null} value\n */\n set sortValue(value) {\n this._sortValue = value\n }\n\n /**\n * @inheritDoc\n *\n * @param {string[]} displayList\n * The list of filters this sort should display for.\n * @param {string[]} sortValue\n * The sort value arguments that are passed to firebase `orderBy`.\n *\n */\n constructor(id, label, description, displayList, sortValue) {\n super(id, label, description);\n this._displayList = displayList\n this._sortValue = sortValue\n }\n}\n","/**\n * Algolia client keys.\n *\n * @type {{apiKey: string, appId: string}}\n */\nconst AlgoliaClientKeys = {\n appId: process.env.GATSBY_ALGOLIA_APP_ID || 'N7QFRS1570',\n apiKey: process.env.GATSBY_ALGOLIA_API_KEY || '6aad582b7480ed27c1a262269e346020',\n}\n\nexport default AlgoliaClientKeys;\n","import React, { useEffect } from \"react\"\nimport { useStaticQuery, graphql } from \"gatsby\"\nimport CardStories from \"../cards/cards-stories\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faChevronRight,\n faChevronLeft,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n Configure,\n Pagination,\n Hits,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { FormattedMessage } from \"react-intl\"\nimport { useIntl } from \"react-intl\"\n\nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst storyResult = ({ hit }) => {\n const {\n objectID,\n title,\n story_personal_photo,\n story_video_url,\n story_job_title,\n story_company,\n story_quote,\n rating_average,\n slug,\n type,\n } = hit\n\n return (\n <CardStories\n objectID={objectID}\n img={story_personal_photo}\n title={title}\n slug={slug}\n rating_average={rating_average}\n story_video_url={story_video_url}\n story_job_title={story_job_title}\n story_company={story_company}\n story_quote={story_quote}\n contentType={type}\n />\n )\n}\n\nconst AlgoliaStoriesWeek = () => {\n const { locale } = useIntl()\n\n // clear cache on mount and unmount\n useEffect(() => {\n searchClient.clearCache()\n return () => {\n searchClient.clearCache()\n }\n }, [])\n\n // Query the cosmicjs data to find the stories of the week\n const { allCosmicjsStories } = useStaticQuery(graphql`\n query {\n allCosmicjsStories {\n edges {\n node {\n slug\n locale\n metadata {\n story_display_in_stories_week\n }\n }\n }\n }\n }\n `)\n const storyOfWeekEdges = allCosmicjsStories.edges.filter(\n edge => (edge.node.locale === locale) && (edge.node.metadata.story_display_in_stories_week)\n )\n\n /* Construct an Algolia filter that will find the stories of the week. Use \n * this filter instead of something like \"story_display_in_stories_week:true\" \n * so that we don't have to manually resync Algolia every time the stories of \n * the week change */\n const storyOfWeekIds = storyOfWeekEdges.map(\n edge => `objectID:${edge.node.slug}-${locale}`\n )\n const storyOfWeekFilter = storyOfWeekIds.join(\" OR \")\n\n return (\n <InstantSearch\n indexName=\"stories_explore\"\n refresh={true}\n searchClient={searchClient}\n >\n <div className={`stream stream-stories stream-stories-week`}>\n <div\n className=\"eyebrow component-eyebrow\"\n style={{ marginBottom: \"1.5rem\" }}\n >\n <FormattedMessage\n id=\"algolia-stories-week-story-of-the-week\"\n defaultMessage=\"Stories of the Week\"\n />\n </div>\n\n <Configure hitsPerPage={3} filters={storyOfWeekFilter} />\n\n <Hits hitComponent={storyResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaStoriesWeek\n","export const getSchoolSpecificCareers = (allCareers, schoolMajors) => {\n const schoolMajorCips = schoolMajors.map((major) => major.major_id)\n // filter out careers which do not have a related major found in the schools list of majors\n\n const careersWithReferencesToSchoolMajors = allCareers\n .filter((career) => {\n const relatedMajorsCips = career.career_related_major.map((relatedMajor) => relatedMajor.metadata?.major_cip)\n\n return relatedMajorsCips.some((relatedMajorCip) => schoolMajorCips.includes(relatedMajorCip))\n })\n .map((career) => {\n const relatedMajors = career.career_related_major.filter((relatedMajor) => {\n const relatedMajorCip = relatedMajor.metadata?.major_cip\n return schoolMajorCips.includes(relatedMajorCip)\n })\n\n return {\n ...career,\n career_related_major: relatedMajors,\n }\n })\n\n // remove related majors from career object which are not found in the schools list of majors\n return careersWithReferencesToSchoolMajors\n}\n","const questionData = {\n version: 1.4,\n questions: [\n {\n question: \"Like Julia Xu, I enjoy leading product development.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As the founder of Multitasky, Julia Xu leads product development.\\n\\nShe says, \"Multitasky is a trendy lifestyle brand that makes functional, aesthetic, and affordable workspace products to support modern working women and students. Our products are more than regular stationary like notebooks or pens; we use a lot of technology, so our products consist of a lot of phone and laptop accessories, as well as gadgets for kitchens and bathrooms.\"',\n name: \"Julia Xu\",\n career: \"Founder of Multitasky\",\n image:\n \"https://imgix.cosmicjs.com/e3fcf210-f349-11ec-a2eb-c1653f3f9199-Julia-59-2-sm.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Eli Bronstein, I enjoy mathematical or scientific activities. \",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a software engineer for Waymo, the Google self driving car company, Eli Bronstein engages in mathematical activities.\\n\\nHe says, \"Once you understand the rules of how to write code, you can really do anything with it. For example, one of the years that I was doing the computer science elective, I was interested in game development with Python. So I followed this book that had various tutorials for how to make different games, and it was really cool to see your code come to life.\"',\n name: \"Eli Bronstein\",\n career: \"Research Software Engineer for Waymo\",\n image:\n \"https://imgix.cosmicjs.com/6fd11060-0578-11ed-b7be-d956591ad437-waymosecuritypicwhitebackground.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Jamal Davis, I enjoy operating machines.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'Jamal Davis is a Certified Machine Operator who runs a cutter machine.\\n\\nHe says, \"For people who are interested in being a machine operator, my advice would be, don’t just be a button pusher, someone who just knows this button does this, and this button does that. Take the time to learn how to operate a machine, to understand what the machine is actually producing. Know its true purpose.\"',\n name: \"Jamal Davis\",\n career: \"Machine Operator\",\n image:\n \"https://imgix.cosmicjs.com/c7a7de60-f523-11eb-bf0b-e5e9ea5f18c4-image2-1.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Grace Kim, I enjoy responding in the the moment.\",\n personality_type: \"personality_type_artistic\",\n story:\n \"As an event florist, focusing on weddings, Grace Kim needs to respond in the moment.\\n\\nShe says, \\\"I also like that because I am working with nature, there are things outside of my control. Sometimes I'll have a specific type of flower I'd like to use and find out it didn't come in nicely or it isn't available at all, but then I'll go to the market and find something I hadn't thought of that looks amazing and ends up working out perfectly! I like that I have to work with the season and use what nature offers you.\\\"\",\n name: \"Grace Kim\",\n career: \"Wedding and Event Florist\",\n image:\n \"https://imgix.cosmicjs.com/41da7e30-453a-11eb-ae0c-07d0b084405e-Grace-Kim-2.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Erica Stanzione, I like teaching people new skills.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a yoga teacher and leader of a yoga school teacher training program, Erica Stanzione teaches people new skills.\\n\\nShe says, \"My favorite part is when you finish a class, and the students have the biggest smiles. You can sense their energy, the aura, and how light they feel. You can see the confidence in their postures. It\\'s incredibly rewarding to witness their journeys – their healing, wisdom, and confidence. They leave class exuding real joy.\"',\n name: \"Erica Stanzione\",\n career: \"Yoga Teacher\",\n image:\n \"https://imgix.cosmicjs.com/32135e30-cb13-11ec-aaa1-f1e7c930cb45-Erica-photo-1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Erminio Pinque, I thrive in the unknown.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'As the Artistic Director of the Big Nazo Lab, a world-reknowned performance group, Erminio Pinque thrives in the unknown.\\n\\nHe says, \"Puppetry, modelmaking, storytelling, performance--these are all creative fields that make up their own rules. We wrap all of these professions into one. The result is unpredictable and entertaining.\"',\n name: \"Erminio Pinque\",\n career: \"Artistic Director\",\n image:\n \"https://imgix.cosmicjs.com/bde6d980-4538-11eb-ae0c-07d0b084405e-1f83ef3daf2adf55d5ff04e327e32622_Erminio-copy.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Irena Asmundson, I like being in a position of authority.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As Chief Economist of Califormia, Irena Asmundson was in a position of authority, responsible for the California economy. \\n\\nShe says, \"As Chief Economist of California, I spent a lot of time with my team talking about the latest economic data. There was always some sort of research project going on about where we predicted the economy would move towards in the future.\" ',\n name: \"Irena Asmundson\",\n career: \"Former Chief Economist for the State of California\",\n image:\n \"https://imgix.cosmicjs.com/b0f9c8d0-05db-11ed-b7be-d956591ad437-Irena-Asmundson.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Sherry Harmon, I like work that requires me to be detail-oriented.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a runner in the main pharmacy at the Robert Wood Johnson Hospital, Sherry Harmon is required to be detail-oriented.\\n\\nShe says, \"The runner takes the medication up to the floors and inputs the medication into the medication cabinets. You make sure the medication goes in the correct pocket and in the correct machine. If it\\'s not in the correct machine, or if somebody pulls it out of the wrong pocket and gives it to the patient, that could be trouble. It’s important to pay attention to what you’re doing.\"',\n name: \"Sherry Harmon\",\n career: \"Certified Pharmacy Technician\",\n image:\n \"https://imgix.cosmicjs.com/9be03630-34ff-11ec-9419-c99768f4956b-20210928212950.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Kimberly Domenick, I like carrying out tasks for my clients.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a UX Engineer, which stands for User Experience Engineer, Kimberly Domenick carries out tasks for her clients.\\n\\nShe says, \"My typical day is often working with client requests to either add or update some sort of functionality related to the front end of their site...We might have a client tell us,\"When I mouse over this button, it doesn\\'t look right. Make it look better.\" Or sometimes they\\'ll say, \"I like the way this looks but I want to change it. I want to redesign that and that.\" So I help them do that on a daily basis.\"',\n name: \"Kimberly Domenick\",\n career: \"UX Engineer\",\n image:\n \"https://imgix.cosmicjs.com/6bfb2180-cbed-11eb-9a55-ed85c0b4dfd8-Kim-Domenick-5G4A8058.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Carmen Vazquez, I like coaching students.\",\n personality_type: \"personality_type_social\",\n story:\n \"As a high school advisor, Carmen Vazquez coaches her students by asking them to tell their story. \\n\\nShe says, “When I work with my students, I tend to ask them, “Before we even write anything down, what's your story?†I help them realize the potential they have and help them understand that where they come from is, in fact, beautiful. There’s beauty in the struggle. It doesn't define you—it's what you do now that defines you.â€\",\n name: \"Carmen Vazquez\",\n career: \"High School Advisor\",\n image:\n \"https://imgix.cosmicjs.com/210bfb90-3808-11ec-8fb9-8fa9f96066ad-pic2.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like James Kingon, I like helping people with their emotional problems.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a psychiatric nurse, James Kingon helps people with their emotional problems, often seeing them improve in five to seven days.\\n\\nHe says, \"A lot of the people we see are very acutely ill. In our hospital, we do short-term stabilization. Most people stay five to seven days. You wouldn’t believe how much someone can change in five to seven days.\"',\n name: \"James Kingon\",\n career: \"Psychiatric Nurse\",\n image:\n \"https://imgix.cosmicjs.com/d85614d0-4537-11eb-ae0c-07d0b084405e-alex.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Maezza Romero, I enjoy writing interesting stories.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'As a video game designer, Maezza Romero writes stories for the characters in the video game Empire of Sin.\\n\\nShe says, \"An example of a mission is when you say, “Hey, what’s up?†to a character. And the character says to you, “I need you to get me 10 rocks.†And you say, “Okay, cool. I can do that.†And that’s your mission.\" ',\n name: \"Maezza Romero\",\n career: \"Video Game Designer\",\n image:\n \"https://imgix.cosmicjs.com/a65ea810-ab99-11ec-bd4d-d755cb3d1844-Maezza-headshot-two.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Lauren Quattrochi, I like performing science experiments.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a neuroscientist who studies the eye, Lauren Quattrochi uses a microscope to perform science experiments.\\n\\nShe says, \"I study the way your eye connects to your brain. Part of your eye called the retina is an extension out from your brain and is composed of 1-1.5 million retinal ganglion cells...I use an electrophysiology setup to look at the input and output signals that the cell is giving and receiving.\" ',\n name: \"Lauren Quattrochi\",\n career: \"Neuroscientist\",\n image:\n \"https://imgix.cosmicjs.com/def77b40-453b-11eb-ae0c-07d0b084405e-a8f2bc3aa98d9ca794fd62df3183fc01_LaurenQuattrochi_MPP_12-20101.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Steve Gacin, I like building things.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As the engineering director for the company SharkNinja, Steve Gacin builds vacuums and kitchen products.\\n\\nHe says, \"Ever since I was a little kid, I was always fascinated with working with my hands, building things, designing things, creating something – I was all part of that. When when I was younger, I was overexcited about certain things. I’d walk around the house, pick something up, think, ‘How does that work?’ I would end up breaking it obviously, because I tore things apart with random screwdrivers, as a means to keep my idle hands busy.\"',\n name: \"Steve Gacin\",\n career: \"Director of Engineering \",\n image:\n \"https://imgix.cosmicjs.com/afff4f10-b11f-11ec-97bc-19d12908cbbe-IMG5396.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Sophie Worthington, I would like to work outdoors.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As a goat herder, Sophie Worthington works outdoors.\\n\\nShe says, \"It’s really getting to spend time with these animals in this beautiful setting. This breed, La Mancha, is super affectionate. Working with them from birth and getting to know all of their personalities. Getting to hang out with them every day. One of my favorite things to do is to take the whole herd on a walk through the hills. They all stay together and browse all the good stuff they find along the way. It’s pretty special.\"',\n name: \"Sophie Worthington\",\n career: \"Goat Herd Manager\",\n image:\n \"https://imgix.cosmicjs.com/3bc38fe0-227a-11ed-8337-95a76fda76ff-StepladderCreamery-98746eec3f54-181e-43da-ae89-7cd0b7b644a6600x900cropcenter.progressive-1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Liza Donnelly, I often rely on my gut feelings.\",\n personality_type: \"personality_type_artistic\",\n story:\n \"As a cartoonist, Liza Donnelly trusts her gut when coming up with an idea for a cartoon.\\n\\nShe says, \\\"The first cartoon I sold was a twist on the artist Paul Cezanne's three elements in nature - a cone, a sphere, and a cylinder. I drew those three things and then added a television set. So that's a classic twist on a given. That's what a cartoon usually is -- you take a known thing and make it different, or weird, or odd.\\\" \",\n name: \"Liza Donnelly\",\n career: \"Cartoonist\",\n image:\n \"https://imgix.cosmicjs.com/2b3d4a50-d837-11eb-a1a6-c3f080da6c53-Screen-Shot-2021-06-28-at-1.34.43-PM.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Lorena Abreu, I enjoy activities that are hands-on.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As a barista at a coffeehouse, Lorena Abreu\\'s job is hands-on.\\n\\nShe says, \"When it’s busy, you’re running back and forth – Register! Coffee! Register! Sometimes, there are two people working at the bar, which can be a little overwhelming. One person is preparing the cup, putting the syrups in it, while someone else is steaming the milk and pulling the shots. Shots after shots.\"\\n',\n name: \"Lorena Abreu\",\n career: \"Barista\",\n image:\n \"https://imgix.cosmicjs.com/218c4fd0-453c-11eb-ae0c-07d0b084405e-40d7fcbe5e365545d85e02568801a2bf_Lorena-Abrew-2-of-2.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Derek Lietz, I like evaluating data to understand complicated issues.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a data scientist, Derek Lietz evaluates data to help lawyers make sense of complicated issues.\\n\\nHe says, \"The company that I started at, right out of college, was Elysium Digital. At Elysium, our slogan was “You know the law, we know technology.†What that meant was, we would work with lawyers who were working on technology cases and we would essentially be the backroom tech folks that are helping the lawyers understand the technology issue. Digital forensics is another name for this.\"',\n name: \"Derek Lietz\",\n career: \"Data Scientist\",\n image:\n \"https://imgix.cosmicjs.com/a381b260-88bb-11eb-a1e5-63d55f58b597-UNADJUSTEDNONRAWthumb239c-1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Richard Sherin, I like teaching young people.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a Principal at a high school, Richard Sherin teaches young people to speak up but be respectful at the same time.\\n\\nHe says, \"My favorite part of my job has always been the children. I also like letting my children know that it is okay to disagree with other adults, but it must be done in a respectful manner.\"',\n name: \"Richard Sherin\",\n career: \"High School Principal\",\n image:\n \"https://imgix.cosmicjs.com/59f608b0-453d-11eb-ae0c-07d0b084405e-Screen-Shot-2018-07-01-at-5.12.52-PM.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Jane Bird, I enjoy seeing all kinds of performances.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'As an actress, Jane Bird enjoys seeing all kinds of performances.\\n\\nShe says, \"Explore all that is out there. Go see all performances: charming orators, interesting debates, book readings, inventive music and dance, films, and stand up. It all informs your work. See regional theater and small-scale performances, not just the most competitive shows.\"',\n name: \"Jane Bird\",\n career: \"Actress\",\n image:\n \"https://imgix.cosmicjs.com/ab9dd740-453a-11eb-ae0c-07d0b084405e-Jane-Bird-2.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Wanda Wang, I like work that involves reviewing documents.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a loan officer, Wanda Wang Both spends a lot of time going through documents for her clients.\\n\\n\"The loan officer\\'s job is to help a borrower, or someone who needs money, look for an ideal loan program that fits their scenario. There are many different types of loan programs that are out there, so the loan officer is the expert that helps guide a borrower to go and shop for the loan that will help them purchase the house.\"',\n name: \"Wanda Wang\",\n career: \"Loan Officer\",\n image:\n \"https://imgix.cosmicjs.com/52b69b70-89bf-11eb-9573-45be27b43642-WandaWang4.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Mark Levinsky, I like work that is structured and systematic.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a landscaper in Vermont, Mark Levinsky\\'s work is structured and changes with the season. \\n\\nHe says, \"You do snow removal in the winter, and landscaping and property maintenance in the summer.\"',\n name: \"Mark Levinsky\",\n career: \"Landscaper and Sole Proprietor\",\n image:\n \"https://imgix.cosmicjs.com/764691c0-ba02-11ec-a7cc-25c8f0ace24d-IMG950727001.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Salvador Avila Bretts, I don't mind working long hours for higher salaries.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As a management trainee at JP Morgan, Salvador Avila Bretts was well compensated but often worked 19 hour days. \\n\\nHe says, \"In 2008 I joined the analyst class for JP Morgan, Asset Management. They recruited us with all the Wall Street perks—fantastic compensation, great bonuses, plus the understanding that it would be really hard work...The workload was ridiculous. We started work at 7:00 am and got out at 2:00 am the next morning.\" ',\n name: \"Salvador Avila Bretts\",\n career: \"Managing Director of Business Development\",\n image:\n \"https://imgix.cosmicjs.com/a6b176a0-3432-11ec-ae1a-fd00181e938d-Image-1.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Gina Rupard, I like teaching my patients how to be healthier.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a dental hygienist, Gina Rupard teaches her patients how to take better care of their teeth and gums. \\n\\nShe says, \"When a patient sits in your chair beaming because they have been flossing every day since their last visit with you and their gums don’t bleed anymore and they’re so proud of themselves, you can’t help but feel like a proud parent.\" ',\n name: \"Gina Rupard\",\n career: \"Dental Hygienist\",\n image:\n \"https://imgix.cosmicjs.com/c066f4b0-4538-11eb-ae0c-07d0b084405e-ff765ddf00e76654789a52906dc96359_photo-3.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Kristan Robinson, I enjoy performing rehabiltation therapy.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a licensed physical therapist assistant, Kristan Robinson peforms rehabilitation therapy, which includes occupational, physical and speech therapy.\\n\\nShe says, \"The best parts are anytime a patient does something they didn’t think they could do. Anytime I can do something that will improve a patient’s life, whether it’s in a minor or a major way.\"',\n name: \"Kristan Robinson\",\n career: \"Licensed Physical Therapist Assistant\",\n image:\n \"https://imgix.cosmicjs.com/979d24d0-453a-11eb-ae0c-07d0b084405e-Kristan-Profile-Photo-e1505438464380.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Aneela Rajaram, I like having rules and regulations to follow.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a Senior Controls Manger, Aneela Rajaram makes sure her company follows rules and regulations.\\n\\nShe says, \"My job is to monitor our activities and make sure our operations comply with regulatory bodies...That’s what internal control is: reviewing the steps in a transaction to ensure they were properly followed. This is very important because it allows us to do our financial reporting in a standard way, which in turn allows investors to make proper decisions for public reporting.\" ',\n name: \"Aneela Rajaram\",\n career: \"Senior Internal Control Manager\",\n image:\n \"https://imgix.cosmicjs.com/ea120a40-be3f-11eb-9839-1fdec066e864-Aneela-Rajaram-2.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Jenna Perlstein, I like learning about a business through interactions with customers.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'Jenna Perlstein, Senior Customer Associate, learns about the business by talking to customers.\\n\\nShe says, \"Customer experience is the best way to learn a business because you learn it from the consumer up. You learn it from the inside out. I am absolutely an expert on all things LOLA in a way that not everyone on the team is just based on my job description.\"',\n name: \"Jenna Perlstein\",\n career: \"Senior Customer Associate\",\n image:\n \"https://imgix.cosmicjs.com/e1625630-453a-11eb-ae0c-07d0b084405e-IMG_1783.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Marcy Guttman, I enjoy raising money for a good cause.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As a fundraiser for the Madison Boys and Girls Club, Marcy Guttman reaches out to potential donors to raise money.\\n\\nShe says, \"I’m currently working on a Capital/Endowment Campaign, which entails raising substantial funds to build a facility for underserved youth in one of New York City’s most impoverished neighborhoods. For the potential donors, I schedule tours of our other facilities with our Executive Director so that they have a better understanding of what their donations can achieve. I work with our marketing director to craft communication pieces to send to potential donors to inspire interest. The list goes on but for the most part my job involves writing-emails, letters, proposals and phone calls of all sorts.\"',\n name: \"Marcy Guttman\",\n career: \"Capital Campaign Manager\",\n image:\n \"https://imgix.cosmicjs.com/19ae26e0-a408-11ec-a536-8726e3bb3867-3K1A7307.JPG?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Denny Moe, I am energized by creativity.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'For barber Denny Moe, cutting hair is a purely creative process.\\n\\n\"Cutting hair for me is art. It’s creation. That’s what gets me up in the morning...There’s nothing better than seeing someone look in the mirror and say, “Wow, that’s exactly what I wanted, thank you!†I live for that. That’s the gas that drives this old machine.â€',\n name: \"Denny Moe\",\n career: \"Barber and Owner of Denny Moe's Superstar Barber Shop\",\n image:\n \"https://imgix.cosmicjs.com/32bb8bb0-26e9-11ec-8357-6f5124205417-Best-shot-Denny-doing-a-design-cut.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Betsy Wells, I like collecting information to make sense of a situation.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a sonographer, Betsy Wells collects images to help doctors understand the health of a pregnancy. \\n\\n\"When we’re doing an X-ray, we ask ourselves, Do we have everything the doctor needs to see in the image, as far as the correct anatomy? Then the doctor analyzes everything that\\'s in that image and they can determine, Is that normal? Is there anything abnormal?\"',\n name: \"Betsy Wells\",\n career: \"Sonographer\",\n image:\n \"https://imgix.cosmicjs.com/f599ec50-8cfe-11ec-ae88-8982447d5ddf-Screenshot20220125-123210.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Angelica Wooden, I enjoy serving others.\",\n personality_type: \"personality_type_social\",\n story:\n 'As a flight attendant for Republic Airline, Angelica Wooden serves her passengers throughout the flight.\\n\\nShe says, \"A flight attendant\\'s main purpose is to protect the integrity of the flight deck at all costs. The flight deck is where the pilot sits and operates the plane. On a day-to-day basis, the purpose of a flight attendant is to serve the passengers through the flight to make them comfortable and get them safely to their destination.\"',\n name: \"Angelica Wooden\",\n career: \"Flight Attendant\",\n image:\n \"https://imgix.cosmicjs.com/5bd0fc80-4538-11eb-ae0c-07d0b084405e-1c36b1e63a1913235b5a359eef64d405_angelica_profile-1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Shalija Patel, I enjoy using mathematics to develop a plan.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a medical dosimetrist, Shalija Patel uses mathematics to design cancer patients’ radiation treatment plans.\\n\\nShe says, \"I design the radiation beams and shape the beams and angles so that I can deliver high doses of radiation to the tumor. I see patients only when they come for that initial CT scan, and I try to give them the best possible treatment.\"',\n name: \"Shalija Patel\",\n career: \"Medical Dosimetrist\",\n image:\n \"https://imgix.cosmicjs.com/53ba2a70-756c-11ec-bfef-718573fe8f91-Shailja.-Patel.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Adi Serbaroli, I enjoy work that is physically active.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As a United States Marine Corps Officer, Adi Serbaroli participates in training that is physically active.\\n\\nShe says, \"During training stages, we do long marches where we\\'re carrying about 80lbs of equipment for up to 15 miles at a time. We have to use a basic compass and map and pencil (no GPS allowed) in order to navigate through 24 km of nothing but woods, looking for red mail box stations for 8 hours at a time.\"',\n name: \"Adi Serbaroli\",\n career: \"United States Marine Corps Officer\",\n image:\n \"https://imgix.cosmicjs.com/e9aede10-487f-11eb-96cc-03fa52082d80-1930133291416017878798n.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like James Wood, I enjoy simplifiying complex problems through analysis.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As an actuary, James Wood simplifies complex problems through analysis. \\n\\nHe says, \"An actuary is someone that puts a number on risk. There\\'s a couple of different ways that they can do that. One is through pricing. If you think about your auto insurance, your premium is going to vary by the type of car that your drive, where you live, your gender, your marital status, things like that. All those different characteristics are what we call your risk characteristics and that is how we determine how likely someone is to submit a claim and how much that claim might cost.\"',\n name: \"James Wood\",\n career: \"Actuary \",\n image:\n \"https://imgix.cosmicjs.com/21d79080-927f-11ec-9a4e-05fc85d83574-James-Woods.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Tyrone Bell, I enjoy using tools to build things.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As an electrician\\'s apprentice, Tyrone Bell uses tools to run and bend pipe. \\n\\nHe says, \"It’s actually pretty amazing when you see—when I was here last year at this time there was no building at all—there were just dirt and an empty hall. And seeing how much progress we had from last year to this year—it’s nice to see. Then you can look back at it for years to come and say hey, I was a part of building that.\"',\n name: \"Tyrone Bell\",\n career: \"Electrician's Apprentice\",\n image:\n \"https://imgix.cosmicjs.com/2abc6250-453e-11eb-ae0c-07d0b084405e-8a35e9ac67997014140c088f4b6b439b_Screen-Shot-2017-12-22-at-12.48.20-PM.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Kit Yan, I enjoy complex situations that require sensitivity. \",\n personality_type: \"personality_type_artistic\",\n story:\n 'As an award-winning playwright and poet, Kit Yan writes about situations that require sensitivity.\\n\\nThey say, \"When I zoom out, I see the greater landscape of what I’m doing. I’m influencing American theatre and shifting the narrative to include queer and trans folks of color. I’m creating jobs and opportunities and projects and the opportunity to dream about a world that I want to live in.\"',\n name: \"Kit Yan\",\n career: \"Playwright and Poet\",\n image:\n \"https://imgix.cosmicjs.com/a829c9b0-453b-11eb-ae0c-07d0b084405e-5f9e00dec6a6498833e7df690e8ee819_Kit-Yan.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Alfredo Garma, I enjoy turning my ideas into drawings.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'As a graphic artist, Alfredo Garma sketches his ideas with pencil and paper.\\n\\nHe says, \"Every one of the logos I’ve done I can show you the origins of how it developed in my sketchbook. Over the years I’ve learned how to edit in my head – I can think about it, visualize, and see if it’s going to work and then put it on paper.\"',\n name: \"Alfredo Garma\",\n career: \"Graphic Designer\",\n image:\n \"https://imgix.cosmicjs.com/16714820-4538-11eb-ae0c-07d0b084405e-24131572_493937647656174_5997800359132330081_n.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Megan Barko, I like putting out fires.\",\n personality_type: \"personality_type_realistic\",\n story:\n \"Megan Barko previously worked at U.S. Steel and was the commander for one of the largest fires ever.\\n\\nShe says,\\\"The guys in the plant used a torch to cut steel and a piece fell in between two plastic tanks. It smoldered for a while, and then caught fire. I had a team of five guys who responded with one fire truck, which eventually grew to five trucks on site. We made sure the electricity and gas were off and hit the flames with foam and water. It was a huge fire. Smoke poured out of the roof. The flames were 40 to 50 feet high. You're in there and you're feeling the heat on your protective clothing. It took 10-hours to put that fire out, and it was a $90-million loss to U.S. Steel. The workers all got out. I couldn't ask for more than that. Buildings can be replaced but people cannot.\\\"\",\n name: \"Megan Barko\",\n career: \"Deputy Fire Marshal & Tank Inspector\",\n image:\n \"https://imgix.cosmicjs.com/2917ce70-7739-11ec-bfef-718573fe8f91-Megan-on-ropes.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Courtney McDonald, I like using principles in medicine to help people feel better.\",\n personality_type: \"personality_type_social\",\n story:\n \"As a licensed massage and medical therapist, Courtney McDonald uses principles in medicine to help people.\\n\\n\\\"I have a 25-year-old fitness instructor who had a life-threatening brain tumor when she was about 17 years old. She's got a pretty significant scar going all the way across her head. As a result of that, she’s got nerve pain all over the place. That has been a really difficult case. We've been working together for about two and a half years now. She comes once a week, and she always says that I changed her life.\\\"\",\n name: \"Courtney McDonald\",\n career: \"Licensed Massage and Medical Therapist\",\n image:\n \"https://imgix.cosmicjs.com/174d5a60-7bc2-11ec-8c2f-a300cf8a78dc-IMG20220105154908352.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Alec Beckett, I like managing a team.\",\n personality_type: \"personality_type_enterprising\",\n story:\n \"As creative director of an advertising firm, Alec Beckett manages a team.\\n\\nHe says, \\\"My responsibilities as creative director are the output and the quality of the work that our agency does. Whether it's a Superbowl TV spot, or a Facebook post that we're doing for a client, ultimately its quality comes down to me and my partner. I've got nine people who report to me: designers, copywriters, art directors, social media people, and it's ultimately my job to get great work out of our people.\",\n name: \"Alec Beckett\",\n career: \"Creative Director \",\n image:\n \"https://imgix.cosmicjs.com/d0704ab0-4537-11eb-ae0c-07d0b084405e-a7137a34439b75543597db0c88bbed3a_alec1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Stefanie Goldberg, I like interacting with powerful people.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As Senior Talent Development, Stefanie Goldberg interacts with powerful people in senior leadership.\\n\\nShe says, \"I get to interact with so many people--we have roughly about 40,000 associates, and I don’t interact with all of them, but it’s really cool to think that the work that I do and that my team does help to influence and impact those 40,000 associates. And then, you know, I get to interact with very senior leadership, which is really cool as well.\"',\n name: \"Stefanie Goldberg\",\n career: \"Senior Director of Talent Management\",\n image:\n \"https://imgix.cosmicjs.com/6c2f4aa0-8dad-11ec-ae88-8982447d5ddf-STefanie.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Archie Roberts, I like that my work requires me to talk to people about what they care about.\",\n personality_type: \"personality_type_social\",\n story:\n \"As a psychotherapist, Archie Roberts meets with patients one-on-one and talks to them about what they care about..\\n\\nHe says, “All-day long I get to sit down and talk with people about the most important things in their lives. I mean, what's better than that?â€\",\n name: \"Archie Roberts\",\n career: \"Psychotherapist\",\n image:\n \"https://imgix.cosmicjs.com/7ec580d0-4538-11eb-ae0c-07d0b084405e-f8691c325e52bda7d2a8465b842a378e_OLG_367_2_2-e1403358061734-copy.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Lacurshia Harris, I like work that is straightforward.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a phlebotomist, Lacurshia Harris\\' work is straightforward.\\n\\nShe says, \"Drawing blood is pretty straightforward, but when patients get nervous, my job calls for me to be a listening ear, a shared family member, or a prayer warrior. \"',\n name: \"Lacurshia Harris\",\n career: \"Phlebotomist and Phlebotomy Instructor\",\n image:\n \"https://imgix.cosmicjs.com/b70bd610-0567-11ed-b7be-d956591ad437-Lacurshia-at-work.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Ben Wright, I enjoy meeting dozens of people a day.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As the campaign manager for someone running for governor, Ben Wright meets dozens of people a day.\\n\\nHe says, \"Candidates running for statewide office meet dozens or more people a day. Many of them want to connect with the candidate about something local and so the person who is with the candidate is able to take down their information to find out how to engage with them to get them involved in the campaign. For example, I was at a meeting in Jamaica Plain on Monday. We met two people who seemed really great so they’re coming to join our policy team. It’s my job to follow up and make sure that happens.\"',\n name: \"Ben Wright\",\n career: \"Campaign Manager \",\n image:\n \"https://imgix.cosmicjs.com/5fd9f2e0-453e-11eb-ae0c-07d0b084405e-ben1-e1493644638239.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Anna Low, I enjoy figuring out a solution with all of the information available to me.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As a family physician, Anna Low uses all of the information available to her to help her patients.\\n\\nShe says, \"We take what we’ve learned in textbooks and apply it to the real world. Take high blood pressure, for instance. We might learn about the science of why it happens, but you have to see the patient as a person as well with their own unique ways of dealing with that illness to know how to help them. For example, a homeless person might not be able to control their blood pressure because they don’t necessarily have access to regular food sources. ',\n name: \"Anna Low\",\n career: \"Family Physician\",\n image:\n \"https://imgix.cosmicjs.com/085abdd0-8529-11eb-a95f-87eaa19894a9-Screen-Shot-2021-03-14-at-8.54.39-PM.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Amorie Robinson, I like helping people heal. \",\n personality_type: \"personality_type_social\",\n story:\n 'As a clinical psychologist, Amorie Robinson helps people heal from trauma.\\n\\nShe says, \"Clinical psychology is about figuring out the “why.†Why, for example, is someone having panic attacks, mood swings, insomnia, or problems in a relationship? There are a lot of people walking around with trauma and if that trauma doesn’t get addressed, even though it may have happened many years ago, it can affect their overall functioning. We get to the root of the problem, so they can untangle these things and heal.\"',\n name: \"Amorie Robinson\",\n career: \"Clinical Psychologist\",\n image:\n \"https://imgix.cosmicjs.com/e38b73d0-0a63-11ec-916a-1b70c6cc245e-20200113162813.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Amanda Markley, I like taking care of the needs of animals.\",\n personality_type: \"personality_type_realistic\",\n story:\n \"As a zookeeper, Amanda Markley takes care of the needs of animals, including aoudads, red river hogs, the West African crowned crane, and African spur side tortoises.\\n\\n\\\"Zookeepers take care of animals but don't just feed and clean up after them. Zookeepers also train them and monitor the animals’ psychological well-being and develop a relationship with their animals of respect and trust so that if we have to do a presentation for the public or a medical procedure with them, they'll cooperate.\\\"\",\n name: \"Amanda Markley\",\n career: \"Zookeeper\",\n image:\n \"https://imgix.cosmicjs.com/40cf3aa0-4538-11eb-ae0c-07d0b084405e-9dbeb67a926a44e6fece515a8cffc87f_Amanda-copy.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Tara Plochocki, I enjoy researching evidence for a case.\",\n personality_type: \"personality_type_investigative\",\n story:\n \"As a lawyer, Tara Plochocki's work requires a lot of research to prepare for court.\\n\\nShe says, \\\"It is rewarding when we're able to get courts to do the right thing. For example, I sued on behalf of a journalist, who was actually a stand-up comedian from Brooklyn who converted to Islam and moved to Syria some years ago, because he felt like he was not getting the real news about what was happening in the Syrian conflict. He started a news network, and because he proved himself to be trustworthy, he was able to interview all these different rebel groups. Well, the way the CIA works, if I'm a rebel in Syria, and you're a journalist, and we're hanging out, and the CIA can tell our phones are together, guess what the government thinks you are? So he was almost killed by drones five times before he made his way to the organization we work with and then to me. We sued the government for a violation of his constitutional rights.\\\" \",\n name: \"Tara Plochocki\",\n career: \"International Lawyer and Partner at a Law Firm\",\n image:\n \"https://imgix.cosmicjs.com/f44f93c0-974b-11ec-8bb7-91577e4f4933-IMG3660.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Jim Frohna, I believe my strongest asset is my artistic talent.\",\n personality_type: \"personality_type_artistic\",\n story:\n 'As a Cinematographer who has worked on Big Little Lies on HBO, among other television shows, Jim Frohna\\'s strongest asset is his artistic talent. \\n\\nHe says, \"My job is to collaborate with the director to bring the visual look of the project to life, work really closely with the production designer who has a huge impact on the visual storytelling as well, run the camera department, and oversee the lighting and grip department.\" ',\n name: \"Jim Frohna\",\n career: \"Cinematographer\",\n image:\n \"https://imgix.cosmicjs.com/62d712f0-8a6e-11eb-bb26-d9125127b7e0-1-Headshot.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Dan Bjorkegren, I enjoy exploring new ways to use technology to solve problems.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As an economist and Professor at Brown Univerisity, Dan Bjorkegren explores new ways to use technology to solve problems.\\n\\nHe says, \"If you went back in time, say 20 years ago, many of the poorest countries had basically no phones and no internet. If you were a typical Rwandan, there was just no way to communicate remotely—you had to visit someone in person. There was no way to use software or anything digital. But over the past 20 years, cell phones have become available to even the very poor, which has started to allow people to use digital services, apps and the internet (though those have still not reached everyone). In my work, I ask, “Now that people have this new technology, what opportunities for them can we create with that?â€\"',\n name: \"Dan Bjorkegren\",\n career: \"Assistant Professor of Economics\",\n image:\n \"https://imgix.cosmicjs.com/81466c20-7a3a-11eb-ab8e-bd77c5b212a3-DSC0615square.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Similar Dr. Andrew Lam, I like to manually fix things.\",\n personality_type: \"personality_type_realistic\",\n story:\n \"As a retina surgeon, Dr. Andrew Lam manually fixes people with sight-threatening conditions.\\n\\nHe says, \\\"I really wanted to choose a surgical specialty because I love to fix things, and I like taking action. There are doctors who are more cerebral, problem solvers who like to solve mysteries. They often will go into internal medicine where there are many diagnostic challenges, where you are trying hard to figure out what a patient's disease state is and how to best treat that person medically. I'm a little too impatient for that. I like to do treatments and see immediate results, so I was definitely looking into the different surgical subspecialties.\\\" \",\n name: \"Dr. Andrew Lam\",\n career: \"Retina Surgeon\",\n image:\n \"https://imgix.cosmicjs.com/589ef670-4538-11eb-ae0c-07d0b084405e-0-1.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Lorena Abreu, I enjoy influencing the decisions of others. \",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As a barista, Lorena Abreu tries to steer her customers in a certain direction.\\n\\nShe says, \"You can chat people up, say, “I had this drink this morning, do you want to try it?†I love our chai – we make the tea separately, leave it overnight, and then add our own spice blend. It’s so rich and creamy.\"\\n',\n name: \"Lorena Abreu\",\n career: \"Barista\",\n image:\n \"https://imgix.cosmicjs.com/218c4fd0-453c-11eb-ae0c-07d0b084405e-40d7fcbe5e365545d85e02568801a2bf_Lorena-Abrew-2-of-2.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Aaron Symonds, I like work that requires me to be in touch with the emotions of others. \",\n personality_type: \"personality_type_artistic\",\n story:\n 'As a composer, Aaron Symonds uses music to connect to the emotions of people.\\n\\nHe says, \"I love connecting to people and music is the most direct way you can connect with people, bypassing language and just going directly to their emotions.\"',\n name: \"Aaron Symonds\",\n career: \"Film and TV Composer\",\n image:\n \"https://imgix.cosmicjs.com/c75ed1d0-4537-11eb-ae0c-07d0b084405e-fb4e03fa9e300116b20d9031cbc0b811_AaronHeadshot1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Leticia Romney, I like finding and removing grammatical errors from reports.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a copy editor, Leticia Romney finds and removes grammatical errors from reports.\\n\\nShe says, \"Copy editing is like proofreading. For example, copy editing projects might be where I receive a report from a medical facility, or a law office, and they\\'re looking for me to comb through the report for any grammatical errors, or errors with spelling, capitalization, punctuation, conciseness, and looking at the organization of the piece.\" ',\n name: \"Leticia Romney\",\n career: \"Copyeditor, Copywriter, and Business Owner\",\n image:\n \"https://imgix.cosmicjs.com/2e534bd0-2dc9-11ec-b5e8-73b095e03049-1275110139418138630256703858600978175338521n-1.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Hout Seng, I like receiving clear instructions from my boss.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a cook, Hout Seng receives clear instructions from his boss on what to cook for the day.\\n\\nHe says, \"On most days I check with the lead to see what they need me to do. Sometimes the lead says, \"make a soup, a starch, and an entree for lunch.\" Today, I came in and they gave me a turkey, mashed potatoes, and gravy.\"',\n name: \"Hout Seng\",\n career: \"Cook\",\n image:\n \"https://imgix.cosmicjs.com/76910f90-453a-11eb-ae0c-07d0b084405e-Houtprof.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Jason Feifer, I like having control over a company's mission.\",\n personality_type: \"personality_type_enterprising\",\n story:\n 'As editor-in-chief of Entrepreneur Magazine, Jason Feifer has control over the company\\'s mission. \\n\\nHe says, \"As editor-in-chief, it is my responsibility to define the mission and to ensure that everything that we do--every decision we make on the editorial side, anything part of the editorial product--anything you read on the magazine, read online, anything on the podcast, anything on stage--serves that mission.\"',\n name: \"Jason Feifer\",\n career: \"Editor-in-Chief\",\n image:\n \"https://imgix.cosmicjs.com/0c5e1f40-89ab-11eb-9573-45be27b43642-JC69509.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like David Henriquez, I enjoy understanding how the universe works.\",\n personality_type: \"personality_type_investigative\",\n story:\n 'As an aerospace engineer working at NASA, David Henriquez studies how the universe works.\\n\\nHe says, \"I am currently working on the Psyche mission, which is a NASA mission that will explore an asteroid called 16 Psyche. It is a unique and intriguing body in the asteroid belt that, unlike most other asteroids, but similar to Earth’s core, is mostly made of metal. There are a lot of questions about the origin of Psyche. Some theories posit that it is a leftover fragment from the birth of the solar system. Regardless, Psyche presents what may be our only opportunity to study part of a planetary core that’s frozen in time and space, and understand how magnetic fields are generated by metallic cores. This will help us understand our own planet since we don’t have the technology to drill into Earth’s core—no matter what the movies suggest!\"',\n name: \"David Henriquez\",\n career: \"Aerospace Engineer\",\n image:\n \"https://imgix.cosmicjs.com/b06aa6d0-d1fe-11eb-99f3-f5daa6ac37d2-D20160816T028.jpg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question:\n \"Like Gennady Gelman, I like looking for answers by reviewing large amounts of data.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As the Director of Infomatics, Gennady Gelman looks for answers in large amounts of data.\\n\\nHe says, \"In the case of medical informatics, we do data analysis within health systems. This year, for example we calculated the colonscopy rate, which is the number of people getting colonoscopies versus the number of people who should be getting colonoscopies, to see how we compared to the state average. Then we came up with ideas to bring about change.\" ',\n name: \"Gennady Gelman\",\n career: \"Chief Medical Informatics Officer\",\n image:\n \"https://imgix.cosmicjs.com/99a35f00-6817-11ec-9a64-73e60d601d04-Gennady.jpeg?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Anthony Randall, I have athletic abilities.\",\n personality_type: \"personality_type_realistic\",\n story:\n 'As the Associate Head Swim Coach at the University of Rhode Island, Anthony Randall has athletic abilties.\\n\\nHe says, \"I started swimming at the age of five. Ultimately my goal was to make it to the Olympics. I wanted to win and that drove me to train.\"',\n name: \"Anthony Randall\",\n career: \"Swim Coach\",\n image:\n \"https://imgix.cosmicjs.com/789ad430-4538-11eb-ae0c-07d0b084405e-ad72ede80e92c8c9fd6a43d91b0abbd8_Anthony-copy.png?w=294&h=294&fit=crop&crop=faces\",\n },\n {\n question: \"Like Lizzy Wolozin, I am motivated by making my boss happy.\",\n personality_type: \"personality_type_conventional\",\n story:\n 'As a paralegal for the The Prisoners’ Rights Project, Lizzy Wolozin helps her boss with whatever is needed.\\n\\nShe says, \"A paralegal is whatever the lawyer you’re working for wants it to be. You help the lawyers do whatever they want to do. We do document preparation, case support, clerical work, and whatever is needed to support legal offices and their functioning...You push paper around and answer the phones.\"',\n name: \"Lizzy Wolozin\",\n career: \"Paralegal\",\n image:\n \"https://imgix.cosmicjs.com/117dbf20-453c-11eb-ae0c-07d0b084405e-af809e222da4b3e572e620f9f7e95465_Screen-Shot-2019-06-23-at-3.57.01-PM.png?w=294&h=294&fit=crop&crop=faces\",\n },\n ]\n}\nexport default questionData\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from \"../../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faThumbsUp as falThumbsUp,\n faThumbsDown as falThumbsDown,\n} from \"@fortawesome/pro-light-svg-icons\"\nimport {\n faThumbsUp as fasThumbsUp,\n faThumbsDown as fasThumbsDown,\n} from \"@fortawesome/pro-solid-svg-icons\"\n\nimport \"./ThumbsFeedback.css\"\n\nconst ThumbsFeedback = ({ contentSlug, setDislikedCareerSlugs }) => {\n const { profile, firebase, updateAssessment } = useContext(FirebaseContext)\n\n const [likedCareer, setLikedCareer] = useState(false)\n const [dislikedCareer, setDislikedCareer] = useState(false)\n\n // isLoading state to prevent rapid toggling of thumbs lag\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n // checks that profile and contentSlug exists\n if (profile && contentSlug) {\n // Profile is handled with a snapshot subscriber, so we leverage\n // profile updates rather than using component state to track liked/disliked careers.\n // This way, if a bookmark is updated in another tab, the change will trigger\n // useEffect to update this one immediately.\n\n const isLiked =\n profile.assessmentRecord?.likedCareers?.includes(contentSlug) || false\n const isDisliked =\n profile.assessmentRecord?.dislikedCareers?.includes(contentSlug) || false\n\n if (isLiked !== likedCareer) {\n setLikedCareer(isLiked)\n }\n\n if (isDisliked !== dislikedCareer) {\n setDislikedCareer(isDisliked)\n }\n }\n }, [profile, contentSlug])\n\n /**\n * Insert liked/disliked careers into the existing sets\n *\n * @param {string} contentSlug\n * @param {string} feedbackType\n */\n const addCareer = async (contentSlug, feedbackType) => {\n // updating firebase assessment record with the new set\n try {\n // use arrayUnion to prevent race conditions\n await firebase.addAssessmentCareersFeedback({\n feedbackType: feedbackType,\n contentSlug: contentSlug,\n })\n } catch (error) {\n console.error(\"Firebase Update Error:\", error)\n alert(\n `There was a problem adding this content to ${feedbackType}. Please try again later.`\n )\n }\n }\n\n /**\n * Insert liked/disliked careers into the existing sets\n *\n * @param {string} contentSlug\n * @param {string} feedbackType\n */\n const removeCareer = async (contentSlug, feedbackType) => {\n // updating firebase assessment record with the new set\n try {\n await firebase.removeAssessmentCareersFeedback({\n feedbackType: feedbackType,\n contentSlug: contentSlug,\n })\n } catch (error) {\n console.error(\"Firebase Update Error:\", error)\n alert(\n `There was a problem removing this content from ${feedbackType}. Please try again later.`\n )\n }\n }\n\n /**\n * Handle keypress events for thumbs toggle\n *\n * @param (SyntheticEvent) e\n * @param (string) feedbackType\n */\n const handleKeyPress = (e, feedbackType) => {\n if (e.key === \" \" || e.key === \"Enter\" || e.key === \"Spacebar\") {\n e.preventDefault()\n toggleThumbs(feedbackType)\n }\n }\n\n /**\n * Handle click events for thumbs toggle\n *\n * @param (SyntheticEvent) e\n * @param (string) feedbackType\n */\n const handleClick = (e, feedbackType) => {\n e.preventDefault()\n toggleThumbs(feedbackType)\n }\n\n /**\n * Handle thumbs changes for both clicks and key presses\n *\n * @param {string} feedbackType - \"likedCareer\" or \"dislikedCareer\"\n * @param {boolean} currentState - current state of the career (liked/disliked)\n * @param {Function} setStateFunc - function to set the state (setLikedCareer or setDislikedCareer)\n */\n const toggleThumbs = async feedbackType => {\n // lock thumbs functionality until career updated\n setIsLoading(true)\n\n if (feedbackType === \"dislikedCareer\" && !dislikedCareer) {\n setDislikedCareerSlugs(prev => [...prev, contentSlug])\n await addCareer(contentSlug, \"dislikedCareers\")\n await removeCareer(contentSlug, \"likedCareers\")\n } else if (feedbackType === \"likedCareer\" && !likedCareer) {\n setLikedCareer(true)\n await addCareer(contentSlug, \"likedCareers\")\n } else if (feedbackType === \"likedCareer\" && likedCareer) {\n setLikedCareer(false)\n await removeCareer(contentSlug, \"likedCareers\")\n } else if (feedbackType === \"dislikedCareer\" && dislikedCareer) {\n // should never get here\n console.error(\"career showing up after disliked error\")\n }\n\n await updateAssessment()\n setIsLoading(false)\n }\n\n return (\n <div className=\"thumbs-container\">\n <FontAwesomeIcon\n icon={likedCareer ? fasThumbsUp : falThumbsUp}\n size=\"lg\"\n flip=\"horizontal\"\n onClick={!isLoading ? e => handleClick(e, \"likedCareer\") : null}\n onKeyPress={!isLoading ? e => handleKeyPress(e, \"likedCareer\") : null}\n role=\"button\"\n />\n <FontAwesomeIcon\n icon={dislikedCareer ? fasThumbsDown : falThumbsDown}\n size=\"lg\"\n onClick={!isLoading ? e => handleClick(e, \"dislikedCareer\") : null}\n onKeyPress={\n !isLoading ? e => handleKeyPress(e, \"dislikedCareer\") : null\n }\n role=\"button\"\n />\n </div>\n )\n}\n\nexport default ThumbsFeedback\n","import { useStaticQuery, graphql } from \"gatsby\"\n\nexport const useCareers = locale => {\n let { allCosmicjsCareers } = useStaticQuery(graphql`\n query {\n allCosmicjsCareers {\n edges {\n node {\n slug\n id\n title\n locale\n metadata {\n career_banner_image {\n url\n imgix_url\n }\n career_pathways_filter\n career_education_required_filter\n career_display_top_match\n career_salary_entry_level\n career_salary_experienced\n career_dress {\n value\n }\n career_physical_activity {\n value\n }\n career_salary_median\n career_demand {\n value\n }\n career_related_major {\n slug\n title\n metadata {\n major_cip\n }\n }\n career_job_categories {\n title\n slug\n }\n }\n }\n }\n }\n }\n `)\n return allCosmicjsCareers.edges\n .filter(career => career.node.locale === locale)\n .map((career, index) => ({\n key: index,\n slug: career.node.slug,\n id: career.node.id,\n title: career.node.title,\n career_display_top_match: career.node.metadata.career_display_top_match,\n career_education_level: career.node.metadata.career_education_required_filter,\n career_dress: career.node.metadata.career_dress.value,\n career_activity: career.node.metadata.career_physical_activity.value,\n career_salary_entry_level: career.node.metadata.career_salary_entry_level,\n career_salary_median: parseFloat(career.node.metadata.career_salary_median?.replaceAll(\",\", \"\")),\n career_salary_experienced: career.node.metadata.career_salary_experienced,\n career_demand: career.node.metadata.career_demand.value,\n career_job_categories: career.node.metadata.career_job_categories,\n type: career.node.type,\n career_banner_image: career.node.metadata.career_banner_image?.imgix_url,\n career_related_major: career.node.metadata.career_related_major,\n locale: career.node.locale,\n career_pathways_filter: career.node.metadata.career_pathways_filter,\n }))\n}\n","/**\n * Output array from Firestore.assessments.<userID>.resultProfile map\n *\n * Can also be used for career personality profiles\n *\n * The resulting object contains an array of numbers, in a format that\n * can be used for chart generation and correlational calculations\n *\n * @example\n * {\n * resultProfile: {\n * personality_type_artistic: 3.25,\n personality_type_conventional: 2,\n personality_type_enterprising: 3.5,\n personality_type_investigative: 4,\n personality_type_realistic: 4.75,\n personality_type_social: 2\n * }\n * }\n *\n * outputs to [3.25, 2, 3.5, 2, 3.5, 4, 4.75, 2]\n *\n * @param {object} profile\n *\n * @return {null|array}\n */\nexport const arrayFromPersonalityType = profile => {\n // order of personality types, must be kept consistent or else correlation results will be wrong\n const typeOrder = [\n \"personality_type_realistic\",\n \"personality_type_investigative\",\n \"personality_type_artistic\",\n \"personality_type_social\",\n \"personality_type_enterprising\",\n \"personality_type_conventional\",\n ]\n\n if (!profile || typeof profile !== \"object\") {\n console.error(\"could not build array from profile\")\n return null\n }\n\n // get correctly sorted array based upon currentPersonalityProfile\n const userPersonalityArray = Object.keys(profile).sort(\n (a, b) => typeOrder.indexOf(a) - typeOrder.indexOf(b)\n )\n\n return userPersonalityArray.map(key => profile[key])\n}\n\nexport const getRIASECCode = profile => {\n // order of personality types, must be kept consistent or else correlation results will be wrong\n const typeOrder = [\n \"personality_type_realistic\",\n \"personality_type_investigative\",\n \"personality_type_artistic\",\n \"personality_type_social\",\n \"personality_type_enterprising\",\n \"personality_type_conventional\",\n ]\n\n if (!profile || typeof profile !== \"object\") {\n console.error(\"could not build array from profile\")\n return null\n }\n\n const userPersonalityArray = Object.entries(profile).sort(\n (a, b) => b[1] - a[1]\n )\n\n const topTraits = userPersonalityArray\n .filter((personalityArr, index, arr) => {\n if (personalityArr[1] >= arr[2][1]) {\n return true\n }\n })\n .map(fullType => fullType[0].split(\"_\")[2])\n\n const code = topTraits.map(trait => trait.charAt(0).toUpperCase()).join(\"\")\n\n return {\n code: code,\n categories: topTraits,\n }\n}\n\n/**\n * Converts correlation coef to strength categories for users personal match\n *\n * outputs to \"excellent\" || \"good\" || \"fair\" || \"none\"\n *\n * output is used in labels as well as appended to CSS classes for variable styling\n *\n * @param {matchStrength} num between -1 and 1\n *\n * @return {string}\n */\nexport const calcMatchStrength = (matchStrength) => {\n if (matchStrength > 0.729) {\n return \"Excellent\"\n } else if (matchStrength > 0.608) {\n return \"Good\"\n } else if (matchStrength > 0) {\n return \"Fair\"\n } else {\n return \"none\"\n }\n}\n\nexport const orderPersonalityStrength = profile => {\n if (!profile || typeof profile !== \"object\") {\n console.error(\"could not build array from profile\")\n return null\n }\n\n const strengthSorted = Object.entries(profile).sort((a, b) => b[1] - a[1])\n\n return {\n labels: strengthSorted.map(category => category[0].split(\"_\")[2]),\n values: strengthSorted.map(category => category[1]),\n }\n}\n\nexport const makePosessive = name => {\n if (typeof name === \"string\" && name.length > 0) {\n return name.slice(-1) === \"s\" ? `${name}'` : `${name}'s`\n } else {\n return \"\"\n }\n}\n\n// removes careers that are absent on cosmic\nexport const removeMissingCareers = (matches, allCareers) => {\n return matches.filter(career => {\n if (allCareers.some(allCareer => allCareer.slug === career.slug)) {\n return true\n }\n })\n}\n\n// returns top 10 career matches that currently exist in cosmic that are set to display in results page\nexport const getTopTenMatches = (matches, allCareers) => {\n\n const avaliableCareers = matches?.filter(career => {\n if (allCareers.some(allCareer => allCareer.slug === career.slug)) {\n return true\n }\n })\n\n const displayConfirmedCareers = avaliableCareers\n .filter(career => {\n let cosmicCareer = allCareers.find(\n allCareer => allCareer.slug === career.slug\n )\n\n if (cosmicCareer && cosmicCareer.career_display_top_match !== false) {\n return true\n } else {\n return false\n }\n })\n .slice(0, 10)\n\n return displayConfirmedCareers\n}\n","import React, { useState, useEffect, useContext } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faBookmark as fasBookmark } from \"@fortawesome/free-solid-svg-icons\"\nimport { faBookmark as farBookmark } from \"@fortawesome/free-regular-svg-icons\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { notificationOptions } from \"../dashboard/notifications/notificationOptions\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nimport \"./bookmark.css\"\n\n\nconst Bookmark = props => {\n const { profile, firebase, notifier } = useContext(\n FirebaseContext\n )\n const { style, label, classContext, contentId, contentSlug, contentType, contentTitle = '', jobCategories, careerPathwaysFilter } = props\n const [bookmarked, setBookmarked] = useState(false)\n const [showComponent, setShowComponent] = useState(true)\n const { locale } = useIntl()\n\n useEffect(() => {\n // Gatekeeper in case we don't get the props we depend on\n if (!contentSlug || !contentType) {\n // todo remove this after updating all components\n console.info(\"Bookmarks hidden due to missing prop!\")\n setShowComponent(false)\n }\n\n if (profile && contentSlug) {\n // Profile is handled with a snapshot subscriber, so we leverage\n // profile updates rather than using component state to track bookmarks.\n // This way, if a bookmark is updated in another tab, the change will trigger\n // useEffect to update this one immediately.\n if (!!profile.bookmarks && profile.bookmarks[contentSlug]) {\n setBookmarked(true)\n } else {\n setBookmarked(false)\n }\n }\n }, [profile, contentId, contentSlug, contentType])\n\n /**\n * Insert bookmark into the existing set.\n *\n * @param {string} contentId\n * @param {string} contentType\n * @param {string} contentSlug\n */\n const addBookmark = async (contentSlug, contentId, contentType, contentTitle, jobCategories, careerPathwaysFilter) => {\n // additional data attached to career bookmarks\n let careerData = {\n careerInterest: {\n content_title: contentTitle || '',\n content_slug: contentSlug || '',\n },\n jobCategoryInterest: {\n content_title: jobCategories?.title || '',\n content_slug: jobCategories?.slug || '',\n },\n careerClusterInterests: careerPathwaysFilter || [],\n }\n\n let newData\n \n newData = {\n ...profile.bookmarks,\n [contentSlug]: {\n contentId,\n contentSlug,\n contentType,\n contentTitle,\n dateAdded: new Date(),\n ...(contentType === 'careers' ? careerData : {}), // Conditionally spread careerData\n },\n }\n\n persistData(newData, 'ADD')\n await notifier.handleNewBookmark(contentType, contentTitle, contentSlug, profile)\n }\n\n /**\n * Remove a bookmark entry from the existing set.\n *\n * @param {string} contentSlug\n * @returns {null}\n */\n const removeBookmark = contentSlug => {\n const items = profile.bookmarks \n if (!items || !items[contentSlug]) {\n return null\n }\n\n delete items[contentSlug]\n persistData(items, 'REMOVE')\n }\n\n\n const persistData = (newData, addingOrRemovingFlag) => {\n\n firebase.updateProfile({ data: { ['bookmarks']: newData } }).catch(() => {\n alert(\n <FormattedMessage id=\"bookmark-error-alert-message\" defaultMessage=\"There was a problem bookmarking this content. Please try again later.\" />\n )\n })\n }\n\n\n /**\n * Handle keypress events for the Bookmark toggle.\n * @param {SyntheticEvent} e\n */\n const handleKeyPress = e => {\n if (e.key === \" \" || e.key === \"Enter\" || e.key === \"Spacebar\") {\n e.preventDefault()\n toggleBookmark()\n }\n }\n\n /**\n * Handle click/touch events for the Bookmark toggle.\n * @param {SyntheticEvent} e\n */\n const handleClick = e => {\n e.preventDefault()\n toggleBookmark()\n }\n\n /**\n * Handle bookmark changes for both clicks and key presses.\n */\n const toggleBookmark = () => {\n if (bookmarked) {\n removeBookmark(contentSlug)\n } else {\n addBookmark(contentSlug, contentId, contentType, contentTitle, jobCategories, careerPathwaysFilter)\n }\n setBookmarked(!bookmarked)\n }\n\n // To prevent bad data, don't show the feature if we don't have the content information.\n // todo: remove along with state logic when components updated\n if (!showComponent) {\n return <></>\n }\n\n return (\n <div\n style={style}\n className={`bookmark component-bookmark component-bookmark-${classContext}`}\n onClick={handleClick}\n onKeyDown={handleKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n > {!!label && <span>{label}</span>}\n {!!bookmarked && <FontAwesomeIcon icon={fasBookmark} />}\n {!bookmarked && <FontAwesomeIcon icon={farBookmark} />}\n </div>\n )\n}\n\nBookmark.propTypes = {\n contentSlug: PropTypes.string.isRequired,\n contentId: PropTypes.string.isRequired,\n contentType: PropTypes.string.isRequired,\n}\n\nexport default Bookmark\n","/**\n * Organize a map of maps from Firestore.users.<userID>.profile.bookmarks\n * into groups by Cosmic object type.\n *\n * The resulting object contains arrays of strings, in a format that\n * can be used for an Algolia filter set.\n *\n * @example\n * {\n * stories: [\n * 'slug:dr-maya-warren',\n * 'slug:jacinta-marie-puckett'\n * ]\n * }\n *\n * @param {object} bookmarks\n *\n * @return {null|object}\n */\nexport const organizeByType = (bookmarks) => {\n if (!bookmarks || typeof bookmarks !== 'object') {\n return null\n }\n\n const sortedBookmarks = {}\n\n Object.entries(bookmarks).forEach(item => {\n if (!sortedBookmarks[item[1].contentType]) {\n sortedBookmarks[item[1].contentType] = []\n }\n sortedBookmarks[item[1].contentType].push(`slug:${item[1].contentSlug}`)\n })\n\n return sortedBookmarks\n}\n\n/**\n * Generate valid Algolia filter list from saved items array.\n *\n * @param {object} organizedBookmarks - results of organizeByType\n * @param {string} type\n * @returns {null|string}\n */\nexport const getFilters = (organizedBookmarks, type) => {\n if (organizedBookmarks && organizedBookmarks.hasOwnProperty(type)) {\n return organizedBookmarks[type].join(' OR ')\n } else {\n return null\n }\n}\n","import React, { useState } from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport Link from \"../../link\"\nimport { calcMatchStrength } from \"../assessment/utils/utils\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport ThumbsFeedback from \"../assessment/thumbs-feedback/ThumbsFeedback.js\"\nimport { demandTranslations } from \"../../utils\"\nimport { useCareers } from \"../assessment/useCareers.js\"\n\nconst CardCareers = props => {\n const {\n img,\n title,\n slug,\n salaryEntry,\n salaryExperienced,\n correlation,\n demand,\n category,\n objectID,\n contentType,\n hideBookmarks,\n thumbsFeedback,\n setDislikedCareerSlugs,\n } = props\n const { locale } = useIntl()\n const allCosmicjsCareers = useCareers(locale)\n const matchedCareer = allCosmicjsCareers.find(career => career.slug === slug)\n\n return (\n <div\n className=\"component-card component-card-careers\"\n style={{ alignItems: \"flex-start\" }}\n data-object={objectID}\n >\n <div\n className=\"component-card-image component-card-image-careers\"\n style={{ position: \"relative\" }}\n >\n <Link to={`/career/${slug}`} state={{backURL: ''}}>\n {correlation && (\n <span className={`match-label-${calcMatchStrength(correlation)}`}>\n <label>\n {locale === \"es-ES\" ?\n calcMatchStrength(correlation) === \"Excellent\" ? \"Excelente\" :\n calcMatchStrength(correlation) === \"Good\" ? \"Bueno\" :\n calcMatchStrength(correlation) === \"Fair\" ? \"Regular\" :\n calcMatchStrength(correlation) :\n calcMatchStrength(correlation)}\n </label>\n </span>\n )}\n <img\n src={`${img}?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces`}\n alt=\"\"\n />\n </Link>\n </div>\n <div className=\"component-card-meta component-card-meta-careers\">\n <div className=\"component-card-meta-header component-card-meta-header-careers\">\n {!hideBookmarks && (\n <>\n <Bookmark\n contentTitle={title}\n classContext={\"careers\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n jobCategories={matchedCareer?.career_job_categories}\n careerPathwaysFilter={matchedCareer?.career_pathways_filter}\n />\n </>\n )}\n {thumbsFeedback && (\n <ThumbsFeedback\n contentId={objectID}\n contentSlug={slug}\n setDislikedCareerSlugs={setDislikedCareerSlugs}\n />\n )}\n\n <Link\n to={`/career/${slug}`}\n className=\"component-card-title component-card-title-careers\"\n >\n {title}\n </Link>\n </div>\n {salaryEntry && salaryExperienced && (\n <div className=\"component-card-salary component-card-salary-careers\">\n <strong><FormattedMessage id=\"cards-careers-salary-range\" defaultMessage=\"Salary Range\" /> : </strong>${salaryEntry}\n <span> - </span>${salaryExperienced}\n </div>\n )}\n {demand && (\n <div className=\"component-card-demand component-card-demand-careers\">\n <strong><FormattedMessage id=\"cards-careers-demand\" defaultMessage=\"Demand\" /> : </strong>\n {demandTranslations[demand][locale] || demand}\n </div>\n )}\n {category && (\n <div className=\"component-card-category component-card-category-careers\">\n <strong><FormattedMessage id=\"cards-careers-category\" defaultMessage=\"Category\" />: </strong>\n {category}\n </div>\n )}\n {/* <div className=\"component-card-meta-careers-toggles-container\">\n {thumbsFeedback && <ThumbsFeedback contentId={objectID} setDislikedCareerSlugs={setDislikedCareerSlugs} />}\n\n {!hideBookmarks && (\n <>\n <Bookmark\n contentTitle={title}\n classContext={\"careers\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n </>\n )}\n </div> */}\n </div>\n </div>\n )\n}\n\nexport default CardCareers\n","import React from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport ReactPlayer from \"react-player\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faPlayCircle, faStar } from \"@fortawesome/free-solid-svg-icons\"\nimport Link from \"../../link\"\nimport { useIntl } from \"react-intl\"\n\nconst CardStories = props => {\n const {\n img,\n title,\n slug,\n story_job_title,\n story_company,\n story_quote,\n story_video_url,\n rating_average,\n objectID,\n idx,\n contentType,\n hideBookmarks,\n } = props\n const { formatMessage } = useIntl()\n return (\n <div\n className=\"component-card component-card-stories\"\n key={idx}\n data-object={objectID}\n >\n {story_video_url && img ? (\n <div className=\"component-card-image component-card-image-video component-card-image-video-stories\">\n <div className=\"video-wrapper\">\n <ReactPlayer\n url={story_video_url}\n light={img}\n controls={true}\n playing={true}\n width=\"100%\"\n height=\"100%\"\n playIcon={\n <>\n <button className=\"button component-button component-button-video component-button-video-large\">\n <FontAwesomeIcon\n className=\"play-video\"\n icon={faPlayCircle}\n />\n {formatMessage({ id: \"card-stories-watch-video\", defaultMessage: \"Watch Video\" })}\n </button>\n <button className=\"button component-button component-button-video component-button-video-small\">\n <FontAwesomeIcon\n className=\"play-video\"\n icon={faPlayCircle}\n />\n <span className=\"sr-only\">\n {formatMessage({ id: \"card-stories-watch-video\", defaultMessage: \"Watch Video\" })}\n </span>\n </button>\n </>\n }\n />\n </div>\n </div>\n ) : (\n <div className=\"component-card-image component-card-image-stories\">\n <Link to={`/story/${slug}`}>\n <img\n src={`${img}?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces`}\n alt=\"\"\n />\n </Link>\n </div>\n )}\n <div className=\"component-card-meta component-card-meta-stories\">\n <div className=\"component-card-meta-header component-card-meta-header-stories\">\n {!hideBookmarks && (\n <Bookmark\n contentTitle={title}\n classContext={\"stories\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n )}\n\n {typeof rating_average === \"number\" && (\n <>\n <FontAwesomeIcon\n icon={faStar}\n color=\"#E07306\"\n style={{\n fontSize: \"22px\",\n marginRight: \"7px\",\n }}\n />\n <span\n style={{\n fontSize: \"18px\",\n color: \"#565656\",\n marginLeft: \"1rem\",\n marginRight: \"5px\",\n position: \"relative\",\n top: \"1px\",\n }}\n >\n {rating_average.toFixed(1)}\n </span>\n </>\n )}\n\n <Link\n to={`/story/${slug}`}\n className=\"component-card-title component-card-title-stories\"\n >\n {story_job_title}\n </Link>\n </div>\n <div className=\"component-card-company component-card-company-stories\">\n {story_company}\n </div>\n <blockquote className=\"component-blockquote component-blockquote-stories\">\n <p>“{story_quote}”</p>\n <cite>— {title}</cite>\n </blockquote>\n </div>\n </div>\n )\n}\n\nexport default CardStories\n","\n/**\n * This is a list of milestone types that have a single date, and they have\n * a free text field.\n *\n * @see MilestoneTextDate\n * @see allowedTypes\n *\n * @type {string[]}\n */\nexport const allowedTextDateTypes = [\n 'prof_license',\n 'certificate',\n 'exam',\n 'hs_diploma',\n 'portfolio',\n 'classes',\n];\n\n/**\n * This is a list of milestone types that have a date period, and they have\n * a free text field.\n *\n * @see MilestoneTextDates\n * @see allowedTypes\n *\n * @type {string[]}\n */\nexport const allowedTextDatePeriodTypes = [\n 'apprenticeship',\n 'training',\n];\n\n/**\n * Allowed list types. This list is used for creating and rendering milestone\n * that have a goal, list, and time period. Usually the list consists of school\n * with a major as the goal.\n *\n * @see MilestoneListDates\n * @see allowedTypes\n *\n * @type {string[]}\n * `milestone_id`'s that are the school type.\n */\nexport const allowedListTypes = [\n 'internship',\n 'post_doc',\n 'fellowship',\n 'residency',\n 'work_experience',\n];\n\n/**\n * List of milestones that are Algolia enabled and are a list type.\n *\n * These types are list types that use a date period. If adding a type\n * you must also add the index data to `AlgoliaEnabledMilestones'\n *\n * @see src/components/careers/algolia/AlgoliaEnabledMilestones.js\n *\n * @type {string[]}\n */\nexport const allowedAlgoliaListTypes = [\n 'masters_deg',\n 'bachelor_degree',\n 'associate_degree',\n 'doctorate',\n]\n\n/**\n * Allowed milestone types that are synced from Cosmic.\n *\n * The ordering of this array determines the order in which milestones appear\n * in the career builder. This array must be updated if a new milestone type is added\n * and handling must be added to the `MilestoneFactory` and to the career builder.\n * You must also make certain that there is handling added for pathways in\n * `CareerPlanPathwayFactory`. If you are adding new milestones you must make\n * sure their milestone id will be present in this array.\n *\n * @see src/components/career-plans/CareerPlanPathwayFactory.js\n * @see src/components/careers/MilestoneFactory.js\n * @see src/components/careers/milestone-input.js\n *\n * @type {string[]}\n * The milestone_id that is used to create the correct milestone structure.\n */\nconst allowedTypes = [\n ...allowedAlgoliaListTypes,\n ...allowedListTypes,\n ...allowedTextDateTypes,\n ...allowedTextDatePeriodTypes\n];\n\n/**\n * List of allowed months used in month inputs and validation.\n *\n * @type {string[]}\n */\nexport const allowedMonths = [\n '01',\n '02',\n '03',\n '04',\n '05',\n '06',\n '07',\n '08',\n '09',\n '10',\n '11',\n '12',\n];\n\n/**\n * List of allowed month names.\n *\n * @type {string[]}\n */\nexport const allowedMonthsNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nexport const allowedMonthsNamesEs = [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Puede\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\"\n];\n\n/**\n * If the date being set is a valid date.\n *\n * @param {string} date\n * The string date.\n *\n * @return {boolean}\n * If the date is valid or not.\n */\nexport const isValidDateString = (date) => {\n if (!date) {\n return false;\n }\n const dateArray = date.split(\"-\");\n if (dateArray.length !== 2) {\n return false;\n }\n const yearString = dateArray[0];\n if (!isValidYear(yearString)) {\n return false;\n }\n\n const monthString = dateArray[1];\n return isValidMonthString(monthString);\n}\n\n/**\n * Parses month day data and returns object.\n *\n * This does not validate if the date actually exists for the month because no\n * year data is available. And this is used for data processing, not for user\n * input.\n *\n * @param {string} date\n * The date in `M-D` format.\n *\n * @return {{month: number, day: number}|null}\n * The date parsed as integers or null if invalid.\n */\nexport const getValidMonthDay = (date) => {\n if (!date) {\n return null;\n }\n const dateArray = date.split(\"-\");\n if (dateArray.length !== 2) {\n return null;\n }\n const month = parseInt(dateArray[0]);\n if (month > 12 || month < 1) {\n return null;\n }\n const day = parseInt(dateArray[1]);\n if (day > 31 || day < 0) {\n return null;\n }\n return { month, day };\n}\n\n/**\n * Checks if the month string is valid.\n *\n * @param {string} month\n * The month to check\n *\n * @return {boolean}\n * If the month is valid.\n */\nexport const isValidMonthString = (month) => {\n return allowedMonths.includes(month);\n}\n\n/**\n * Checks if the year string is valid.\n *\n * @param {string} yearString\n * The year string.\n *\n * @return {boolean}\n * If the date is valid.\n */\nexport const isValidYear = (yearString) => {\n if (yearString.length !== 4) {\n return false;\n }\n const yearInt = parseInt(yearString);\n\n return !(yearInt < 1900 || yearInt > 9999);\n}\n\nexport default allowedTypes;\n","import allowedTypes, { allowedListTypes, allowedTextDatePeriodTypes, allowedTextDateTypes, allowedAlgoliaListTypes } from \"./AllowedTypes\"\nimport MilestoneListDates from \"./MilestoneListDates\"\nimport MilestoneTextDate from \"./MilestoneTextDate\"\nimport MilestoneTextDates from \"./MilestoneTextDates\"\nimport MilestoneAlgoliaListDates from \"./MilestoneAlgoliaListDates\"\n\n/**\n * A factory to create existing or new milestones for a career plan.\n *\n * @param typeNew\n * Set this value for a new milestone, it maps to milestone type.\n * @param milestoneData\n * Existing milestone data.\n *\n * @return {MilestoneListDates|MilestoneTextDate|null}\n */\nexport default function MilestoneFactory(typeNew = null, milestoneData = null) {\n const type = typeNew ? typeNew : milestoneData?.type;\n if (!allowedTypes.includes(type)) {\n return null;\n }\n if (allowedListTypes.includes(type)) {\n const milestone = new MilestoneListDates(milestoneData);\n if (!milestone.type) {\n milestone.type = type;\n }\n return milestone;\n }\n if (allowedAlgoliaListTypes.includes(type)) {\n const milestone = new MilestoneAlgoliaListDates(milestoneData);\n if (!milestone.type) {\n milestone.type = type;\n }\n return milestone;\n }\n if (allowedTextDateTypes.includes(type)) {\n const milestone = new MilestoneTextDate(milestoneData);\n if (!milestone.type) {\n milestone.type = type;\n }\n return milestone;\n }\n if (allowedTextDatePeriodTypes.includes(type)) {\n const milestone = new MilestoneTextDates(milestoneData);\n if (!milestone.type) {\n milestone.type = type;\n }\n return milestone;\n }\n return null;\n}\n","import MilestoneFactory from './MilestoneFactory';\n\n/**\n * Default career plan class that handles career plan data.\n */\nexport default class CareerPlan {\n\n /**\n * Constructor.\n *\n * @param id\n * The document ID, set to null for a new plan.\n * @param careerData\n * The career plan data, set to null for a new career plan.\n */\n constructor(id = null, careerData = null) {\n this._label = careerData?.label;\n this._id = id;\n this.buildMilestones(careerData?.milestones);\n this._userId = careerData?.userId;\n this._created = careerData?.created;\n this._updated = careerData?.updated;\n }\n\n /**\n * Internal method to build milestones from an array of data.\n *\n * @param milestones\n * Array of milestone data.\n */\n buildMilestones(milestones) {\n this._milestones = [];\n if (!Array.isArray(milestones) || milestones.length === 0) {\n return;\n }\n milestones.forEach((dataValue) => {\n const milestone = MilestoneFactory(null, dataValue);\n if (!milestone) {\n return;\n }\n this._milestones.push(milestone);\n });\n }\n\n /**\n * If the career plan has any milestones.\n *\n * @return {boolean}\n * True if there are milestones otherwise false.\n */\n hasMilestones() {\n return this._milestones.length > 0;\n }\n\n /**\n * Removes a milestone by its index in the milestone array.\n *\n * @param index\n * The index to remove the milestone.\n */\n removeMilestoneByIndex(index) {\n this._milestones.splice(index, 1);\n }\n\n /**\n * Gets a milestone by the index.\n *\n * @param index\n *\n * @return {Milestone}\n * Returns a milestone data object.\n */\n getMilestoneByIndex(index) {\n return this._milestones[index];\n }\n\n /**\n * Adds a new milestone by `milestone_id` type.\n *\n * @param {string} type\n * The `milestone_id` of new milestone to create.\n *\n * @return {null|Milestone}\n * The milestone, or null if incorrect type is passed.\n */\n addNewMilestone(type) {\n const milestone = MilestoneFactory(type);\n if (!milestone) {\n return null;\n }\n this._milestones.push(milestone);\n return milestone;\n }\n\n /**\n * Set the career plan label.\n *\n * @param label\n * The plan label.\n */\n set label(label) {\n this._label = label;\n }\n\n /**\n * Gets the career plan label.\n *\n * @return {null|string}\n * The career plan label.\n */\n get label() {\n return this._label;\n }\n\n /**\n * Sets the career plan document ID, must match firestore.\n *\n * @param {string} id\n * The document ID.\n */\n set id(id) {\n this._id = id;\n }\n\n /**\n * Gets the document ID, will be null for new plans.\n *\n * @return {null|string}\n * The document ID, null for new plans.\n */\n get id() {\n return this._id;\n }\n\n /**\n * If the career plan is a new one.\n *\n * @return {boolean}\n * `true` for a new plan, `false` for an existing plan.\n */\n isNew() {\n return this._id === null ? true : this._id.length === 0;\n }\n\n /**\n * Gets the milestone list.\n *\n * @return {Milestone[]}\n * Array of milestones, or an empty array if none are set.\n */\n get milestones() {\n return this._milestones;\n }\n\n /**\n * The data object used to pass to firestore on save.\n *\n * @return {{label: (null|string), id: (null|string), milestones: []}}\n * The data object.\n */\n getData() {\n const data = {\n label: this.label,\n id: this.id,\n milestones: [],\n };\n this.milestones.forEach((milestone) => {\n data.milestones.push(milestone.getData());\n });\n return data;\n }\n\n /**\n * The date the career plan was created in firestore.\n *\n * @return {null|string}\n * UTC String of date or null.\n */\n get created() {\n return this._created;\n }\n\n /**\n * Sets the creation date.\n *\n * @param {string} created\n * UTC String of date.\n */\n set created(created) {\n this._created = created;\n }\n\n /**\n * Gets the date the plan was last updated.\n *\n * @return {null|string}\n * UTC String of date or null.\n */\n get updated() {\n return this._updated;\n }\n\n /**\n * Sets the last updated date.\n *\n * @param {string} updated\n * UTC String of date or null.\n */\n set updated(updated) {\n this._updated = updated;\n }\n\n /**\n * Gets the user ID of current plan.\n *\n * @return {null|string}\n * The user uid of the plan, null if new.\n */\n get userId() {\n return this._userId;\n }\n\n /**\n * Sets the userId of the plan.\n *\n * @param {string} id\n * The user uid that owns the current plan.\n */\n set userId(id) {\n this._userId = id;\n }\n}\n","import { allowedMonths, isValidDateString, isValidYear } from \"./AllowedTypes\"\n\n/**\n * Provides a base class for milestones that require a date range.\n */\nexport default class DatePeriod {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * Usually data from firestore, but can be from anywhere.\n */\n constructor(start, end) {\n this._endDate = end;\n this._startDate = start;\n }\n\n /**\n * Clears the end month data, but retains the year.\n */\n clearEndDateMonth() {\n this._endDate = null;\n this._endDateMonth = null;\n }\n\n /**\n * Clears the start month data, but retains the year.\n */\n clearStartDateMonth() {\n this._startDate = null;\n this._startDateMonth = null;\n }\n\n /**\n * Clears the end year data, but retains the month.\n */\n clearEndDateYear() {\n this._endDate = null;\n this._endDateYear = null;\n }\n\n /**\n * Clears the start date year, but retains the month.\n */\n clearStartDateYear() {\n this._startDate = null;\n this._startDateYear = null;\n }\n\n /**\n * Setter for start date.\n *\n * @param {string} date\n */\n set startDate(date) {\n if (!isValidDateString(date)) {\n throw new Error('Invalid date attempted to be set must have valid Year and Month');\n }\n const year = date.split(\"-\")[0];\n const month = date.split(\"-\")[1];\n if (!this.endDate) {\n this._startDate = date;\n this._startDateMonth = month;\n this._startDateYear = year;\n return;\n }\n if (parseInt(date.split(\"-\")[0]) > this.endDateYear) {\n throw new Error('Invalid start date attempted to be set must come before the end date.');\n }\n if (parseInt(date.split(\"-\")[0]) === this.endDateYear && parseInt(date.split(\"-\")[1]) >= this.endDateMonthInt) {\n throw new Error('Invalid start date attempted to be set must come before the end date.');\n }\n this._startDateMonth = month;\n this._startDateYear = year;\n this._startDate = date;\n }\n\n /**\n * Setter for end date.\n *\n * @param {string} date\n */\n set endDate(date) {\n if (!isValidDateString(date)) {\n throw new Error('Invalid date attempted to be set must have valid Year and Month');\n }\n const year = date.split(\"-\")[0];\n const month = date.split(\"-\")[1];\n if (!this.startDate) {\n this._endDate = date;\n this._endDateYear = year;\n this._endDateMonth = month;\n return;\n }\n if (parseInt(date.split(\"-\")[0]) < this.startDateYear) {\n throw new Error('Invalid end date attempted to be set must come after the start date.');\n }\n if (parseInt(date.split(\"-\")[0]) === this.startDateYear && parseInt(date.split(\"-\")[1]) <= this.startDateMonthInt) {\n throw new Error('Invalid end date attempted to be set must come after the start date.');\n }\n this._endDateYear = year;\n this._endDateMonth = month;\n this._endDate = date;\n }\n\n /**\n * Gets the end date.\n *\n * @return {string|null}\n */\n get endDate() {\n return this._endDate;\n }\n\n /**\n * Gets the start date.\n *\n * @return {string|null}\n */\n get startDate() {\n return this._startDate;\n }\n\n /**\n * Gets the end date year.\n *\n * @return {number|null}\n */\n get endDateYear() {\n if (!this._endDate) {\n return this._endDateYear ? parseInt(this._endDateYear) : null;\n }\n return parseInt(this._endDate.split(\"-\")[0]);\n }\n\n /**\n * Setter for end date year.\n *\n * @param {string} year\n */\n set endDateYear(year) {\n if (!isValidYear(year)) {\n throw new Error(\"Invalid year being set.\");\n }\n if (this.endDateMonth) {\n this.endDate = `${year}-${this.endDateMonth}`;\n }\n else {\n this._endDateYear = year;\n }\n }\n\n /**\n * Gets the end date month as an int.\n *\n * @return {number|null}\n */\n get endDateMonthInt() {\n return this.endDateMonth ? parseInt(this.endDateMonth) : null;\n }\n\n /**\n * Gets the end date month.\n *\n * @return {string|null}\n */\n get endDateMonth() {\n if(!this._endDate) {\n return this._endDateMonth ?? null;\n }\n return this._endDate.split(\"-\")[1];\n }\n\n /**\n * Sets the end date month.\n *\n * @param {string} month\n */\n set endDateMonth(month) {\n if (!allowedMonths.includes(month)) {\n throw new Error(\"Invalid month being set\");\n }\n if (this.endDateYear) {\n this.endDate = `${this.endDateYear}-${month}`;\n }\n else {\n this._endDateMonth = month;\n }\n }\n\n /**\n * Gets the start date year.\n *\n * @return {number|null}\n */\n get startDateYear() {\n if(!this._startDate) {\n return this._startDateYear ? parseInt(this._startDateYear) : null;\n }\n return parseInt(this._startDate.split(\"-\")[0]);\n }\n\n /**\n * Sets the start date year.\n *\n * @param {string} year\n */\n set startDateYear(year) {\n if (!isValidYear(year)) {\n throw new Error(\"Invalid year being set.\");\n }\n if (this.startDateMonth) {\n this.startDate = `${year}-${this.startDateMonth}`;\n }\n else {\n this._startDateYear = year;\n }\n }\n\n /**\n * Gets the strat date month as an int.\n *\n * @return {number|null}\n */\n get startDateMonthInt() {\n return this.startDateMonth ? parseInt(this.startDateMonth) : null;\n }\n\n /**\n * Gets the start date month.\n *\n * @return {string|null}\n */\n get startDateMonth() {\n if(!this._startDate) {\n return this._startDateMonth ?? null;\n }\n return this._startDate.split(\"-\")[1];\n }\n\n /**\n * Sets the start date month.\n *\n * @param {string} month\n */\n set startDateMonth(month) {\n if (!allowedMonths.includes(month)) {\n throw new Error(\"Invalid month being set\");\n }\n if (this.startDateYear) {\n this.startDate = `${this.startDateYear}-${month}`;\n }\n else {\n this._startDateMonth = month;\n }\n }\n}\n","import { v4 } from 'uuid';\n\n/**\n * Base milestone class, can be used for experiences!\n */\nexport default class Milestone {\n\n /**\n * Constructor.\n *\n * @param {null|Object} milestoneData\n * The milestone data.\n */\n constructor(milestoneData = null) {\n this._type = milestoneData?.type;\n this._uuid = v4();\n }\n\n /**\n * Sets the milestone type.\n *\n * @param {string} type\n * The `type` of milestone.\n */\n set type(type) {\n this._type = type;\n }\n\n /**\n * Gets the milestone type.\n *\n * @return {null|string}\n * The `type` set in Cosmic.\n */\n get type() {\n return this._type;\n }\n\n /**\n * Get the uuid of the milestone\n *\n * @return {*|string}\n */\n get uuid() {\n return this._uuid;\n }\n\n /**\n * Gets the data object used to save in firestore.\n *\n * @return {{type: string}}\n * Only `type` is saved for all milestone types.\n */\n getData() {\n return {\n type: this.type\n };\n }\n}\n","import DatePeriod from \"./DatePeriod\"\nimport MilestoneAlgoliaListType from \"./MilestoneAlgoliaListType\"\n\n/**\n * Provides a milestone with an Algolia enabled list and date period.\n */\nexport default class MilestoneAlgoliaListDates extends MilestoneAlgoliaListType {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * The milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this.period = new DatePeriod(milestoneData?.startDate, milestoneData?.endDate);\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.endDate = this.period.endDate;\n data.startDate = this.period.startDate;\n return data;\n }\n}\n","import { allowedAlgoliaListTypes } from \"../AllowedTypes\"\n\n/**\n * List of Algolia enabled milestones.\n *\n * List of Algolia enabled milestones. This is pulled from AllowedTypes\n * and may include other algolia milestone types that is why this pattern\n * is used.\n *\n * @type {string[]}\n */\nconst AlgoliaEnabledMilestones = [\n ...allowedAlgoliaListTypes,\n];\n\n/**\n * Provides a base class that manages Algolia index and field data for a milestone.\n */\nclass AlgoliaEnabledMilestone {\n\n /**\n * Gets the milestone type.\n *\n * @return {string}\n */\n get milestoneType() {\n return this._milestoneType\n }\n\n /**\n * Sets the milestone type.\n *\n * @param {string} value\n */\n set milestoneType(value) {\n this._milestoneType = value\n }\n\n /**\n * Gets the primary indexes searchable field.\n *\n * This is usually title as we rely on Cosmic's Algolia plugin to create this list.\n *\n * @return {string}\n */\n get primarySearchableFieldKey() {\n return this._primarySearchableFieldKey\n }\n\n /**\n * The name of the secondary indexes searchable field.\n *\n * The current pattern has been setting this key to `name`.\n *\n * @return {string}\n */\n get secondarySearchableFieldKey() {\n return this._secondarySearchableFieldKey\n }\n\n /**\n * The boolean field on the primary object in Cosmic.\n *\n * This field sorts the content type to the milestone type. In the case of\n * majors\n *\n * @return {string}\n */\n get indexPrimaryField() {\n return this._indexPrimaryField\n }\n\n get indexSecondary() {\n return this._indexSecondary\n }\n\n get indexSecondaryField() {\n return this._indexSecondaryField\n }\n\n get indexPrimary() {\n return this._indexPrimary\n }\n\n get indexRelationField() {\n return this._indexRelationField\n }\n\n constructor(indexSecondary, indexSecondaryField, indexPrimary, indexPrimaryField, indexRelationField, primarySearchableFieldKey, secondarySearchableFieldKey, milestoneType) {\n this._indexSecondary = indexSecondary\n this._indexSecondaryField = indexSecondaryField\n this._indexPrimary = indexPrimary\n this._indexRelationField = indexRelationField\n this._indexPrimaryField = indexPrimaryField\n this._primarySearchableFieldKey = primarySearchableFieldKey\n this._secondarySearchableFieldKey = secondarySearchableFieldKey\n this._milestoneType = milestoneType\n }\n}\n\nconst milestoneList = [];\n\n/**\n * The doctorate milestone Algolia data.\n */\nconst doctorateMilestone = new AlgoliaEnabledMilestone(\n 'cb_milestones_schools_doctorate',\n 'majors',\n 'majors',\n 'major_doctorate',\n 'major_cip',\n 'title',\n 'name',\n 'doctorate'\n )\nmilestoneList.push(doctorateMilestone)\n\n/**\n * The bachelor milestone Algolia data.\n */\nconst bachelorMilestone = new AlgoliaEnabledMilestone(\n 'cb_milestones_schools_bachelor',\n 'majors',\n 'majors',\n 'major_bachelor',\n 'major_cip',\n 'title',\n 'name',\n 'bachelor_degree'\n)\nmilestoneList.push(bachelorMilestone)\n\n/**\n * The associate milestone Algolia data.\n */\nconst associateMilestone = new AlgoliaEnabledMilestone(\n 'cb_milestones_schools_associate',\n 'majors',\n 'majors',\n 'major_associate',\n 'major_cip',\n 'title',\n 'name',\n 'associate_degree'\n)\nmilestoneList.push(associateMilestone)\n\n/**\n * The masters milestone Algolia data.\n */\nconst mastersMilestone = new AlgoliaEnabledMilestone(\n 'cb_milestones_schools_master',\n 'majors',\n 'majors',\n 'major_master',\n 'major_cip',\n 'title',\n 'name',\n 'masters_deg'\n)\nmilestoneList.push(mastersMilestone)\n\n/**\n * Map of milestones to Algolia indexes.\n *\n * @type {{}}\n */\nexport const AlgoliaIndexMap = milestoneList.reduce(\n (data, milestone) => {\n data[milestone.milestoneType] = milestone\n return data\n }, {})\n\n/**\n * If the milestone is Algolia enabled.\n *\n * @param {string} milestoneId\n * The milestone ID.\n *\n * @return {boolean}\n */\nexport const isAlgoliaEnabled = (milestoneId) => AlgoliaEnabledMilestones.includes(milestoneId);\n\n/**\n * Gets the milestone index data.\n *\n * Will return a data object like:\n * {\n * indexSecondary: {string} The secondary index usually an index of schools data\n * indexSecondaryField: {string} The field in the secondary index that relates primary goal to secondary\n * indexPrimary: {string} The primary index to pull goal data\n * indexPrimaryField: {string} The boolean filter for the primary field\n * indexRelationField: {string} The field that links the primary index to the secondary index\n * }\n *\n * @param {string} milestoneId\n * The milestone ID.\n *\n * @return {null|AlgoliaEnabledMilestone}\n */\nconst getAlgoliaIndexData = (milestoneId) => {\n if (!isAlgoliaEnabled(milestoneId)) {\n return null;\n }\n return AlgoliaIndexMap[milestoneId];\n}\n\nexport default getAlgoliaIndexData;\n","import MilestoneListType from \"./MilestoneListType\"\nimport getAlgoliaIndexData from \"./algolia/AlgoliaEnabledMilestones\"\n\n/**\n * This milestone type has Algolia search enabled for its inputs.\n */\nexport default class MilestoneAlgoliaListType extends MilestoneListType {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * Existing milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this._algoliaPrimaryField = milestoneData?.algoliaPrimaryField;\n if (this._algoliaPrimaryField === undefined) {\n this._algoliaPrimaryField = null;\n }\n this._indexData = getAlgoliaIndexData(milestoneData?.type);\n }\n\n /**\n * Gets the milestone index data.\n *\n * @return {null|AlgoliaEnabledMilestone}\n */\n get indexData() {\n if (!this._indexData) {\n this._indexData = getAlgoliaIndexData(this.type);\n return this._indexData;\n }\n return this._indexData;\n }\n\n /**\n * Gets the primary field data.\n *\n * This is usually major CIP code that links majors to schools.\n *\n * @return {null|*}\n */\n get algoliaPrimaryField() {\n return this._algoliaPrimaryField;\n }\n\n /**\n * Sets the primary field data.\n *\n * @param value\n */\n set algoliaPrimaryField(value) {\n this._algoliaPrimaryField = value;\n }\n\n /**\n * Disables secondary search as there is no primary gaol found in index.\n */\n disableAlgoliaSecondarySearch() {\n this._algoliaPrimaryField = false;\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.algoliaPrimaryField = this.algoliaPrimaryField;\n return data;\n }\n\n}\n","import MilestoneListType from \"./MilestoneListType\"\nimport DatePeriod from \"./DatePeriod\"\n\n/**\n * Provides a milestone with list and date period.\n */\nexport default class MilestoneListDates extends MilestoneListType {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * The milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this.period = new DatePeriod(milestoneData?.startDate, milestoneData?.endDate);\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.endDate = this.period.endDate;\n data.startDate = this.period.startDate;\n return data;\n }\n}\n","import Milestone from \"./Milestone\"\n\n/**\n * A milestone with a goal and a list item.\n */\nexport default class MilestoneListType extends Milestone {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * Existing milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this._goal = milestoneData?.goal;\n this._list = milestoneData?.list;\n if (!this._list) {\n this._list = [];\n }\n }\n\n /**\n * Gets the goal.\n *\n * @return {string|null}\n */\n get goal() {\n return this._goal;\n }\n\n /**\n * Sets the goal.\n *\n * @param {string} goal\n * The goal name.\n */\n set goal(goal) {\n this._goal = goal;\n }\n\n /**\n * Gets the list.\n *\n * @return {string[]}\n */\n get list() {\n return this._list;\n }\n\n /**\n * If there are any items in the list.\n *\n * @return {boolean}\n * `true` if the list has items.\n */\n hasListItems() {\n return this._list.length > 0;\n }\n\n /**\n * Sets the list.\n *\n * @param {string[]} list\n */\n set list(list) {\n if (!Array.isArray(list)) {\n throw new Error('List must be a valid array');\n }\n this._list = list;\n }\n\n /**\n * Updates a list item by its index.\n *\n * @param value\n * The value to update.\n * @param index\n * The index of the list item.\n */\n updateListItemByIndex(value, index) {\n this._list[index] = value;\n }\n\n /**\n * Gets a list item by an index, does not check for a valid index.\n *\n * @param {number} index\n * The items index.\n *\n * @return {string}\n * The list item value.\n */\n getListItemByIndex(index) {\n return this._list[index];\n }\n\n /**\n * Adds a new list item.\n *\n * @param {string} item\n * The item to add.\n */\n addListItem(item) {\n this._list.push(item);\n }\n\n /**\n * Removes a list item by index.\n *\n * @param {number} index\n * The index to remove the item.\n */\n removeListItemByIndex(index) {\n this._list.splice(index, 1)\n }\n\n /**\n * Removes a list item, does not check for multiple items with same value.\n *\n * @param {string} item\n * The item value.\n */\n removeListItem(item) {\n const index = this._list.indexOf(item);\n if (index === -1) {\n return;\n }\n this._list.splice(index, 1)\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.goal = this.goal;\n data.list = this.list;\n return data;\n }\n}\n","import { isValidDateString, isValidMonthString, isValidYear } from \"./AllowedTypes\"\n\n/**\n * Provides a base class for handling a single date.\n */\nexport default class DateMonthYear {\n\n /**\n * Constructor.\n *\n * @param {string} date\n * The date.\n */\n constructor(date) {\n if (isValidDateString(date)) {\n this._year = date.split(\"-\")[0];\n this._month = date.split(\"-\")[1];\n }\n }\n\n /**\n * Clears the date values.\n */\n clearDate() {\n this._year = null;\n this._month = null;\n }\n\n /**\n * Clears the month value.\n */\n clearMonth() {\n this._month = null;\n }\n\n /**\n * Clears the year value.\n */\n clearYear() {\n this._year = null;\n }\n\n /**\n * Sets the date.\n *\n * @param {string} date\n * The date to set in `YYYY-MM` format.\n */\n set date(date) {\n if (!isValidDateString(date)) {\n throw new Error(\"Attempting to set an invalid date\");\n }\n this.year = date.split(\"-\")[0];\n this.month = date.split(\"-\")[1];\n }\n\n /**\n * Gets the date `YYYY-MM`, or null if not fully set.\n *\n * @return {null|string}\n * Returns the date.\n */\n get date() {\n if (!this.year || !this.month) {\n return null;\n }\n return `${this._year}-${this._month}`;\n }\n\n /**\n * Gets the month.\n *\n * @return {string}\n */\n get month() {\n return this._month;\n }\n\n /**\n * Sets the month.\n *\n * @param {string} month\n * The month to set.\n */\n set month(month) {\n if (!isValidMonthString(month)) {\n throw new Error(\"Attempting to set an invalid month.\");\n }\n this._month = month;\n }\n\n /**\n * Gets the year.\n *\n * @return {string}\n * The year.\n */\n get year() {\n return this._year;\n }\n\n /**\n * Sets the year.\n *\n * @param {string} year\n */\n set year(year) {\n if (!isValidYear(year)) {\n throw new Error(\"Attempting to set an invalid year.\");\n }\n this._year = year;\n }\n}\n","import MilestoneTextType from \"./MilestoneTextType\"\nimport DateMonthYear from \"./DateMonthYear\"\n\n/**\n * Provides a milestone with a free input field and a single date.\n */\nexport default class MilestoneTextDate extends MilestoneTextType {\n /**\n * Constructor.\n *\n * @param milestoneData\n * Existing milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this.date = this.date = new DateMonthYear(milestoneData?.date);\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.date = this.date.date;\n return data;\n }\n}\n","import MilestoneTextType from \"./MilestoneTextType\"\nimport DatePeriod from \"./DatePeriod\"\n\n/**\n * Provides a milestone with a free input field and a date period.\n */\nexport default class MilestoneTextDates extends MilestoneTextType {\n /**\n * Constructor.\n *\n * @param milestoneData\n * Existing milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this.period = new DatePeriod(milestoneData?.startDate, milestoneData?.endDate);\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.endDate = this.period.endDate;\n data.startDate = this.period.startDate;\n return data;\n }\n}\n","import Milestone from \"./Milestone\"\n\n/**\n * A milestone with a text field item.\n */\nexport default class MilestoneTextType extends Milestone {\n\n /**\n * Constructor.\n *\n * @param milestoneData\n * Existing milestone data.\n */\n constructor(milestoneData = null) {\n super(milestoneData);\n this._goal = milestoneData?.goal;\n this._text = milestoneData?.text;\n }\n\n /**\n * Gets the goal.\n *\n * @return {string|null}\n */\n get goal() {\n return this._goal;\n }\n\n /**\n * Sets the goal.\n *\n * @param {string} goal\n * The goal name.\n */\n set goal(goal) {\n this._goal = goal;\n }\n\n /**\n * Gets the text.\n *\n * @return {*}\n */\n get text() {\n return this._text;\n }\n\n /**\n * Sets the text.\n *\n * @param text\n */\n set text(text) {\n this._text = text;\n }\n\n /**\n * @inheritDoc\n */\n getData() {\n const data = super.getData();\n data.goal = this.goal;\n data.text = this.text;\n return data;\n }\n\n}\n","export const notificationOptions = [\n {\n category: \"motivational\",\n message: \"You can do it! Add a goal to keep you on track and earn 1pt.\",\n isEmail: true,\n day: \"Monday\",\n point: \"1\",\n pointEventDescription: \"\",\n messageEs:\n \"¡Tú puedes hacerlo! Añade un objetivo para mantenerte en el buen camino y gana 1 punto.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"initial\",\n message:\n \"Expand your horizons! Engage with a career story to learn about the mysterious world of work and earn 2 pts.\",\n isEmail: false,\n day: \"\",\n point: \"2\",\n pointEventDescription: \"2 points for engaging with a career story\",\n messageEs:\n \"¡Expande tus horizontes! Participa en una historia profesional para aprender sobre el misterioso mundo del trabajo y gana 2 puntos.\",\n pointEventDescriptionEs:\n \"2 puntos por participar en una historia profesional\",\n },\n {\n category: \"initial-hidden\",\n message:\n \"Excel in life and in the workplace! Read a post to get advice on how to have a rich and fulfilling career and earn 2 pts.\",\n isEmail: false,\n day: \"\",\n point: \"2\",\n pointEventDescription: \"\",\n messageEs:\n \"¡Sobresalir en la vida y en el lugar de trabajo! Lee un post para obtener consejos sobre cómo tener una carrera rica y satisfactoria y ganar 2 pts.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"initial\",\n message:\n \"Create a career plan to get started on your path and earn 10 pts.\",\n isEmail: false,\n day: \"\",\n point: \"10\",\n pointEventDescription: \"10 points for creating your first career plan\",\n messageEs:\n \"Crea un plan de carrera para comenzar tu camino y ganar 10 puntos.\",\n pointEventDescriptionEs: \"10 puntos por crear tu primer plan de carrera\",\n },\n {\n category: \"initial-hidden\",\n message: \"Identify your strengths in the portfolio and earn 1 pt!\",\n isEmail: false,\n day: \"\",\n point: \"1\",\n pointEventDescription: \"1 point earned for identifying strengths\",\n messageEs: \"¡Identifica tus fortalezas en el portafolio y gana 1 pt!\",\n pointEventDescriptionEs: \"1 punto ganado por identificar fortalezas\",\n },\n {\n category: \"initial-hidden\",\n message: \"Identify your interests in the portfolio and earn 1 pt!\",\n isEmail: false,\n day: \"\",\n point: \"1\",\n pointEventDescription: \"1 point earned for identifying interests\",\n messageEs: \"¡Identifique sus intereses en la cartera y gane 1 pt!\",\n pointEventDescriptionEs: \"1 punto ganado por identificar intereses\",\n },\n {\n category: \"initial-hidden\",\n message: \"Add something you're looking forward to and earn 1 pt!\",\n isEmail: false,\n day: \"Monday\",\n point: \"1\",\n pointEventDescription: \"1 point earned for updating goals\",\n messageEs: \"¡Añade algo que te apetezca y gana 1 punto!\",\n pointEventDescriptionEs: \"1 punto ganado por actualizar objetivos\",\n },\n {\n category: \"initial-hidden\",\n message: \"Bookmark your first story and earn double the pts.\",\n isEmail: false,\n day: \"\",\n point: \"2\",\n pointEventDescription: \"\",\n messageEs: \"Marque su primera historia y gane el doble de puntos.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"initial-hidden\",\n message: \"Bookmark a career and earn 1 pt.\",\n isEmail: false,\n day: \"\",\n point: \"1\",\n pointEventDescription: \"1 point for bookmarking a career\",\n messageEs: \"Marque una carrera y gane 1 punto.\",\n pointEventDescriptionEs: \"1 punto por marcar una carrera\",\n },\n {\n category: \"initial\",\n message:\n \"Complete the personal information in your portfolio and earn 5 pts.\",\n isEmail: false,\n day: \"\",\n point: \"5\",\n pointEventDescription: \"5 points for completing your personal profile\",\n messageEs:\n \"Completa la información personal de tu portafolio y gana 5 pts.\",\n pointEventDescriptionEs: \"5 puntos por completar tu perfil personal\",\n },\n {\n category: \"initial-hidden\",\n message: \"Spend time getting to know a school and earn 2 pts.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"2 points for exploring a school\",\n messageEs: \"Dedica tiempo a conocer una escuela y gana 2 puntos.\",\n pointEventDescriptionEs: \"2 puntos por explorar una escuela\",\n },\n {\n category: \"motivational\",\n message:\n \"What does success mean to you? Keep this in mind as you go through the site.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"¿Qué significa el éxito para ti? Tenga esto en cuenta a medida que avanza por el sitio.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message:\n \"Journaling is a great way to take inventory on what makes you, you. Grab a pen and a notebook and keep track of your activities and emotions for at-least two weeks.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"Escribir un diario es una excelente manera de hacer un inventario de lo que te hace ser tú. Tome un bolÃgrafo y un cuaderno y lleve un registro de sus actividades y emociones durante al menos dos semanas.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message:\n \"What makes you happy? Keep this in mind as you go through the site.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"¿Qué te hace feliz? Tenga esto en cuenta a medida que avanza por el sitio.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message:\n \"What activities do you do well? Keep this in mind while going through the site.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"¿Qué actividades realizas bien? Tenga esto en cuenta mientras navega por el sitio.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"accomplishment\",\n message:\n \"Great job! You engaged with the story featuring ___ and earned 2 pts.\",\n isEmail: true,\n day: \"\",\n point: \"2\",\n pointEventDescription: \"\",\n messageEs:\n \"¡Buen trabajo! Te comprometiste con la historia con ___ y ganaste 2 puntos.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"accomplishment\",\n message: \"Nice work! You read __ posts this week and earned ___ pts.\",\n isEmail: true,\n day: \"\",\n point: \"2\",\n pointEventDescription: \"\",\n messageEs:\n \"¡Buen trabajo! LeÃste __ publicaciones esta semana y ganaste ___ pts.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"accomplishment\",\n message: \"Yes! You set a goal and earned 1pt.\",\n isEmail: false,\n day: \"\",\n point: \"1\",\n pointEventDescription: \"1 point for setting your goal for the week\",\n messageEs: \"¡SÃ! Estableciste una meta y ganaste 1 punto.\",\n pointEventDescriptionEs:\n \"1 punto por establecer tu objetivo para la semana\",\n },\n {\n category: \"accomplishment\",\n message: \"Nice! You identified your strengths and earned ___pts. \",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs: \"¡Muy bien! Identificaste tus fortalezas y te ganaste ___pts. \",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"accomplishment\",\n message: \"Nice! You identified your interests and earned ___pts.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs: \"¡Muy bien! Identificaste tus intereses y te ganaste ___pts.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"accomplishment\",\n message:\n \"Way to go! You completed the personal information in your portfolio and earned 5 pts.\",\n isEmail: false,\n day: \"\",\n point: \"5\",\n pointEventDescription: \"5 points for completing your personal profile\",\n messageEs:\n \"¡Bien hecho! Completaste la información personal en tu portafolio y ganaste 5 pts.\",\n pointEventDescriptionEs: \"5 puntos por completar tu perfil personal\",\n },\n {\n category: \"accomplishment\",\n message:\n \"Go get em! You created a career plan and earned 10 pts. Start preparing for this career path today!\",\n isEmail: false,\n day: \"\",\n point: \"10\",\n pointEventDescription: \"10 points for creating your first career plan\",\n messageEs:\n \"¡Ve a por ellos! Creaste un plan de carrera y ganaste 10 puntos. ¡Empieza a prepararte para esta carrera hoy mismo!\",\n pointEventDescriptionEs: \"10 puntos por crear tu primer plan de carrera\",\n },\n {\n category: \"accomplishment\",\n message: \"Great job! You engaged with ___ career and earned 1 pt.\",\n isEmail: false,\n day: \"\",\n point: \"1\",\n pointEventDescription: \"1 point for bookmarking a career\",\n messageEs:\n \"¡Buen trabajo! Te comprometiste con ___ carrera y ganaste 1 pt.\",\n pointEventDescriptionEs: \"1 punto por marcar una carrera\",\n },\n {\n category: \"newContent\",\n message:\n \"New story alert! Check out \\\"First Name Last Name\\\", a \\\"Job Title\\\".\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n '¡Alerta de nueva historia! Echa un vistazo a \"Nombre Apellido\", un \"TÃtulo de trabajo\".',\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"newContent\",\n message: \"New post alert! Check out \\\"Post Title\\\".\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n '¡Nueva alerta de publicación! Echa un vistazo a \"TÃtulo de la publicación\".',\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message: \"You haven't read a story in ____ days. Don't give up now!\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs: \"No has leÃdo un cuento en ____ dÃas. ¡No te rindas ahora!\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message:\n \"What is one thing you can do today to prepare for the career of your dreams?\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"¿Qué puedes hacer hoy para prepararte para la carrera de tus sueños?\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message:\n \"Reach out to someone in your field of interest and ask them for an informational interview!\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs:\n \"¡ComunÃcate con alguien en tu campo de interés y pÃdele una entrevista informativa!\",\n pointEventDescriptionEs: \"\",\n },\n\n {\n category: \"motivational\",\n message: \"Welcome back! Let's continue exploring the world of work.\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs: \"¡Bienvenido! Sigamos explorando el mundo laboral.\",\n pointEventDescriptionEs: \"\",\n },\n {\n category: \"motivational\",\n message: \"You are __ points away from ___ badge. Keep going!\",\n isEmail: false,\n day: \"\",\n point: \"\",\n pointEventDescription: \"\",\n messageEs: \"Estás a __ puntos de la insignia ___. ¡Sigue!\",\n pointEventDescriptionEs: \"\",\n },\n]\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport Modal from \"react-bootstrap/Modal\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faImages, faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport imageCompression from \"browser-image-compression\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport SubmitButton from \"../portfolio/SubmitButton\"\n\nlet fileReader\nif (typeof window !== \"undefined\") {\n fileReader = new FileReader()\n}\n\nconst ProfileImageModal = ({ currentImage, hasText }) => {\n const { firebase } = useContext(FirebaseContext)\n const [error, setError] = useState(null)\n const [fileUrl, setFileUrl] = useState(currentImage)\n const [fileBlob, setFileBlob] = useState(null)\n const [open, setOpen] = useState(false)\n const [isCompressing, setIsCompressing] = useState(false)\n const { formatMessage } = useIntl()\n const { locale } = useIntl()\n\n useEffect(() => {\n // set the preview image to current image, once available\n if (currentImage) {\n setFileUrl(currentImage)\n }\n }, [currentImage])\n\n /**\n * Validate image parameters and generate thumbnail.\n *\n * @param {SyntheticEvent} e\n */\n const handleImageChange = async e => {\n e.persist()\n const file = e.target.files[0]\n\n setError(null)\n\n if (!file) {\n return\n }\n\n const allowedTypes = [\"image/jpg\", \"image/jpeg\", \"image/png\"]\n\n if (!allowedTypes.includes(file.type)) {\n setError(\"File must be one of jpg, jpeg, png\")\n return\n }\n\n const profileImageLabel = document.getElementById('profileImageLabel');\n if (file) {\n profileImageLabel.textContent = `${file.name}`;\n } else {\n profileImageLabel.textContent = locale === 'en-US' ? 'No file chosen' : 'Ningún archivo seleccionado';\n }\n\n try {\n const compressedImage = await imageCompression(file, {\n maxSizeMB: 2,\n onProgress: percent => {\n percent < 100 ? setIsCompressing(true) : setIsCompressing(false)\n },\n })\n setIsCompressing(false)\n\n // Triggered by readAsDataURL\n fileReader.onloadend = () => {\n setFileUrl(fileReader.result)\n\n // create image element in order to capture pixel dimensions\n const img = new Image()\n img.src = fileReader.result\n }\n\n fileReader.readAsDataURL(compressedImage)\n setFileBlob(compressedImage)\n } catch {\n setError(\"Something went wrong uploading your image\")\n }\n }\n\n const handleSubmit = async () => {\n if (!fileBlob || error) {\n setError(\"You must upload a file before saving\")\n return\n }\n\n // store the image\n try {\n const fileURL = await firebase.storeProfileImage(fileBlob)\n if (fileURL) {\n await firebase.updateProfile({ data: { profileImageUrl: fileURL } })\n }\n } catch (e) {\n setError(\n \"There was a problem updating your profile picture. Please try again later.\"\n )\n }\n setOpen(false)\n }\n\n const handleClose = () => {\n setOpen(false)\n setFileUrl(currentImage)\n }\n\n return (\n <>\n <button\n style={{ backgroundColor: \"transparent\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}\n onClick={() => setOpen(true)}\n >\n {hasText ? (\n <>\n <button className=\"button component-button component-button-ghost component-button-ghost-inactive component-button-small\">\n <FormattedMessage id=\"portfolio-profile-image-change-profile-picture\" defaultMessage=\"Change Profile Picture\" />{\" \"}\n </button>\n </>\n ) : (\n <FontAwesomeIcon icon={faImages} />\n )}\n </button>\n <Modal\n show={open}\n size=\"lg\"\n onShow={() => {\n setError(null)\n }}\n onHide={handleClose}\n centered\n animation={false}\n >\n <Modal.Header style={{ justifyContent: \"center\"}} closeButton>\n <h3 style={{ marginBottom: \"0\" }}>\n <FormattedMessage id=\"portfolio-profile-image-change-profile-picture\" defaultMessage=\"Change Profile Picture\" />{\" \"}\n </h3>\n </Modal.Header>\n <Modal.Body style={{ paddingBottom: '30px'}}>\n <div>\n <h5>\n <FormattedMessage id=\"portfolio-profile-image-preview-profile-picture\" defaultMessage=\"Profile Picture Preview\" />\n </h5>\n {fileUrl && !isCompressing ? (\n <div\n style={{\n backgroundImage: `url(${fileUrl})`,\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n borderRadius: \".5rem\",\n maxWidth: \"320px\",\n height: \"320px\",\n border: \"1px dashed #bbb\",\n margin: \"3rem auto\",\n overflow: \"hidden\",\n }}\n />\n ) : (\n <div\n style={{\n borderRadius: \".5rem\",\n width: \"320px\",\n height: \"320px\",\n border: \"1px dashed #bbb\",\n backgroundColor: \"white\",\n margin: \"3rem auto\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <FontAwesomeIcon icon={faSpinner} spin size=\"3x\" color=\"#4DA497\" />\n </div>\n )}\n <div\n className=\"form-element\"\n style={{\n border: \"1px solid #d3d3d3\",\n padding: \"10px\",\n display: \"flex\",\n alignItems: \"baseline\",\n gap: \"10px\",\n borderColor: error ? \"red\" : \"\",\n marginBottom: \"0px\",\n }}\n >\n <label\n style={{\n padding: \"2px\",\n width: \"max-content\",\n border: \"1px solid #565656\",\n cursor: \"pointer\",\n margin: \"0px\",\n borderRadius: \"3px\",\n }}\n className=\" custom-file-input-label\"\n htmlFor=\"profileImage\"\n >\n {locale === \"en-US\" ? \"Choose file\" : \"Elija el archivo\"}\n </label>\n <input id=\"profileImage\" name=\"profileImage\" type=\"file\" onChange={handleImageChange} />\n <span id=\"profileImageLabel\">{locale === \"en-US\" ? \"No file chosen\" : \"Ningún archivo seleccionado\"}</span>\n {error && <small style={{ color: \"red\" }}>{error}</small>}\n </div>\n\n </div>\n </Modal.Body>\n <Modal.Footer>\n <SubmitButton\n label={<FormattedMessage id=\"dashboard-cancel\" defaultMessage=\"Cancel\" />}\n isFilled={false}\n onClick={handleClose}\n />\n <SubmitButton\n label={<FormattedMessage id=\"dashboard-this-week-save-button\" defaultMessage=\"Save\" />}\n isFilled={true}\n onClick={handleSubmit}\n />\n </Modal.Footer>\n </Modal>\n </>\n )\n}\n\nexport default ProfileImageModal\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n };\n };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = _ref => {\n let {\n containerNodeRect,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n let {\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n } = _ref;\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = _ref => {\n let {\n transform,\n draggingNodeRect,\n windowRect\n } = _ref;\n\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n let {\n activatorEvent,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import { \n PointerSensor, \n useSensor,\n useSensors\n} from '@dnd-kit/core';\n\n/**\n * Determines whether clicking an element should initiate dragging and dropping.\n * If clickedElement does not satisfy any of the following conditions, uses the\n * closest parent element that does.\n * \n * Dragging proceeds if the element's data-dnd attribute is \"true\"\n * \n * Dragging is blocked if:\n * 1) the element is a button, input, or textareas.\n * 2) The data-dnd attribute is \"false\" (to allow fine-grained control of \n * dragging and dropping).\n * 3) The element is an open modal (to prevent accidentally dragging items in\n * the background).\n *\n * @param {Element} clickedElement - element the user clicked\n * @returns {boolean} whether dragging can be initiated\n */\nconst customHandler = (clickedElement) => {\n let current = clickedElement;\n // This list can be expanded to include additional types of interactive elements\n const IGNORE_TAGS = ['BUTTON', 'INPUT', 'TEXTAREA'];\n\n while (current && !(current.dataset && current.dataset.dnd === \"true\")) {\n if (IGNORE_TAGS.includes(current.tagName) \n || (current.dataset && current.dataset.dnd === \"false\") \n || (current.classList && current.classList.contains(\"modal-open\"))) {\n return false;\n }\n current = current.parentElement;\n }\n\n return true;\n};\n\nPointerSensor.activators = [\n {\n eventName: 'onPointerDown',\n handler: (event) => customHandler(event.target),\n },\n];\n\n/**\n * Use custom drag-and-drop sensors that allow better control of what initiates\n * dragging and dropping. See the documentation of \"customHandler\" for an \n * in-depth description of this.\n */\nconst useCustomSensors = () => {\n return useSensors(\n useSensor(PointerSensor),\n )\n}\n\nexport {\n PointerSensor as CustomPointerSensor,\n useCustomSensors,\n}\n","import React, { useState } from \"react\"\nimport { DndContext } from '@dnd-kit/core';\nimport { SortableContext, arrayMove } from '@dnd-kit/sortable';\nimport { restrictToParentElement } from '@dnd-kit/modifiers';\nimport { useCustomSensors } from \"./CustomSensors.js\";\nimport { closestCenter } from \"@dnd-kit/core\";\nimport { rectSortingStrategy } from \"@dnd-kit/sortable\";\nimport \"./SortableContainer.css\"\n\n/**\n * Wrapper component for a region containing a list of items whose order can be \n * rearranged by dragging and dropping.\n * \n * @prop {string} className - the sortable container's css className\n * @prop {string[]} idList - array of unique ids for each draggable item, in the order they appear\n * @prop {*} setOrder - given a new id array, updates the order of the draggable items\n * @prop {CollisionDetection} collisionDetectionAlgorithm - calculates collisions\n * @prop {SortingStrategy} sortingStrategy - determines how the order of items should change based on where an item is inserted\n * @prop {string} indicatorPadding - css measurement for how much padding should be added to the drop zone indicator\n */\nconst SortableContainer = ({\n className=\"\", \n idList,\n setOrder, \n collisionDetectionAlgorithm=closestCenter, \n sortingStrategy=rectSortingStrategy, \n indicatorPadding=\"1.5rem\",\n children,\n}) => {\n const [indicateDropZone, setIndicateDropZone] = useState(false)\n const sensors = useCustomSensors()\n\n const handleDragStart = async (event) => {\n setIndicateDropZone(true)\n }\n\n const handleDragEnd = async (event) => {\n const {active, over} = event\n setIndicateDropZone(false)\n \n if (active && over && active.id !== over.id) {\n const oldIndex = idList.indexOf(active.id)\n const newIndex = idList.indexOf(over.id)\n const newOrder = arrayMove(idList, oldIndex, newIndex)\n await setOrder(newOrder)\n }\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetectionAlgorithm}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n autoScroll={{\n threshold: {\n x: 0,\n y: 0.2,\n },\n acceleration: 5,\n }}\n modifiers = {[restrictToParentElement]}\n >\n <SortableContext \n items={idList}\n strategy={sortingStrategy}\n >\n <div className={\"sortable-container \" + className}>\n <div \n className=\"drop-zone-indicator\" \n style={{\n height: `calc(100% + (2 * ${indicatorPadding}))`,\n width: `calc(100% + (2 * ${indicatorPadding}))`,\n display: indicateDropZone ? \"block\" : \"none\",\n }}\n />\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n\nexport default SortableContainer\n","import \"@dnd-kit/core\"\n/**\n * Combine multiple collision detection algorithms into a single one\n * @param {CollisionDetection[]} algorithmList - array of algorithms, in the order they should be attempted\n * @returns {CollisionDetection}\n */\nconst combineCollisionAlgorithms = (algorithmList) => {\n const finalAlgorithm = algorithmList[algorithmList.length - 1]\n return (args) => {\n for (const algorithm of algorithmList) {\n const collisions = algorithm(args);\n if (collisions.length > 0 || algorithm === finalAlgorithm) {\n return collisions;\n }\n }\n }\n}\n\nexport {\n combineCollisionAlgorithms,\n}\n","import { useSortable } from '@dnd-kit/sortable'\n\n/**\n * Make an element sortable by dragging and dropping.\n * \n * @prop {string} id - a unique string that identifies this element\n * @prop {boolean} disableDragging - whether dragging should be disabled for this element\n * @prop {number} scale - how large the element should be during dragging\n * @prop {boolean} separateDragHandle - if only part of the element can be used to drag it\n * \n * @returns itemProperties - properties to be attached to the sortable element\n * @returns handleProperties - if separateDragHandle is true, properties to be attached to the drag handle element\n * @returns activeIndex - index of the element currently being dragged\n * @returns index - index of this element, \n * @returns isDragging - whether this element is currently being dragged\n * @returns isSorting - whether this element is currently being sorted (in response to another element being dragged)\n * @returns isOver - whether an element is currently being dragged over this element\n * */\nconst useSortableItem = ({\n id, \n disableDragging=false, \n scale=1.1, \n separateDragHandle=false,\n}) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n isSorting,\n isOver,\n activeIndex,\n index,\n } = useSortable({id: id})\n\n const draggingScale = isDragging ? scale : 1\n\n const itemStyle = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0) scaleX(${draggingScale}) scaleY(${draggingScale})` : undefined,\n transition,\n zIndex: isDragging ? \"1\" : \"0\",\n boxShadow: isDragging ? \"rgba(0, 0, 0, 0.35) 0px 5px 15px\" : undefined,\n }\n\n const handleStyle = {\n cursor: isDragging ? \"grabbing\" : \"grab\",\n touchAction: \"none\",\n }\n\n let itemProperties = {}\n let handleProperties = {}\n\n if (!disableDragging && !separateDragHandle) {\n itemProperties = {\n ref: setNodeRef,\n style: {...itemStyle, ...handleStyle},\n [\"data-dnd\"]: \"true\",\n ...listeners,\n ...attributes,\n }\n } else if (!disableDragging && separateDragHandle) {\n itemProperties = {\n ref: setNodeRef,\n style: itemStyle,\n }\n handleProperties = {\n [\"data-dnd\"]: \"true\",\n ...listeners,\n ...attributes,\n style: handleStyle,\n }\n }\n\n return {\n itemProperties,\n handleProperties,\n activeIndex, \n index, \n isDragging, \n isSorting,\n isOver,\n }\n}\n\nexport default useSortableItem\n","export const Role = {\n SUPERADMIN: \"super-admin\",\n ADMIN: \"admin\",\n FACULTY: \"faculty\",\n EDUCATOR: \"educator\",\n STUDENT: \"student\",\n SUPERADMINFIREBASECONST: \"Super Admin\",\n USER: \"user\"\n}\n\nexport const RoleNames = {\n SUPERADMIN: \"Super Admin\",\n ADMIN: \"Admin\",\n FACULTY: \"Faculty\",\n EDUCATOR: \"Educator\",\n STUDENT: \"Student\",\n USER: \"User\"\n}\n\nexport const Status = {\n ERROR: \"error\",\n SUCCESS: \"success\",\n INTERNAL: \"internal\"\n}\n","import React from \"react\"\n\nimport \"./eyebrow.css\"\n\n/* Add props to functional components */\n/* @SEE https://medium.com/front10/how-to-style-react-components-with-functional-css-d6d23d2ea419 */\n\nconst EyeBrow = props => {\n const { style, text } = props;\n return (\n <div className=\"eyebrow component-eyebrow\" style={style}>{text}</div>\n )\n}\n\nexport default EyeBrow\n","export default [\n {\n stepKey: \"createFuture\",\n title: \"Create Your Future\",\n content:\n \"The future is yours! Whether you are embarking on a career for the first time or interested in a career transition, Wingspans is here to help. We interview real people about their jobs to unravel the mysteries of the world of work and help you find a path that’s right for you.\",\n // videoTutorialLink: \"https://vimeo.com/253989945\",\n // videoTutorialText: \"<i>Video:</i> Get Started\",\n pdfTutorialLink:\n \"https://docs.google.com/presentation/d/1pUscuE-QpbJNu-ENl0Deg_Yt67VjJXJyWPkhiho5MiY/edit?usp=sharing\",\n pdfTutorialText: \"<i>PDF:</i> Get Started\",\n },\n {\n stepKey: \"selfAwareness\",\n title: \"Increase Self-Awareness\",\n content:\n \"Take the first step to finding a career that aligns with who you are. The 60-question assessment takes 15-20 minutes, outputs information on your personality and career matches rated by excellent, good, and fair, and introduces you to 60 inspiring people in the process.\",\n buttonText: \"Take Personality Assessment\",\n buttonLink: \"/assessment/personality\",\n // videoTutorialLink: \"https://vimeo.com/252443587\",\n // videoTutorialText: \"<i>Video:</i> Guide to fill assessment\",\n pdfTutorialLink:\n \"https://docs.google.com/presentation/d/1SnkHNTZBjMXyIo-8OqZzzfgP7nHuPtBFl673nAL75Ks/edit?usp=sharing\",\n pdfTutorialText: \"<i>PDF:</i> Guide to fill assessment\",\n },\n {\n stepKey: \"explorePossibilities\",\n title: \"Explore\",\n content:\n \"Expand your idea of what is possible. Explore 700+ videos and written stories about work by career, school, major, employers, and videos. Select <i>More Filters</i> to sort stories and careers by identity, personality, interests, and credentials.\",\n buttonText: \"Explore by Category\",\n buttonLink: \"/dashboard?tab=explore#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on how to explore\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on how to explore\",\n },\n {\n stepKey: \"engage\",\n title: \"Engage\",\n content: \"Take an active role in your future. Bookmark three new people every week that inspire you. Set a weekly SMART goal. Write down something you’re looking forward to. And build work readiness competencies.\",\n buttonText: \"Work Readiness\",\n buttonLink: \"/dashboard?tab=work-readiness#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on how to engage\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on how to engage\",\n },\n {\n stepKey: \"buildPortfolio\",\n title: \"Build a Portfolio\",\n content:\n \"Personalize a portfolio that tells the story of who you are. Bookmark pages that inspire you, assess your interests and skills and build a resume that exports to a beautiful, ATS-styled Word doc.\",\n buttonText: \"Portfolio\",\n buttonLink: \"/dashboard?tab=portfolio#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on portfolio\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on portfolio\",\n },\n {\n stepKey: \"planPath\",\n title: \"Plan Your Path\",\n content:\n \"Go beyond imagining and plan your path! Create a personalized timeline using our Guided or Unguided workflow. Dare to dream big and set 1-Year, 5-Year, and 10-Year goals.\",\n buttonText: \"Career Plans\",\n buttonLink: \"/dashboard?tab=career-plan#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on career plans\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on career plans\",\n },\n]\n","import getStartedData from \"../get-started-data\"\n\nexport const walkThroughSteps = {\n createFuture: false,\n selfAwareness: false,\n explorePossibilities: false,\n buildPortfolio: false,\n engage: false,\n planPath: false,\n}\n\nexport const VIEWED_STORIES_THRESHOLD = 10\n\nexport const calculateCompletionPercent = stepsData => {\n const totalSteps = getStartedData.length\n const stepKeys = getStartedData.map(row => row.stepKey)\n let completedSteps = 0,\n inCompleteSteps = 0\n\n stepKeys.forEach(stepKey => {\n !!stepsData[stepKey] ? completedSteps++ : inCompleteSteps++\n })\n return Math.ceil((completedSteps * 100) / totalSteps)\n}\n","import useWindowDimensions from \"./useWindowDimensions\";\n\n/**\n * Uses window dimensions to check if the user is on a mobile device.\n * (There could be better ways to determine this)\n * @returns isMobile - true if this is a mobile device\n */\nconst useCheckIfMobile = () => {\n const { width } = useWindowDimensions()\n const isMobile = width < 480\n\n return {\n isMobile,\n }\n}\n\nexport default useCheckIfMobile\n","import { useState, useEffect } from \"react\"\n\nfunction getWindowDimensions() {\n if (typeof window !== \"undefined\") {\n const { innerWidth: width, innerHeight: height } = window\n return {\n width,\n height,\n }\n } else {\n return {\n width: 1920,\n height: 1080,\n }\n }\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions()\n )\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions())\n }\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"resize\", handleResize)\n }\n return () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"resize\", handleResize)\n }\n };\n }, [])\n\n return windowDimensions\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport PropTypes from 'prop-types';\nimport React, { Component, Children } from 'react';\nimport { InstantSearchConsumer, IndexProvider } from \"../core/context.js\";\nfunction getIndexContext(props) {\n return {\n targetedIndex: props.indexId\n };\n}\n/**\n * The component that allows you to apply widgets to a dedicated index. It's\n * useful if you want to build an interface that targets multiple indices.\n *\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Index, SearchBox, Hits, Configure } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <Configure hitsPerPage={5} />\n * <SearchBox />\n * <Index indexName=\"instant_search\">\n * <Hits />\n * </Index>\n * <Index indexName=\"bestbuy\">\n * <Hits />\n * </Index>\n * </InstantSearch>\n * );\n */\nvar Index = /*#__PURE__*/function (_Component) {\n _inherits(Index, _Component);\n var _super = _createSuper(Index);\n function Index(props) {\n var _this;\n _classCallCheck(this, Index);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n indexContext: getIndexContext(_this.props)\n });\n _defineProperty(_assertThisInitialized(_this), \"unregisterWidget\", void 0);\n _this.props.contextValue.onSearchParameters(_this.getSearchParameters.bind(_assertThisInitialized(_this)), {\n ais: _this.props.contextValue,\n multiIndexContext: _this.state.indexContext\n }, _this.props, undefined, Index.displayName);\n return _this;\n }\n _createClass(Index, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.unregisterWidget = this.props.contextValue.widgetsManager.registerWidget(this);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.indexName !== prevProps.indexName) {\n this.props.contextValue.widgetsManager.update();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (typeof this.unregisterWidget === 'function') {\n this.unregisterWidget();\n }\n }\n }, {\n key: \"getSearchParameters\",\n value: function getSearchParameters(searchParameters, props) {\n return searchParameters.setIndex(this.props ? this.props.indexName : props.indexName);\n }\n }, {\n key: \"render\",\n value: function render() {\n var childrenCount = Children.count(this.props.children);\n if (childrenCount === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(IndexProvider, {\n value: this.state.indexContext\n }, this.props.children);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props) {\n return {\n indexContext: getIndexContext(props)\n };\n }\n }]);\n return Index;\n}(Component);\n_defineProperty(Index, \"propTypes\", {\n indexName: PropTypes.string.isRequired,\n indexId: PropTypes.string.isRequired,\n children: PropTypes.node\n});\n_defineProperty(Index, \"displayName\", 'AlgoliaIndex');\n_defineProperty(Index, \"$$type\", 'ais.index');\n_defineProperty(Index, \"$$widgetType\", 'ais.index');\nvar IndexWrapper = function IndexWrapper(props) {\n var inferredIndexId = props.indexName;\n return /*#__PURE__*/React.createElement(InstantSearchConsumer, null, function (contextValue) {\n return /*#__PURE__*/React.createElement(Index, _extends({\n contextValue: contextValue,\n indexId: inferredIndexId\n }, props));\n });\n};\nIndexWrapper.propTypes = {\n indexName: PropTypes.string.isRequired,\n indexId: PropTypes.string\n};\nexport var IndexComponentWithoutContext = Index;\nexport default IndexWrapper;","import React, { Component } from 'react'\nimport { connectAutoComplete } from 'react-instantsearch-dom'\nimport AutoSuggest from 'react-autosuggest'\nimport { injectIntl, useIntl } from \"react-intl\";\nimport { Link, navigate } from 'gatsby'\n\nclass AutoComplete extends Component {\n state = {\n value: this.props.currentRefinement,\n }\n\n onChange = (event, { newValue }) => {\n this.setState({\n value: newValue,\n })\n }\n\n onSuggestionsFetchRequested = ({ value }) => {\n this.props.refine(value)\n }\n\n onSuggestionsClearRequested = () => {\n this.setState({\n suggestions: [],\n })\n }\n\n getSuggestionValue(hit) {\n return hit.title\n }\n\n renderSuggestion(hit) {\n // we dont want the highlight functionality right now\n // return <Highlight attribute='name' hit={hit} tagName='mark' />;\n // see gatsby-node.js for path information\n var typeSlug = \"\"\n\n if (hit.type === \"stories\") {\n typeSlug = \"/story/\"\n }\n if (hit.type === \"schools\") {\n typeSlug = \"/school/\"\n }\n if (hit.type === \"careers\") {\n typeSlug = \"/career/\"\n }\n if (hit.type === \"majors\") {\n typeSlug = \"/major/\"\n }\n if (hit.type === \"companies\") {\n typeSlug = \"/company/\"\n }\n if (hit.type === \"blogs\") {\n typeSlug = \"/news/\"\n }\n if (hit.type === \"basic-pages\") {\n typeSlug = \"/about/\"\n }\n return (\n <Link to={`${typeSlug}${hit.slug}`}>\n {typeSlug === '/story/' && hit.story_job_title\n ? `${hit.title}, ${hit.story_job_title}`\n : hit.title}\n </Link>\n )\n }\n\n renderSectionTitle(section) {\n const { formatMessage, locale } = this.props.intl\n if (section.hits.length === 0) {\n return \"\"\n }\n const localizeTranslations = {\n 'companies': {\n 'en-US': 'companies',\n 'es-ES': formatMessage({ id: \"algolia-toggle-dropdown-companies\", defaultMessage: \"Companies\" })\n },\n 'Posts': {\n 'en-US': 'Posts',\n 'es-ES': formatMessage({ id: \"auto-complete-posts\", defaultMessage: \"Posts\" })\n },\n 'stories': {\n 'en-US': 'stories',\n 'es-ES': formatMessage({ id: \"auto-complete-stories\", defaultMessage: \"stories\" })\n },\n 'careers': {\n 'en-US': 'careers',\n 'es-ES': formatMessage({ id: \"details-alt-college-careers\", defaultMessage: \"Careers\" })\n },\n 'schools': {\n 'en-US': 'schools',\n 'es-ES': formatMessage({ id: \"algolia-toggle-dropdown-schools\", defaultMessage: \"Schools\" })\n },\n 'majors': {\n 'en-US': 'majors',\n 'es-ES': formatMessage({ id: \"algolia-toggle-dropdown-majors\", defaultMessage: \"Majors\" })\n }\n };\n return localizeTranslations[section.index][locale] || section.index;\n }\n\n getSectionSuggestions(section) {\n if (section.index === \"basic-pages\") {\n section.index = \"Pages\"\n }\n if (section.index === \"blogs\") {\n section.index = \"Posts\"\n }\n return section.hits\n }\n\n onSuggestionSelected = (event, { suggestion, method }) => {\n const { locale } = this.props.intl\n\n var typeSlug = \"\"\n\n if (suggestion.type === \"stories\") {\n locale === 'en-US' ? typeSlug = \"/story/\" : typeSlug = \"/es-ES/story/\"\n }\n if (suggestion.type === \"schools\") {\n locale === 'en-US' ? typeSlug = \"/school/\" : typeSlug = \"/es-ES/school/\"\n }\n if (suggestion.type === \"careers\") {\n locale === 'en-US' ? typeSlug = \"/career/\" : typeSlug = \"/es-ES/career/\"\n }\n if (suggestion.type === \"majors\") {\n locale === 'en-US' ? typeSlug = \"/major/\" : typeSlug = \"/es-ES/major/\"\n }\n if (suggestion.type === \"companies\") {\n locale === 'en-US' ? typeSlug = \"/company/\" : typeSlug = \"/es-ES/company/\"\n }\n if (suggestion.type === \"blogs\") {\n locale === 'en-US' ? typeSlug = \"/news/\" : typeSlug = \"/es-ES/news/\"\n }\n if (suggestion.type === \"basic-pages\") {\n locale === 'en-US' ? typeSlug = \"/about/\" : typeSlug = \"/es-ES/about/\"\n }\n\n if (method === \"enter\" || method === \"click\") {\n navigate(`${typeSlug}${suggestion.slug}`)\n }\n\n this.setState({\n value: \"\",\n })\n }\n\n render() {\n const { hits } = this.props\n const { value } = this.state\n const { formatMessage, locale } = this.props.intl\n const inputProps = {\n placeholder: formatMessage({ id: \"global-search-placeholder\", defaultMessage: \"Search by name, career, major, school… \" }),\n onChange: this.onChange,\n value,\n }\n\n return (\n <AutoSuggest\n suggestions={hits}\n multiSection={true}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSuggestionSelected}\n getSuggestionValue={this.getSuggestionValue}\n renderSuggestion={this.renderSuggestion}\n inputProps={inputProps}\n renderSectionTitle={(section) => this.renderSectionTitle(section, locale)}\n getSectionSuggestions={this.getSectionSuggestions}\n />\n )\n }\n}\n\nexport default injectIntl(connectAutoComplete(AutoComplete))\n","import React from \"react\"\nimport algoliasearch from 'algoliasearch';\nimport { InstantSearch, Configure, Index, RefinementList } from 'react-instantsearch-dom';\nimport AutoComplete from './AutoComplete';\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useIntl } from \"react-intl\";\n\nconst searchClient = algoliasearch(AlgoliaClientKeys.appId, AlgoliaClientKeys.apiKey);\n\nconst AlgoliaGlobalSearch = () => {\n\n const { locale } = useIntl()\n const localeFilter = `locale:${locale}`\n \n return (\n <InstantSearch indexName=\"stories\" searchClient={searchClient}>\n <Configure hitsPerPage={10} filters={localeFilter} />\n <AutoComplete/>\n <Index indexName=\"stories\"></Index>\n <Index indexName=\"careers\"></Index>\n <Index indexName=\"schools\"></Index>\n <Index indexName=\"majors\">\n <Configure filters={`${localeFilter} AND (major_bachelor:true OR major_associate:true OR major_graduate:true OR major_master:true OR major_doctorate:true)`} />\n </Index>\n <Index indexName=\"companies\"></Index>\n <Index indexName=\"blogs\">\n <RefinementList\n attribute=\"blog_categories\"\n defaultRefinement={[\"None\"],[\"Blog\"],[\"Advice\"]}\n />\n </Index>\n <Index indexName=\"basic-pages\"></Index>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaGlobalSearch\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAACKCAYAAABb56TfAAAATmVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAAAAAAAAAAAEgAAAABAAAASAAAAAFvySO6AAAQP0lEQVR4Ae2dT37TSBbHS0omCSvi/QDhBGROgLehF2RO0O4TtKdh1pj1wLT7BDgnmLAYshxzg+QEHaD3wasO+USqeU+WseNIllQlWa8qPy8SWSpJr7719FzS+yOl8AEBEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABJwgETkgJIUGgQQL93/Xu5ublPp8iCDa+/uuvW6cNnq7RQ//zj6t9raNdPsn1tTofPr533sQJYTiaoIpjOkGADcbGxtWQhP3xhsCB+qS06r99uH18Y73gL4nBiOOhVsHTRTEDpT9eR7pXtwGB4Vik3MDyxoeLQx0EAzr0k/TwE/pdO45VPFAHnfN0nfx//7nYDXdUn2TvkbCPUoHPlNLH8aUaqr93vsrvxFzC1GiMac1sXOYb0yW6CH/698Ot0a0Nwla8/PJnV+vwfyvEmoRh0K1zJiXKcKQAemQl9xhCrIKvYRAP3zy4N+bvrn3Ck8mILqybv2bzTkziWHfVD53T+SqhS4nRCMYkXd5FdhZfUl8cMh4vPn9j7nn9+T4QURQ/rvvX+vvBa1jgmQbp0ZgOdX/V4Xjm8ebhTndVmyrbxBiOF19oyqj1z1nCa6Xex9EWTbcCZ37VwpOLAf06v8rqz8K6CV1we6IvuGKjkXSHFOljdLDbXeib2MUSv9Bz2YPgt7cPtvrzFXKWklnT5tUp3VY9KiMVzTr+VtesIyxzwqbbvPz0bZBnNPjcpJTP03vRpkWp5/j/vdgvYTT4XPen0/96TtvEUcKdcEjHLfxl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\"","import React, { useEffect, useState, useContext } from \"react\"\nimport \"./flyout.css\"\nimport { FirebaseContext } from \"../Firebase\"\n\nconst BackDrop = props => {\n return <div className=\"backdrop\" onClick={props.closeDrawer}></div>\n}\n\nconst SlideDrawer = ({ show, onClose, isFullScreen, ...restProps }) => {\n const { children } = restProps\n let drawerClasses = show ? \"slide-drawer open\" : \"slide-drawer\"\n\n return (\n <div className={`${drawerClasses} ${isFullScreen ? \"fullscreen\" : \"\"}`}>\n {children}\n </div>\n )\n}\n\nconst Flyout = ({ show, setShow, isFullScreen, ...restProps }) => {\n const {\n notifier,\n } = useContext(FirebaseContext)\n const { children } = restProps\n const [drawerOpen, setDrawerOpen] = useState(show)\n\n useEffect(() => {\n setDrawerOpen(show)\n }, [show])\n\n function handleBackdropClick() {\n setDrawerOpen(false)\n setShow(false)\n }\n\n function handleClose() {\n setDrawerOpen(false)\n setShow(false)\n }\n\n useEffect(() => {\n notifier.setIsDisabled(drawerOpen)\n }, [drawerOpen])\n\n return (\n <>\n <SlideDrawer\n show={drawerOpen}\n onClose={handleClose}\n isFullScreen={isFullScreen}\n >\n {children}\n </SlideDrawer>\n\n {drawerOpen && <BackDrop closeDrawer={handleBackdropClick} />}\n </>\n )\n}\n\nexport default Flyout\n","export default [\n {\n stepKey: \"createFuture\",\n title: \"Crea tu futuro\",\n content:\n \"El futuro es tuyo! Ya sea que se esté embarcando en una carrera por primera vez o esté interesado en una transición profesional, Wingspans está aquà para ayudarlo. Entrevistamos a personas reales sobre sus trabajos para desentrañar los misterios del mundo laboral y ayudarte a encontrar el camino adecuado para ti.\",\n // videoTutorialLink: \"https://vimeo.com/253989945\",\n // videoTutorialText: \"<i>Video:</i> Get Started\",\n pdfTutorialLink:\n \"https://docs.google.com/presentation/d/1pUscuE-QpbJNu-ENl0Deg_Yt67VjJXJyWPkhiho5MiY/edit?usp=sharing\",\n pdfTutorialText: \"<i>PDF:</i> Empezar\",\n },\n {\n stepKey: \"selfAwareness\",\n title: \"Aumentar la autoconciencia\",\n content:\n \"Da el primer paso para encontrar una carrera que se alinee con quién eres. La evaluación de 60 preguntas dura entre 15 y 20 minutos, genera información sobre su personalidad y carreras profesionales calificadas como excelente, buena y justa, y le presenta a 60 personas inspiradoras en el proceso.\",\n buttonText: \"Realizar una evaluación de personalidad\",\n buttonLink: \"/es-ES/assessment/personality\",\n // videoTutorialLink: \"https://vimeo.com/252443587\",\n // videoTutorialText: \"<i>Video:</i> Guide to fill assessment\",\n pdfTutorialLink:\n \"https://docs.google.com/presentation/d/1SnkHNTZBjMXyIo-8OqZzzfgP7nHuPtBFl673nAL75Ks/edit?usp=sharing\",\n pdfTutorialText: \"<i>PDF:</i> GuÃa para llenar la evaluación\",\n },\n {\n stepKey: \"explorePossibilities\",\n title: \"Explorar\",\n content:\n \"AmplÃe su idea de lo que es posible. Explore más de 700 videos e historias escritas sobre el trabajo por carrera, escuela, especialidad, empleadores y videos. Seleccione <i>Más filtros</i> para ordenar historias y carreras por identidad, personalidad, intereses y credenciales.\",\n buttonText: \"Explorar por categorÃa\",\n buttonLink: \"/es-ES/dashboard?tab=explore#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on how to explore\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on how to explore\",\n },\n {\n stepKey: \"engage\",\n title: \"Participar\",\n content:\n \"Tome un papel activo en su futuro. Añade a favoritos tres personas nuevas cada semana que te inspiren. Establezca una meta INTELIGENTE semanal. Escribe algo que estés esperando. Y desarrollar competencias de preparación para el trabajo.\",\n buttonText: \"Recursos profesionales\",\n buttonLink: \"/es-ES/dashboard?tab=work-readiness#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on how to engage\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on how to engage\",\n },\n {\n stepKey: \"buildPortfolio\",\n title: \"Construya una cartera\",\n content:\n \"Personaliza un portafolio que cuente la historia de quién eres. Marque páginas que lo inspiren, evalúe sus intereses y habilidades y cree un currÃculum que se exporte a un hermoso documento de Word con estilo ATS.\",\n buttonText: \"Portafolio\",\n buttonLink: \"/es-ES/dashboard?tab=portfolio#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on portfolio\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on portfolio\",\n },\n {\n stepKey: \"planPath\",\n title: \"Planifica tu camino\",\n content:\n \"Ve más allá de lo imaginable y planifica tu camino! Cree una lÃnea de tiempo personalizada utilizando nuestro flujo de trabajo guiado o no guiado. Atrévete a soñar en grande y establece metas a 1, 5 y 10 años.\",\n buttonText: \"Plan de estudios\",\n buttonLink: \"/es-ES/dashboard?tab=career-plan#start\",\n // videoTutorialLink: \"http://www.google.com/videos\",\n // videoTutorialText: \"<i>Video:</i> Guide on career plans\",\n // pdfTutorialLink: \"http://www.google.com/videos\",\n // pdfTutorialText: \"<i>PDF:</i> Guide on career plans\",\n },\n]\n","import React from \"react\"\n\nfunction ProgressCircle({\n progressPercentage = 0,\n size = \"46px\",\n circleColor = \"var(--color-ccff00)\",\n backgroundColor = \"var(--color-00b8ef)\",\n}) {\n return (\n <svg\n className=\"progress-circle\"\n height={size}\n width={size}\n viewBox=\"-1 -1 20 23\"\n >\n <circle\n r=\"10\"\n cx=\"10\"\n cy=\"10\"\n fill={backgroundColor}\n stroke={circleColor}\n />\n\n <circle\n r=\"5\"\n cx=\"10\"\n cy=\"10\"\n fill=\"transparent\"\n stroke={circleColor}\n strokeWidth=\"10\"\n strokeDasharray={`calc(${progressPercentage} * 31.4px / 100) 31.4`}\n transform=\"rotate(-90) translate(-20)\"\n />\n </svg>\n )\n}\n\nexport default ProgressCircle\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOC41IiBoZWlnaHQ9IjE4LjUiIHZpZXdCb3g9IjAgMCAxOC41IDE4LjUiPgogIDxnIGlkPSJ2dWVzYXhfbGluZWFyX2Fycm93LWRvd24iIGRhdGEtbmFtZT0idnVlc2F4L2xpbmVhci9hcnJvdy1kb3duIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy4yNSAxNy4yNSkgcm90YXRlKDE4MCkiPgogICAgPGcgaWQ9ImFycm93LWRvd24iPgogICAgICA8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTAuNTYsMCw2LjIxMyw0LjM0N2ExLjMyNCwxLjMyNCwwLDAsMS0xLjg2NywwTDAsMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi43MiA1Ljk2NykiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzQwNzc3YyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSIwIDAiLz4KICAgICAgPHBhdGggaWQ9IlZlY3Rvci0yIiBkYXRhLW5hbWU9IlZlY3RvciIgZD0iTTE2LDBWMTZIMFYwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYgMTYpIHJvdGF0ZSgxODApIiBmaWxsPSJub25lIiBzdHJva2U9IiM0MDc3N2MiIHN0cm9rZS13aWR0aD0iMi41IiBvcGFjaXR5PSIwIi8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOC41IiBoZWlnaHQ9IjE4LjUiIHZpZXdCb3g9IjAgMCAxOC41IDE4LjUiPgogIDxnIGlkPSJhcnJvdy1kb3duIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjI1IDEuMjUpIj4KICAgIDxnIGlkPSJ2dWVzYXhfbGluZWFyX2Fycm93LWRvd24iIGRhdGEtbmFtZT0idnVlc2F4L2xpbmVhci9hcnJvdy1kb3duIj4KICAgICAgPGcgaWQ9ImFycm93LWRvd24tMiIgZGF0YS1uYW1lPSJhcnJvdy1kb3duIj4KICAgICAgICA8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTAuNTYsMCw2LjIxMyw0LjM0N2ExLjMyNCwxLjMyNCwwLDAsMS0xLjg2NywwTDAsMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMi43MiA1Ljk2NykiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzQwNzc3YyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSIwIDAiLz4KICAgICAgICA8cGF0aCBpZD0iVmVjdG9yLTIiIGRhdGEtbmFtZT0iVmVjdG9yIiBkPSJNMTYsMFYxNkgwVjBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNiAxNikgcm90YXRlKDE4MCkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzQwNzc3YyIgc3Ryb2tlLXdpZHRoPSIyLjUiIG9wYWNpdHk9IjAiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\"","import React, { useContext, useEffect, useState } from \"react\"\nimport {\n Accordion,\n AccordionContext,\n Button,\n Card,\n Modal,\n useAccordionToggle,\n} from \"react-bootstrap\"\nimport { useLocation } from \"@reach/router\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport ReactPlayer from \"react-player\"\nimport { StaticImage } from \"gatsby-plugin-image\"\nimport ProfileImage from \"../profile-image/profile-image\"\nimport Flyout from \"../flyout/flyout\"\nimport \"./get-started.css\"\nimport getStartedData from \"./get-started-data\"\nimport getStartedDataEs from \"./get-started-data.es\"\nimport { Link } from \"gatsby\"\nimport ProgressCircle from \"../progress-circle/progress-circle\"\nimport { calculateCompletionPercent } from \"./utils/utils\"\nimport { faFile, faPlayCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport ExpandIcon from \"../../../static/assets/images/expand-icon.svg\"\nimport MinimizeIcon from \"../../../static/assets/images/minimize-icon.svg\"\nimport ArrowUpIcon from \"../../../static/assets/images/arrow-up.svg\"\nimport ArrowDownIcon from \"../../../static/assets/images/arrow-down.svg\"\nimport CloseIcon from \"../../../static/assets/images/closeIcon.svg\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nfunction VideoModal(props) {\n const { videoUrl, title, ...restProps } = props\n return (\n <Modal\n className=\"get-started-video-modal\"\n backdropClassName=\"get-started-video-backdrop\"\n {...restProps}\n centered\n size=\"xl\"\n >\n <Modal.Header closeButton />\n <div className=\"video-wrapper\">\n <ReactPlayer\n url={videoUrl}\n controls={true}\n playing\n width=\"100%\"\n height=\"100%\"\n light\n playIcon={\n <>\n <button className=\"button component-button component-button-video component-button-video-large\">\n <FontAwesomeIcon className=\"play-video\" icon={faPlayCircle} />\n <FormattedMessage\n id=\"get-started-watch-video\"\n defaultMessage=\"Watch Video\"\n />\n </button>\n </>\n }\n />\n </div>\n </Modal>\n )\n}\n\nfunction Toggle({ children, eventKey, callback }) {\n const currentEventKey = useContext(AccordionContext)\n\n const decoratedOnClick = useAccordionToggle(\n eventKey,\n () => callback && callback(eventKey)\n )\n\n const isCurrentEventKey = currentEventKey === eventKey\n\n return (\n <Button variant=\"link\" onClick={decoratedOnClick}>\n {children}\n <img src={isCurrentEventKey ? ArrowUpIcon : ArrowDownIcon} />\n </Button>\n )\n}\n\nfunction GetStartedFlyout({ profile, show, setShow, stepsData, onStepChange }) {\n const location = useLocation()\n const [isFullScreen, setIsFullScreen] = useState(false)\n const [showVideoModal, setShowVideoModal] = useState(false)\n const [videoForStep, setVideoForStep] = useState(null)\n const profileProgress = calculateCompletionPercent(stepsData)\n const { locale } = useIntl()\n\n useEffect(() => {\n setShow(false)\n }, [location])\n\n function handleFullscreenToggle() {\n setIsFullScreen(!isFullScreen)\n }\n\n function handleStepChanged(stepKey) {\n onStepChange(stepKey)\n }\n\n function handleOnClose() {\n setShow(false)\n }\n\n function handleVideoTutorialClick(step) {\n setVideoForStep(step)\n setShowVideoModal(true)\n }\n\n function handleVideoModalClose() {\n setVideoForStep(null)\n setShowVideoModal(false)\n }\n\n return (\n <>\n <Flyout show={show} setShow={setShow} isFullScreen={isFullScreen}>\n <div className=\"get-started-flyout\">\n <div className=\"fly-out-header\">\n <div className=\"header-content-container\">\n <div className=\"full-screen-toggle\">\n <button\n variant=\"link\"\n className=\"full-screen-button\"\n onClick={handleFullscreenToggle}\n >\n <img src={isFullScreen ? MinimizeIcon : ExpandIcon} />\n </button>\n </div>\n <div className=\"profile-image-wrapper\">\n <ProfileImage profile={profile} />\n </div>\n <div className=\"profile-name-container\">\n {profile && profile.firstName && (\n <div className=\"profile-name\">\n {profile.firstName} {profile.lastName ?? \"\"}\n </div>\n )}\n <div className=\"get-started\"><FormattedMessage\n id=\"get-started-get-started\"\n defaultMessage=\"Get Started\"\n /></div>\n </div>\n </div>\n <div className=\"close-container\">\n <button onClick={handleOnClose} className=\"close-button\">\n <img src={CloseIcon} />\n </button>\n </div>\n </div>\n <div className=\"flyout-scroll-area\">\n <div className=\"fly-out-banner\">\n <div className=\"percent-complete-section\">\n <div>\n <ProgressCircle progressPercentage={profileProgress} />\n </div>\n <div className=\"progress-text\">{profileProgress}% <FormattedMessage\n id=\"get-started-complete\"\n defaultMessage=\"Complete\"\n /></div>\n </div>\n <div className=\"banner-header\"><FormattedMessage\n id=\"get-started-wingspans-checklist\"\n defaultMessage=\"Wingspans Checklist\"\n /></div>\n </div>\n\n <div className=\"flyout-content\">\n <div className=\"content-header-text\"><FormattedMessage\n id=\"get-started-welcome-start-here\"\n defaultMessage=\"Welcome! Start here\"\n /></div>\n <Accordion>\n {stepsData && (locale !== 'es-ES' && getStartedDataEs ? getStartedData : getStartedDataEs).map((row, index) => {\n let hasVideoOrPdf =\n row.videoTutorialLink || row.pdfTutorialLink\n return (\n <Card key={index}>\n <Card.Header>\n <div>\n <div className=\"checkbox-container\">\n <input\n value={row.stepKey}\n type=\"checkbox\"\n checked={!!stepsData[row.stepKey]}\n className=\"custom-checkbox\"\n onChange={() => handleStepChanged(row.stepKey)}\n />\n <Toggle eventKey={index.toString()}>\n <div className=\"title\">{row.title}</div>\n </Toggle>\n </div>\n </div>\n </Card.Header>\n <Accordion.Collapse eventKey={index.toString()}>\n <Card.Body>\n <div className=\"card-body-container\">\n <div className=\"row\">\n <div\n className={`content-container ${hasVideoOrPdf ? \"col-sm-7\" : \"col-sm\"\n }`}\n >\n <div\n dangerouslySetInnerHTML={{\n __html: row.content,\n }}\n ></div>\n {row.buttonLink && (\n <Link to={row.buttonLink}>\n <button\n type=\"button\"\n className=\"action-button button component-button component-button-default comopnent-button-ghost\"\n >\n {row.buttonText}\n </button>\n </Link>\n )}\n </div>\n {hasVideoOrPdf && (\n <>\n <div className=\"col-\"></div>\n <div className=\"col-sm p-0\">\n <div className=\"video-doc-container container-fluid v-divider\">\n {row.videoTutorialLink && (\n <div className=\"row align-items-center\">\n <div className=\"video col-\">\n <button\n className=\"button component-button-video-large\"\n onClick={() =>\n handleVideoTutorialClick(row)\n }\n style={{\n background: \"transparent\",\n }}\n >\n <FontAwesomeIcon\n className=\"play-video\"\n icon={faPlayCircle}\n />\n </button>\n </div>\n {row.videoTutorialText && (\n <div\n dangerouslySetInnerHTML={{\n __html: row.videoTutorialText,\n }}\n className=\"video-text col\"\n ></div>\n )}\n </div>\n )}\n {row.pdfTutorialLink && (\n <div\n className={`row align-items-center ${row.videoTutorialLink\n ? \"pt-3\"\n : \"\"\n }`}\n >\n <div className=\"pdf col-\">\n <a\n href={row.pdfTutorialLink}\n target=\"_blank\"\n >\n <FontAwesomeIcon\n className=\"view-doc\"\n icon={faFile}\n />\n </a>\n </div>\n {row.pdfTutorialText && (\n <div\n dangerouslySetInnerHTML={{\n __html: row.pdfTutorialText,\n }}\n className=\"pdf-text col\"\n ></div>\n )}\n </div>\n )}\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n </Card.Body>\n </Accordion.Collapse>\n </Card>\n )\n })}\n </Accordion>\n </div>\n </div>\n </div>\n </Flyout>\n {videoForStep && (\n <VideoModal\n videoUrl={videoForStep.videoTutorialLink}\n title={videoForStep.title}\n show={showVideoModal}\n onHide={handleVideoModalClose}\n />\n )}\n </>\n )\n}\n\nexport default GetStartedFlyout\n","export default \"data:image/svg+xml;base64,PHN2ZyBpZD0iR3JvdXBfMjM1IiBkYXRhLW5hbWU9Ikdyb3VwIDIzNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjIuMTA4IiBoZWlnaHQ9IjIyLjA5NyIgdmlld0JveD0iMCAwIDIyLjEwOCAyMi4wOTciPgogIDxwYXRoIGlkPSJVbmlvbl8yIiBkYXRhLW5hbWU9IlVuaW9uIDIiIGQ9Ik0uNTMyLDguMDQ3bDYuMDA5LS4wMjJMMCwxLjcyNCwxLjc2MywwLDguMzI1LDYuMzE5Vi40MTlsMi41MDcuMDMzLjA0LDEwLjA0Ny0xMC4zMy4wMzlaIiBmaWxsPSIjMzYzNjM2Ii8+CiAgPHBhdGggaWQ9IlVuaW9uXzEiIGRhdGEtbmFtZT0iVW5pb24gMSIgZD0iTS41MzIsOC4wNDdsNi4wMDktLjAyMkwwLDEuNzI0LDEuNzYzLDAsOC4zMjUsNi4zMTlWLjQxOWwyLjUwNy4wMzMuMDQsMTAuMDQ3LTEwLjMzLjAzOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIyLjEwOCAyMi4wOTcpIHJvdGF0ZSgxODApIiBmaWxsPSIjMzYzNjM2Ii8+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMi4xMDgiIGhlaWdodD0iMjIuMDk3IiB2aWV3Qm94PSIwIDAgMjIuMTA4IDIyLjA5NyI+CiAgPGcgaWQ9Ikdyb3VwXzIzNSIgZGF0YS1uYW1lPSJHcm91cCAyMzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMTM2LjM5NCAtMjcuNDA1KSI+CiAgICA8cGF0aCBpZD0iVW5pb25fMiIgZGF0YS1uYW1lPSJVbmlvbiAyIiBkPSJNLTIwMTYuNDY4LDEwOS4wNDhsNi4wMDktLjAyMi02LjU0MS02LjMsMS43NjMtMS43MjQsNi41NjIsNi4zMTl2LTUuOWwyLjUwNy4wMzMuMDQsMTAuMDQ3LTEwLjMzLjAzOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NjkuNzM0IDEzOC45NDMpIHJvdGF0ZSgxODApIiBmaWxsPSIjMzYzNjM2Ii8+CiAgICA8cGF0aCBpZD0iVW5pb25fMSIgZGF0YS1uYW1lPSJVbmlvbiAxIiBkPSJNLTIwMTYuNDY4LDEwOS4wNDhsNi4wMDktLjAyMi02LjU0MS02LjMsMS43NjMtMS43MjQsNi41NjIsNi4zMTl2LTUuOWwyLjUwNy4wMzMuMDQsMTAuMDQ3LTEwLjMzLjAzOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxNjQuNjMgLTYyLjAzNikiIGZpbGw9IiMzNjM2MzYiLz4KICA8L2c+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNy43NjgiIGhlaWdodD0iMTcuNzY4IiB2aWV3Qm94PSIwIDAgMTcuNzY4IDE3Ljc2OCI+CiAgPGcgaWQ9Ikdyb3VwXzE0MCIgZGF0YS1uYW1lPSJHcm91cCAxNDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xODgyLjYxNiAtMzMuNDM5KSI+CiAgICA8bGluZSBpZD0iTGluZV80IiBkYXRhLW5hbWU9IkxpbmUgNCIgeDI9IjE2IiB5Mj0iMTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4ODMuNSAzNC4zMjMpIiBmaWxsPSJub25lIiBzdHJva2U9IiMzNjM2MzYiIHN0cm9rZS13aWR0aD0iMi41Ii8+CiAgICA8bGluZSBpZD0iTGluZV81IiBkYXRhLW5hbWU9IkxpbmUgNSIgeDE9IjE2IiB5Mj0iMTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4ODMuNSAzNC4zMjMpIiBmaWxsPSJub25lIiBzdHJva2U9IiMzNjM2MzYiIHN0cm9rZS13aWR0aD0iMi41Ii8+CiAgPC9nPgo8L3N2Zz4K\"","export default __webpack_public_path__ + \"static/butterfly-47d2d89d610d362740e4f9f2d7bf88fd.svg\";","export default __webpack_public_path__ + \"static/bee-d4b22aa60e2dc45e5a0b6b277b7b9f43.svg\";","export default __webpack_public_path__ + \"static/hummingbird-cbba09a1f03a526c92bd964951693a02.svg\";","export default __webpack_public_path__ + \"static/bluejay-0c9d622b5910cc07beae22080b85026a.svg\";","export default __webpack_public_path__ + \"static/heron-f4e68412754138a41e27089c9cb99a0f.svg\";","export default __webpack_public_path__ + \"static/eagle-d7f2750a55167f625422a9cf94d97083.svg\";","import modalButterfly from \"../../images/levels/butterfly.png\"\nimport profileButterfly from \"../../images/levels/butterfly.svg\"\nimport modalBee from \"../../images/levels/bee.png\"\nimport profileBee from \"../../images/levels/bee.svg\"\nimport modalHummingbird from \"../../images/levels/hummingbird.png\"\nimport profileHummingbird from \"../../images/levels/hummingbird.svg\"\nimport modalBluejay from \"../../images/levels/bluejay.png\"\nimport profileBluejay from \"../../images/levels/bluejay.svg\"\nimport modalHeron from \"../../images/levels/heron.png\"\nimport profileHeron from \"../../images/levels/heron.svg\"\nimport modalEagle from \"../../images/levels/eagle.png\"\nimport profileEagle from \"../../images/levels/eagle.svg\"\nimport { faFire } from \"@fortawesome/pro-solid-svg-icons\"\n\nexport default [\n {\n points: [0, 10],\n name: \"Fuego\",\n message: \"Lista para crecer!\",\n profileColor: \"orange\",\n modalColor: \"orange\",\n image: faFire,\n },\n {\n points: [10, 50],\n name: \"Mariposa\",\n message: \"Simbolizando que un pequeño cambio puede dar lugar a un gran maremoto.\",\n profileColor: \"#D1BCFC\",\n modalColor: \"#4B489D\",\n image: modalButterfly,\n },\n {\n points: [50, 100],\n name: \"Abeja\",\n message: \"Simboliza la concentración y el trabajo duro.\",\n profileColor: \"#F99F00\",\n modalColor: \"C86C20\",\n image: modalBee,\n },\n {\n points: [100, 250],\n name: \"colibrÃ\",\n message: \"Simboliza el trabajo atemporal y el néctar de la vida.\",\n profileColor: \"#C7EB29\",\n modalColor: \"#35A994\",\n image: modalHummingbird,\n },\n {\n points: [250, 500],\n name: \"Arrendajo azul\",\n message: \"SSimboliza comunicación, curiosidad y confianza. Un avistamiento puede ser un presagio que le inste a hablar, ser audaz y perseguir sus objetivos.\",\n profileColor: \"#5C4DF2\",\n modalColor: \"#20419A\",\n image: modalBluejay,\n },\n {\n points: [500, 1000],\n name: \"Garza\",\n message: \"Simboliza elegancia, paciencia, sabidurÃa, mensajes, dominio de uno mismo, transformación y buena fortuna.\",\n profileColor: \"#D1DCFF\",\n modalColor: \"#4B489D\",\n image: modalHeron,\n },\n {\n points: [1000, Infinity],\n name: \"Ãguila\",\n message: \"Simboliza la iluminación.\",\n profileColor: \"#FFD00C\",\n modalColor: \"#2b1c1c\",\n image: modalEagle,\n },\n]\n","import React, { useState, useContext, useEffect } from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport LEVELS from \"./Levels\"\nimport LevelsEs from \"./LevelsEs\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\n\nimport \"./LevelsModal.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst LevelsModal = ({ userOpened = false, handleShowLevelModalHide }) => {\n const [show, setShow] = useState(false)\n const { locale } = useIntl();\n const {\n pointTotals,\n localFirestore:{\n level\n },\n setLevel,\n } = useContext(FirebaseContext)\n\n const onModalHide = () => {\n setShow(false)\n if (handleShowLevelModalHide) {\n handleShowLevelModalHide()\n }\n }\n\n useEffect(() => {\n if (level !== null && LEVELS[level] && pointTotals >= LEVELS[level].points[1]) {\n setLevel(level + 1)\n setShow(true)\n }\n }, [pointTotals])\n\n useEffect(() => {\n setShow(userOpened)\n }, [userOpened])\n\n return (\n <>\n {level !== null && LEVELS[level]?.image && (\n <Modal\n className=\"levels-modal\"\n show={show}\n onHide={onModalHide}\n centered\n >\n <Modal.Header closeButton />\n\n <Modal.Body>\n <h6>\n <b><FormattedMessage id=\"levels-modal-congratulations\" defaultMessage=\"Congratulations!\" /></b>\n </h6>\n\n <div className=\"level-info\">\n {level === 0 ? (\n <div style={{ color: \"#FAAD3D\" }}>\n <FontAwesomeIcon\n icon={LEVELS[level].image}\n style={{ marginRight: \"0.5rem\" }}\n className=\"profile-point-image\"\n size=\"4x\"\n />\n </div>\n ) : (\n <img\n src={LEVELS[level].image}\n alt={LEVELS[level].name}\n className=\"profile-point-image\"\n />\n )}\n <div className=\"level-text\">\n <p><FormattedMessage id=\"levels-modal-you-are-now-at-level\" defaultMessage=\"You are now at level\" /></p>\n <h4 style={{ color: LEVELS[level].modalColor }}>\n {locale === 'en-US' ? LEVELS[level].name : LevelsEs[level].name}\n </h4>\n </div>\n </div>\n </Modal.Body>\n\n <Modal.Footer className=\"text-center\">\n <p>{locale === 'en-US' ? LEVELS[level].message : LevelsEs[level].message}</p>\n </Modal.Footer>\n </Modal>\n )}\n </>\n )\n}\n\nexport default LevelsModal\n","// Fallback locale.\n// (when not a single one of the supplied \"preferred\" locales is available)\nvar defaultLocale = 'en'; // For all locales added\n// their relative time formatter messages will be stored here.\n\nvar localesData = {}; // According to the spec BCP 47 language tags are case-insensitive.\n// https://tools.ietf.org/html/rfc5646\n\nvar lowercaseLocaleLookup = {};\nexport function getDefaultLocale() {\n return defaultLocale;\n}\nexport function setDefaultLocale(locale) {\n defaultLocale = locale;\n}\n/**\r\n * Gets locale data previously added by `addLocaleData()`.\r\n * @return {object} [localeData]\r\n */\n\nexport function getLocaleData(locale) {\n return localesData[locale];\n}\n/**\r\n * Adds locale data.\r\n * Is called by `RelativeTimeFormat.addLocale(...)`.\r\n * @param {object} localeData\r\n */\n\nexport function addLocaleData(localeData) {\n if (!localeData) {\n throw new Error('No locale data passed');\n } // This locale data is stored in a global variable\n // and later used when calling `.format(time)`.\n\n\n localesData[localeData.locale] = localeData;\n lowercaseLocaleLookup[localeData.locale.toLowerCase()] = localeData.locale;\n}\n/**\r\n * Returns a locale for which locale data has been added\r\n * via `RelativeTimeFormat.addLocale(...)`.\r\n * @param {string} locale\r\n * @return {string} [locale]\r\n */\n\nexport function resolveLocale(locale) {\n if (localesData[locale]) {\n return locale;\n }\n\n if (lowercaseLocaleLookup[locale.toLowerCase()]) {\n return lowercaseLocaleLookup[locale.toLowerCase()];\n }\n}\n//# sourceMappingURL=LocaleDataStore.js.map","import { resolveLocale as resolveLocaleForData } from './LocaleDataStore.js';\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * @param {string} locale\r\n * @param {Object} [options] - An object that may have the following property:\r\n * @param {string} [options.localeMatcher=\"lookup\"] - The locale matching algorithm to use. Possible values are \"lookup\" and \"best fit\". Currently only \"lookup\" is supported.\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocale(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocale(\"xx-Latn\")\r\n */\n\nexport default function resolveLocale(locale) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var localeMatcher = options.localeMatcher || 'lookup';\n\n switch (localeMatcher) {\n case 'lookup':\n return resolveLocaleLookup(locale);\n // \"best fit\" locale matching is not supported.\n // https://github.com/catamphetamine/relative-time-format/issues/2\n\n case 'best fit':\n // return resolveLocaleBestFit(locale)\n return resolveLocaleLookup(locale);\n\n default:\n throw new RangeError(\"Invalid \\\"localeMatcher\\\" option: \".concat(localeMatcher));\n }\n}\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * Starts from the most specific locale and gradually\r\n * falls back to less specific ones.\r\n * This is a basic implementation of the \"lookup\" algorithm.\r\n * https://tools.ietf.org/html/rfc4647#section-3.4\r\n * @param {string} locale\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocaleLookup(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocaleLookup(\"xx-Latn\")\r\n */\n\nexport function resolveLocaleLookup(locale) {\n var resolvedLocale = resolveLocaleForData(locale);\n\n if (resolvedLocale) {\n return resolvedLocale;\n } // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\n\n\n var parts = locale.split('-');\n\n while (locale.length > 1) {\n parts.pop();\n locale = parts.join('-');\n\n var _resolvedLocale = resolveLocaleForData(locale);\n\n if (_resolvedLocale) {\n return _resolvedLocale;\n }\n }\n}\n//# sourceMappingURL=resolveLocale.js.map","// (this file was autogenerated by `generate-locales`)\n// \"plural rules\" functions are not stored in locale JSON files because they're not strings.\n// This file isn't big — it's about 5 kilobytes in size (minified).\n// Alternatively, the pluralization rules for each locale could be stored\n// in their JSON files in a non-parsed form and later parsed via `make-plural` library.\n// But `make-plural` library itself is relatively big in size:\n// `make-plural.min.js` is about 6 kilobytes (https://unpkg.com/make-plural/).\n// So, it's more practical to bypass runtime `make-plural` pluralization rules compilation\n// and just include the already compiled pluarlization rules for all locales in the library code.\nvar $ = {\n af: function af(n) {\n return n == 1 ? 'one' : 'other';\n },\n am: function am(n) {\n return n >= 0 && n <= 1 ? 'one' : 'other';\n },\n ar: function ar(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n return n == 0 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n100 >= 3 && n100 <= 10 ? 'few' : n100 >= 11 && n100 <= 99 ? 'many' : 'other';\n },\n ast: function ast(n) {\n var s = String(n).split('.'),\n v0 = !s[1];\n return n == 1 && v0 ? 'one' : 'other';\n },\n be: function be(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n return n10 == 1 && n100 != 11 ? 'one' : n10 >= 2 && n10 <= 4 && (n100 < 12 || n100 > 14) ? 'few' : t0 && n10 == 0 || n10 >= 5 && n10 <= 9 || n100 >= 11 && n100 <= 14 ? 'many' : 'other';\n },\n br: function br(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n n1000000 = t0 && s[0].slice(-6);\n return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one' : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two' : (n10 == 3 || n10 == 4 || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few' : n != 0 && t0 && n1000000 == 0 ? 'many' : 'other';\n },\n bs: function bs(n) {\n var s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) || f10 >= 2 && f10 <= 4 && (f100 < 12 || f100 > 14) ? 'few' : 'other';\n },\n ca: function ca(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n return n == 1 && v0 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n },\n ceb: function ceb(n) {\n var s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n f10 = f.slice(-1);\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n },\n cs: function cs(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1];\n return n == 1 && v0 ? 'one' : i >= 2 && i <= 4 && v0 ? 'few' : !v0 ? 'many' : 'other';\n },\n cy: function cy(n) {\n return n == 0 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n == 3 ? 'few' : n == 6 ? 'many' : 'other';\n },\n da: function da(n) {\n var s = String(n).split('.'),\n i = s[0],\n t0 = Number(s[0]) == n;\n return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n },\n dsb: function dsb(n) {\n var s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i100 = i.slice(-2),\n f100 = f.slice(-2);\n return v0 && i100 == 1 || f100 == 1 ? 'one' : v0 && i100 == 2 || f100 == 2 ? 'two' : v0 && (i100 == 3 || i100 == 4) || f100 == 3 || f100 == 4 ? 'few' : 'other';\n },\n dz: function dz(n) {\n return 'other';\n },\n es: function es(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n return n == 1 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n },\n ff: function ff(n) {\n return n >= 0 && n < 2 ? 'one' : 'other';\n },\n fr: function fr(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n return n >= 0 && n < 2 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n },\n ga: function ga(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n return n == 1 ? 'one' : n == 2 ? 'two' : t0 && n >= 3 && n <= 6 ? 'few' : t0 && n >= 7 && n <= 10 ? 'many' : 'other';\n },\n gd: function gd(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n return n == 1 || n == 11 ? 'one' : n == 2 || n == 12 ? 'two' : t0 && n >= 3 && n <= 10 || t0 && n >= 13 && n <= 19 ? 'few' : 'other';\n },\n he: function he(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1];\n return i == 1 && v0 || i == 0 && !v0 ? 'one' : i == 2 && v0 ? 'two' : 'other';\n },\n is: function is(n) {\n var s = String(n).split('.'),\n i = s[0],\n t = (s[1] || '').replace(/0+$/, ''),\n t0 = Number(s[0]) == n,\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n },\n ksh: function ksh(n) {\n return n == 0 ? 'zero' : n == 1 ? 'one' : 'other';\n },\n lt: function lt(n) {\n var s = String(n).split('.'),\n f = s[1] || '',\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one' : n10 >= 2 && n10 <= 9 && (n100 < 11 || n100 > 19) ? 'few' : f != 0 ? 'many' : 'other';\n },\n lv: function lv(n) {\n var s = String(n).split('.'),\n f = s[1] || '',\n v = f.length,\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n f100 = f.slice(-2),\n f10 = f.slice(-1);\n return t0 && n10 == 0 || n100 >= 11 && n100 <= 19 || v == 2 && f100 >= 11 && f100 <= 19 ? 'zero' : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one' : 'other';\n },\n mk: function mk(n) {\n var s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n },\n mt: function mt(n) {\n var s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n return n == 1 ? 'one' : n == 2 ? 'two' : n == 0 || n100 >= 3 && n100 <= 10 ? 'few' : n100 >= 11 && n100 <= 19 ? 'many' : 'other';\n },\n pa: function pa(n) {\n return n == 0 || n == 1 ? 'one' : 'other';\n },\n pl: function pl(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n return n == 1 && v0 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) ? 'few' : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && i10 >= 5 && i10 <= 9 || v0 && i100 >= 12 && i100 <= 14 ? 'many' : 'other';\n },\n pt: function pt(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n return i == 0 || i == 1 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n },\n ro: function ro(n) {\n var s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n return n == 1 && v0 ? 'one' : !v0 || n == 0 || n != 1 && n100 >= 1 && n100 <= 19 ? 'few' : 'other';\n },\n ru: function ru(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n return v0 && i10 == 1 && i100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) ? 'few' : v0 && i10 == 0 || v0 && i10 >= 5 && i10 <= 9 || v0 && i100 >= 11 && i100 <= 14 ? 'many' : 'other';\n },\n se: function se(n) {\n return n == 1 ? 'one' : n == 2 ? 'two' : 'other';\n },\n si: function si(n) {\n var s = String(n).split('.'),\n i = s[0],\n f = s[1] || '';\n return n == 0 || n == 1 || i == 0 && f == 1 ? 'one' : 'other';\n },\n sl: function sl(n) {\n var s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i100 = i.slice(-2);\n return v0 && i100 == 1 ? 'one' : v0 && i100 == 2 ? 'two' : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few' : 'other';\n }\n};\n$.as = $.am;\n$.az = $.af;\n$.bg = $.af;\n$.bn = $.am;\n$.brx = $.af;\n$.ce = $.af;\n$.chr = $.af;\n$.de = $.ast;\n$.ee = $.af;\n$.el = $.af;\n$.en = $.ast;\n$.et = $.ast;\n$.eu = $.af;\n$.fa = $.am;\n$.fi = $.ast;\n$.fil = $.ceb;\n$.fo = $.af;\n$.fur = $.af;\n$.fy = $.ast;\n$.gl = $.ast;\n$.gu = $.am;\n$.ha = $.af;\n$.hi = $.am;\n$.hr = $.bs;\n$.hsb = $.dsb;\n$.hu = $.af;\n$.hy = $.ff;\n$.ia = $.ast;\n$.id = $.dz;\n$.ig = $.dz;\n$.it = $.ca;\n$.ja = $.dz;\n$.jgo = $.af;\n$.jv = $.dz;\n$.ka = $.af;\n$.kea = $.dz;\n$.kk = $.af;\n$.kl = $.af;\n$.km = $.dz;\n$.kn = $.am;\n$.ko = $.dz;\n$.ks = $.af;\n$.ku = $.af;\n$.ky = $.af;\n$.lb = $.af;\n$.lkt = $.dz;\n$.lo = $.dz;\n$.ml = $.af;\n$.mn = $.af;\n$.mr = $.af;\n$.ms = $.dz;\n$.my = $.dz;\n$.nb = $.af;\n$.ne = $.af;\n$.nl = $.ast;\n$.nn = $.af;\n$.no = $.af;\n$.or = $.af;\n$.pcm = $.am;\n$.ps = $.af;\n$.rm = $.af;\n$.sah = $.dz;\n$.sc = $.ast;\n$.sd = $.af;\n$.sk = $.cs;\n$.so = $.af;\n$.sq = $.af;\n$.sr = $.bs;\n$.su = $.dz;\n$.sv = $.ast;\n$.sw = $.ast;\n$.ta = $.af;\n$.te = $.af;\n$.th = $.dz;\n$.ti = $.pa;\n$.tk = $.af;\n$.to = $.dz;\n$.tr = $.af;\n$.ug = $.af;\n$.uk = $.ru;\n$.ur = $.ast;\n$.uz = $.af;\n$.vi = $.dz;\n$.wae = $.af;\n$.wo = $.dz;\n$.xh = $.af;\n$.yi = $.ast;\n$.yo = $.dz;\n$.yue = $.dz;\n$.zh = $.dz;\n$.zu = $.am;\nexport default $;\n//# sourceMappingURL=PluralRuleFunctions.js.map","/**\r\n * Returns a `locale` for which a function exists in `./PluralRuleFunctions.js`.\r\n * @param {string} locale\r\n * @return {string}\r\n * @example\r\n * getPluralRulesLocale(\"ru-RU-Cyrl\") // Returns \"ru\".\r\n */\nexport default function getPluralRulesLocale(locale) {\n // \"pt\" language is the only one having different pluralization rules\n // for the one (\"pt\") (Portuguese) locale and the other (\"pt-PT\") (European Portuguese).\n // http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html\n // (see the entries for \"pt\" and \"pt_PT\" there)\n if (locale === 'pt-PT') {\n return locale;\n }\n\n return getLanguageFromLanguageTag(locale);\n}\n/**\r\n * Extracts language from an IETF BCP 47 language tag.\r\n * @param {string} languageTag - IETF BCP 47 language tag.\r\n * @return {string}\r\n * @example\r\n * // Returns \"he\"\r\n * getLanguageFromLanguageTag(\"he-IL-u-ca-hebrew-tz-jeruslm\")\r\n * // Returns \"ar\"\r\n * getLanguageFromLanguageTag(\"ar-u-nu-latn\")\r\n */\n\nvar LANGUAGE_REG_EXP = /^([a-z0-9]+)/i;\n\nfunction getLanguageFromLanguageTag(languageTag) {\n var match = languageTag.match(LANGUAGE_REG_EXP);\n\n if (!match) {\n throw new TypeError(\"Invalid locale: \".concat(languageTag));\n }\n\n return match[1];\n}\n//# sourceMappingURL=getPluralRulesLocale.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// Importing `PluralRule` polyfill from a separate package\n// results in a bundle that is larger by 1kB for some reason.\n// export { default as default } from 'intl-plural-rules-polyfill/cardinal'\nimport PluralRuleFunctions from \"./PluralRuleFunctions.js\";\nimport getPluralRulesLocale from \"./getPluralRulesLocale.js\";\n/**\r\n * `Intl.PluralRules` polyfill.\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules\r\n */\n\nvar PluralRules = /*#__PURE__*/function () {\n function PluralRules(locale, options) {\n _classCallCheck(this, PluralRules);\n\n var locales = PluralRules.supportedLocalesOf(locale);\n\n if (locales.length === 0) {\n throw new RangeError(\"Unsupported locale: \" + locale);\n }\n\n if (options && options.type !== \"cardinal\") {\n throw new RangeError(\"Only \\\"cardinal\\\" \\\"type\\\" is supported\");\n }\n\n this.$ = PluralRuleFunctions[getPluralRulesLocale(locales[0])];\n }\n\n _createClass(PluralRules, [{\n key: \"select\",\n value: function select(number) {\n return this.$(number);\n }\n }], [{\n key: \"supportedLocalesOf\",\n value: function supportedLocalesOf(locales) {\n if (typeof locales === \"string\") {\n locales = [locales];\n }\n\n return locales.filter(function (locale) {\n return PluralRuleFunctions[getPluralRulesLocale(locale)];\n });\n }\n }]);\n\n return PluralRules;\n}();\n\nexport { PluralRules as default };\n//# sourceMappingURL=PluralRules.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { getDefaultLocale, setDefaultLocale, getLocaleData, addLocaleData } from './LocaleDataStore.js';\nimport resolveLocale from './resolveLocale.js';\nimport PluralRules from './PluralRules.js'; // Importing `PluralRule` polyfill from a separate package\n// results in a bundle that is larger by 1kB for some reason.\n// import PluralRules from 'intl-plural-rules-polyfill/cardinal'\n// Valid time units.\n\nexport var UNITS = [\"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\", \"year\"]; // Valid values for the `numeric` option.\n\nvar NUMERIC_VALUES = [\"auto\", \"always\"]; // Valid values for the `style` option.\n\nvar STYLE_VALUES = [\"long\", \"short\", \"narrow\"]; // Valid values for the `localeMatcher` option.\n\nvar LOCALE_MATCHER_VALUES = [\"lookup\", \"best fit\"];\n/**\r\n * Polyfill for `Intl.RelativeTimeFormat` proposal.\r\n * https://github.com/tc39/proposal-intl-relative-time\r\n * https://github.com/tc39/proposal-intl-relative-time/issues/55\r\n */\n\nvar RelativeTimeFormat = /*#__PURE__*/function () {\n /**\r\n * @param {(string|string[])} [locales] - Preferred locales (or locale).\r\n * @param {Object} [options] - Formatting options.\r\n * @param {string} [options.style=\"long\"] - One of: \"long\", \"short\", \"narrow\".\r\n * @param {string} [options.numeric=\"always\"] - (Version >= 2) One of: \"always\", \"auto\".\r\n * @param {string} [options.localeMatcher=\"lookup\"] - One of: \"lookup\", \"best fit\". Currently only \"lookup\" is supported.\r\n */\n function RelativeTimeFormat() {\n var locales = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, RelativeTimeFormat);\n\n var numeric = options.numeric,\n style = options.style,\n localeMatcher = options.localeMatcher;\n this.numeric = \"always\";\n this.style = \"long\";\n this.localeMatcher = \"lookup\"; // Set `numeric` option.\n\n if (numeric !== undefined) {\n if (NUMERIC_VALUES.indexOf(numeric) < 0) {\n throw new RangeError(\"Invalid \\\"numeric\\\" option: \".concat(numeric));\n }\n\n this.numeric = numeric;\n } // Set `style` option.\n\n\n if (style !== undefined) {\n if (STYLE_VALUES.indexOf(style) < 0) {\n throw new RangeError(\"Invalid \\\"style\\\" option: \".concat(style));\n }\n\n this.style = style;\n } // Set `localeMatcher` option.\n\n\n if (localeMatcher !== undefined) {\n if (LOCALE_MATCHER_VALUES.indexOf(localeMatcher) < 0) {\n throw new RangeError(\"Invalid \\\"localeMatcher\\\" option: \".concat(localeMatcher));\n }\n\n this.localeMatcher = localeMatcher;\n } // Set `locale`.\n // Convert `locales` to an array.\n\n\n if (typeof locales === 'string') {\n locales = [locales];\n } // Add default locale.\n\n\n locales.push(getDefaultLocale()); // Choose the most appropriate locale.\n\n this.locale = RelativeTimeFormat.supportedLocalesOf(locales, {\n localeMatcher: this.localeMatcher\n })[0];\n\n if (!this.locale) {\n throw new Error(\"No supported locale was found\");\n } // Construct an `Intl.PluralRules` instance (polyfill).\n\n\n if (PluralRules.supportedLocalesOf(this.locale).length > 0) {\n this.pluralRules = new PluralRules(this.locale);\n } else {\n console.warn(\"\\\"\".concat(this.locale, \"\\\" locale is not supported\"));\n } // Use `Intl.NumberFormat` for formatting numbers (when available).\n\n\n if (typeof Intl !== 'undefined' && Intl.NumberFormat) {\n this.numberFormat = new Intl.NumberFormat(this.locale);\n this.numberingSystem = this.numberFormat.resolvedOptions().numberingSystem;\n } else {\n this.numberingSystem = 'latn';\n }\n\n this.locale = resolveLocale(this.locale, {\n localeMatcher: this.localeMatcher\n });\n }\n /**\r\n * Formats time `number` in `units` (either in past or in future).\r\n * @param {number} number - Time interval value.\r\n * @param {string} unit - Time interval measurement unit.\r\n * @return {string}\r\n * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n * @example\r\n * // Returns \"2 days ago\"\r\n * rtf.format(-2, \"day\")\r\n * // Returns \"in 5 minutes\"\r\n * rtf.format(5, \"minute\")\r\n */\n\n\n _createClass(RelativeTimeFormat, [{\n key: \"format\",\n value: function format() {\n var _parseFormatArgs = parseFormatArgs(arguments),\n _parseFormatArgs2 = _slicedToArray(_parseFormatArgs, 2),\n number = _parseFormatArgs2[0],\n unit = _parseFormatArgs2[1];\n\n return this.getRule(number, unit).replace('{0}', this.formatNumber(Math.abs(number)));\n }\n /**\r\n * Formats time `number` in `units` (either in past or in future).\r\n * @param {number} number - Time interval value.\r\n * @param {string} unit - Time interval measurement unit.\r\n * @return {Object[]} The parts (`{ type, value, unit? }`).\r\n * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n * @example\r\n * // Version 1 (deprecated).\r\n * // Returns [\r\n * // { type: \"literal\", value: \"in \" },\r\n * // { type: \"day\", value: \"100\" },\r\n * // { type: \"literal\", value: \" days\" }\r\n * // ]\r\n * rtf.formatToParts(100, \"day\")\r\n * //\r\n * // Version 2.\r\n * // Returns [\r\n * // { type: \"literal\", value: \"in \" },\r\n * // { type: \"integer\", value: \"100\", unit: \"day\" },\r\n * // { type: \"literal\", value: \" days\" }\r\n * // ]\r\n * rtf.formatToParts(100, \"day\")\r\n */\n\n }, {\n key: \"formatToParts\",\n value: function formatToParts() {\n var _parseFormatArgs3 = parseFormatArgs(arguments),\n _parseFormatArgs4 = _slicedToArray(_parseFormatArgs3, 2),\n number = _parseFormatArgs4[0],\n unit = _parseFormatArgs4[1];\n\n var rule = this.getRule(number, unit);\n var valueIndex = rule.indexOf(\"{0}\"); // \"yesterday\"/\"today\"/\"tomorrow\".\n\n if (valueIndex < 0) {\n return [{\n type: \"literal\",\n value: rule\n }];\n }\n\n var parts = [];\n\n if (valueIndex > 0) {\n parts.push({\n type: \"literal\",\n value: rule.slice(0, valueIndex)\n });\n }\n\n parts = parts.concat(this.formatNumberToParts(Math.abs(number)).map(function (part) {\n return _objectSpread(_objectSpread({}, part), {}, {\n unit: unit\n });\n }));\n\n if (valueIndex + \"{0}\".length < rule.length - 1) {\n parts.push({\n type: \"literal\",\n value: rule.slice(valueIndex + \"{0}\".length)\n });\n }\n\n return parts;\n }\n /**\r\n * Returns formatting rule for `value` in `units` (either in past or in future).\r\n * @param {number} value - Time interval value.\r\n * @param {string} unit - Time interval measurement unit.\r\n * @return {string}\r\n * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n * @example\r\n * // Returns \"{0} days ago\"\r\n * getRule(-2, \"day\")\r\n */\n\n }, {\n key: \"getRule\",\n value: function getRule(value, unit) {\n // Get locale-specific time interval formatting rules\n // of a given `style` for the given value of measurement `unit`.\n //\n // E.g.:\n //\n // ```json\n // {\n // \"past\": {\n // \"one\": \"a second ago\",\n // \"other\": \"{0} seconds ago\"\n // },\n // \"future\": {\n // \"one\": \"in a second\",\n // \"other\": \"in {0} seconds\"\n // }\n // }\n // ```\n //\n var unitMessages = getLocaleData(this.locale)[this.style][unit]; // Bundle size optimization technique for styles like\n // \"tiny\" in `javascript-time-ago`: \"1m\", \"2h\", \"3d\"...\n\n if (typeof unitMessages === 'string') {\n return unitMessages;\n } // Special case for \"yesterday\"/\"today\"/\"tomorrow\".\n\n\n if (this.numeric === \"auto\") {\n // \"yesterday\", \"the day before yesterday\", etc.\n if (value === -2 || value === -1) {\n var message = unitMessages[\"previous\".concat(value === -1 ? '' : '-' + Math.abs(value))];\n\n if (message) {\n return message;\n }\n } // \"tomorrow\", \"the day after tomorrow\", etc.\n else if (value === 1 || value === 2) {\n var _message = unitMessages[\"next\".concat(value === 1 ? '' : '-' + Math.abs(value))];\n\n if (_message) {\n return _message;\n }\n } // \"today\"\n else if (value === 0) {\n if (unitMessages.current) {\n return unitMessages.current;\n }\n }\n } // Choose either \"past\" or \"future\" based on time `value` sign.\n // If there's only \"other\" then it's being collapsed.\n // (the resulting bundle size optimization technique)\n\n\n var pluralizedMessages = unitMessages[isNegative(value) ? \"past\" : \"future\"]; // Bundle size optimization technique for styles like \"narrow\"\n // having messages like \"in {0} d.\" or \"{0} d. ago\".\n\n if (typeof pluralizedMessages === \"string\") {\n return pluralizedMessages;\n } // Quantify `value`.\n // There seems to be no such locale in CLDR\n // for which \"plural rules\" function is missing.\n\n\n var quantifier = this.pluralRules && this.pluralRules.select(Math.abs(value)) || 'other'; // \"other\" rule is supposed to be always present.\n // If only \"other\" rule is present then \"rules\" is not an object and is a string.\n\n return pluralizedMessages[quantifier] || pluralizedMessages.other;\n }\n /**\r\n * Formats a number into a string.\r\n * Uses `Intl.NumberFormat` when available.\r\n * @param {number} number\r\n * @return {string}\r\n */\n\n }, {\n key: \"formatNumber\",\n value: function formatNumber(number) {\n return this.numberFormat ? this.numberFormat.format(number) : String(number);\n }\n /**\r\n * Formats a number into a list of parts.\r\n * Uses `Intl.NumberFormat` when available.\r\n * @param {number} number\r\n * @return {object[]}\r\n */\n\n }, {\n key: \"formatNumberToParts\",\n value: function formatNumberToParts(number) {\n // `Intl.NumberFormat.formatToParts()` is not present, for example,\n // in Node.js 8.x while `Intl.NumberFormat` itself is present.\n return this.numberFormat && this.numberFormat.formatToParts ? this.numberFormat.formatToParts(number) : [{\n type: \"integer\",\n value: this.formatNumber(number)\n }];\n }\n /**\r\n * Returns a new object with properties reflecting the locale and date and time formatting options computed during initialization of this DateTimeFormat object.\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions\r\n * @return {Object}\r\n */\n\n }, {\n key: \"resolvedOptions\",\n value: function resolvedOptions() {\n return {\n locale: this.locale,\n style: this.style,\n numeric: this.numeric,\n numberingSystem: this.numberingSystem\n };\n }\n }]);\n\n return RelativeTimeFormat;\n}();\n/**\r\n * Returns an array containing those of the provided locales\r\n * that are supported in collation without having to fall back\r\n * to the runtime's default locale.\r\n * @param {(string|string[])} locale - A string with a BCP 47 language tag, or an array of such strings. For the general form of the locales argument, see the Intl page.\r\n * @param {Object} [options] - An object that may have the following property:\r\n * @param {string} [options.localeMatcher=\"lookup\"] - The locale matching algorithm to use. Possible values are \"lookup\" and \"best fit\". Currently only \"lookup\" is supported.\r\n * @return {string[]} An array of strings representing a subset of the given locale tags that are supported in collation without having to fall back to the runtime's default locale.\r\n * @example\r\n * var locales = ['ban', 'id-u-co-pinyin', 'es-PY']\r\n * var options = { localeMatcher: 'lookup' }\r\n * // Returns [\"id\", \"es-PY\"]\r\n * Intl.RelativeTimeFormat.supportedLocalesOf(locales, options)\r\n */\n\n\nexport { RelativeTimeFormat as default };\n\nRelativeTimeFormat.supportedLocalesOf = function (locales) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Convert `locales` to an array.\n if (typeof locales === 'string') {\n locales = [locales];\n } else if (!Array.isArray(locales)) {\n throw new TypeError('Invalid \"locales\" argument');\n }\n\n return locales.filter(function (locale) {\n return resolveLocale(locale, options);\n });\n};\n/**\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n */\n\n\nRelativeTimeFormat.addLocale = addLocaleData;\n/**\r\n * Sets default locale.\r\n * @param {string} locale\r\n */\n\nRelativeTimeFormat.setDefaultLocale = setDefaultLocale;\n/**\r\n * Gets default locale.\r\n * @return {string} locale\r\n */\n\nRelativeTimeFormat.getDefaultLocale = getDefaultLocale;\n/**\r\n * Export `Intl.PluralRules` just in case it's used somewhere else.\r\n */\n\nRelativeTimeFormat.PluralRules = PluralRules; // The specification allows units to be in plural form.\n// Convert plural to singular.\n// Example: \"seconds\" -> \"second\".\n\nvar UNIT_ERROR = 'Invalid \"unit\" argument';\n\nfunction parseUnit(unit) {\n if (_typeof(unit) === 'symbol') {\n throw new TypeError(UNIT_ERROR);\n }\n\n if (typeof unit !== 'string') {\n throw new RangeError(\"\".concat(UNIT_ERROR, \": \").concat(unit));\n }\n\n if (unit[unit.length - 1] === 's') {\n unit = unit.slice(0, unit.length - 1);\n }\n\n if (UNITS.indexOf(unit) < 0) {\n throw new RangeError(\"\".concat(UNIT_ERROR, \": \").concat(unit));\n }\n\n return unit;\n} // Converts `value` to a `Number`.\n// The specification allows value to be a non-number.\n// For example, \"-0\" is supposed to be treated as `-0`.\n// Also checks if `value` is a finite number.\n\n\nvar NUMBER_ERROR = 'Invalid \"number\" argument';\n\nfunction parseNumber(value) {\n value = Number(value);\n\n if (Number.isFinite) {\n if (!Number.isFinite(value)) {\n throw new RangeError(\"\".concat(NUMBER_ERROR, \": \").concat(value));\n }\n }\n\n return value;\n}\n/**\r\n * Tells `0` from `-0`.\r\n * https://stackoverflow.com/questions/7223359/are-0-and-0-the-same\r\n * @param {number} number\r\n * @return {Boolean}\r\n * @example\r\n * isNegativeZero(0); // false\r\n * isNegativeZero(-0); // true\r\n */\n\n\nfunction isNegativeZero(number) {\n return 1 / number === -Infinity;\n}\n\nfunction isNegative(number) {\n return number < 0 || number === 0 && isNegativeZero(number);\n}\n\nfunction parseFormatArgs(args) {\n if (args.length < 2) {\n throw new TypeError(\"\\\"unit\\\" argument is required\");\n }\n\n return [parseNumber(args[0]), parseUnit(args[1])];\n}\n//# sourceMappingURL=RelativeTimeFormat.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\r\n * A basic in-memory cache.\r\n *\r\n * import Cache from 'javascript-time-ago/Cache'\r\n * const cache = new Cache()\r\n * const object = cache.get('key1', 'key2', ...) || cache.put('key1', 'key2', ..., createObject())\r\n */\nvar Cache = /*#__PURE__*/function () {\n function Cache() {\n _classCallCheck(this, Cache);\n\n this.cache = {};\n }\n\n _createClass(Cache, [{\n key: \"get\",\n value: function get() {\n var cache = this.cache;\n\n for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i];\n\n if (_typeof(cache) !== 'object') {\n return;\n }\n\n cache = cache[key];\n }\n\n return cache;\n }\n }, {\n key: \"put\",\n value: function put() {\n for (var _len2 = arguments.length, keys = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n keys[_key2] = arguments[_key2];\n }\n\n var value = keys.pop();\n var lastKey = keys.pop();\n var cache = this.cache;\n\n for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {\n var key = _keys2[_i2];\n\n if (_typeof(cache[key]) !== 'object') {\n cache[key] = {};\n }\n\n cache = cache[key];\n }\n\n return cache[lastKey] = value;\n }\n }]);\n\n return Cache;\n}();\n\nexport { Cache as default };\n//# sourceMappingURL=cache.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Chooses the most appropriate locale\r\n * (one of the registered ones)\r\n * based on the list of preferred `locales` supplied by the user.\r\n *\r\n * @param {string[]} locales - the list of preferable locales (in [IETF format](https://en.wikipedia.org/wiki/IETF_language_tag)).\r\n * @param {Function} isLocaleDataAvailable - tests if a locale is available.\r\n *\r\n * @returns {string} The most suitable locale.\r\n *\r\n * @example\r\n * // Returns 'en'\r\n * chooseLocale(['en-US'], undefined, (locale) => locale === 'ru' || locale === 'en')\r\n */\nexport default function chooseLocale(locales, isLocaleDataAvailable) {\n // This is not an intelligent algorithm,\n // but it will do for this library's case.\n // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\n for (var _iterator = _createForOfIteratorHelperLoose(locales), _step; !(_step = _iterator()).done;) {\n var locale = _step.value;\n\n if (isLocaleDataAvailable(locale)) {\n return locale;\n }\n\n var parts = locale.split('-');\n\n while (parts.length > 1) {\n parts.pop();\n locale = parts.join('-');\n\n if (isLocaleDataAvailable(locale)) {\n return locale;\n }\n }\n }\n\n throw new Error(\"No locale data has been registered for any of the locales: \".concat(locales.join(', ')));\n}\n/**\r\n * Whether can use `Intl.DateTimeFormat` for these `locales`.\r\n * Returns the first suitable one.\r\n * @param {(string|string[])} locales\r\n * @return {?string} The first locale that can be used.\r\n */\n\nexport function intlDateTimeFormatSupportedLocale(locales) {\n /* istanbul ignore else */\n if (intlDateTimeFormatSupported()) {\n return Intl.DateTimeFormat.supportedLocalesOf(locales)[0];\n }\n}\n/**\r\n * Whether can use `Intl.DateTimeFormat`.\r\n * @return {boolean}\r\n */\n\nexport function intlDateTimeFormatSupported() {\n // Babel transforms `typeof` into some \"branches\"\n // so istanbul will show this as \"branch not covered\".\n\n /* istanbul ignore next */\n var isIntlAvailable = (typeof Intl === \"undefined\" ? \"undefined\" : _typeof(Intl)) === 'object';\n return isIntlAvailable && typeof Intl.DateTimeFormat === 'function';\n}\n//# sourceMappingURL=locale.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nexport default function isStyleObject(object) {\n return isObject(object) && (Array.isArray(object.steps) || // `gradation` property is deprecated: it has been renamed to `steps`.\n Array.isArray(object.gradation) || // `flavour` property is deprecated: it has been renamed to `labels`.\n Array.isArray(object.flavour) || typeof object.flavour === 'string' || Array.isArray(object.labels) || typeof object.labels === 'string' || // `units` property is deprecated.\n Array.isArray(object.units) || // `custom` property is deprecated.\n typeof object.custom === 'function');\n}\nvar OBJECT_CONSTRUCTOR = {}.constructor;\n\nfunction isObject(object) {\n return _typeof(object) !== undefined && object !== null && object.constructor === OBJECT_CONSTRUCTOR;\n}\n//# sourceMappingURL=isStyleObject.js.map","export var minute = 60; // in seconds\n\nexport var hour = 60 * minute; // in seconds\n\nexport var day = 24 * hour; // in seconds\n\nexport var week = 7 * day; // in seconds\n// https://www.quora.com/What-is-the-average-number-of-days-in-a-month\n\nexport var month = 30.44 * day; // in seconds\n// \"400 years have 146097 days (taking into account leap year rules)\"\n\nexport var year = 146097 / 400 * day; // in seconds\n\nexport function getSecondsInUnit(unit) {\n switch (unit) {\n case 'second':\n return 1;\n\n case 'minute':\n return minute;\n\n case 'hour':\n return hour;\n\n case 'day':\n return day;\n\n case 'week':\n return week;\n\n case 'month':\n return month;\n\n case 'year':\n return year;\n }\n} // export function getPreviousUnitFor(unit) {\n// \tswitch (unit) {\n// \t\tcase 'second':\n// \t\t\treturn 'now'\n// \t\tcase 'minute':\n// \t\t\treturn 'second'\n// \t\tcase 'hour':\n// \t\t\treturn 'minute'\n// \t\tcase 'day':\n// \t\t\treturn 'hour'\n// \t\tcase 'week':\n// \t\t\treturn 'day'\n// \t\tcase 'month':\n// \t\t\treturn 'week'\n// \t\tcase 'year':\n// \t\t\treturn 'month'\n// \t}\n// }\n//# sourceMappingURL=units.js.map","import { getSecondsInUnit } from './units.js';\nexport default function getStepDenominator(step) {\n // `factor` is a legacy property.\n if (step.factor !== undefined) {\n return step.factor;\n } // \"unit\" is now called \"formatAs\".\n\n\n return getSecondsInUnit(step.unit || step.formatAs) || 1;\n}\n//# sourceMappingURL=getStepDenominator.js.map","export function getRoundFunction(round) {\n switch (round) {\n case 'floor':\n return Math.floor;\n\n default:\n return Math.round;\n }\n} // For non-negative numbers.\n\nexport function getDiffRatioToNextRoundedNumber(round) {\n switch (round) {\n case 'floor':\n // Math.floor(x) = x\n // Math.floor(x + 1) = x + 1\n return 1;\n\n default:\n // Math.round(x) = x\n // Math.round(x + 0.5) = x + 1\n return 0.5;\n }\n}\n//# sourceMappingURL=round.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { getSecondsInUnit } from './units.js';\nimport { getDiffRatioToNextRoundedNumber } from '../round.js';\nexport default function getStepMinTime(step, _ref) {\n var prevStep = _ref.prevStep,\n timestamp = _ref.timestamp,\n now = _ref.now,\n future = _ref.future,\n round = _ref.round;\n var minTime; // \"threshold_for_xxx\" is a legacy property.\n\n if (prevStep) {\n if (prevStep.id || prevStep.unit) {\n minTime = step[\"threshold_for_\".concat(prevStep.id || prevStep.unit)];\n }\n }\n\n if (minTime === undefined) {\n // \"threshold\" is a legacy property.\n if (step.threshold !== undefined) {\n // \"threshold\" is a legacy name for \"minTime\".\n minTime = step.threshold; // \"threshold\" function is deprecated.\n\n if (typeof minTime === 'function') {\n minTime = minTime(now, future);\n }\n }\n }\n\n if (minTime === undefined) {\n minTime = step.minTime;\n } // A deprecated way of specifying a different threshold\n // depending on the previous step's unit.\n\n\n if (_typeof(minTime) === 'object') {\n if (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {\n minTime = minTime[prevStep.id];\n } else {\n minTime = minTime[\"default\"];\n }\n }\n\n if (typeof minTime === 'function') {\n minTime = minTime(timestamp, {\n future: future,\n getMinTimeForUnit: function getMinTimeForUnit(toUnit, fromUnit) {\n return _getMinTimeForUnit(toUnit, fromUnit || prevStep && prevStep.formatAs, {\n round: round\n });\n }\n });\n } // Evaluate the `test()` function.\n // `test()` function is deprecated.\n\n\n if (minTime === undefined) {\n if (step.test) {\n if (step.test(timestamp, {\n now: now,\n future: future\n })) {\n // `0` threshold always passes.\n minTime = 0;\n } else {\n // `MAX_SAFE_INTEGER` threshold won't ever pass in real life.\n minTime = 9007199254740991; // Number.MAX_SAFE_INTEGER\n }\n }\n }\n\n if (minTime === undefined) {\n if (prevStep) {\n if (step.formatAs && prevStep.formatAs) {\n minTime = _getMinTimeForUnit(step.formatAs, prevStep.formatAs, {\n round: round\n });\n }\n } else {\n // The first step's `minTime` is `0` by default.\n minTime = 0;\n }\n } // Warn if no `minTime` was defined or could be deduced.\n\n\n if (minTime === undefined) {\n console.warn('[javascript-time-ago] A step should specify `minTime`:\\n' + JSON.stringify(step, null, 2));\n }\n\n return minTime;\n}\n\nfunction _getMinTimeForUnit(toUnit, fromUnit, _ref2) {\n var round = _ref2.round;\n var toUnitAmount = getSecondsInUnit(toUnit); // if (!fromUnit) {\n // \treturn toUnitAmount;\n // }\n // if (!fromUnit) {\n // \tfromUnit = getPreviousUnitFor(toUnit)\n // }\n\n var fromUnitAmount;\n\n if (fromUnit === 'now') {\n fromUnitAmount = getSecondsInUnit(toUnit);\n } else {\n fromUnitAmount = getSecondsInUnit(fromUnit);\n }\n\n if (toUnitAmount !== undefined && fromUnitAmount !== undefined) {\n return toUnitAmount - fromUnitAmount * (1 - getDiffRatioToNextRoundedNumber(round));\n }\n}\n//# sourceMappingURL=getStepMinTime.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport getStepDenominator from './getStepDenominator.js';\nimport getStepMinTime from './getStepMinTime.js';\nimport { getRoundFunction } from '../round.js';\n/**\r\n * Finds an appropriate `step` of `steps` for the time interval (in seconds).\r\n *\r\n * @param {Object[]} steps - Time formatting steps.\r\n *\r\n * @param {number} secondsPassed - Time interval (in seconds).\r\n * `< 0` for past dates and `> 0` for future dates.\r\n *\r\n * @param {number} options.now - Current timestamp.\r\n *\r\n * @param {boolean} [options.future] - Whether the date should be formatted as a future one\r\n * instead of a past one.\r\n *\r\n * @param {string} [options.round] - (undocumented) Rounding mechanism.\r\n *\r\n * @param {string[]} [options.units] - A list of allowed time units.\r\n * (Example: ['second', 'minute', 'hour', …])\r\n *\r\n * @param {boolean} [options.getNextStep] - Pass true to return `[step, nextStep]` instead of just `step`.\r\n *\r\n * @return {Object|Object[]} [step] — Either a `step` or `[prevStep, step, nextStep]`.\r\n */\n\nexport default function getStep(steps, secondsPassed, _ref) {\n var now = _ref.now,\n future = _ref.future,\n round = _ref.round,\n units = _ref.units,\n getNextStep = _ref.getNextStep;\n // Ignore steps having not-supported time units in `formatAs`.\n steps = filterStepsByUnits(steps, units);\n\n var step = _getStep(steps, secondsPassed, {\n now: now,\n future: future,\n round: round\n });\n\n if (getNextStep) {\n if (step) {\n var prevStep = steps[steps.indexOf(step) - 1];\n var nextStep = steps[steps.indexOf(step) + 1];\n return [prevStep, step, nextStep];\n }\n\n return [undefined, undefined, steps[0]];\n }\n\n return step;\n}\n\nfunction _getStep(steps, secondsPassed, _ref2) {\n var now = _ref2.now,\n future = _ref2.future,\n round = _ref2.round;\n\n // If no steps fit the conditions then return nothing.\n if (steps.length === 0) {\n return;\n } // Find the most appropriate step.\n\n\n var i = getStepIndex(steps, secondsPassed, {\n now: now,\n future: future || secondsPassed < 0,\n round: round\n }); // If no step is applicable the return nothing.\n\n if (i === -1) {\n return;\n }\n\n var step = steps[i]; // Apply granularity to the time amount\n // (and fall back to the previous step\n // if the first level of granularity\n // isn't met by this amount)\n\n if (step.granularity) {\n // Recalculate the amount of seconds passed based on `granularity`.\n var secondsPassedGranular = getRoundFunction(round)(Math.abs(secondsPassed) / getStepDenominator(step) / step.granularity) * step.granularity; // If the granularity for this step is too high,\n // then fall back to the previous step.\n // (if there is any previous step)\n\n if (secondsPassedGranular === 0 && i > 0) {\n return steps[i - 1];\n }\n }\n\n return step;\n}\n/**\r\n * Iterates through steps until it finds the maximum one satisfying the `minTime` threshold.\r\n * @param {Object} steps - Steps.\r\n * @param {number} secondsPassed - How much seconds have passed since the date till `now`.\r\n * @param {number} options.now - Current timestamp.\r\n * @param {boolean} options.future - Whether the time interval should be formatted as a future one.\r\n * @param {number} [i] - Gradation step currently being tested.\r\n * @return {number} Gradation step index.\r\n */\n\n\nfunction getStepIndex(steps, secondsPassed, options) {\n var i = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var minTime = getStepMinTime(steps[i], _objectSpread({\n prevStep: steps[i - 1],\n timestamp: options.now - secondsPassed * 1000\n }, options)); // If `minTime` isn't defined or deduceable for this step, then stop.\n\n if (minTime === undefined) {\n return i - 1;\n } // If the `minTime` threshold for moving from previous step\n // to this step is too high then return the previous step.\n\n\n if (Math.abs(secondsPassed) < minTime) {\n return i - 1;\n } // If it's the last step then return it.\n\n\n if (i === steps.length - 1) {\n return i;\n } // Move to the next step.\n\n\n return getStepIndex(steps, secondsPassed, options, i + 1);\n}\n/**\r\n * Leaves only allowed steps.\r\n * @param {Object[]} steps\r\n * @param {string[]} units - Allowed time units.\r\n * @return {Object[]}\r\n */\n\n\nfunction filterStepsByUnits(steps, units) {\n return steps.filter(function (_ref3) {\n var unit = _ref3.unit,\n formatAs = _ref3.formatAs;\n // \"unit\" is now called \"formatAs\".\n unit = unit || formatAs; // If this step has a `unit` defined\n // then this `unit` must be in the list of allowed `units`.\n\n if (unit) {\n return units.indexOf(unit) >= 0;\n } // A step is not required to specify a `unit`:\n // alternatively, it could specify `format()`.\n // (see \"twitter\" style for an example)\n\n\n return true;\n });\n}\n//# sourceMappingURL=getStep.js.map","import { getSecondsInUnit } from './units.js';\nimport { getRoundFunction, getDiffRatioToNextRoundedNumber } from '../round.js';\n/**\r\n * Gets the time to next update for a step with a time unit defined.\r\n * @param {string} unit\r\n * @param {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param {number} options.now\r\n * @param {string} [options.round] — (undocumented) Rounding mechanism.\r\n * @return {number} [timeToNextUpdate]\r\n */\n\nexport default function getTimeToNextUpdateForUnit(unit, timestamp, _ref) {\n var now = _ref.now,\n round = _ref.round;\n\n // For some units, like \"now\", there's no defined amount of seconds in them.\n if (!getSecondsInUnit(unit)) {\n // If there's no amount of seconds defined for this unit\n // then the update interval can't be determined reliably.\n return;\n }\n\n var unitDenominator = getSecondsInUnit(unit) * 1000;\n var future = timestamp > now;\n var preciseAmount = Math.abs(timestamp - now);\n var roundedAmount = getRoundFunction(round)(preciseAmount / unitDenominator) * unitDenominator;\n\n if (future) {\n if (roundedAmount > 0) {\n // Amount decreases with time.\n return preciseAmount - roundedAmount + getDiffToPreviousRoundedNumber(round, unitDenominator);\n } else {\n // Refresh right after the zero point,\n // when \"future\" changes to \"past\".\n return preciseAmount - roundedAmount + 1;\n }\n } // Amount increases with time.\n\n\n return -(preciseAmount - roundedAmount) + getDiffToNextRoundedNumber(round, unitDenominator);\n}\n\nfunction getDiffToNextRoundedNumber(round, unitDenominator) {\n return getDiffRatioToNextRoundedNumber(round) * unitDenominator;\n}\n\nfunction getDiffToPreviousRoundedNumber(round, unitDenominator) {\n return (1 - getDiffRatioToNextRoundedNumber(round)) * unitDenominator + 1;\n}\n//# sourceMappingURL=getTimeToNextUpdateForUnit.js.map","import _getTimeToNextUpdateForUnit from './getTimeToNextUpdateForUnit.js';\nimport getStepMinTime from './getStepMinTime.js';\nimport { getRoundFunction } from '../round.js'; // A thousand years is practically a metaphor for \"infinity\".\n\nvar YEAR = 365 * 24 * 60 * 60 * 1000;\nexport var INFINITY = 1000 * YEAR;\n/**\r\n * Gets the time to next update for a date and a step.\r\n * @param {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param {object} step\r\n * @param {object} [options.previousStep]\r\n * @param {object} [options.nextStep]\r\n * @param {number} options.now\r\n * @param {boolean} options.future\r\n * @param {string} [options.round] - (undocumented) Rounding mechanism.\r\n * @return {number} [timeToNextUpdate]\r\n */\n\nexport default function getTimeToNextUpdate(date, step, _ref) {\n var prevStep = _ref.prevStep,\n nextStep = _ref.nextStep,\n now = _ref.now,\n future = _ref.future,\n round = _ref.round;\n var timestamp = date.getTime ? date.getTime() : date;\n\n var getTimeToNextUpdateForUnit = function getTimeToNextUpdateForUnit(unit) {\n return _getTimeToNextUpdateForUnit(unit, timestamp, {\n now: now,\n round: round\n });\n }; // For future dates, steps move from the last one to the first one,\n // while for past dates, steps move from the first one to the last one,\n // due to the fact that time flows in one direction,\n // and future dates' interval naturally becomes smaller\n // while past dates' interval naturally grows larger.\n //\n // For future dates, it's the transition\n // from the current step to the previous step,\n // therefore check the `minTime` of the current step.\n //\n // For past dates, it's the transition\n // from the current step to the next step,\n // therefore check the `minTime` of the next step.\n //\n\n\n var timeToStepChange = getTimeToStepChange(future ? step : nextStep, timestamp, {\n future: future,\n now: now,\n round: round,\n prevStep: future ? prevStep : step // isFirstStep: future && isFirstStep\n\n });\n\n if (timeToStepChange === undefined) {\n // Can't reliably determine \"time to next update\"\n // if not all of the steps provide `minTime`.\n return;\n }\n\n var timeToNextUpdate;\n\n if (step) {\n if (step.getTimeToNextUpdate) {\n timeToNextUpdate = step.getTimeToNextUpdate(timestamp, {\n getTimeToNextUpdateForUnit: getTimeToNextUpdateForUnit,\n getRoundFunction: getRoundFunction,\n now: now,\n future: future,\n round: round\n });\n }\n\n if (timeToNextUpdate === undefined) {\n // \"unit\" is now called \"formatAs\".\n var unit = step.unit || step.formatAs;\n\n if (unit) {\n // For some units, like \"now\", there's no defined amount of seconds in them.\n // In such cases, `getTimeToNextUpdateForUnit()` returns `undefined`,\n // and the next step's `minTime` could be used to calculate the update interval:\n // it will just assume that the label never changes for this step.\n timeToNextUpdate = getTimeToNextUpdateForUnit(unit);\n }\n }\n }\n\n if (timeToNextUpdate === undefined) {\n return timeToStepChange;\n }\n\n return Math.min(timeToNextUpdate, timeToStepChange);\n}\nexport function getStepChangesAt(currentOrNextStep, timestamp, _ref2) {\n var now = _ref2.now,\n future = _ref2.future,\n round = _ref2.round,\n prevStep = _ref2.prevStep;\n // The first step's `minTime` is `0` by default.\n // It doesn't \"change\" steps at zero point\n // but it does change the wording when switching\n // from \"future\" to \"past\": \"in ...\" -> \"... ago\".\n // Therefore, the label should be updated at zero-point too.\n var minTime = getStepMinTime(currentOrNextStep, {\n timestamp: timestamp,\n now: now,\n future: future,\n round: round,\n prevStep: prevStep\n });\n\n if (minTime === undefined) {\n return;\n }\n\n if (future) {\n // The step changes to the previous step\n // as soon as `timestamp - now` becomes\n // less than the `minTime` of the current step:\n // `timestamp - now === minTime - 1`\n // => `now === timestamp - minTime + 1`.\n return timestamp - minTime * 1000 + 1;\n } else {\n // The step changes to the next step\n // as soon as `now - timestamp` becomes\n // equal to `minTime` of the next step:\n // `now - timestamp === minTime`\n // => `now === timestamp + minTime`.\n // This is a special case when double-update could be skipped.\n if (minTime === 0 && timestamp === now) {\n return INFINITY;\n }\n\n return timestamp + minTime * 1000;\n }\n}\nexport function getTimeToStepChange(step, timestamp, _ref3) {\n var now = _ref3.now,\n future = _ref3.future,\n round = _ref3.round,\n prevStep = _ref3.prevStep;\n\n if (step) {\n var stepChangesAt = getStepChangesAt(step, timestamp, {\n now: now,\n future: future,\n round: round,\n prevStep: prevStep\n });\n\n if (stepChangesAt === undefined) {\n return;\n }\n\n return stepChangesAt - now;\n } else {\n if (future) {\n // No step.\n // Update right after zero point, when it changes from \"future\" to \"past\".\n return timestamp - now + 1;\n } else {\n // The last step doesn't ever change when `date` is in the past.\n return INFINITY;\n }\n }\n}\n//# sourceMappingURL=getTimeToNextUpdate.js.map","// For all locales added\n// their relative time formatter messages will be stored here.\nvar localesData = {};\nexport function getLocaleData(locale) {\n return localesData[locale];\n}\nexport function addLocaleData(localeData) {\n if (!localeData) {\n throw new Error('[javascript-time-ago] No locale data passed.');\n } // This locale data is stored in a global variable\n // and later used when calling `.format(time)`.\n\n\n localesData[localeData.locale] = localeData;\n}\n//# sourceMappingURL=LocaleDataStore.js.map","// just now\n// 1 second ago\n// 2 seconds ago\n// …\n// 59 seconds ago\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 hour ago\n// 2 hours ago\n// …\n// 24 hours ago\n// 1 day ago\n// 2 days ago\n// …\n// 6 days ago\n// 1 week ago\n// 2 weeks ago\n// …\n// 3 weeks ago\n// 1 month ago\n// 2 months ago\n// …\n// 11 months ago\n// 1 year ago\n// 2 years ago\n// …\nexport default [{\n formatAs: 'now'\n}, {\n formatAs: 'second'\n}, {\n formatAs: 'minute'\n}, {\n formatAs: 'hour'\n}, {\n formatAs: 'day'\n}, {\n formatAs: 'week'\n}, {\n formatAs: 'month'\n}, {\n formatAs: 'year'\n}];\n//# sourceMappingURL=round.js.map","import round from '../steps/round.js'; // just now\n// 1 second ago\n// 2 seconds ago\n// …\n// 59 seconds ago\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 hour ago\n// 2 hours ago\n// …\n// 24 hours ago\n// 1 day ago\n// 2 days ago\n// …\n// 6 days ago\n// 1 week ago\n// 2 weeks ago\n// 3 weeks ago\n// 4 weeks ago\n// 1 month ago\n// 2 months ago\n// …\n// 11 months ago\n// 1 year ago\n// 2 years ago\n// …\n//\n\nexport default {\n steps: round,\n labels: 'long'\n};\n//# sourceMappingURL=round.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport round from './round.js'; // just now\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 hour ago\n// 2 hours ago\n// …\n// 24 hours ago\n// 1 day ago\n// 2 days ago\n// …\n// 6 days ago\n// 1 week ago\n// 2 weeks ago\n// 3 weeks ago\n// 4 weeks ago\n// 1 month ago\n// 2 months ago\n// …\n// 11 months ago\n// 1 year ago\n// 2 years ago\n// …\n//\n\nexport default _objectSpread(_objectSpread({}, round), {}, {\n // Skip \"seconds\".\n steps: round.steps.filter(function (step) {\n return step.formatAs !== 'second';\n })\n});\n//# sourceMappingURL=roundMinute.js.map","import { minute, hour, day, week, month, year } from './units.js'; // \"factor\" is a legacy property.\n// Developers shouldn't need to use it in their custom steps.\n// \"threshold\" is a legacy name of \"min\".\n// Developers should use \"min\" property name instead of \"threshold\".\n// \"threshold_for_idOrUnit: value\" is a legacy way of specifying \"min: { id: value }\".\n// Developers should use \"min\" property instead of \"threshold\".\n// just now\n// 1 minute ago\n// 2 minutes ago\n// 5 minutes ago\n// 10 minutes ago\n// 15 minutes ago\n// 20 minutes ago\n// …\n// 50 minutes ago\n// an hour ago\n// 2 hours ago\n// …\n// 20 hours ago\n// a day ago\n// 2 days ago\n// 5 days ago\n// a week ago\n// 2 weeks ago\n// 3 weeks ago\n// a month ago\n// 2 months ago\n// 4 months ago\n// a year ago\n// 2 years ago\n// …\n\nexport default [{\n // This step returns the amount of seconds\n // by dividing the amount of seconds by `1`.\n factor: 1,\n // \"now\" labels are used for formatting the output.\n unit: 'now'\n}, {\n // When the language doesn't support `now` unit,\n // the first step is ignored, and it uses this `second` unit.\n threshold: 1,\n // `threshold_for_now` should be the same as `threshold` on minutes.\n threshold_for_now: 45.5,\n // This step returns the amount of seconds\n // by dividing the amount of seconds by `1`.\n factor: 1,\n // \"second\" labels are used for formatting the output.\n unit: 'second'\n}, {\n // `threshold` should be the same as `threshold_for_now` on seconds.\n threshold: 45.5,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a minute.\n factor: minute,\n // \"minute\" labels are used for formatting the output.\n unit: 'minute'\n}, {\n // This step is effective starting from 2.5 minutes.\n threshold: 2.5 * minute,\n // Allow only 5-minute increments of minutes starting from 2.5 minutes.\n // `granularity` — (advanced) Time interval value \"granularity\".\n // For example, it could be set to `5` for minutes to allow only 5-minute increments\n // when formatting time intervals: `0 minutes`, `5 minutes`, `10 minutes`, etc.\n // Perhaps this feature will be removed because there seem to be no use cases\n // of it in the real world.\n granularity: 5,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a minute.\n factor: minute,\n // \"minute\" labels are used for formatting the output.\n unit: 'minute'\n}, {\n // This step is effective starting from 22.5 minutes.\n threshold: 22.5 * minute,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in half-an-hour.\n factor: 0.5 * hour,\n // \"half-hour\" labels are used for formatting the output.\n // (if available, which is no longer the case)\n unit: 'half-hour'\n}, {\n // This step is effective starting from 42.5 minutes.\n threshold: 42.5 * minute,\n threshold_for_minute: 52.5 * minute,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in an hour.\n factor: hour,\n // \"hour\" labels are used for formatting the output.\n unit: 'hour'\n}, {\n // This step is effective starting from 20.5 hours.\n threshold: 20.5 / 24 * day,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a day.\n factor: day,\n // \"day\" labels are used for formatting the output.\n unit: 'day'\n}, {\n // This step is effective starting from 5.5 days.\n threshold: 5.5 * day,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a week.\n factor: week,\n // \"week\" labels are used for formatting the output.\n unit: 'week'\n}, {\n // This step is effective starting from 3.5 weeks.\n threshold: 3.5 * week,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a month.\n factor: month,\n // \"month\" labels are used for formatting the output.\n unit: 'month'\n}, {\n // This step is effective starting from 10.5 months.\n threshold: 10.5 * month,\n // Return the amount of minutes by dividing the amount\n // of seconds by the amount of seconds in a year.\n factor: year,\n // \"year\" labels are used for formatting the output.\n unit: 'year'\n}];\n//# sourceMappingURL=approximate.js.map","import approximate from '../steps/approximate.js'; // \"gradation\" is a legacy name for \"steps\".\n// It's here just for legacy compatibility.\n// Use \"steps\" name instead.\n// \"flavour\" is a legacy name for \"labels\".\n// It's here just for legacy compatibility.\n// Use \"labels\" name instead.\n// \"units\" is a legacy property.\n// It's here just for legacy compatibility.\n// Developers shouldn't need to use it in their custom styles.\n\nexport default {\n gradation: approximate,\n flavour: 'long',\n units: ['now', 'minute', 'hour', 'day', 'week', 'month', 'year']\n};\n//# sourceMappingURL=approximate.js.map","import approximate from '../steps/approximate.js'; // \"gradation\" is a legacy name for \"steps\".\n// It's here just for legacy compatibility.\n// Use \"steps\" name instead.\n// \"flavour\" is a legacy name for \"labels\".\n// It's here just for legacy compatibility.\n// Use \"labels\" name instead.\n// \"units\" is a legacy property.\n// It's here just for legacy compatibility.\n// Developers shouldn't need to use it in their custom styles.\n// Similar to the default style but with \"ago\" omitted.\n//\n// just now\n// 5 minutes\n// 10 minutes\n// 15 minutes\n// 20 minutes\n// an hour\n// 2 hours\n// …\n// 20 hours\n// 1 day\n// 2 days\n// a week\n// 2 weeks\n// 3 weeks\n// a month\n// 2 months\n// 3 months\n// 4 months\n// a year\n// 2 years\n//\n\nexport default {\n gradation: approximate,\n flavour: 'long-time',\n units: ['now', 'minute', 'hour', 'day', 'week', 'month', 'year']\n};\n//# sourceMappingURL=approximateTime.js.map","// Looks like this one's deprecated.\n// /**\n// * Returns a step corresponding to the unit.\n// * @param {Object[]} steps\n// * @param {string} unit\n// * @return {?Object}\n// */\n// export function getStepForUnit(steps, unit) {\n// \tfor (const step of steps) {\n// \t\tif (step.unit === unit) {\n// \t\t\treturn step\n// \t\t}\n// \t}\n// }\n// Looks like this one won't be used in the next major version.\n\n/**\r\n * Converts value to a `Date`\r\n * @param {(number|Date)} value\r\n * @return {Date}\r\n */\nexport function getDate(value) {\n return value instanceof Date ? value : new Date(value);\n}\n//# sourceMappingURL=helpers.js.map","import { day, getDate } from '../steps/index.js';\nimport { intlDateTimeFormatSupported } from '../locale.js'; // For compatibility with the old versions of this library.\n\nimport renameLegacyProperties from './renameLegacyProperties.js'; // Twitter-style relative date/time formatting.\n// (\"1m\", \"2h\", \"Mar 3\", \"Apr 4, 2012\").\n//\n// Seconds, minutes or hours are shown for shorter intervals,\n// and longer intervals are formatted using full date format.\n\nvar steps = [{\n formatAs: 'second'\n}, {\n formatAs: 'minute'\n}, {\n formatAs: 'hour'\n}]; // A cache for `Intl.DateTimeFormat` formatters\n// for various locales (is a global variable).\n\nvar formatters = {}; // Starting from day intervals, output month and day.\n\nvar monthAndDay = {\n minTime: function minTime(timestamp, _ref) {\n var future = _ref.future,\n getMinTimeForUnit = _ref.getMinTimeForUnit;\n // Returns `23.5 * 60 * 60` when `round` is \"round\",\n // and `24 * 60 * 60` when `round` is \"floor\".\n return getMinTimeForUnit('day');\n },\n format: function format(value, locale) {\n /* istanbul ignore else */\n if (!formatters[locale]) {\n formatters[locale] = {};\n }\n /* istanbul ignore else */\n\n\n if (!formatters[locale].dayMonth) {\n // \"Apr 11\" (MMMd)\n formatters[locale].dayMonth = new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric'\n });\n } // Output month and day.\n\n\n return formatters[locale].dayMonth.format(getDate(value));\n }\n}; // If the `date` happened/happens outside of current year,\n// then output day, month and year.\n// The interval should be such that the `date` lies outside of the current year.\n\nvar yearMonthAndDay = {\n minTime: function minTime(timestamp, _ref2) {\n var future = _ref2.future;\n\n if (future) {\n // January 1, 00:00, of the `date`'s year is right after\n // the maximum `now` for formatting a future date:\n // When `now` is before that date, the `date` is formatted as \"day/month/year\" (this step),\n // When `now` is equal to or after that date, the `date` is formatted as \"day/month\" (another step).\n // After that, it's hours, minutes, seconds, and after that it's no longer `future`.\n // The date is right after the maximum `now` for formatting a future date,\n // so subtract 1 millisecond from it.\n var maxFittingNow = new Date(new Date(timestamp).getFullYear(), 0).getTime() - 1; // Return `minTime` (in seconds).\n\n return (timestamp - maxFittingNow) / 1000;\n } else {\n // January 1, 00:00, of the year following the `date`'s year\n // is the minimum `now` for formatting a past date:\n // When `now` is before that date, the `date` is formatted as \"day/month\" (another step),\n // When `now` is equal to or after that date, the `date` is formatted as \"day/month/year\" (this step).\n // After that, it's hours, minutes, seconds, and after that it's no longer `future`.\n var minFittingNow = new Date(new Date(timestamp).getFullYear() + 1, 0).getTime(); // Return `minTime` (in seconds).\n\n return (minFittingNow - timestamp) / 1000;\n }\n },\n format: function format(value, locale) {\n /* istanbul ignore if */\n if (!formatters[locale]) {\n formatters[locale] = {};\n }\n /* istanbul ignore else */\n\n\n if (!formatters[locale].dayMonthYear) {\n // \"Apr 11, 2017\" (yMMMd)\n formatters[locale].dayMonthYear = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n });\n } // Output day, month and year.\n\n\n return formatters[locale].dayMonthYear.format(getDate(value));\n }\n}; // If `Intl.DateTimeFormat` is supported,\n// then longer time intervals will be formatted as dates.\n\n/* istanbul ignore else */\n\nif (intlDateTimeFormatSupported()) {\n steps.push(monthAndDay, yearMonthAndDay);\n} // Otherwise, if `Intl.DateTimeFormat` is not supported,\n// which could be the case when using Internet Explorer,\n// then simply mimick \"round\" steps.\nelse {\n steps.push({\n formatAs: 'day'\n }, {\n formatAs: 'week'\n }, {\n formatAs: 'month'\n }, {\n formatAs: 'year'\n });\n}\n\nexport default {\n steps: steps,\n labels: [// \"mini\" labels are only defined for a few languages.\n 'mini', // \"short-time\" labels are only defined for a few languages.\n 'short-time', // \"narrow\" and \"short\" labels are defined for all languages.\n // \"narrow\" labels can sometimes be weird (like \"+5d.\"),\n // but \"short\" labels have the \" ago\" part, so \"narrow\" seem\n // more appropriate.\n // \"short\" labels would have been more appropriate if they\n // didn't have the \" ago\" part, hence the \"short-time\" above.\n 'narrow', // Since \"narrow\" labels are always present, \"short\" element\n // of this array can be removed.\n 'short']\n};\n//# sourceMappingURL=twitter.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport twitter from './twitter.js';\nexport default _objectSpread(_objectSpread({}, twitter), {}, {\n // Add \"now\".\n steps: [{\n formatAs: 'now'\n }].concat(twitter.steps)\n});\n//# sourceMappingURL=twitterNow.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport twitter from './twitter.js';\nexport default _objectSpread(_objectSpread({}, twitter), {}, {\n // Skip \"seconds\".\n steps: twitter.steps.filter(function (step) {\n return step.formatAs !== 'second';\n })\n});\n//# sourceMappingURL=twitterMinute.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport twitterMinute from './twitterMinute.js';\nexport default _objectSpread(_objectSpread({}, twitterMinute), {}, {\n // Add \"now\".\n steps: [{\n formatAs: 'now'\n }].concat(twitterMinute.steps)\n});\n//# sourceMappingURL=twitterMinuteNow.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { minute } from '../steps/units.js';\nimport twitter from './twitter.js';\nexport default _objectSpread(_objectSpread({}, twitter), {}, {\n // Skip \"seconds\".\n steps: twitter.steps.filter(function (step) {\n return step.formatAs !== 'second';\n }) // Start showing `1m` from the first minute.\n .map(function (step) {\n return step.formatAs === 'minute' ? _objectSpread(_objectSpread({}, step), {}, {\n minTime: minute\n }) : step;\n })\n});\n//# sourceMappingURL=twitterFirstMinute.js.map","export default {\n steps: [{\n formatAs: 'second'\n }, {\n formatAs: 'minute'\n }, {\n formatAs: 'hour'\n }, {\n formatAs: 'day'\n }, {\n formatAs: 'month'\n }, {\n formatAs: 'year'\n }],\n labels: [// \"mini\" labels are only defined for a few languages.\n 'mini', // \"short-time\" labels are only defined for a few languages.\n 'short-time', // \"narrow\" and \"short\" labels are defined for all languages.\n // \"narrow\" labels can sometimes be weird (like \"+5d.\"),\n // but \"short\" labels have the \" ago\" part, so \"narrow\" seem\n // more appropriate.\n // \"short\" labels would have been more appropriate if they\n // didn't have the \" ago\" part, hence the \"short-time\" above.\n 'narrow', // Since \"narrow\" labels are always present, \"short\" element\n // of this array can be removed.\n 'short']\n};\n//# sourceMappingURL=mini.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport mini from './mini.js';\nexport default _objectSpread(_objectSpread({}, mini), {}, {\n // Add \"now\".\n steps: [{\n formatAs: 'now'\n }].concat(mini.steps)\n});\n//# sourceMappingURL=miniNow.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport mini from './mini.js';\nexport default _objectSpread(_objectSpread({}, mini), {}, {\n // Skip \"seconds\".\n steps: mini.steps.filter(function (step) {\n return step.formatAs !== 'second';\n })\n});\n//# sourceMappingURL=miniMinute.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport miniMinute from './miniMinute.js';\nexport default _objectSpread(_objectSpread({}, miniMinute), {}, {\n // Add \"now\".\n steps: [{\n formatAs: 'now'\n }].concat(miniMinute.steps)\n});\n//# sourceMappingURL=miniMinuteNow.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport RelativeTimeFormatPolyfill from 'relative-time-format';\nimport Cache from './cache.js';\nimport chooseLocale from './locale.js';\nimport isStyleObject from './isStyleObject.js';\nimport getStep from './steps/getStep.js';\nimport getStepDenominator from './steps/getStepDenominator.js';\nimport getTimeToNextUpdate from './steps/getTimeToNextUpdate.js';\nimport { addLocaleData, getLocaleData } from './LocaleDataStore.js';\nimport defaultStyle from './style/roundMinute.js';\nimport getStyleByName from './style/getStyleByName.js';\nimport { getRoundFunction } from './round.js'; // Valid time units.\n\nvar UNITS = ['now', // The rest are the same as in `Intl.RelativeTimeFormat`.\n'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'];\n\nvar TimeAgo = /*#__PURE__*/function () {\n /**\r\n * @param {(string|string[])} locales=[] - Preferred locales (or locale).\r\n * @param {boolean} [polyfill] — Pass `false` to use native `Intl.RelativeTimeFormat` and `Intl.PluralRules` instead of the polyfills.\r\n */\n function TimeAgo() {\n var locales = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n polyfill = _ref.polyfill;\n\n _classCallCheck(this, TimeAgo);\n\n // Convert `locales` to an array.\n if (typeof locales === 'string') {\n locales = [locales];\n } // Choose the most appropriate locale\n // from the list of `locales` added by the user.\n // For example, new TimeAgo(\"en-US\") -> \"en\".\n\n\n this.locale = chooseLocale(locales.concat(TimeAgo.getDefaultLocale()), getLocaleData);\n\n if (typeof Intl !== 'undefined') {\n // Use `Intl.NumberFormat` for formatting numbers (when available).\n if (Intl.NumberFormat) {\n this.numberFormat = new Intl.NumberFormat(this.locale);\n }\n } // Some people have requested the ability to use native\n // `Intl.RelativeTimeFormat` and `Intl.PluralRules`\n // instead of the polyfills.\n // https://github.com/catamphetamine/javascript-time-ago/issues/21\n\n\n if (polyfill === false) {\n this.IntlRelativeTimeFormat = Intl.RelativeTimeFormat;\n this.IntlPluralRules = Intl.PluralRules;\n } else {\n this.IntlRelativeTimeFormat = RelativeTimeFormatPolyfill;\n this.IntlPluralRules = RelativeTimeFormatPolyfill.PluralRules;\n } // Cache `Intl.RelativeTimeFormat` instance.\n\n\n this.relativeTimeFormatCache = new Cache(); // Cache `Intl.PluralRules` instance.\n\n this.pluralRulesCache = new Cache();\n }\n /**\r\n * Formats relative date/time.\r\n *\r\n * @param {(number|Date)} input — A `Date` or a javascript timestamp.\r\n *\r\n * @param {(string|object)} style — Date/time formatting style. Either one of the built-in style names or a \"custom\" style definition object having `steps: object[]` and `labels: string[]`.\r\n *\r\n * @param {number} [options.now] - Sets the current date timestamp.\r\n *\r\n * @param {boolean} [options.future] — Tells how to format value `0`:\r\n * as \"future\" (`true`) or \"past\" (`false`).\r\n * Is `false` by default, but should have been `true` actually,\r\n * in order to correspond to `Intl.RelativeTimeFormat`\r\n * that uses `future` formatting for `0` unless `-0` is passed.\r\n *\r\n * @param {string} [options.round] — Rounding method. Overrides the style's one.\r\n *\r\n * @param {boolean} [options.getTimeToNextUpdate] — Pass `true` to return `[formattedDate, timeToNextUpdate]` instead of just `formattedDate`.\r\n *\r\n * @return {string} The formatted relative date/time. If no eligible `step` is found, then an empty string is returned.\r\n */\n\n\n _createClass(TimeAgo, [{\n key: \"format\",\n value: function format(input, style, options) {\n if (!options) {\n if (style && !isStyle(style)) {\n options = style;\n style = undefined;\n } else {\n options = {};\n }\n }\n\n if (!style) {\n style = defaultStyle;\n }\n\n if (typeof style === 'string') {\n style = getStyleByName(style);\n }\n\n var timestamp = getTimestamp(input); // Get locale messages for this type of labels.\n // \"flavour\" is a legacy name for \"labels\".\n\n var _this$getLabels = this.getLabels(style.flavour || style.labels),\n labels = _this$getLabels.labels,\n labelsType = _this$getLabels.labelsType;\n\n var now; // Can pass a custom `now`, e.g. for testing purposes.\n //\n // Legacy way was passing `now` in `style`.\n // That way is deprecated.\n\n if (style.now !== undefined) {\n now = style.now;\n } // The new way is passing `now` option to `.format()`.\n\n\n if (now === undefined && options.now !== undefined) {\n now = options.now;\n }\n\n if (now === undefined) {\n now = Date.now();\n } // how much time has passed (in seconds)\n\n\n var secondsPassed = (now - timestamp) / 1000; // in seconds\n\n var future = options.future || secondsPassed < 0;\n var nowLabel = getNowLabel(labels, getLocaleData(this.locale).now, getLocaleData(this.locale)[\"long\"], future); // `custom` – A function of `{ elapsed, time, date, now, locale }`.\n //\n // Looks like `custom` function is deprecated and will be removed\n // in the next major version.\n //\n // If this function returns a value, then the `.format()` call will return that value.\n // Otherwise the relative date/time is formatted as usual.\n // This feature is currently not used anywhere and is here\n // just for providing the ultimate customization point\n // in case anyone would ever need that. Prefer using\n // `steps[step].format(value, locale)` instead.\n //\n\n if (style.custom) {\n var custom = style.custom({\n now: now,\n date: new Date(timestamp),\n time: timestamp,\n elapsed: secondsPassed,\n locale: this.locale\n });\n\n if (custom !== undefined) {\n // Won't return `timeToNextUpdate` here\n // because `custom()` seems deprecated.\n return custom;\n }\n } // Get the list of available time interval units.\n\n\n var units = getTimeIntervalMeasurementUnits( // Controlling `style.steps` through `style.units` seems to be deprecated:\n // create a new custom `style` instead.\n style.units, labels, nowLabel); // // If no available time unit is suitable, just output an empty string.\n // if (units.length === 0) {\n // \tconsole.error(`None of the \"${units.join(', ')}\" time units have been found in \"${labelsType}\" labels for \"${this.locale}\" locale.`)\n // \treturn ''\n // }\n\n var round = options.round || style.round; // Choose the appropriate time measurement unit\n // and get the corresponding rounded time amount.\n\n var _getStep = getStep( // \"gradation\" is a legacy name for \"steps\".\n // For historical reasons, \"approximate\" steps are used by default.\n // In the next major version, there'll be no default for `steps`.\n style.gradation || style.steps || defaultStyle.steps, secondsPassed, {\n now: now,\n units: units,\n round: round,\n future: future,\n getNextStep: true\n }),\n _getStep2 = _slicedToArray(_getStep, 3),\n prevStep = _getStep2[0],\n step = _getStep2[1],\n nextStep = _getStep2[2];\n\n var formattedDate = this.formatDateForStep(timestamp, step, secondsPassed, {\n labels: labels,\n labelsType: labelsType,\n nowLabel: nowLabel,\n now: now,\n future: future,\n round: round\n }) || '';\n\n if (options.getTimeToNextUpdate) {\n var timeToNextUpdate = getTimeToNextUpdate(timestamp, step, {\n nextStep: nextStep,\n prevStep: prevStep,\n now: now,\n future: future,\n round: round\n });\n return [formattedDate, timeToNextUpdate];\n }\n\n return formattedDate;\n }\n }, {\n key: \"formatDateForStep\",\n value: function formatDateForStep(timestamp, step, secondsPassed, _ref2) {\n var _this = this;\n\n var labels = _ref2.labels,\n labelsType = _ref2.labelsType,\n nowLabel = _ref2.nowLabel,\n now = _ref2.now,\n future = _ref2.future,\n round = _ref2.round;\n\n // If no step matches, then output an empty string.\n if (!step) {\n return;\n }\n\n if (step.format) {\n return step.format(timestamp, this.locale, {\n formatAs: function formatAs(unit, value) {\n // Mimicks `Intl.RelativeTimeFormat.format()`.\n return _this.formatValue(value, unit, {\n labels: labels,\n future: future\n });\n },\n now: now,\n future: future\n });\n } // \"unit\" is now called \"formatAs\".\n\n\n var unit = step.unit || step.formatAs;\n\n if (!unit) {\n throw new Error(\"[javascript-time-ago] Each step must define either `formatAs` or `format()`. Step: \".concat(JSON.stringify(step)));\n } // `Intl.RelativeTimeFormat` doesn't operate in \"now\" units.\n // Therefore, threat \"now\" as a special case.\n\n\n if (unit === 'now') {\n return nowLabel;\n } // Amount in units.\n\n\n var amount = Math.abs(secondsPassed) / getStepDenominator(step); // Apply granularity to the time amount\n // (and fallback to the previous step\n // if the first level of granularity\n // isn't met by this amount)\n //\n // `granularity` — (advanced) Time interval value \"granularity\".\n // For example, it could be set to `5` for minutes to allow only 5-minute increments\n // when formatting time intervals: `0 minutes`, `5 minutes`, `10 minutes`, etc.\n // Perhaps this feature will be removed because there seem to be no use cases\n // of it in the real world.\n //\n\n if (step.granularity) {\n // Recalculate the amount of seconds passed based on granularity\n amount = getRoundFunction(round)(amount / step.granularity) * step.granularity;\n }\n\n var valueForFormatting = -1 * Math.sign(secondsPassed) * getRoundFunction(round)(amount); // By default, this library formats a `0` in \"past\" mode,\n // unless `future: true` option is passed.\n // This is different to `relative-time-format`'s behavior\n // which formats a `0` in \"future\" mode by default, unless it's a `-0`.\n // So, convert `0` to `-0` if `future: true` option wasn't passed.\n // `=== 0` matches both `0` and `-0`.\n\n if (valueForFormatting === 0) {\n if (future) {\n valueForFormatting = 0;\n } else {\n valueForFormatting = -0;\n }\n }\n\n switch (labelsType) {\n case 'long':\n case 'short':\n case 'narrow':\n // Format the amount using `Intl.RelativeTimeFormat`.\n return this.getFormatter(labelsType).format(valueForFormatting, unit);\n\n default:\n // Format the amount.\n // (mimicks `Intl.RelativeTimeFormat` behavior for other time label styles)\n return this.formatValue(valueForFormatting, unit, {\n labels: labels,\n future: future\n });\n }\n }\n /**\r\n * Mimicks what `Intl.RelativeTimeFormat` does for additional locale styles.\r\n * @param {number} value\r\n * @param {string} unit\r\n * @param {object} options.labels — Relative time labels.\r\n * @param {boolean} [options.future] — Tells how to format value `0`: as \"future\" (`true`) or \"past\" (`false`). Is `false` by default, but should have been `true` actually.\r\n * @return {string}\r\n */\n\n }, {\n key: \"formatValue\",\n value: function formatValue(value, unit, _ref3) {\n var labels = _ref3.labels,\n future = _ref3.future;\n return this.getFormattingRule(labels, unit, value, {\n future: future\n }).replace('{0}', this.formatNumber(Math.abs(value)));\n }\n /**\r\n * Returns formatting rule for `value` in `units` (either in past or in future).\r\n * @param {object} formattingRules — Relative time labels for different units.\r\n * @param {string} unit - Time interval measurement unit.\r\n * @param {number} value - Time interval value.\r\n * @param {boolean} [options.future] — Tells how to format value `0`: as \"future\" (`true`) or \"past\" (`false`). Is `false` by default.\r\n * @return {string}\r\n * @example\r\n * // Returns \"{0} days ago\"\r\n * getFormattingRule(en.long, \"day\", -2, 'en')\r\n */\n\n }, {\n key: \"getFormattingRule\",\n value: function getFormattingRule(formattingRules, unit, value, _ref4) {\n var future = _ref4.future;\n // Passing the language is required in order to\n // be able to correctly classify the `value` as a number.\n var locale = this.locale;\n formattingRules = formattingRules[unit]; // Check for a special \"compacted\" rules case:\n // if formatting rules are the same for \"past\" and \"future\",\n // and also for all possible `value`s, then those rules are\n // stored as a single string.\n\n if (typeof formattingRules === 'string') {\n return formattingRules;\n } // Choose either \"past\" or \"future\" based on time `value` sign.\n // If \"past\" is same as \"future\" then they're stored as \"other\".\n // If there's only \"other\" then it's being collapsed.\n\n\n var pastOrFuture = value === 0 ? future ? 'future' : 'past' : value < 0 ? 'past' : 'future';\n var quantifierRules = formattingRules[pastOrFuture] || formattingRules; // Bundle size optimization technique.\n\n if (typeof quantifierRules === 'string') {\n return quantifierRules;\n } // Quantify `value`.\n\n\n var quantifier = this.getPluralRules().select(Math.abs(value)); // \"other\" rule is supposed to always be present.\n // If only \"other\" rule is present then \"rules\" is not an object and is a string.\n\n return quantifierRules[quantifier] || quantifierRules.other;\n }\n /**\r\n * Formats a number into a string.\r\n * Uses `Intl.NumberFormat` when available.\r\n * @param {number} number\r\n * @return {string}\r\n */\n\n }, {\n key: \"formatNumber\",\n value: function formatNumber(number) {\n return this.numberFormat ? this.numberFormat.format(number) : String(number);\n }\n /**\r\n * Returns an `Intl.RelativeTimeFormat` for a given `labelsType`.\r\n * @param {string} labelsType\r\n * @return {object} `Intl.RelativeTimeFormat` instance\r\n */\n\n }, {\n key: \"getFormatter\",\n value: function getFormatter(labelsType) {\n // `Intl.RelativeTimeFormat` instance creation is (hypothetically) assumed\n // a lengthy operation so the instances are cached and reused.\n return this.relativeTimeFormatCache.get(this.locale, labelsType) || this.relativeTimeFormatCache.put(this.locale, labelsType, new this.IntlRelativeTimeFormat(this.locale, {\n style: labelsType\n }));\n }\n /**\r\n * Returns an `Intl.PluralRules` instance.\r\n * @return {object} `Intl.PluralRules` instance\r\n */\n\n }, {\n key: \"getPluralRules\",\n value: function getPluralRules() {\n // `Intl.PluralRules` instance creation is (hypothetically) assumed\n // a lengthy operation so the instances are cached and reused.\n return this.pluralRulesCache.get(this.locale) || this.pluralRulesCache.put(this.locale, new this.IntlPluralRules(this.locale));\n }\n /**\r\n * Gets localized labels for this type of labels.\r\n *\r\n * @param {(string|string[])} labelsType - Relative date/time labels type.\r\n * If it's an array then all label types are tried\r\n * until a suitable one is found.\r\n *\r\n * @returns {Object} Returns an object of shape { labelsType, labels }\r\n */\n\n }, {\n key: \"getLabels\",\n value: function getLabels() {\n var labelsType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n // Convert `labels` to an array.\n if (typeof labelsType === 'string') {\n labelsType = [labelsType];\n } // Supports legacy \"tiny\" and \"mini-time\" label styles.\n\n\n labelsType = labelsType.map(function (labelsType) {\n switch (labelsType) {\n case 'tiny':\n case 'mini-time':\n return 'mini';\n\n default:\n return labelsType;\n }\n }); // \"long\" labels type is the default one.\n // (it's always present for all languages)\n\n labelsType = labelsType.concat('long'); // Find a suitable labels type.\n\n var localeData = getLocaleData(this.locale);\n\n for (var _iterator = _createForOfIteratorHelperLoose(labelsType), _step; !(_step = _iterator()).done;) {\n var _labelsType = _step.value;\n\n if (localeData[_labelsType]) {\n return {\n labelsType: _labelsType,\n labels: localeData[_labelsType]\n };\n }\n }\n }\n }]);\n\n return TimeAgo;\n}();\n/**\r\n * Default locale global variable.\r\n */\n\n\nexport { TimeAgo as default };\nvar defaultLocale = 'en';\n/**\r\n * Gets default locale.\r\n * @return {string} locale\r\n */\n\nTimeAgo.getDefaultLocale = function () {\n return defaultLocale;\n};\n/**\r\n * Sets default locale.\r\n * @param {string} locale\r\n */\n\n\nTimeAgo.setDefaultLocale = function (locale) {\n return defaultLocale = locale;\n};\n/**\r\n * Adds locale data for a specific locale and marks the locale as default.\r\n * @param {Object} localeData\r\n */\n\n\nTimeAgo.addDefaultLocale = function (localeData) {\n if (defaultLocaleHasBeenSpecified) {\n return console.error('[javascript-time-ago] `TimeAgo.addDefaultLocale()` can only be called once. To add other locales, use `TimeAgo.addLocale()`.');\n }\n\n defaultLocaleHasBeenSpecified = true;\n TimeAgo.setDefaultLocale(localeData.locale);\n TimeAgo.addLocale(localeData);\n};\n\nvar defaultLocaleHasBeenSpecified;\n/**\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n */\n\nTimeAgo.addLocale = function (localeData) {\n addLocaleData(localeData);\n RelativeTimeFormatPolyfill.addLocale(localeData);\n};\n/**\r\n * (legacy alias)\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n * @deprecated\r\n */\n\n\nTimeAgo.locale = TimeAgo.addLocale;\n/**\r\n * Adds custom labels to locale data.\r\n * @param {string} locale\r\n * @param {string} name\r\n * @param {object} labels\r\n */\n\nTimeAgo.addLabels = function (locale, name, labels) {\n var localeData = getLocaleData(locale);\n\n if (!localeData) {\n addLocaleData({\n locale: locale\n });\n localeData = getLocaleData(locale); // throw new Error(`[javascript-time-ago] No data for locale \"${locale}\"`)\n }\n\n localeData[name] = labels;\n}; // Normalizes `.format()` `time` argument.\n\n\nfunction getTimestamp(input) {\n if (input.constructor === Date || isMockedDate(input)) {\n return input.getTime();\n }\n\n if (typeof input === 'number') {\n return input;\n } // For some weird reason istanbul doesn't see this `throw` covered.\n\n /* istanbul ignore next */\n\n\n throw new Error(\"Unsupported relative time formatter input: \".concat(_typeof(input), \", \").concat(input));\n} // During testing via some testing libraries `Date`s aren't actually `Date`s.\n// https://github.com/catamphetamine/javascript-time-ago/issues/22\n\n\nfunction isMockedDate(object) {\n return _typeof(object) === 'object' && typeof object.getTime === 'function';\n} // Get available time interval measurement units.\n\n\nfunction getTimeIntervalMeasurementUnits(allowedUnits, labels, nowLabel) {\n // Get all time interval measurement units that're available\n // in locale data for a given time labels style.\n var units = Object.keys(labels); // `now` unit is handled separately and is shipped in its own `now.json` file.\n // `now.json` isn't present for all locales, so it could be substituted with\n // \".second.current\".\n // Add `now` unit if it's available in locale data.\n\n if (nowLabel) {\n units.push('now');\n } // If only a specific set of available time measurement units can be used\n // then only those units are allowed (if they're present in locale data).\n\n\n if (allowedUnits) {\n units = allowedUnits.filter(function (unit) {\n return unit === 'now' || units.indexOf(unit) >= 0;\n });\n }\n\n return units;\n}\n\nfunction getNowLabel(labels, nowLabels, longLabels, future) {\n var nowLabel = labels.now || nowLabels && nowLabels.now; // Specific \"now\" message form extended locale data (if present).\n\n if (nowLabel) {\n // Bundle size optimization technique.\n if (typeof nowLabel === 'string') {\n return nowLabel;\n } // Not handling `value === 0` as `localeData.now.current` here\n // because it wouldn't make sense: \"now\" is a moment,\n // so one can't possibly differentiate between a\n // \"previous\" moment, a \"current\" moment and a \"next moment\".\n // It can only be differentiated between \"past\" and \"future\".\n\n\n if (future) {\n return nowLabel.future;\n } else {\n return nowLabel.past;\n }\n } // Use \".second.current\" as \"now\" message.\n\n\n if (longLabels && longLabels.second && longLabels.second.current) {\n return longLabels.second.current;\n }\n}\n\nfunction isStyle(variable) {\n return typeof variable === 'string' || isStyleObject(variable);\n}\n//# sourceMappingURL=TimeAgo.js.map","import round from './round.js';\nimport roundMinute from './roundMinute.js'; // `approximate` style is deprecated.\n\nimport approximate from './approximate.js'; // `approximateTime` style is deprecated.\n\nimport approximateTime from './approximateTime.js';\nimport twitter from './twitter.js';\nimport twitterNow from './twitterNow.js';\nimport twitterMinute from './twitterMinute.js';\nimport twitterMinuteNow from './twitterMinuteNow.js';\nimport twitterFirstMinute from './twitterFirstMinute.js';\nimport mini from './mini.js';\nimport miniNow from './miniNow.js';\nimport miniMinute from './miniMinute.js';\nimport miniMinuteNow from './miniMinuteNow.js';\nexport default function getStyleByName(style) {\n switch (style) {\n // \"default\" style name is deprecated.\n case 'default':\n case 'round':\n return round;\n\n case 'round-minute':\n return roundMinute;\n\n case 'approximate':\n return approximate;\n // \"time\" style name is deprecated.\n\n case 'time':\n case 'approximate-time':\n return approximateTime;\n\n case 'mini':\n return mini;\n\n case 'mini-now':\n return miniNow;\n\n case 'mini-minute':\n return miniMinute;\n\n case 'mini-minute-now':\n return miniMinuteNow;\n\n case 'twitter':\n return twitter;\n\n case 'twitter-now':\n return twitterNow;\n\n case 'twitter-minute':\n return twitterMinute;\n\n case 'twitter-minute-now':\n return twitterMinuteNow;\n\n case 'twitter-first-minute':\n return twitterFirstMinute;\n\n default:\n // For historical reasons, the default style is \"approximate\".\n return approximate;\n }\n}\n//# sourceMappingURL=getStyleByName.js.map","import React, { useEffect, useContext, useState } from \"react\"\nimport { FirebaseContext } from \"../../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCompass as farCompass } from \"@fortawesome/free-regular-svg-icons\"\nimport { faMapMarkerAlt as farMapMarkerAlt } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faLightbulbOn as farLightbulbOn } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faReadme as fabReadme } from \"@fortawesome/free-brands-svg-icons\"\nimport { faChevronRight, faEllipsisH, faTimes } from \"@fortawesome/free-solid-svg-icons\"\nimport { useIntl } from \"react-intl\"\nimport { navigate } from \"gatsby\"\nimport { FormattedMessage } from \"react-intl\"\nimport DOMPurify from \"dompurify\"\n\nimport TimeAgo from \"javascript-time-ago\"\nimport en from \"javascript-time-ago/locale/en\"\nimport es from \"javascript-time-ago/locale/es\"\nTimeAgo.addLocale(es)\nTimeAgo.addDefaultLocale(en)\n\nconst Notifications = ({ setShowDropdown }) => {\n const { locale } = useIntl()\n\n const {\n localFirestore: { notificationsRecord },\n } = useContext(FirebaseContext)\n\n useEffect(() => {\n function clearSelectedText() {\n // bug fix to prevent text from being highlighted in the notifications list\n if (typeof window !== \"undefined\" && window.getSelection) {\n // Get the selection object\n var selection = window.getSelection()\n // Remove all ranges from the selection\n selection.removeAllRanges()\n } else if (document.selection) {\n // For older versions of Internet Explorer\n document.selection.empty()\n }\n }\n clearSelectedText()\n }, [])\n\n return (\n <>\n {\n <div className=\"notifications-list\">\n {notificationsRecord.filter((notification) => !notification.isRead).length > 0 && (\n <>\n <div className=\"notifications-list-header\">\n {\" \"}\n <div className=\"eyebrow component-eyebrow\">\n <FormattedMessage id=\"notifications-new\" defaultMessage=\"What's new\" />\n </div>{\" \"}\n {/* <FontAwesomeIcon icon={faEllipsisH} size=\"lg\" color=\"#40777c\" />{\" \"} */}\n </div>\n\n {notificationsRecord\n .filter((notification) => !notification.isRead)\n .map((notification, index) => (\n <React.Fragment key={`notification-${index}`}>\n <ListNotification notification={notification} index={index} locale={locale} setShowDropdown={setShowDropdown} />\n </React.Fragment>\n ))}\n </>\n )}\n\n {notificationsRecord.filter((notification) => notification.isRead).length > 0 && (\n <>\n <div className=\"notifications-list-header\">\n {\" \"}\n <div className=\"eyebrow component-eyebrow\">\n <span><FormattedMessage id=\"notifications-past\" defaultMessage=\"Past Notifications\" /></span>\n </div>{\" \"}\n {/* <FontAwesomeIcon icon={faEllipsisH} size=\"lg\" color=\"#40777c\" />{\" \"} */}\n </div>\n\n {notificationsRecord\n .filter((notification) => notification.isRead)\n .map((notification, index) => (\n <React.Fragment key={`notification-${index}`}>\n <ListNotification notification={notification} index={index} locale={locale} setShowDropdown={setShowDropdown} />\n </React.Fragment>\n ))}\n </>\n )}\n\n {notificationsRecord.length === 0 && (\n <div className={`notifications-list-item empty`} style={{ textAlign: \"center\" }}>\n <label>No notifications yet</label>\n </div>\n )}\n </div>\n }\n </>\n )\n}\n\nconst ListNotification = ({ notification = \"\", index, locale = \"en-US\", setShowDropdown }) => {\n const [isHovered, setIsHovered] = useState(false)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const {\n localFirestore: { deleteUserNotification },\n } = useContext(FirebaseContext)\n\n // destriucture notification object found in firebase userNotifications collection\n const { message, messageEs, type, publicationDate, notificationId, isRead, pageLink, heading, headingEs } = notification\n const isNavigational = !!pageLink\n\n const handleMouseEnter = () => {\n setIsHovered(true)\n }\n\n const handleMouseLeave = () => {\n setIsHovered(false)\n }\n\n const handleDelete = () => {\n deleteUserNotification(notificationId)\n setIsMenuOpen(false)\n }\n\n // Create formatter (English).\n const timeAgo = locale === \"es-ES\" ? new TimeAgo(\"es-ES\") : new TimeAgo(\"en-US\")\n\n const displayTime = timeAgo.format(publicationDate.toDate()) || \"long ago\"\n\n // map icons to notification types\n const icons = {\n newContent: <FontAwesomeIcon icon={fabReadme} color=\"#37c742\" size=\"2x\" />,\n motivational: <FontAwesomeIcon icon={farLightbulbOn} color=\"#e07306\" size=\"2x\" />,\n accomplishment: <FontAwesomeIcon icon={farCompass} color=\"#c737d3\" size=\"2x\" />,\n initial: <FontAwesomeIcon icon={farMapMarkerAlt} color=\"#00b8ef\" size=\"2x\" />,\n }\n\n function CleanHTML({ dirtyHTML }) {\n if (!dirtyHTML) return \"\"\n\n // Sanitize the text\n const sanitizedText = DOMPurify.sanitize(dirtyHTML)\n\n // OLD CODE for bolding numbers, keeping in case we need to revert\n\n // // Define a regular expression to match numbers\n // const regex = /(\\d+)/g\n\n // // Split the text into parts based on the regex\n // const parts = sanitizedText.split(regex)\n\n // // Map through the parts, wrapping numbers in <strong> tags\n // const formattedText = parts.map((part, index) => {\n // if (part.match(regex)) {\n // return <span key={index}>{part}</span>\n // } else {\n // return part\n // }\n // })\n\n return <div dangerouslySetInnerHTML={{ __html: sanitizedText }} />\n }\n\n const handleNavigation = (e) => {\n e.preventDefault()\n if (isNavigational) {\n const localizedLink = locale === \"es-ES\" ? `/es-ES${notification.pageLink}` : notification.pageLink\n navigate(localizedLink)\n setShowDropdown(false)\n }\n }\n\n const getBackgroundStyle = () => {\n if (isHovered && isNavigational) {\n return { background: \"#F9F9F9\", cursor: \"pointer\" }\n } else {\n return { background: \"white\" }\n }\n }\n\n return (\n <>\n <div\n className={`notifications-list-item ${notification.type}`}\n key={index}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n style={getBackgroundStyle()}\n role={`${isNavigational ? \"link\" : \"\"}`}\n onClick={handleNavigation}\n >\n {isHovered && (\n <div\n className=\"notifications-list-item-menu-section\"\n style={{\n right: isNavigational ? \"35px\" : \"10px\",\n }}\n >\n <button className=\"notifications-list-item-menu-section-button\" onClick={handleDelete}>\n <FontAwesomeIcon icon={faTimes} color=\"#40777c\" size=\"xs\" />\n </button>\n </div>\n )}\n\n <div className={`notifications-list-item-circle ${type}`}>{icons[type]}</div>\n <div className=\"notifications-list-item-message\">\n <label>{locale === \"es-ES\" && headingEs ? headingEs : heading}</label>\n <CleanHTML dirtyHTML={locale === \"es-ES\" && messageEs ? messageEs : message} />\n\n <span style={isRead ? { fontStyle: \"italic\", color: \"#959595\" } : { fontWeight: \"bold\", color: \"#565656\" }}>{displayTime}</span>\n </div>\n\n <div className=\"notifications-list-item-action\">{isNavigational && <FontAwesomeIcon icon={faChevronRight} color=\"#40777c\" />}</div>\n </div>\n </>\n )\n}\n\nexport default Notifications\n","export default {\n\t\"locale\": \"es\",\n\t\"long\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"el año pasado\",\n\t\t\t\"current\": \"este año\",\n\t\t\t\"next\": \"el próximo año\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} año\",\n\t\t\t\t\"other\": \"hace {0} años\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} año\",\n\t\t\t\t\"other\": \"dentro de {0} años\"\n\t\t\t}\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"el trimestre pasado\",\n\t\t\t\"current\": \"este trimestre\",\n\t\t\t\"next\": \"el próximo trimestre\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} trimestre\",\n\t\t\t\t\"other\": \"hace {0} trimestres\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} trimestre\",\n\t\t\t\t\"other\": \"dentro de {0} trimestres\"\n\t\t\t}\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"el mes pasado\",\n\t\t\t\"current\": \"este mes\",\n\t\t\t\"next\": \"el próximo mes\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} mes\",\n\t\t\t\t\"other\": \"hace {0} meses\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} mes\",\n\t\t\t\t\"other\": \"dentro de {0} meses\"\n\t\t\t}\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"la semana pasada\",\n\t\t\t\"current\": \"esta semana\",\n\t\t\t\"next\": \"la próxima semana\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} semana\",\n\t\t\t\t\"other\": \"hace {0} semanas\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} semana\",\n\t\t\t\t\"other\": \"dentro de {0} semanas\"\n\t\t\t}\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"ayer\",\n\t\t\t\"previous-2\": \"anteayer\",\n\t\t\t\"current\": \"hoy\",\n\t\t\t\"next\": \"mañana\",\n\t\t\t\"next-2\": \"pasado mañana\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} dÃa\",\n\t\t\t\t\"other\": \"hace {0} dÃas\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} dÃa\",\n\t\t\t\t\"other\": \"dentro de {0} dÃas\"\n\t\t\t}\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"esta hora\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} hora\",\n\t\t\t\t\"other\": \"hace {0} horas\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} hora\",\n\t\t\t\t\"other\": \"dentro de {0} horas\"\n\t\t\t}\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"este minuto\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} minuto\",\n\t\t\t\t\"other\": \"hace {0} minutos\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} minuto\",\n\t\t\t\t\"other\": \"dentro de {0} minutos\"\n\t\t\t}\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"ahora\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"hace {0} segundo\",\n\t\t\t\t\"other\": \"hace {0} segundos\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"dentro de {0} segundo\",\n\t\t\t\t\"other\": \"dentro de {0} segundos\"\n\t\t\t}\n\t\t}\n\t},\n\t\"short\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"el año pasado\",\n\t\t\t\"current\": \"este año\",\n\t\t\t\"next\": \"el próximo año\",\n\t\t\t\"past\": \"hace {0} a\",\n\t\t\t\"future\": \"dentro de {0} a\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"el trimestre pasado\",\n\t\t\t\"current\": \"este trimestre\",\n\t\t\t\"next\": \"el próximo trimestre\",\n\t\t\t\"past\": \"hace {0} trim.\",\n\t\t\t\"future\": \"dentro de {0} trim.\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"el mes pasado\",\n\t\t\t\"current\": \"este mes\",\n\t\t\t\"next\": \"el próximo mes\",\n\t\t\t\"past\": \"hace {0} m\",\n\t\t\t\"future\": \"dentro de {0} m\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"sem. ant.\",\n\t\t\t\"current\": \"esta sem.\",\n\t\t\t\"next\": \"próx. sem.\",\n\t\t\t\"past\": \"hace {0} sem.\",\n\t\t\t\"future\": \"dentro de {0} sem.\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"ayer\",\n\t\t\t\"previous-2\": \"anteayer\",\n\t\t\t\"current\": \"hoy\",\n\t\t\t\"next\": \"mañana\",\n\t\t\t\"next-2\": \"pasado mañana\",\n\t\t\t\"past\": \"hace {0} d\",\n\t\t\t\"future\": \"dentro de {0} d\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"esta hora\",\n\t\t\t\"past\": \"hace {0} h\",\n\t\t\t\"future\": \"dentro de {0} h\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"este minuto\",\n\t\t\t\"past\": \"hace {0} min\",\n\t\t\t\"future\": \"dentro de {0} min\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"ahora\",\n\t\t\t\"past\": \"hace {0} s\",\n\t\t\t\"future\": \"dentro de {0} s\"\n\t\t}\n\t},\n\t\"narrow\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"el año pasado\",\n\t\t\t\"current\": \"este año\",\n\t\t\t\"next\": \"el próximo año\",\n\t\t\t\"past\": \"hace {0} a\",\n\t\t\t\"future\": \"dentro de {0} a\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"el trimestre pasado\",\n\t\t\t\"current\": \"este trimestre\",\n\t\t\t\"next\": \"el próximo trimestre\",\n\t\t\t\"past\": \"hace {0} trim.\",\n\t\t\t\"future\": \"dentro de {0} trim.\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"el mes pasado\",\n\t\t\t\"current\": \"este mes\",\n\t\t\t\"next\": \"el próximo mes\",\n\t\t\t\"past\": \"hace {0} m\",\n\t\t\t\"future\": \"dentro de {0} m\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"sem. ant.\",\n\t\t\t\"current\": \"esta sem.\",\n\t\t\t\"next\": \"próx. sem.\",\n\t\t\t\"past\": \"hace {0} sem.\",\n\t\t\t\"future\": \"dentro de {0} sem.\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"ayer\",\n\t\t\t\"previous-2\": \"anteayer\",\n\t\t\t\"current\": \"hoy\",\n\t\t\t\"next\": \"mañana\",\n\t\t\t\"next-2\": \"pasado mañana\",\n\t\t\t\"past\": \"hace {0} d\",\n\t\t\t\"future\": \"dentro de {0} d\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"esta hora\",\n\t\t\t\"past\": \"hace {0} h\",\n\t\t\t\"future\": \"dentro de {0} h\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"este minuto\",\n\t\t\t\"past\": \"hace {0} min\",\n\t\t\t\"future\": \"dentro de {0} min\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"ahora\",\n\t\t\t\"past\": \"hace {0} s\",\n\t\t\t\"future\": \"dentro de {0} s\"\n\t\t}\n\t},\n\t\"now\": {\n\t\t\"now\": {\n\t\t\t\"current\": \"ahora\",\n\t\t\t\"future\": \"enseguida\",\n\t\t\t\"past\": \"ahora mismo\"\n\t\t}\n\t},\n\t\"mini\": {\n\t\t\"year\": {\n\t\t\t\"one\": \"{0} año\",\n\t\t\t\"other\": \"{0} años\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"one\": \"{0} mes\",\n\t\t\t\"other\": \"{0} meses\"\n\t\t},\n\t\t\"week\": \"{0} sem.\",\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} dÃa\",\n\t\t\t\"other\": \"{0} dÃas\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"one\": \"{0} hora\",\n\t\t\t\"other\": \"{0} horas\"\n\t\t},\n\t\t\"minute\": \"{0} min.\",\n\t\t\"second\": \"{0} seg.\",\n\t\t\"now\": \"ahora\"\n\t},\n\t\"long-time\": {\n\t\t\"year\": {\n\t\t\t\"one\": \"{0} año\",\n\t\t\t\"other\": \"{0} años\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"one\": \"{0} mes\",\n\t\t\t\"other\": \"{0} meses\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"one\": \"{0} semana\",\n\t\t\t\"other\": \"{0} semanas\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} dÃa\",\n\t\t\t\"other\": \"{0} dÃas\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"one\": \"{0} hora\",\n\t\t\t\"other\": \"{0} horas\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"one\": \"{0} minuto\",\n\t\t\t\"other\": \"{0} minutos\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"one\": \"{0} segundo\",\n\t\t\t\"other\": \"{0} segundos\"\n\t\t}\n\t}\n}","export default {\n\t\"locale\": \"en\",\n\t\"long\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last year\",\n\t\t\t\"current\": \"this year\",\n\t\t\t\"next\": \"next year\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} year ago\",\n\t\t\t\t\"other\": \"{0} years ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} year\",\n\t\t\t\t\"other\": \"in {0} years\"\n\t\t\t}\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last quarter\",\n\t\t\t\"current\": \"this quarter\",\n\t\t\t\"next\": \"next quarter\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} quarter ago\",\n\t\t\t\t\"other\": \"{0} quarters ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} quarter\",\n\t\t\t\t\"other\": \"in {0} quarters\"\n\t\t\t}\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last month\",\n\t\t\t\"current\": \"this month\",\n\t\t\t\"next\": \"next month\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} month ago\",\n\t\t\t\t\"other\": \"{0} months ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} month\",\n\t\t\t\t\"other\": \"in {0} months\"\n\t\t\t}\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last week\",\n\t\t\t\"current\": \"this week\",\n\t\t\t\"next\": \"next week\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} week ago\",\n\t\t\t\t\"other\": \"{0} weeks ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} week\",\n\t\t\t\t\"other\": \"in {0} weeks\"\n\t\t\t}\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} day ago\",\n\t\t\t\t\"other\": \"{0} days ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} day\",\n\t\t\t\t\"other\": \"in {0} days\"\n\t\t\t}\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} hour ago\",\n\t\t\t\t\"other\": \"{0} hours ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} hour\",\n\t\t\t\t\"other\": \"in {0} hours\"\n\t\t\t}\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} minute ago\",\n\t\t\t\t\"other\": \"{0} minutes ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} minute\",\n\t\t\t\t\"other\": \"in {0} minutes\"\n\t\t\t}\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} second ago\",\n\t\t\t\t\"other\": \"{0} seconds ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} second\",\n\t\t\t\t\"other\": \"in {0} seconds\"\n\t\t\t}\n\t\t}\n\t},\n\t\"short\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last yr.\",\n\t\t\t\"current\": \"this yr.\",\n\t\t\t\"next\": \"next yr.\",\n\t\t\t\"past\": \"{0} yr. ago\",\n\t\t\t\"future\": \"in {0} yr.\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last qtr.\",\n\t\t\t\"current\": \"this qtr.\",\n\t\t\t\"next\": \"next qtr.\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} qtr. ago\",\n\t\t\t\t\"other\": \"{0} qtrs. ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} qtr.\",\n\t\t\t\t\"other\": \"in {0} qtrs.\"\n\t\t\t}\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last mo.\",\n\t\t\t\"current\": \"this mo.\",\n\t\t\t\"next\": \"next mo.\",\n\t\t\t\"past\": \"{0} mo. ago\",\n\t\t\t\"future\": \"in {0} mo.\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last wk.\",\n\t\t\t\"current\": \"this wk.\",\n\t\t\t\"next\": \"next wk.\",\n\t\t\t\"past\": \"{0} wk. ago\",\n\t\t\t\"future\": \"in {0} wk.\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} day ago\",\n\t\t\t\t\"other\": \"{0} days ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} day\",\n\t\t\t\t\"other\": \"in {0} days\"\n\t\t\t}\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": \"{0} hr. ago\",\n\t\t\t\"future\": \"in {0} hr.\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": \"{0} min. ago\",\n\t\t\t\"future\": \"in {0} min.\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": \"{0} sec. ago\",\n\t\t\t\"future\": \"in {0} sec.\"\n\t\t}\n\t},\n\t\"narrow\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last yr.\",\n\t\t\t\"current\": \"this yr.\",\n\t\t\t\"next\": \"next yr.\",\n\t\t\t\"past\": \"{0}y ago\",\n\t\t\t\"future\": \"in {0}y\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last qtr.\",\n\t\t\t\"current\": \"this qtr.\",\n\t\t\t\"next\": \"next qtr.\",\n\t\t\t\"past\": \"{0}q ago\",\n\t\t\t\"future\": \"in {0}q\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last mo.\",\n\t\t\t\"current\": \"this mo.\",\n\t\t\t\"next\": \"next mo.\",\n\t\t\t\"past\": \"{0}mo ago\",\n\t\t\t\"future\": \"in {0}mo\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last wk.\",\n\t\t\t\"current\": \"this wk.\",\n\t\t\t\"next\": \"next wk.\",\n\t\t\t\"past\": \"{0}w ago\",\n\t\t\t\"future\": \"in {0}w\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": \"{0}d ago\",\n\t\t\t\"future\": \"in {0}d\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": \"{0}h ago\",\n\t\t\t\"future\": \"in {0}h\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": \"{0}m ago\",\n\t\t\t\"future\": \"in {0}m\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": \"{0}s ago\",\n\t\t\t\"future\": \"in {0}s\"\n\t\t}\n\t},\n\t\"now\": {\n\t\t\"now\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"future\": \"in a moment\",\n\t\t\t\"past\": \"just now\"\n\t\t}\n\t},\n\t\"mini\": {\n\t\t\"year\": \"{0}yr\",\n\t\t\"month\": \"{0}mo\",\n\t\t\"week\": \"{0}wk\",\n\t\t\"day\": \"{0}d\",\n\t\t\"hour\": \"{0}h\",\n\t\t\"minute\": \"{0}m\",\n\t\t\"second\": \"{0}s\",\n\t\t\"now\": \"now\"\n\t},\n\t\"short-time\": {\n\t\t\"year\": \"{0} yr.\",\n\t\t\"month\": \"{0} mo.\",\n\t\t\"week\": \"{0} wk.\",\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} day\",\n\t\t\t\"other\": \"{0} days\"\n\t\t},\n\t\t\"hour\": \"{0} hr.\",\n\t\t\"minute\": \"{0} min.\",\n\t\t\"second\": \"{0} sec.\"\n\t},\n\t\"long-time\": {\n\t\t\"year\": {\n\t\t\t\"one\": \"{0} year\",\n\t\t\t\"other\": \"{0} years\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"one\": \"{0} month\",\n\t\t\t\"other\": \"{0} months\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"one\": \"{0} week\",\n\t\t\t\"other\": \"{0} weeks\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} day\",\n\t\t\t\"other\": \"{0} days\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"one\": \"{0} hour\",\n\t\t\t\"other\": \"{0} hours\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"one\": \"{0} minute\",\n\t\t\t\"other\": \"{0} minutes\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"one\": \"{0} second\",\n\t\t\t\"other\": \"{0} seconds\"\n\t\t}\n\t}\n}","import React, { useState, useContext, useEffect } from \"react\"\nimport \"./notifications.css\"\nimport Notifications from \"./notifications\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faBell } from \"@fortawesome/pro-light-svg-icons\"\nimport { FirebaseContext } from \"../../Firebase\"\n\nconst NotificationsDropdown = () => {\n const [showDropdown, setShowDropdown] = useState(false)\n const {\n localFirestore: { notificationsRecord, markUserNotificationsAsRead },\n notifier,\n } = useContext(FirebaseContext)\n const unreadNotificationCount = notificationsRecord.filter((notification) => !notification.isRead).length\n\n const handleToggleDropdown = (e) => {\n e.preventDefault()\n setShowDropdown(!showDropdown)\n\n if (showDropdown){\n markUserNotificationsAsRead()\n } \n }\n\n const handleOutsideClick = (e) => {\n e.preventDefault()\n // handles outside click for notifications dropdown\n if (\n e?.target?.parentNode?.classList?.contains(\"notifications-icon-svg\") ||\n e?.target?.parentNode?.classList?.contains(\"notifications-icon\") ||\n e?.target?.parentNode?.classList?.contains(\"notifications-dropdown\")\n ) {\n return\n }\n markUserNotificationsAsRead()\n setShowDropdown(false)\n }\n\n useEffect(() => {\n notifier.setIsDisabled(showDropdown)\n }, [showDropdown])\n\n return (\n <div className=\"notifications-dropdown\">\n <div className={`notifications-icon ${showDropdown && \"showing\"}`} onClick={handleToggleDropdown}>\n <FontAwesomeIcon className=\"notifications-icon-svg\" color={\"white\"} style={{ cursor: \"pointer\" }} icon={faBell} size=\"lg\" />\n {unreadNotificationCount > 0 && !notifier.isDisabled && (\n <div className=\"notification-indicator\">\n <span>{unreadNotificationCount}</span>\n </div>\n )}\n </div>\n {showDropdown && (\n <OutsideClickHandler onOutsideClick={handleOutsideClick}>\n <div className=\"dropdown-content\">\n <Notifications setShowDropdown={setShowDropdown} />\n </div>\n </OutsideClickHandler>\n )}\n </div>\n )\n}\n\nexport default NotificationsDropdown\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"title\", \"children\", \"bsPrefix\", \"className\", \"rootCloseEvent\", \"menuRole\", \"disabled\", \"active\", \"renderMenuOnMount\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Dropdown from './Dropdown';\nimport NavLink from './NavLink';\nvar NavDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n title = _ref.title,\n children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n rootCloseEvent = _ref.rootCloseEvent,\n menuRole = _ref.menuRole,\n disabled = _ref.disabled,\n active = _ref.active,\n renderMenuOnMount = _ref.renderMenuOnMount,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* NavItem has no additional logic, it's purely presentational. Can set nav item class here to support \"as\" */\n var navItemPrefix = useBootstrapPrefix(undefined, 'nav-item');\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n ref: ref\n }, props, {\n className: classNames(className, navItemPrefix)\n }), /*#__PURE__*/React.createElement(Dropdown.Toggle, {\n id: id,\n eventKey: null,\n active: active,\n disabled: disabled,\n childBsPrefix: bsPrefix,\n as: NavLink\n }, title), /*#__PURE__*/React.createElement(Dropdown.Menu, {\n role: menuRole,\n renderOnMount: renderMenuOnMount,\n rootCloseEvent: rootCloseEvent\n }, children));\n});\nNavDropdown.displayName = 'NavDropdown';\nNavDropdown.Item = Dropdown.Item;\nNavDropdown.ItemText = Dropdown.ItemText;\nNavDropdown.Divider = Dropdown.Divider;\nNavDropdown.Header = Dropdown.Header;\nexport default NavDropdown;","import React, { useContext, useEffect, useState } from \"react\"\nimport { useLocation } from \"@reach/router\"\nimport { NavDropdown, Navbar, Dropdown } from \"react-bootstrap\"\nimport { getCurrentPageLanguage } from \"../../linkUtils\"\nimport { defaultLanguage, languageNames } from \"../../i18n\"\nimport { changeLocale } from \"../../link\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faGlobe } from \"@fortawesome/pro-light-svg-icons\"\nimport { useQueryParam, StringParam, JsonParam } from \"use-query-params\"\nimport { FirebaseContext } from \"../../components/Firebase\"\nimport \"./language-switcher.css\"\n\nconst LanguageSwitcher = (props) => {\n const { firebase } = useContext(FirebaseContext)\n const location = useLocation()\n const [currentLanguage, setCurrentLanguage] = useState(\n languageNames[defaultLanguage]\n )\n const [cssClass, setCssClass] = useState(true)\n const [displayLanguageDropdown, setDisplayLanguageDropdown] = useState(true)\n\n // URL search parameters for Algolia components\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [sortByPageQuery, setSortByPageQuery] = useQueryParam(\n \"sortByPageQuery\",\n StringParam\n )\n\n const loginSignUpPaths = [\n \"/es-ES/login/individuals/\",\n \"/login/individuals/\",\n \"/signup/individuals/\",\n \"/es-ES/signup/individuals/\",\n \"/login/\",\n \"/es-ES/login/\",\n ];\n const hideLanguageSwitcher = [\n \"/educator/\",\"/educator\", \"/educator/students/manage/\", \"/educator/students/manage\", \"/educator/students/group/\",\n \"/educator/students/group\", \"/educator/faculty\",\n \"/educator/faculty/\", \"/educator/students\", \"/educator/students/\", \"/educator/analytics\", \"/educator/analytics/\"\n ];\n\n\n useEffect(() => {\n if (location?.pathname) {\n if (loginSignUpPaths.includes(location.pathname)) {\n setCssClass(false)\n } else {\n setCssClass(true)\n }\n }\n }, [location]);\n\n useEffect(() => {\n // Check if the current path is in the list of hidden paths to hide the language switcher\n const shouldHideLanguageSwitcher = hideLanguageSwitcher.some((path) =>\n location.pathname.startsWith(path)\n );\n setDisplayLanguageDropdown(!shouldHideLanguageSwitcher);\n }, [location]);\n\n useEffect(() => {\n const lang = getCurrentPageLanguage(location.pathname)\n setCurrentLanguage(languageNames[lang])\n }, [location])\n\n\n // Clear filters and change locale\n const handleLocaleChangeAndClearFilters = async (languageKey) => {\n setQueryFilters(undefined)\n setSortByPageQuery(undefined)\n changeLocale(languageKey)\n\n try {\n await firebase.updateProfile({\n data: { language: languageKey === \"es-ES\" ? \"esp\" : \"eng\" },\n })\n } catch (error) {\n console.error(\"Error updating user profile language\", error)\n }\n }\n\n return (\n <div style={{display: 'flex', alignItems: 'center', marginLeft: '.5rem'}}>\n <FontAwesomeIcon icon={faGlobe} color=\"white\" />\n\n <NavDropdown\n alignRight\n title={currentLanguage}\n drop={props.top ? 'down' : 'up'}\n id={props.footer ? '' : `language-switcher`}\n onClick={() => {\n document.body.click()\n }}\n >\n \n {Object.keys(languageNames).map(languageKey => (\n <a\n key={languageKey}\n onClick={() => handleLocaleChangeAndClearFilters(languageKey)}\n className=\"dropdown-item menu-class\"\n >\n {languageNames[languageKey]}\n </a>\n ))}\n </NavDropdown>\n\n </div>\n )\n}\n\nexport default LanguageSwitcher\n","import React, { useContext, useState, useEffect } from \"react\"\nimport Link, { navigate } from \"../../link\"\nimport \"bootstrap/dist/css/bootstrap.min.css\"\nimport { Dropdown } from \"react-bootstrap\"\nimport { faSearch as farSearch, faArrowLeft } from \"@fortawesome/pro-regular-svg-icons\"\nimport { FirebaseContext } from \"../Firebase\"\nimport Modal from \"react-bootstrap/Modal\"\nimport StyledFirebaseAuth from \"react-firebaseui/StyledFirebaseAuth\"\nimport AlgoliaGlobalSearch from \"../algolia/algolia-global\"\nimport PortfolioProfile from \"../../../static/assets/images/portfolio-profile-default.jpg\"\nimport { useLocation } from \"@reach/router\"\n// import HeaderLogo from \"../../../static/assets/images/wingspans-w-icon_white.svg\"\nimport HeaderLogo from \"../../../static/assets/images/logo2.png\"\n\nimport HeaderLogoOnly from \"../../../static/assets/images/wingspans-w-icon_white-mobile.svg\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faBars } from \"@fortawesome/free-solid-svg-icons\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport GetStartedFlyout from \"../get-started/get-started\"\nimport ProgressCircle from \"../progress-circle/progress-circle\"\nimport { calculateCompletionPercent } from \"../get-started/utils/utils\"\nimport LEVELS from \"../levels/Levels.js\"\nimport LevelsModal from \"../levels/LevelsModal\"\nimport NotificationsDropdown from \"../dashboard/notifications/notifications-dropdown\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport LanguageSwitcher from \"../language-switcher/LanguageSwitcher.js\"\nimport { sendStandardToast } from \"../toasts/standard-toast\"\n\nconst GetStartedProgressPercent = ({ progressPercent, onClick }) => {\n return (\n <button\n className=\"progress-percent-button\"\n style={{\n background: \"transparent\",\n }}\n onClick={onClick}\n >\n <div className=\"progress-circle-container\">\n <ProgressCircle progressPercentage={progressPercent} size=\"42px\" circleColor=\"var(--color-74e4fb)\" backgroundColor=\"var(--color-363636)\" />\n <div className=\"progress-text\">{progressPercent}%</div>\n </div>\n </button>\n )\n}\n\nconst AccountMenu = (props) => {\n const location = useLocation()\n\n const {\n firebase,\n user,\n profile,\n notifier,\n localFirestore: { level, pointTotalRecord },\n walkThroughStepValues,\n setWalkThroughStepValues,\n } = useContext(FirebaseContext)\n\n const { locale } = useIntl()\n const [showModal, setShowModal] = useState(false)\n const [showSignIn, setShowSignIn] = useState(true)\n const [isFirebase, setIsFirebase] = useState(false)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [currentPage, setCurrentPage] = useState(null)\n // This is for the mobile compact display only\n const [showSearch, setShowSearch] = useState(false)\n const [showFlyout, setShowFlyout] = useState(false)\n const [showLevelModal, setShowLevelModal] = useState(false)\n const [getStartedProgress, setGetStartedProgress] = useState(-1)\n const [walkthoughStepsLoaded, setWalkthroughStepsLoaded] = useState(false)\n\n const focusInput = () => {\n const inputElement = document.querySelector('input[aria-controls=\"react-autowhatever-1\"][class=\"react-autosuggest__input\"]')\n\n if (inputElement) {\n inputElement.focus()\n return\n }\n }\n\n useEffect(() => {\n if (showSearch) {\n focusInput()\n }\n }, [showSearch])\n\n const handleOutsideSearchClick = (e) => {\n if (e.target.parentNode.classList?.contains(\"search-toggle-button\") || e.target.parentNode.classList?.contains(\"search-toggle-icon\")) {\n return\n }\n // handles outside click for notifications dropdown\n setShowSearch(false)\n }\n\n const handleMobileSearchClick = () => {\n !showSearch ? setShowSearch(true) : setShowSearch(false)\n }\n\n const handleClose = () => setShowModal(false)\n\n const getWalkthroughSteps = async () => {\n const res = await firebase.getWalkthroughSteps()\n setWalkthroughStepsLoaded(true)\n if (!res) return\n setWalkThroughStepValues({ ...walkThroughStepValues, ...res })\n }\n\n const hiddenPaths = [\n \"/signup/promo/all/\",\n \"/signup/promo/all\",\n \"/signup/promo/microsoft/\",\n \"/signup/promo/microsoft\",\n \"/signup/promo/google/\",\n \"/signup/promo/google\",\n ]\n\n useEffect(() => {\n // hides the sign in button on matching paths\n if (location?.pathname) {\n setCurrentPage(location.pathname.split(\"/\")[locale === \"en-US\" ? 2 : 3])\n\n hiddenPaths.includes(location.pathname) ? setShowSignIn(false) : setShowSignIn(true)\n }\n }, [location])\n\n useEffect(() => {\n let isCancelled = false\n if (firebase && user && !isCancelled) {\n setIsFirebase(true)\n } else {\n setIsFirebase(false)\n }\n\n return () => {\n isCancelled = true\n }\n }, [firebase, user])\n\n useEffect(() => {\n let isCancelled = false\n if (isFirebase && !isCancelled) {\n getWalkthroughSteps()\n\n return () => {\n isCancelled = true\n }\n }\n }, [isFirebase])\n\n useEffect(() => {\n const percentComplete = calculateCompletionPercent(walkThroughStepValues)\n setGetStartedProgress(percentComplete)\n }, [walkThroughStepValues])\n\n // @see https://github.com/firebase/firebaseui-web\n // @see https://github.com/firebase/firebaseui-web-react\n // https://firebaseopensource.com/projects/firebase/firebaseui-web/\n function getUiConfig() {\n return {\n signInFlow: \"popup\",\n credentialHelper: \"none\",\n signInOptions: [\n firebase.app.auth.GoogleAuthProvider.PROVIDER_ID,\n firebase.app.auth.EmailAuthProvider.PROVIDER_ID,\n {\n provider: \"microsoft.com\",\n providerName: \"Microsoft\",\n buttonColor: \"#2F2F2F\",\n loginHintKey: \"login_hint\",\n },\n ],\n // signInSuccessUrl: '/dashboard',\n callbacks: {\n signInSuccessWithAuthResult: async () => {\n setShowModal(false)\n\n const profileResponse = await firebase.getProfile()\n const membershipResponse = await firebase.getUserMembership()\n const now = new Date()\n // When using a free-forever coupon, no expiration is set for the account, so account for both cases\n const membershipIsActive = now.getTime() < membershipResponse?.expiresDate * 1000 || !membershipResponse?.expiresDate\n\n if (profileResponse && membershipResponse && membershipResponse.active && membershipIsActive === true) {\n navigate(\"/dashboard\")\n setIsFirebase(true)\n } else {\n await firebase.logout()\n setIsFirebase(false)\n\n sendStandardToast({\n heading: (\n <FormattedMessage\n id=\"403-para-1-warning\"\n defaultMessage=\"Warning: you do not have access to the site with this email\n but we are still determined to help you find your way in life!\"\n />\n ),\n message: (\n <>\n <FormattedMessage id=\"403-to-get-access-please\" defaultMessage=\"To get access, please\" />{\" \"}\n <a href=\"/contact\">\n <FormattedMessage id=\"registration-form-contact\" defaultMessage=\"contact\" />\n </a>{\" \"}\n <FormattedMessage id=\"registration-form-notification-3-sub-part\" defaultMessage=\"our team with questions.\" />\n </>\n ),\n })\n\n navigate(\"/\")\n }\n },\n },\n }\n }\n\n const handleLogoutClick = async (e) => {\n e.preventDefault()\n\n const now = new Date()\n\n if (isFirebase) {\n try {\n // These need to be chained so that the update profile finishes\n // before the user is logged out.\n await firebase\n .updateProfile({ data: { logoutDate: now } })\n .then(firebase.logout())\n .then(navigate(\"/\"))\n\n setIsFirebase(false)\n } catch (e) {\n console.error(e)\n setIsFirebase(false)\n }\n }\n }\n\n const handleFlyoutOpen = () => {\n setShowFlyout(true)\n }\n\n const handleWalkThroughStepChange = async (stepKey) => {\n setWalkThroughStepValues({\n ...walkThroughStepValues,\n [stepKey]: !walkThroughStepValues[stepKey],\n })\n const res = await firebase.saveWalkthroughStep(stepKey, !walkThroughStepValues[stepKey])\n if (!res) {\n return\n }\n }\n\n const handleShowLevelModalHide = () => {\n setShowLevelModal(false)\n }\n\n useEffect(() => {\n if (!pointTotalRecord) return\n\n if (pointTotalRecord >= 80 && pointTotalRecord < 100) {\n notifier.handleApproachingLevel({ ...LEVELS[3], userPoints: pointTotalRecord })\n } else if (pointTotalRecord >= 280 && pointTotalRecord < 300) {\n notifier.handleApproachingLevel({ ...LEVELS[4], userPoints: pointTotalRecord })\n } else if (pointTotalRecord >= 480 && pointTotalRecord < 500) {\n notifier.handleApproachingLevel({ ...LEVELS[5], userPoints: pointTotalRecord })\n } else if (pointTotalRecord >= 680 && pointTotalRecord < 700) {\n notifier.handleApproachingLevel({ ...LEVELS[6], userPoints: pointTotalRecord })\n } else if (pointTotalRecord >= 980 && pointTotalRecord < 1000) {\n notifier.handleApproachingLevel({ ...LEVELS[7], userPoints: pointTotalRecord })\n }\n }, [pointTotalRecord])\n\n return (\n <>\n {!!isFirebase && !!user && !!user?.email && !!user?.membership?.active ? (\n // this needs to account for inactive users with auth\n <>\n <div className=\"inner-header\">\n <div className=\"logo\">\n <Link to={user?.membership?.active ? \"/dashboard\" : \"/\"}>\n <img className=\"logo-image\" src={HeaderLogo} alt={props.siteTitle} />\n <img className=\"logo-image-small\" src={HeaderLogoOnly} alt={props.siteTitle} />\n </Link>\n </div>\n\n <div className=\"search-wrapper\">\n <div className={`search-container ${showSearch ? \"show\" : \"hide\"}`}>\n {\" \"}\n <OutsideClickHandler onOutsideClick={handleOutsideSearchClick}>\n <div className=\"search search-default\" style={{ position: \"relative\", zIndex: \"100000000\" }}>\n <AlgoliaGlobalSearch />\n <FontAwesomeIcon className=\"search-autocomplete-icon\" icon={farSearch} />\n </div>\n </OutsideClickHandler>\n </div>\n </div>\n\n <div className=\"heading-back-wrapper\">\n <Link className=\"create-report-page-heading d-none\" to=\"/educator/\">\n <FontAwesomeIcon style={{ marginRight: \"10px\" }} icon={faArrowLeft} size=\"lg\" color=\"#000\" />\n back\n </Link>\n <button className=\"search-toggle-button\" onClick={handleMobileSearchClick}>\n <FontAwesomeIcon\n className=\"search-toggle-icon\"\n style={{\n color: \"#74e4fb\",\n }}\n icon={farSearch}\n />\n </button>\n </div>\n\n <div>\n <LanguageSwitcher top={true} />\n </div>\n\n <button\n className=\"profile-points\"\n onClick={() => {\n setShowLevelModal(true)\n }}\n >\n {level !== null && LEVELS[level]?.image ? (\n level === 0 ? (\n <FontAwesomeIcon icon={LEVELS[level].image} style={{ marginRight: \"0.5rem\" }} className=\"profile-point-image\" />\n ) : (\n <img src={LEVELS[level].image} alt={LEVELS[level].name} className=\"profile-point-image\" />\n )\n ) : null}\n <div style={{ color: level ? LEVELS[level].profileColor : \"\" }}>{pointTotalRecord}</div>\n </button>\n\n <LevelsModal userOpened={showLevelModal} handleShowLevelModalHide={handleShowLevelModalHide} />\n\n {walkthoughStepsLoaded && getStartedProgress >= 0 && getStartedProgress < 100 && (\n <>\n <div className=\"get-started get-started-desktop-only\">\n {getStartedProgress > 0 ? (\n <GetStartedProgressPercent progressPercent={getStartedProgress} onClick={handleFlyoutOpen} />\n ) : (\n <button className=\"get-started-button button component-button component-button-login\" onClick={handleFlyoutOpen}>\n <FormattedMessage id=\"account-menu-get-started\" defaultMessage=\"Get Started\" />\n </button>\n )}\n </div>\n <div className=\"get-started get-started-mobile-only\">\n {getStartedProgress > 0 ? (\n <GetStartedProgressPercent progressPercent={getStartedProgress} onClick={handleFlyoutOpen} />\n ) : (\n <button className=\"get-started-button button component-button component-button-login\" onClick={handleFlyoutOpen}>\n <FormattedMessage id=\"account-menu-get-started\" defaultMessage=\"Get Started\" />\n </button>\n )}\n </div>\n </>\n )}\n\n <NotificationsDropdown profile={profile} portfolioProfile={PortfolioProfile} />\n\n <div className=\"profile-container\">\n <div className=\"profile-header\">\n <Dropdown alignRight>\n <Dropdown.Toggle variant=\"success\" id=\"dropdown-basic\">\n <div>\n {!!profile && !!profile.profileImageUrl ? (\n <img\n className=\"profile-image\"\n style={{\n maxWidth: \"100%\",\n objectFit: \"cover\",\n objectPosition: \"center top\",\n }}\n src={profile.profileImageUrl}\n alt=\"user profile\"\n />\n ) : (\n <img className=\"profile-image\" alt=\"user profile\" src={PortfolioProfile} />\n )}\n </div>\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n <Dropdown.Item>\n <Link className=\"dropdown-item\" to=\"/dashboard\">\n <FormattedMessage id=\"account-menu-my-dashboard\" defaultMessage=\"My Dashboard\" />\n </Link>\n </Dropdown.Item>\n <Dropdown.Item>\n <Link className=\"dropdown-item\" to=\"/member/account\">\n <FormattedMessage id=\"account-menu-my-account\" defaultMessage=\"My Account\" />\n </Link>{\" \"}\n </Dropdown.Item>\n <Dropdown.Item>\n <Link className=\"dropdown-item\" to=\"/\" onClick={handleLogoutClick}>\n <FormattedMessage id=\"account-menu-logout\" defaultMessage=\"Logout\" />\n </Link>\n </Dropdown.Item>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n </div>\n </div>\n\n <GetStartedFlyout\n profile={profile}\n show={showFlyout}\n setShow={setShowFlyout}\n onStepChange={handleWalkThroughStepChange}\n stepsData={walkThroughStepValues}\n />\n </>\n ) : (\n <div className=\"inner-header\" style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n <div className=\"logo\">\n <Link to={user?.membership?.active ? \"/dashboard\" : \"/\"}>\n <img className=\"logo-image\" src={HeaderLogo} alt={props.siteTitle} />\n </Link>\n </div>\n\n <div className=\"links\">\n <Link to={\"/signup/educators\"} className=\"desktop-only\">\n <div className={currentPage === \"educators\" ? \"selected\" : \"\"}>\n <FormattedMessage id=\"account-menu-educators\" defaultMessage=\"Educators\" />\n </div>\n </Link>\n <Link to={\"/signup/employers\"} className=\"desktop-only\">\n <div className={currentPage === \"employers\" ? \"selected\" : \"\"}>\n <FormattedMessage id=\"account-menu-employers\" defaultMessage=\"Employers\" />\n </div>\n </Link>\n <Link to={\"/login\"} style={{ height: \"unset\" }}>\n <button>\n <FormattedMessage id=\"account-menu-sign-in\" defaultMessage=\"Sign In\" />\n </button>\n </Link>\n\n <div className=\"menu-toggle mobile-only\">\n <FontAwesomeIcon color={\"white\"} style={{ cursor: \"pointer\" }} icon={faBars} size=\"lg\" onClick={() => setIsMenuOpen(!isMenuOpen)} />\n <OutsideClickHandler onOutsideClick={() => setIsMenuOpen(false)}>\n <div\n className=\"mobile-dropdown\"\n style={{\n display: isMenuOpen ? \"flex\" : \"none\",\n height: isMenuOpen ? \"fit-content\" : \"0px\",\n }}\n >\n <Link to={\"/signup/educators\"}>\n <div className={currentPage === \"educators\" ? \"selected\" : \"\"}>\n <FormattedMessage id=\"account-menu-educators\" defaultMessage=\"Educators\" />\n </div>\n </Link>\n <Link to={\"/signup/employers\"}>\n <div className={currentPage === \"employers\" ? \"selected\" : \"\"}>\n <FormattedMessage id=\"account-menu-employers\" defaultMessage=\"Employers\" />\n </div>\n </Link>\n </div>\n </OutsideClickHandler>\n </div>\n </div>\n\n <Modal show={showModal} onHide={handleClose} centered>\n <Modal.Header closeButton>\n <Modal.Title as={\"p\"}>\n <FormattedMessage id=\"account-menu-sign-in\" defaultMessage=\"Sign In\" />\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>{firebase && <StyledFirebaseAuth uiConfig={getUiConfig()} firebaseAuth={firebase.auth} />}</Modal.Body>\n <Modal.Footer>\n <p>\n <FormattedMessage id=\"account-menu-don't-have-an-account\" defaultMessage=\"Don't have an account?\" />{\" \"}\n <Link to=\"/signup/individuals\" onClick={handleClose}>\n <FormattedMessage id=\"account-menu-sign-up\" defaultMessage=\"Sign up\" />\n </Link>\n </p>\n </Modal.Footer>\n </Modal>\n </div>\n )}\n </>\n )\n}\n\nexport default AccountMenu\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNC4xMjkiIGhlaWdodD0iMjQuMzc2IiB2aWV3Qm94PSIwIDAgMjQuMTI5IDI0LjM3NiI+CiAgPGcgaWQ9IndpbmdzcGFucy13LWljb25fd2hpdGVfMV8iIGRhdGEtbmFtZT0id2luZ3NwYW5zLXctaWNvbl93aGl0ZSAoMSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjggLTAuNikiPgogICAgPHBhdGggaWQ9IlBhdGhfNjIiIGRhdGEtbmFtZT0iUGF0aCA2MiIgZD0iTTE5Ljk1MywyNC4wNDlTMTQuNCwxNS4zOCwxNC40LDkuNHMzLjY3MS04LjMsNS41NTMtOC4zLDUuNTUzLDIuMzE4LDUuNTUzLDguMy01LjU1MywxNC42NS01LjU1MywxNC42NVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03LjA4OSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzgxYmRjNyIgc3Ryb2tlLXdpZHRoPSIxIi8+CiAgICA8cGF0aCBpZD0iUGF0aF82MyIgZGF0YS1uYW1lPSJQYXRoIDYzIiBkPSJNMjQuMDE1LDE5Ljcxcy04LjU4MSw1LjYxLTE0LjUsNS42MVMxLjMsMjEuNjExLDEuMywxOS43MSwzLjU5NCwxNC4xLDkuNTE0LDE0LjFzMTQuNSw1LjYxLDE0LjUsNS42MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTYuOTczKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODFiZGM3IiBzdHJva2Utd2lkdGg9IjEiLz4KICA8L2c+Cjwvc3ZnPgo=\"","import React, { useContext, useEffect, useState } from \"react\"\nimport { FirebaseContext } from \"./Firebase\"\nimport { Alert } from \"react-bootstrap\"\nimport Link from \"../link\"\nimport { FormattedMessage } from \"react-intl\"\n\nconst BannerMessage = () => {\n const { loading, user } = useContext(FirebaseContext)\n const [showBanner, setShowBanner] = useState(false)\n\n useEffect(() => {\n if (!loading && user) {\n if (user.membership && user.membership.active === false) {\n setShowBanner(true)\n }\n }\n }, [loading, user])\n\n return (\n <>\n {showBanner && (\n <Alert variant={\"warning\"} style={{ marginBottom: 0 }}>\n <FormattedMessage id=\"banner-message\" defaultMessage=\"You're membership has expired. Please visit your\" />{\" \"}\n <Link to=\"/member/account\"><FormattedMessage id=\"banner-message-account-page\" defaultMessage=\"Account page\" /></Link> <FormattedMessage id=\"banner-message-to-renew\" defaultMessage=\"to renew.\" />\n </Alert>\n )}\n </>\n )\n}\n\nexport default BannerMessage\n","import React, { useState, useEffect } from \"react\"\nimport { useLocation } from \"@reach/router\"\n\nconst FinalistBanner = () => {\n const location = useLocation()\n\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const paths = [\"/\", \"/signup/employers/\", \"/signup/employers\", \"/signup/educators/\", \"/signup/educators\"]\n\n if (paths.includes(location.pathname)) {\n setIsVisible(true)\n } else {\n setIsVisible(false)\n }\n \n }\n }, [location])\n\n return (\n <div\n className=\"finalist-banner\"\n style={{\n display: isVisible ? \"flex\" : \"none\",\n backgroundColor: \"#dcf8fe\",\n textAlign: \"center\",\n alignItems: \"center\",\n justifyContent: \"center\",\n columnGap: \"2rem\",\n rowGap: \"1rem\",\n padding: \"0.7rem 2rem\",\n flexWrap: \"wrap\",\n }}\n >\n <div>\n <span>\n Wingspans is a <b>winner</b> of the <b>Engaging Adult Learners in Higher Education Track</b> Tools Competition\n </span>\n </div>\n <div\n style={{\n backgroundColor: \"aliceblue\",\n padding: \"0.25rem 0.8rem\",\n borderRadius: \"5rem\",\n }}\n >\n <a href=\"https://tools-competition.org/2023-24-winners-press-release/\" style={{ fontWeight: \"bold\" }} target=\"_blank\" >\n Learn More\n </a>\n </div>\n </div>\n )\n}\n\nexport default FinalistBanner\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { faReply } from \"@fortawesome/pro-regular-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport Link from \"../../link\"\nimport { Role } from \"./utils\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { useLocation } from \"@reach/router\"\nimport { navigate } from \"gatsby\"\n\nconst BackToEducatorDashboardButton = ({ role }) => {\n const { profile } = useContext(FirebaseContext)\n const location = useLocation()\n\n const [isVisible, setIsVisible] = useState(true)\n\n useEffect(() => {\n const hiddenPagePaths = [\"/educator/\", \"/educator\"]\n const currentPath = location?.pathname\n setIsVisible(!hiddenPagePaths.some((path) => currentPath?.startsWith(path)))\n }, [location])\n\n const shouldDisplayButton =\n isVisible &&\n (role === Role.SUPERADMIN ||\n role === Role.ADMIN ||\n role === Role.FACULTY ||\n role === Role.EDUCATOR ||\n role === Role.SUPERADMINFIREBASECONST ||\n profile?.membershipType === Role.EDUCATOR)\n\n if (!shouldDisplayButton) {\n return null\n }\n\n return (\n <div onClick={() => navigate(\"/educator\", { replace: true })} className=\"back-to-admin\" >\n <FontAwesomeIcon color=\"#00B8EF\" icon={faReply} />\n <p className=\"back-to-admin-text\" >View Admin Dashboard</p>\n </div>\n )\n}\n\nexport default BackToEducatorDashboardButton\n","import React, { useContext, useState, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\nimport AccountMenu from \"../components/Firebase/account-menu\"\nimport BannerMessage from \"./BannerMessage\"\nimport HeaderLogo from \"../../static/assets/images/wingspans-w-icon_white.svg\"\nimport { FirebaseContext } from \"../components/Firebase/index\"\nimport { useLocation } from \"@reach/router\"\nimport useWindowDimensions from \"../components/hooks/useWindowDimensions\"\nimport FinalistBanner from \"./promotional/banners/finalists\"\nimport \"./header.css\"\nimport BackToEducatorDashboardButton from \"./educator/BackToEducatorDashboardButton\"\nimport { Role } from \"./educator/utils\"\n\nconst Header = ({ siteTitle }) => {\n const location = useLocation()\n const { user, profile } = useContext(FirebaseContext)\n\n const [isVisible, setIsVisible] = useState(true)\n const { height, width } = useWindowDimensions()\n const isUserLoggedIn = typeof window !== \"undefined\" ? window?.localStorage?.getItem(`wings-session:${profile?.userId}`) : \"\"\n\n useEffect(() => {\n // Hide the nav bar on the following pages. Include trailing slash and non-trailing slash versions.\n const hiddenPagePaths = [\n \"/login\",\n \"/login/\",\n \"/login/individuals\",\n \"/login/individuals/\",\n \"/signup/individuals\",\n \"/signup/individuals/\",\n \"/es-ES/login\",\n \"/es-ES/login/\",\n \"/es-ES/login/individuals\",\n \"/es-ES/login/individuals/\",\n \"/es-ES/signup/individuals\",\n \"/es-ES/signup/individuals/\",\n \"/passwordless/authentication\",\n \"/passwordless/authentication/\",\n \"/educator/\",\n \"/educator\",\n \"/educator/students\",\n \"/educator/students/\",\n \"/educator/students/group/\",\n \"/educator/students/group\",\n \"/educator/faculty\",\n \"/educator/faculty/\",\n \"/educator/analytics\",\n \"/educator/analytics/\",\n \"/educator/analytics/report\",\n \"/educator/analytics/report/\",\n \"/profile/\"\n ]\n\n const currentPath = location?.pathname\n\n const isVisible = !hiddenPagePaths.some((path) => currentPath.startsWith(path))\n setIsVisible(isVisible)\n }, [location])\n\n useEffect(() => {\n if (typeof document !== \"undefined\" && isVisible) {\n const isTallNav = width > 1200 ? true : false\n document.body.style.paddingTop = isTallNav ? \"80px\" : \"66px\"\n }\n\n return () => {\n if (typeof document !== \"undefined\") {\n document.body.style.paddingTop = \"0px\"\n }\n }\n }, [isVisible, width])\n\n return (\n <>\n {isVisible && (\n <div className=\"header\" role=\"banner\">\n <AccountMenu siteTitle={siteTitle} />\n <BannerMessage />\n <FinalistBanner />\n </div>\n )}\n {!!isUserLoggedIn && <BackToEducatorDashboardButton role={profile?.role || Role.STUDENT} />}\n </>\n )\n}\n\nHeader.propTypes = {\n siteTitle: PropTypes.string,\n}\n\nHeader.defaultProps = {\n siteTitle: ``,\n}\n\nexport default Header\n","import React, { useState, useEffect } from \"react\"\nimport Link from \"../link\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faFacebook as fabFacebook } from \"@fortawesome/free-brands-svg-icons\"\nimport { faTwitter as fabTwitter } from \"@fortawesome/free-brands-svg-icons\"\nimport { faLinkedinIn as fabLinkedinIn } from \"@fortawesome/free-brands-svg-icons\"\nimport FooterLogo from \"../../static/assets/images/logo-with-text-vertical.png\"\nimport { useLocation } from \"@reach/router\"\nimport \"./footer.css\"\nimport { FormattedMessage } from \"react-intl\"\nimport LanguageSwitcher from \"./language-switcher/LanguageSwitcher\"\n\nconst Footer = ({ siteTitle }) => {\n const location = useLocation()\n const [isVisible, setIsVisible] = useState(true)\n const localizationEnabled = process.env.GATSBY_ENABLE_LOCALIZATION === \"true\"\n\n\n useEffect(() => {\n // paths to prevent from being rendered on page\n const hiddenPagePaths = [\n \"/login\",\n \"/login/\",\n \"/login/individuals\",\n \"/login/individuals/\",\n \"/signup/individuals\",\n \"/signup/individuals/\",\n \"/es-ES/login\",\n \"/es-ES/login/\",\n \"/es-ES/login/individuals\",\n \"/es-ES/login/individuals/\",\n \"/es-ES/signup/individuals\",\n \"/es-ES/signup/individuals/\",\n \"/passwordless/authentication\",\n \"/educator/\",\n \"/educator\",\n \"/educator/students\",\n \"/educator/students/\",\n \"/educator/students/group/\",\n \"/educator/students/group\",\n \"/educator/faculty\",\n \"/educator/faculty/\", \n \"/educator/analytics\",\n \"/educator/analytics/\"\n ]\n const currentPath = location?.pathname;\n const isVisible = !hiddenPagePaths.some(path => currentPath.startsWith(path));\n setIsVisible(isVisible)\n }, [location])\n\n return (\n <>\n {isVisible && (\n <div className=\"footer\">\n <div className=\"inner inner-footer\">\n <div className=\"footer-primary\">\n <span className=\"logo\">\n <Link to=\"/\">\n <img\n className=\"logo-image\"\n src={FooterLogo}\n alt={siteTitle}\n />\n </Link>\n </span>\n\n <nav className=\"navigation\">\n <ul className=\"menu-secondary menu-secondary-level-0\">\n <li>\n <span role=\"button\">\n {\" \"}\n <FormattedMessage\n id=\"footer-about-wingspans\"\n defaultMessage=\"About Wingspans\"\n />\n </span>\n <ul className=\"menu-secondary menu-secondary-level-1\">\n <li>\n <Link to=\"/about\">\n {\" \"}\n <FormattedMessage\n id=\"footer-about-us\"\n defaultMessage=\"About Us\"\n />\n </Link>\n </li>\n <li>\n <Link to=\"/news\">\n {\" \"}\n <FormattedMessage\n id=\"footer-news\"\n defaultMessage=\"News\"\n />\n </Link>\n </li>\n </ul>\n </li>\n <li>\n <span role=\"button\">\n {\" \"}\n <FormattedMessage\n id=\"footer-partners\"\n defaultMessage=\"Partners\"\n />\n </span>\n <ul className=\"menu-secondary menu-secondary-level-1\">\n <li>\n <Link to=\"/signup/employers\">\n {\" \"}\n <FormattedMessage\n id=\"footer-employers\"\n defaultMessage=\"Employers\"\n />\n </Link>\n </li>\n <li>\n <Link to=\"/signup/educators\">\n {\" \"}\n <FormattedMessage\n id=\"footer-educators\"\n defaultMessage=\"Educators\"\n />\n </Link>\n </li>\n </ul>\n </li>\n <li>\n <span role=\"button\">\n {\" \"}\n <FormattedMessage\n id=\"footer-support\"\n defaultMessage=\"Support\"\n />\n </span>\n <ul className=\"menu-secondary menu-secondary-level-1\">\n <li>\n <Link to=\"/contact\">\n {\" \"}\n <FormattedMessage\n id=\"footer-contact\"\n defaultMessage=\"Contact\"\n />\n </Link>\n </li>\n </ul>\n </li>\n </ul>\n </nav>\n\n <ul className=\"social-links\">\n <li>\n <a\n aria-label=\"LinkedIn\"\n href=\"https://www.linkedin.com/company/wing-spans/\"\n >\n <FontAwesomeIcon icon={fabLinkedinIn} />\n </a>\n </li>\n <li>\n <a aria-label=\"Twitter\" href=\"https://twitter.com/Wing_spans\">\n <FontAwesomeIcon icon={fabTwitter} />\n </a>\n </li>\n <li>\n <a\n aria-label=\"Facebook\"\n href=\"https://www.facebook.com/YourWingspans\"\n >\n <FontAwesomeIcon icon={fabFacebook} />\n </a>\n </li>\n </ul>\n </div>\n\n <div className=\"footer-language-switcher\" >\n <div>{localizationEnabled && <LanguageSwitcher footer={true}/>}</div>\n <div\n className=\"footer-secondary\"\n\n >\n <div className=\"copyright\">© <FormattedMessage\n id=\"footer-copyright\"\n defaultMessage=\"Copyright\"\n /> 2025 Wingspans</div>\n <ul className=\"page-links\">\n <li>\n <Link to=\"/about/privacy-policy\">\n {\" \"}\n <FormattedMessage\n id=\"footer-privacy-policy\"\n defaultMessage=\"Privacy Policy\"\n />\n </Link>\n </li>\n <li style={{ marginRight: \"0px\" }}>\n <Link to=\"/about/terms-of-use\">\n {\" \"}\n <FormattedMessage\n id=\"footer-terms-of-use\"\n defaultMessage=\"Terms of Use\"\n />\n </Link>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n )}\n </>\n )\n}\n\nexport default Footer\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\n\n/**\n * connectCurrentRefinements connector provides the logic to build a widget that will\n * give the user the ability to remove all or some of the filters that were\n * set.\n * @name connectCurrentRefinements\n * @kind connector\n * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.\n * @propType {function} [clearsQuery=false] - Pass true to also clear the search query\n * @providedPropType {function} refine - a function to remove a single filter\n * @providedPropType {array.<{label: string, attribute: string, currentRefinement: string || object, items: array, value: function}>} items - all the filters, the `value` is to pass to the `refine` function for removing all currentrefinements, `label` is for the display. When existing several refinements for the same atribute name, then you get a nested `items` object that contains a `label` and a `value` function to use to remove a single filter. `attribute` and `currentRefinement` are metadata containing row values.\n * @providedPropType {string} query - the search query\n */\nexport default createConnector({\n displayName: 'AlgoliaCurrentRefinements',\n $$type: 'ais.currentRefinements',\n propTypes: {\n transformItems: PropTypes.func\n },\n getProvidedProps: function getProvidedProps(props, searchState, searchResults, metadata) {\n var items = metadata.reduce(function (res, meta) {\n if (typeof meta.items !== 'undefined') {\n if (!props.clearsQuery && meta.id === 'query') {\n return res;\n } else {\n if (props.clearsQuery && meta.id === 'query' && meta.items[0].currentRefinement === '') {\n return res;\n }\n return res.concat(meta.items.map(function (item) {\n return _objectSpread(_objectSpread({}, item), {}, {\n id: meta.id,\n index: meta.index\n });\n }));\n }\n }\n return res;\n }, []);\n var transformedItems = props.transformItems ? props.transformItems(items) : items;\n return {\n items: transformedItems,\n canRefine: transformedItems.length > 0\n };\n },\n refine: function refine(props, searchState, items) {\n // `value` corresponds to our internal clear function computed in each connector metadata.\n var refinementsToClear = items instanceof Array ? items.map(function (item) {\n return item.value;\n }) : [items];\n return refinementsToClear.reduce(function (res, clear) {\n return clear(res);\n }, searchState);\n }\n});","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { translatable } from 'react-instantsearch-core';\nimport { createClassNames } from '../core/utils';\nvar cx = createClassNames('ClearRefinements');\n\nvar ClearRefinements =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ClearRefinements, _Component);\n\n function ClearRefinements() {\n _classCallCheck(this, ClearRefinements);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ClearRefinements).apply(this, arguments));\n }\n\n _createClass(ClearRefinements, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n items = _this$props.items,\n canRefine = _this$props.canRefine,\n refine = _this$props.refine,\n translate = _this$props.translate,\n className = _this$props.className;\n return React.createElement(\"div\", {\n className: classNames(cx(''), className)\n }, React.createElement(\"button\", {\n className: cx('button', !canRefine && 'button--disabled'),\n onClick: function onClick() {\n return refine(items);\n },\n disabled: !canRefine\n }, translate('reset')));\n }\n }]);\n\n return ClearRefinements;\n}(Component);\n\n_defineProperty(ClearRefinements, \"propTypes\", {\n items: PropTypes.arrayOf(PropTypes.object).isRequired,\n canRefine: PropTypes.bool.isRequired,\n refine: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired,\n className: PropTypes.string\n});\n\n_defineProperty(ClearRefinements, \"defaultProps\", {\n className: ''\n});\n\nexport default translatable({\n reset: 'Clear all filters'\n})(ClearRefinements);","import React from 'react';\nimport { connectCurrentRefinements } from 'react-instantsearch-core';\nimport PanelCallbackHandler from '../components/PanelCallbackHandler';\nimport ClearRefinements from '../components/ClearRefinements';\n/**\n * The ClearRefinements widget displays a button that lets the user clean every refinement applied\n * to the search.\n * @name ClearRefinements\n * @kind widget\n * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.\n * @propType {boolean} [clearsQuery=false] - Pass true to also clear the search query\n * @themeKey ais-ClearRefinements - the root div of the widget\n * @themeKey ais-ClearRefinements-button - the clickable button\n * @themeKey ais-ClearRefinements-button--disabled - the disabled clickable button\n * @translationKey reset - the clear all button value\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, ClearRefinements, RefinementList } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <ClearRefinements />\n * <RefinementList\n * attribute=\"brand\"\n * defaultRefinement={['Apple']}\n * />\n * </InstantSearch>\n * );\n */\n\nvar ClearRefinementsWidget = function ClearRefinementsWidget(props) {\n return React.createElement(PanelCallbackHandler, props, React.createElement(ClearRefinements, props));\n};\n\nexport default connectCurrentRefinements(ClearRefinementsWidget);","import { language } from \"../../i18n\"\n\nexport const localizeEducationCheckboxTranslations = {\n 'High School': {\n [language.english]: \"High School\",\n [language.spanish]: \"Escuela secundaria\"\n },\n 'License': {\n [language.english]: 'License',\n [language.spanish]: \"Licencia\"\n },\n 'Certificate': {\n [language.english]: 'Certificate',\n [language.spanish]: \"Certificado\"\n },\n 'Apprenticeship': {\n [language.english]: 'Apprenticeship',\n [language.spanish]: \"Aprendizaje\"\n },\n '2-year College': {\n [language.english]: '2-year College',\n [language.spanish]: \"Universidad de 2 años\"\n },\n '4-year College': {\n [language.english]: '4-year College',\n [language.spanish]: \"Universidad de 4 años\"\n },\n 'Graduate School': {\n [language.english]: 'Graduate School',\n [language.spanish]: \"Escuela de Postgrado\"\n },\n };\n\nexport const localizeIdentityCheckboxTranslation = {\n 'White': {\n [language.english]: \"White\",\n [language.spanish]: \"Blanco\"\n },\n 'Female': {\n [language.english]: \"Female\",\n [language.spanish]: \"Femenino\"\n },\n 'Male': {\n [language.english]: \"Male\",\n [language.spanish]: \"Masculino\"\n },\n 'Black or African American': {\n [language.english]: \"Black or African American\",\n [language.spanish]: \"Negro o afroamericano\"\n },\n 'First-generation': {\n [language.english]: \"First-generation\",\n [language.spanish]: \"Primera generación\"\n },\n 'Hispanic or Latino': {\n [language.english]: \"Hispanic or Latino\",\n [language.spanish]: \"Hispano o latino\"\n },\n 'Asian': {\n [language.english]: \"Asian\",\n [language.spanish]: \"Asiático\"\n },\n 'LGBTQ': {\n [language.english]: \"LGBTQ\",\n [language.spanish]: \"LGTBQ\"\n },\n 'Multiracial': {\n [language.english]: \"Multiracial\",\n [language.spanish]: \"Multirracial\"\n },\n 'Native Hawaiian or Other Pacific Islander': {\n [language.english]: \"Native Hawaiian or Other Pacific Islander\",\n [language.spanish]: \"Nativo hawaiano u otro isleño del PacÃfico\"\n },\n 'Disabled': {\n [language.english]: \"Disabled\",\n [language.spanish]: \"Desactivado\"\n },\n 'American Indian or Alaska Native': {\n [language.english]: \"American Indian or Alaska Native\",\n [language.spanish]: \"Indio americano o nativo de Alaska\"\n },\n }\n\nexport const localizeInterestCheckboxTranslation = {\n 'Architecture': {\n [language.english]: \"Architecture\",\n [language.spanish]: \"Arquitectura\"\n },\n 'Athletics': {\n [language.english]: \"Athletics\",\n [language.spanish]: \"Atletismo\"\n },\n 'Business': {\n [language.english]: \"Business\",\n [language.spanish]: \"Negocio\"\n },\n 'Computers': {\n [language.english]: \"Computers\",\n [language.spanish]: \"Ordenadores\"\n },\n 'Cooking': {\n [language.english]: \"Cooking\",\n [language.spanish]: \"Cocinando\"\n },\n 'Engineering': {\n [language.english]: \"Engineering\",\n [language.spanish]: \"IngenierÃa\"\n },\n 'Entrepreneurship': {\n [language.english]: \"Entrepreneurship\",\n [language.spanish]: \"Emprendimiento\"\n },\n 'Environmental Science': {\n [language.english]: \"Environmental Science\",\n [language.spanish]: \"Ciencia medioambiental\"\n },\n 'History': {\n [language.english]: \"History\",\n [language.spanish]: \"Historia\"\n },\n 'Humanities': {\n [language.english]: \"Humanities\",\n [language.spanish]: \"Humanidades\"\n },\n 'Language': {\n [language.english]: \"Language\",\n [language.spanish]: \"Idioma\"\n },\n 'Law': {\n [language.english]: \"Law\",\n [language.spanish]: \"Ley\"\n },\n 'Math': {\n [language.english]: \"Math\",\n [language.spanish]: \"Matemáticas\"\n },\n 'Medicine': {\n [language.english]: \"Medicine\",\n [language.spanish]: \"Medicamento\"\n },\n 'Music': {\n [language.english]: \"Music\",\n [language.spanish]: \"Música\"\n },\n 'Politics': {\n [language.english]: \"Politics\",\n [language.spanish]: \"PolÃtica\"\n },\n 'Psychology': {\n [language.english]: \"Psychology\",\n [language.spanish]: \"PsicologÃa\"\n },\n 'Science': {\n [language.english]: \"Science\",\n [language.spanish]: \"Ciencia\"\n },\n 'Skilled Trades': {\n [language.english]: \"Skilled Trades\",\n [language.spanish]: \"Comercios expertos\"\n },\n 'Social Justice': {\n [language.english]: \"Social Justice\",\n [language.spanish]: \"Justicia social\"\n },\n 'Teaching': {\n [language.english]: \"Teaching\",\n [language.spanish]: \"Enseñando\"\n },\n 'Theater': {\n [language.english]: \"Theater\",\n [language.spanish]: \"Teatro\"\n },\n 'Visual Art': {\n [language.english]: \"Visual Art\",\n [language.spanish]: \"Arte visual\"\n },\n 'Writing': {\n [language.english]: \"Writing\",\n [language.spanish]: \"Escribiendo\"\n },\n }\n\nexport const localizePersonalityCheckboxTranslation = {\n 'Adventurous': {\n [language.english]: \"Adventurous\",\n [language.spanish]: \"Aventurero\"\n },\n 'Analytical': {\n [language.english]: \"Analytical\",\n [language.spanish]: \"AnalÃtico\"\n },\n 'Assertive': {\n [language.english]: \"Assertive\",\n [language.spanish]: \"Asertivo\"\n },\n 'Athletic': {\n [language.english]: \"Athletic\",\n [language.spanish]: \"Atlético\"\n },\n 'Bold': {\n [language.english]: \"Bold\",\n [language.spanish]: \"Negrito\"\n },\n 'Caring': {\n [language.english]: \"Caring\",\n [language.spanish]: \"Cariñoso\"\n },\n 'Conventional': {\n [language.english]: \"Conventional\",\n [language.spanish]: \"Convencional\"\n },\n 'Creative': {\n [language.english]: \"Creative\",\n [language.spanish]: \"Creativo\"\n },\n 'Entrepreneurial': {\n [language.english]: \"Entrepreneurial\",\n [language.spanish]: \"Emprendedor\"\n },\n 'Extroverted': {\n [language.english]: \"Extroverted\",\n [language.spanish]: \"Extrovertido\"\n },\n 'Friendly': {\n [language.english]: \"Friendly\",\n [language.spanish]: \"Amistoso\"\n },\n 'Idealistic': {\n [language.english]: \"Idealistic\",\n [language.spanish]: \"Idealista\"\n },\n 'Innovative': {\n [language.english]: \"Innovative\",\n [language.spanish]: \"Innovador\"\n },\n 'Intellectual': {\n [language.english]: \"Intellectual\",\n [language.spanish]: \"Intelectual\"\n },\n 'Introverted': {\n [language.english]: \"Introverted\",\n [language.spanish]: \"Introvertido\"\n },\n 'Intuitive': {\n [language.english]: \"Intuitive\",\n [language.spanish]: \"Intuitivo\"\n },\n 'Leader': {\n [language.english]: \"Leader\",\n [language.spanish]: \"LÃder\"\n },\n 'Likes to build': {\n [language.english]: \"Likes to build\",\n [language.spanish]: \"le gusta construir\"\n },\n 'Likes to debate': {\n [language.english]: \"Likes to debate\",\n [language.spanish]: \"le gusta debatir\"\n },\n 'Likes to help people': {\n [language.english]: \"Likes to help people\",\n [language.spanish]: \"Le gusta ayudar a la gente\"\n },\n 'Likes to perform': {\n [language.english]: \"Likes to perform\",\n [language.spanish]: \"le gusta actuar\"\n },\n 'Likes to teach': {\n [language.english]: \"Likes to teach\",\n [language.spanish]: \"le gusta enseñar\"\n },\n 'Likes to work alone': {\n [language.english]: \"Likes to work alone\",\n [language.spanish]: \"Le gusta trabajar solo\"\n },\n 'Likes to work with hands': {\n [language.english]: \"Likes to work with hands\",\n [language.spanish]: \"Le gusta trabajar con las manos.\"\n },\n 'Likes to work with numbers': {\n [language.english]: \"Likes to work with numbers\",\n [language.spanish]: \"Le gusta trabajar con números.\"\n },\n 'Likes to work with people': {\n [language.english]: \"Likes to work with people\",\n [language.spanish]: \"Le gusta trabajar con la gente.\"\n },\n 'Methodical': {\n [language.english]: \"Methodical\",\n [language.spanish]: \"Metódico\"\n },\n 'Observant': {\n [language.english]: \"Observant\",\n [language.spanish]: \"Observante\"\n },\n 'Outdoorsy': {\n [language.english]: \"Outdoorsy\",\n [language.spanish]: \"al aire libre\"\n },\n 'Persuasive': {\n [language.english]: \"Persuasive\",\n [language.spanish]: \"Persuasivo\"\n },\n 'Practical': {\n [language.english]: \"Practical\",\n [language.spanish]: \"Práctico\"\n },\n 'Precise': {\n [language.english]: \"Precise\",\n [language.spanish]: \"Preciso\"\n },\n 'Problem solver': {\n [language.english]: \"Problem solver\",\n [language.spanish]: \"Solucionador de problemas\"\n },\n 'Realistic': {\n [language.english]: \"Realistic\",\n [language.spanish]: \"Realista\"\n },\n 'Responsible': {\n [language.english]: \"Responsible\",\n [language.spanish]: \"Responsable\"\n },\n 'Scientific': {\n [language.english]: \"Scientific\",\n [language.spanish]: \"CientÃfico\"\n },\n 'Self-confident': {\n [language.english]: \"Self-confident\",\n [language.spanish]: \"Seguro de si mismo\"\n },\n 'Sensitive': {\n [language.english]: \"Sensitive\",\n [language.spanish]: \"Sensible\"\n },\n 'Social': {\n [language.english]: \"Social\",\n [language.spanish]: \"Social\"\n },\n 'Staightforward': {\n [language.english]: \"Staightforward\",\n [language.spanish]: \"Directo\"\n },\n 'Strategic': {\n [language.english]: \"Strategic\",\n [language.spanish]: \"Estratégico\"\n },\n 'Understanding': {\n [language.english]: \"Understanding\",\n [language.spanish]: \"Comprensión\"\n },\n }\n\nexport const localizePathwayCheckboxTranslation = {\n 'Agriculture, Food & Natural Resources': {\n [language.english]: \"Agriculture, Food & Natural Resources\",\n [language.spanish]: \"Agricultura, alimentación y recursos naturales\"\n },\n 'Architecture & Construction': {\n [language.english]: \"Architecture & Construction\",\n [language.spanish]: \"Arquitectura y Construcción\"\n },\n 'Arts, A/V Technology & Communications': {\n [language.english]: \"Arts, A/V Technology & Communications\",\n [language.spanish]: \"Artes, tecnologÃa audiovisual y comunicaciones\"\n },\n 'Business Management & Administration': {\n [language.english]: \"Business Management & Administration\",\n [language.spanish]: \"Gestión y Administración de Empresas\"\n },\n 'Education & Training': {\n [language.english]: \"Education & Training\",\n [language.spanish]: \"Educación y formación\"\n },\n 'Finance': {\n [language.english]: \"Finance\",\n [language.spanish]: \"Finanzas\"\n },\n 'Government & Public Administration': {\n [language.english]: \"Government & Public Administration\",\n [language.spanish]: \"Gobierno y administración pública\"\n },\n 'Health Science': {\n [language.english]: \"Health Science\",\n [language.spanish]: \"Ciencia de la salud\"\n },\n 'Hospitality & Tourism': {\n [language.english]: \"Hospitality & Tourism\",\n [language.spanish]: \"Hospitalidad y turismo\"\n },\n 'Human Services': {\n [language.english]: \"Human Services\",\n [language.spanish]: \"Servicios Humanos\"\n },\n 'Information Technology': {\n [language.english]: \"Information Technology\",\n [language.spanish]: \"TecnologÃas de la información\"\n },\n 'Law, Public Safety, Corrections & Security': {\n [language.english]: \"Law, Public Safety, Corrections & Security\",\n [language.spanish]: \"Ley, Seguridad Pública, Correccionales y Seguridad\"\n },\n 'Manufacturing': {\n [language.english]: \"Manufacturing\",\n [language.spanish]: \"Fabricación\"\n },\n 'Marketing': {\n [language.english]: \"Marketing\",\n [language.spanish]: \"Marketing\"\n },\n 'Science, Technology, Engineering & Mathematics': {\n [language.english]: \"Science, Technology, Engineering & Mathematics\",\n [language.spanish]: \"Ciencia, TecnologÃa, IngenierÃa y Matemáticas\"\n },\n 'Transportation, Distribution & Logistics': {\n [language.english]: \"Transportation, Distribution & Logistics\",\n [language.spanish]: \"Transporte, Distribución y LogÃstica\"\n },\n }\n\nexport const localizeSizeCheckboxTranslations = {\n 'Small': {\n [language.english]: \"Small\",\n [language.spanish]: \"Pequeño\"\n },\n 'Medium': {\n [language.english]: 'Medium',\n [language.spanish]: \"Medio\"\n },\n 'Large': {\n [language.english]: 'Large',\n [language.spanish]: \"Grande\"\n },\n };\n\nexport const localizeSettingCheckboxTranslations = {\n 'Urban': {\n [language.english]: \"Urban\",\n [language.spanish]: \"Urbano\"\n },\n 'Small town': {\n [language.english]: 'Small town',\n [language.spanish]: \"Pequeño pueblo\"\n },\n 'Rural': {\n [language.english]: 'Rural',\n [language.spanish]: \"Rural\"\n },\n 'Suburban': {\n [language.english]: 'Suburban',\n [language.spanish]: \"Suburbano\"\n },\n };\n\nexport const localizeTypeCheckboxTranslations = {\n 'Public': {\n [language.english]: \"Public\",\n [language.spanish]: \"Público\"\n },\n 'Private': {\n [language.english]: 'Private',\n [language.spanish]: \"Privado\"\n },\n };\n\nexport const localizeCostCheckboxTranslations = {\n 'Less Expensive': {\n [language.english]: \"Less Expensive\",\n [language.spanish]: \"Menos costoso\"\n },\n 'Somewhat Expensive': {\n [language.english]: 'Somewhat Expensive',\n [language.spanish]: \"Algo caro\"\n },\n 'Very Expensive': {\n [language.english]: 'Very Expensive',\n [language.spanish]: \"Muy caro\"\n },\n };\n\nexport const localizeIndustryCheckboxTranslations = {\n 'Advertising and Agencies': {\n [language.english]: \"Advertising and Agencies\",\n [language.spanish]: \"Publicidad y Agencias\"\n },\n 'Architecture': {\n [language.english]: 'Architecture',\n [language.spanish]: \"Arquitectura\"\n },\n 'Arts and Music': {\n [language.english]: 'Arts and Music',\n [language.spanish]: \"Artes y Música\"\n },\n 'Biotechnology': {\n [language.english]: 'Biotechnology',\n [language.spanish]: \"BiotecnologÃa\"\n },\n 'Client Services': {\n [language.english]: 'Client Services',\n [language.spanish]: \"Servicios al cliente\"\n },\n 'Consulting': {\n [language.english]: 'Consulting',\n [language.spanish]: \"Consultante\"\n },\n 'Consumer': {\n [language.english]: 'Consumer',\n [language.spanish]: \"Consumidor\"\n },\n 'Education': {\n [language.english]: 'Education',\n [language.spanish]: \"Educación\"\n },\n 'Engineering': {\n [language.english]: 'Engineering',\n [language.spanish]: \"IngenierÃa\"\n },\n 'Entertainment & Gaming': {\n [language.english]: 'Entertainment & Gaming',\n [language.spanish]: \"Entretenimiento y juegos\"\n },\n 'Fashion and Beauty': {\n [language.english]: 'Fashion and Beauty',\n [language.spanish]: \"Moda y belleza\"\n },\n 'Finance': {\n [language.english]: 'Finance',\n [language.spanish]: \"Finanzas\"\n },\n 'Food & Beverage': {\n [language.english]: 'Food & Beverage',\n [language.spanish]: \"Bebida alimenticia\"\n },\n 'Government': {\n [language.english]: 'Government',\n [language.spanish]: \"Gobierno\"\n },\n 'Healthcare': {\n [language.english]: 'Healthcare',\n [language.spanish]: \"Cuidado de la salud\"\n },\n 'Insurance': {\n [language.english]: 'Insurance',\n [language.spanish]: \"Seguro\"\n },\n 'Law': {\n [language.english]: 'Law',\n [language.spanish]: \"Ley\"\n },\n 'Manufacturing': {\n [language.english]: 'Manufacturing',\n [language.spanish]: \"Fabricación\"\n },\n 'Media': {\n [language.english]: 'Media',\n [language.spanish]: \"Medios de comunicación\"\n },\n 'Real Estate & Construction': {\n [language.english]: 'Real Estate & Construction',\n [language.spanish]: \"Bienes RaÃces y Construcción\"\n },\n 'Social Good': {\n [language.english]: 'Social Good',\n [language.spanish]: \"Bueno social\"\n },\n 'Social Media': {\n [language.english]: 'Social Media',\n [language.spanish]: \"Medios de comunicación social\"\n },\n 'Tech': {\n [language.english]: 'Tech',\n [language.spanish]: \"TecnologÃa\"\n },\n 'Telecom': {\n [language.english]: 'Telecom',\n [language.spanish]: \"Telecomunicaciones\"\n },\n };","import React, { useState, useEffect, useRef } from \"react\"\nimport orderBy from \"lodash.orderby\"\nimport _ from \"lodash\"\nimport CardStories from \"../cards/cards-stories\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faChevronDown,\n faChevronUp,\n faChevronRight,\n faChevronLeft,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n SearchBox,\n Configure,\n Pagination,\n Hits,\n RefinementList,\n ClearRefinements,\n ScrollTo,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, StringParam } from \"use-query-params\"\nimport { globalHistory } from \"@reach/router\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { localizeEducationCheckboxTranslations, localizeIdentityCheckboxTranslation,\n localizeInterestCheckboxTranslation, localizePersonalityCheckboxTranslation } from \"./localized-algolia-checkboxes\"\n\nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst storyResult = ({ hit }) => {\n const {\n objectID,\n title,\n story_personal_photo,\n story_video_url,\n story_job_title,\n story_company,\n story_quote,\n rating_average,\n slug,\n type,\n } = hit\n\n return (\n <CardStories\n objectID={objectID}\n img={story_personal_photo}\n title={title}\n slug={slug}\n story_video_url={story_video_url}\n story_job_title={story_job_title}\n story_company={story_company}\n story_quote={story_quote}\n rating_average={rating_average}\n contentType={type}\n />\n )\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaStoriesExplore = props => {\n const { classContext, filterList } = props\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n\n const [index, setIndex] = useState(\"stories_explore\")\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n const mountedRef = useRef(true)\n\n const { locale, formatMessage } = useIntl()\n\n\n const localeFilter = `locale:${locale}`\n const filterListWithLocale = filterList\n ? `(${filterList}) AND ${localeFilter}`\n : localeFilter\n\n const setHTMLScrollStyle = behavior => {\n document.querySelector(\"html\").style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n if (!mountedRef.current) return null\n\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n mountedRef.current = false\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [sortByPageQuery, setSortByPageQuery] = useQueryParam(\n \"sortByPageQuery\",\n StringParam\n )\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [sortByPage, setSortByPage] = useState(\"NEWEST\")\n\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n const handleSortByClick = (e, page) => {\n e.preventDefault()\n if (page === sortByPage) return\n\n setSortByPage(page)\n setSortByPageQuery(page)\n\n switch (page) {\n case \"NEWEST\":\n setIndex(\"stories_explore\")\n setQueryFilters(undefined)\n break\n case \"SAVED\":\n setIndex(\"stories_explore\")\n setQueryFilters(undefined)\n break\n case \"HIGHEST_RATED\":\n setIndex(\"stories_rating_desc\")\n setQueryFilters(undefined)\n break\n default:\n setIndex(\"stories_explore\")\n break\n }\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSortByPage(sortByPageQuery)\n if (sortByPageQuery === \"SAVED\") {\n setIndex(\"stories_explore\")\n } else if (sortByPageQuery === \"NEWEST\") {\n setIndex(\"stories_explore\")\n } else if (sortByPageQuery === \"HIGHEST_RATED\") {\n setIndex(\"stories_rating_desc\")\n } else {\n setIndex(\"stories_explore\")\n }\n }, [sortByPageQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle(\"smooth\")\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle(\"auto\")\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList\n ? searchInput.refinementList\n : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery =\n queryFilters?.query !== searchInput?.query &&\n searchInput?.query.length > 0\n const isFilterSelectionQuery =\n !_.isEqual(queryRefinementList, searchInputRefinementList) &&\n !_.isEmpty(searchInputRefinementList)\n const isSortByQuery = sortByPage !== sortByPageQuery\n const isEmptyURL =\n queryFilters ||\n sortByPageQuery === \"NEWEST\" ||\n sortByPageQuery === \"HIGHEST_RATED\"\n ? false\n : true\n const isEmptySearch = _.isEqual(searchInput, {\n configure: { hitsPerPage: 9, distinct: true, filters: \"\" },\n })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = (e) => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList\n ? searchState.refinementList\n : {}\n const filtersHaveChanged =\n !_.isEqual(queryRefinementList, searchStateRefinementList) &&\n !_.isEmpty(searchStateRefinementList)\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n // refresh state\n const [refresh, setRefresh] = useState(false)\n\n // set refresh on mount, remove on unmount\n useEffect(() => {\n searchClient.clearCache()\n return () => {\n searchClient.clearCache()\n }\n }, [])\n\n const transformStoriesEducationFilterItems = (items) => {\n return items.map((item) => {\n const locItem = {\n ...item\n };\n if (localizeEducationCheckboxTranslations[item.label] && localizeEducationCheckboxTranslations[item.label][locale])\n locItem.label = localizeEducationCheckboxTranslations[item.label][locale] || item;\n return locItem;\n });\n };\n\n const transformStoriesIdentityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeIdentityItem = { ...item };\n if (\n localizeIdentityCheckboxTranslation[item.label] &&\n localizeIdentityCheckboxTranslation[item.label][locale]\n ) {\n localizeIdentityItem.label =\n localizeIdentityCheckboxTranslation[item.label][locale];\n }\n return localizeIdentityItem;\n });\n // Sort the items alphabetically by their localized labels\n const sortedItems = orderBy(localizedItems,[\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n \n const transformStoriesInterestFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeInterestItem = { ...item };\n if (\n localizeInterestCheckboxTranslation[item.label] &&\n localizeInterestCheckboxTranslation[item.label][locale]\n ) {\n localizeInterestItem.label =\n localizeInterestCheckboxTranslation[item.label][locale];\n }\n return localizeInterestItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformStoriesPersonalityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePersonalityItem = { ...item };\n if (\n localizePersonalityCheckboxTranslation[item.label] &&\n localizePersonalityCheckboxTranslation[item.label][locale]\n ) {\n localizePersonalityItem.label =\n localizePersonalityCheckboxTranslation[item.label][locale];\n }\n return localizePersonalityItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n return (\n <InstantSearch\n indexName={index || \"stories_explore\"}\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n refresh={refresh}\n >\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\" }),\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div\n className={`stream stream-${classContext} stream-${classContext}-explore`}\n >\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n <button\n className=\"stream-explore-filters-button\"\n onClick={filters}\n >\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n </button>\n\n <div\n className={`explore-context-filter ${showFilters ? \"show\" : \"hide\"\n }`}\n >\n <h3><FormattedMessage id=\"filter-people-by\" defaultMessage=\"Filter People by\" />:</h3>\n <div className=\"filter filter-personality filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-personality\", defaultMessage: \"Personality\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={50}\n attribute=\"story_personality_filter\"\n transformItems={transformStoriesPersonalityFilterItems}\n />\n </div>\n <div className=\"filter filter-interests filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-interests\", defaultMessage: \"Interests\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"story_interests_filter\"\n transformItems={transformStoriesInterestFilterItems}\n />\n </div>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-identity\", defaultMessage: \"Identity\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"story_identity_filter\"\n transformItems={transformStoriesIdentityFilterItems}\n operator=\"and\"\n />\n </div>\n <div className=\"filter filter-four filter-last\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-education\", defaultMessage: \"Education\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"story_required_education_filter\"\n transformItems={transformStoriesEducationFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={(sortByPage !== \"HIGHEST_RATED\" && sortByPage !== \"SAVED\") ? \"active\" : \"\"}\n onClick={e => handleSortByClick(e, \"NEWEST\")}\n value=\"newest\"\n >\n <FormattedMessage id=\"algolia-stories-view-newest\" defaultMessage=\"Newest\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={sortByPage === \"HIGHEST_RATED\" ? \"active\" : \"\"}\n onClick={e => handleSortByClick(e, \"HIGHEST_RATED\")}\n value=\"highest_rated\"\n >\n <FormattedMessage id=\"algolia-stories-view-highest-rated\" defaultMessage=\"Highest Rated\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a\n href=\"/\"\n className={sortByPage === \"SAVED\" ? \"active\" : \"\"}\n onClick={e => handleSortByClick(e, \"SAVED\")}\n value=\"saved\"\n >\n <FormattedMessage id=\"algolia-stories-view-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <Configure\n hitsPerPage={9}\n distinct\n filters={sortByPage === \"SAVED\" ? filterListWithLocale : localeFilter}\n />\n\n <Hits hitComponent={storyResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaStoriesExplore\n","export default class Helper {\n static getDescendantProperty(object, path, list = []) {\n let firstSegment;\n let remaining;\n let dotIndex;\n let value;\n let index;\n let length;\n\n if (path) {\n dotIndex = path.indexOf('.');\n\n if (dotIndex === -1) {\n firstSegment = path;\n } else {\n firstSegment = path.slice(0, dotIndex);\n remaining = path.slice(dotIndex + 1);\n }\n\n value = object[firstSegment];\n if (value !== null && typeof value !== 'undefined') {\n if (! remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value);\n } else if (Object.prototype.toString.call(value) === '[object Array]') {\n for (index = 0, length = value.length; index < length; index++) {\n Helper.getDescendantProperty(value[index], remaining, list);\n }\n } else if (remaining) {\n Helper.getDescendantProperty(value, remaining, list);\n }\n }\n } else {\n list.push(object);\n }\n\n return list;\n }\n}\n","import Helper from './Helper';\n\nexport default class FuzzySearch {\n constructor(haystack = [], keys = [], options = {}) {\n if (! Array.isArray(keys)) {\n options = keys;\n keys = [];\n }\n\n this.haystack = haystack;\n this.keys = keys;\n this.options = Object.assign({\n caseSensitive: false,\n sort: false,\n }, options);\n }\n\n search(query = '') {\n if (query === '') {\n return this.haystack;\n }\n\n const results = [];\n\n for (let i = 0; i < this.haystack.length; i++) {\n const item = this.haystack[i];\n\n if (this.keys.length === 0) {\n const score = FuzzySearch.isMatch(item, query, this.options.caseSensitive);\n\n if (score) {\n results.push({ item, score });\n }\n } else {\n for (let y = 0; y < this.keys.length; y++) {\n const propertyValues = Helper.getDescendantProperty(item, this.keys[y]);\n\n let found = false;\n\n for (let z = 0; z < propertyValues.length; z++) {\n const score = FuzzySearch.isMatch(propertyValues[z], query, this.options.caseSensitive);\n\n if (score) {\n found = true;\n\n results.push({ item, score });\n\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n }\n\n if (this.options.sort) {\n results.sort((a, b) => a.score - b.score);\n }\n\n return results.map(result => result.item);\n }\n\n static isMatch(item, query, caseSensitive) {\n item = String(item);\n query = String(query);\n\n if (! caseSensitive) {\n item = item.toLocaleLowerCase();\n query = query.toLocaleLowerCase();\n }\n\n const indexes = FuzzySearch.nearestIndexesFor(item, query);\n\n if (! indexes) {\n return false;\n }\n\n // Exact matches should be first.\n if (item === query) {\n return 1;\n }\n\n // If we have more than 2 letters, matches close to each other should be first.\n if (indexes.length > 1) {\n return 2 + (indexes[indexes.length - 1] - indexes[0]);\n }\n\n // Matches closest to the start of the string should be first.\n return 2 + indexes[0];\n }\n\n static nearestIndexesFor(item, query) {\n const letters = query.split('');\n let indexes = [];\n\n const indexesOfFirstLetter = FuzzySearch.indexesOfFirstLetter(item, query);\n\n indexesOfFirstLetter.forEach((startingIndex, loopingIndex) => {\n let index = startingIndex + 1;\n\n indexes[loopingIndex] = [startingIndex];\n\n for (let i = 1; i < letters.length; i++) {\n const letter = letters[i];\n\n index = item.indexOf(letter, index);\n\n if (index === -1) {\n indexes[loopingIndex] = false;\n\n break;\n }\n\n indexes[loopingIndex].push(index);\n\n index++;\n }\n });\n\n indexes = indexes.filter(letterIndexes => letterIndexes !== false);\n\n if (! indexes.length) {\n return false;\n }\n\n return indexes.sort((a, b) => {\n if (a.length === 1) {\n return a[0] - b[0];\n }\n\n a = a[a.length - 1] - a[0];\n b = b[b.length - 1] - b[0];\n\n return a - b;\n })[0];\n }\n\n static indexesOfFirstLetter(item, query) {\n const match = query[0];\n\n return item.split('').map((letter, index) => {\n if (letter !== match) {\n return false;\n }\n\n return index;\n }).filter(index => index !== false);\n }\n}\n","import React, { useState, useEffect, useRef, useContext, useReducer } from \"react\"\nimport _ from \"lodash\"\nimport CardCareers from \"../cards/cards-careers\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, NumberParam, BooleanParam } from \"use-query-params\"\nimport Link from \"../../link\"\nimport { FirebaseContext } from \"../../components/Firebase\"\nimport Pagination from \"react-js-pagination\"\nimport FuzzySearch from \"fuzzy-search\"\nimport LoadingSpinner from \"../../components/loading/LoadingSpinner.js\"\nimport { removeMissingCareers } from \"../../components/assessment/utils/utils.js\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faChevronDown, faChevronUp } from \"@fortawesome/free-solid-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { useCareers } from \"../assessment/useCareers.js\"\nimport { SelectButton } from \"primereact/selectbutton\"\nimport { getSchoolSpecificCareers } from \"../../components/assessment/getSchoolSpecificCareers.js\"\n\n// reducer used to track state of career explore component and handle actions regarding pagination, search, and filters\nconst exploreReducer = (state, action) => {\n // incoming payloads\n const { newPage, newSearchState, newAllMatches, newStartingPage, isSchoolFilterOn } = action\n // inital state\n\n // activePage: 1,\n // searchState: \"\",\n // allMatches: [],\n // displayMatches: []\n\n switch (action.type) {\n case \"SET_PAGE\":\n const startingPoint = (newPage - 1) * 10\n const endingPoint = startingPoint + 10\n const subset = state.filteredMatches.slice(startingPoint, endingPoint)\n return { ...state, activePage: newPage, displayMatches: subset }\n case \"SET_SEARCH_STATE\":\n const searcher = new FuzzySearch(state.allMatches, [\"title\"], {\n caseSensitive: false,\n })\n const results = searcher.search(newSearchState.trim())\n\n const displayResults = results.slice(0, 10)\n return {\n ...state,\n searchState: newSearchState,\n filteredMatches: results,\n displayMatches: displayResults,\n activePage: 1,\n }\n case \"LOAD_ALL_MATCHES\":\n const initialStartingPoint = (newStartingPage - 1) * 10\n const initialEndingPoint = initialStartingPoint + 10\n const initialSubset = newAllMatches.slice(initialStartingPoint, initialEndingPoint)\n\n return {\n ...state,\n allMatches: newAllMatches,\n filteredMatches: newAllMatches,\n activePage: newStartingPage,\n displayMatches: initialSubset,\n }\n case \"SET_SCHOOL_FILTER\":\n return {\n ...state,\n isSchoolFilterOn: isSchoolFilterOn,\n }\n\n default:\n throw new Error(\"Action type not set\")\n }\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaCareersPersonalityExplore = (props) => {\n const { locale, formatMessage } = useIntl()\n const { profile, subdomainConfig, firebase } = useContext(FirebaseContext)\n const allCosmicjsCareers = useCareers(locale)\n const { subdomainPetersonsInstitutionId, subdomainSchoolName } = subdomainConfig\n\n const [state, dispatch] = useReducer(exploreReducer, {\n activePage: 1,\n searchState: \"\",\n allMatches: [],\n filteredMatches: [],\n displayMatches: [],\n isSchoolFilterOn: subdomainPetersonsInstitutionId ? true : false,\n })\n\n const { activePage, searchState, displayMatches, filteredMatches, isSchoolFilterOn } = state\n const [schoolFilterValueIndex, setSchoolFilterValueIndex] = useState(isSchoolFilterOn ? 0 : 1)\n const [schoolSpecificCareers, setSchoolSpecificCareers] = useState([])\n const [isLoadingScreen, setIsLoadingScreen] = useState(false)\n const [dislikedCareerSlugs, setDislikedCareerSlugs] = useState([])\n const [showFilters, setShowFilters] = useState(false)\n\n const [filters, setFilters] = useState({\n salary: {},\n education: {},\n dress: {},\n activity: {},\n })\n\n\n const [pageParam, setPageParam] = useQueryParam(\"page\", NumberParam)\n const [queryFilters, setQueryFilters] = useQueryParam(\"queryFilters\", JsonParam)\n const [schoolFilterParam, setSchoolFilterParam] = useQueryParam(\"schoolFilter\", BooleanParam)\n\n const ref = useRef(null)\n\n /**\n * Select button display option to toggle school filtering\n */\n const schoolFilterOptions = [`${subdomainSchoolName}`, locale === 'es-ES' ? \"Todos los Programas\" : \"All Programs\"]\n\n /**\n * handles school filter change when checkboxes toggled, updates URL, and sets state\n */\n const handleSchoolFilterChange = (e) => {\n const value = e.value\n setSchoolFilterValueIndex(schoolFilterOptions.indexOf(value))\n setQueryFilters(null)\n setPageParam(1)\n\n if (value === \"All Programs\" || \"Todos los Programas\") {\n // setDisplayCareers(allCosmicjsCareers)\n dispatch({\n type: \"SET_SCHOOL_FILTER\",\n isSchoolFilterOn: false,\n })\n } else {\n dispatch({\n type: \"SET_SCHOOL_FILTER\",\n isSchoolFilterOn: true,\n })\n }\n\n setSchoolFilterParam(value === \"All Programs\" || value === \"Todos los Programas\" ? false : true)\n }\n\n const handlePageChange = (pageNumber) => {\n if (pageNumber !== activePage) {\n scrollToElementWithOffset(ref.current, 225, \"smooth\")\n setPageParam(pageNumber)\n dispatch({\n type: \"SET_PAGE\",\n newPage: pageNumber,\n })\n }\n }\n\n /**\n * opens and closes filter dropdown\n **/\n const handleFiltersOnClick = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * handles toggle off of showFilters and updates URL when clicking outside of filter dropdown\n * @param {*} e\n * @returns\n */\n const handleOutsideFilterClick = (e) => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // reformat filters object into queryFilters refinementList format\n const newRefinements = Object.entries(filters).reduce((acc, [key, valueObj]) => {\n const trueValues = Object.keys(valueObj).filter((k) => valueObj[k])\n\n if (trueValues.length > 0) {\n acc[key] = trueValues\n }\n\n return acc\n }, {})\n\n // update `queryFilters` with the new refinement lists\n const updatedQueryFilters = {\n ...queryFilters,\n refinementList: newRefinements,\n }\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const filtersHaveChanged = !_.isEqual(queryRefinementList, updatedQueryFilters.refinementList) && !_.isEmpty(updatedQueryFilters.refinementList)\n\n // use the setQueryFilters to update the state\n showFilters && filtersHaveChanged && setQueryFilters(updatedQueryFilters)\n\n setShowFilters(false)\n }\n\n /**\n * updates filters state when checkbox is toggled and resets page to 1\n */\n const updateFilters = (filterType, filter, isChecked) => {\n setFilters((prevFilters) => ({\n ...prevFilters,\n [filterType]: {\n ...prevFilters[filterType],\n [filter]: isChecked,\n },\n }))\n setPageParam(1)\n }\n\n const inSalaryFilters = (career) => {\n const salaryDict = {\n \"Not that Important\": [0, 51000],\n Important: [51000, 150000],\n \"Very Important\": [150000, Infinity],\n }\n\n for (const salaryFilter in filters.salary) {\n if (filters.salary[salaryFilter]) {\n if (salaryDict[salaryFilter][0] <= career.career_salary_median && career.career_salary_median < salaryDict[salaryFilter][1]) {\n return true\n }\n }\n }\n\n return false\n }\n\n const inEducationFilters = (career) => {\n for (const educationFilter in filters.education) {\n if (filters.education[educationFilter]) {\n if (career.career_education_level?.includes(educationFilter)) {\n return true\n }\n }\n }\n\n return false\n }\n\n const inDressFilters = (career) => {\n for (const dressFilter in filters.dress) {\n if (filters.dress[dressFilter]) {\n if (career.career_dress == dressFilter) {\n return true\n }\n }\n }\n }\n\n const inActivityFilters = (career) => {\n for (const activityFilter in filters.activity) {\n if (filters.activity[activityFilter]) {\n if (career.career_activity == activityFilter) {\n return true\n }\n }\n }\n }\n\n useEffect(() => {\n setDislikedCareerSlugs(profile?.assessmentRecord?.dislikedCareers || [])\n }, [profile])\n\n // triggers when filters, disliked careers, or school filter changes, used to reset state\n useEffect(() => {\n let filteredCareers = allCosmicjsCareers.filter((career) => !dislikedCareerSlugs.includes(career.slug))\n\n // filters out careers that are not in the school specific careers list\n if (isSchoolFilterOn) {\n filteredCareers = filteredCareers.filter((career) => schoolSpecificCareers.some((schoolCareer) => schoolCareer.slug === career.slug))\n }\n\n // checks if at least one filter is applied\n const hasAtLeastOneFilter = Object.values(filters).some((filterType) => Object.values(filterType).some((filter) => filter))\n\n if (hasAtLeastOneFilter) {\n filteredCareers = filteredCareers.filter((career) => {\n return inSalaryFilters(career) || inEducationFilters(career) || inDressFilters(career) || inActivityFilters(career)\n })\n }\n\n if (profile?.assessmentRecord?.careerMatches) {\n // load only careers that are current avaliable in cosmic since results may be out of sync\n const currentCosmicCareers = removeMissingCareers(profile.assessmentRecord.careerMatches, filteredCareers)\n\n let startingPage = 1\n\n if (pageParam && pageParam !== activePage) {\n startingPage = pageParam\n }\n\n dispatch({\n type: \"LOAD_ALL_MATCHES\",\n newAllMatches: currentCosmicCareers,\n newStartingPage: startingPage,\n })\n dispatch({\n type: \"SET_SEARCH_STATE\",\n newSearchState: searchState,\n })\n }\n }, [filters, dislikedCareerSlugs, schoolSpecificCareers, isSchoolFilterOn])\n\n // syncs page with URL, filteredMatches load async so need to wait for them to load before page set\n useEffect(() => {\n if (pageParam) {\n dispatch({\n type: \"SET_PAGE\",\n newPage: pageParam,\n })\n }\n }, [pageParam, filteredMatches])\n\n // syncs school filtering with URL\n useEffect(() => {\n if (schoolFilterParam === true) {\n setSchoolFilterValueIndex(0)\n\n dispatch({\n type: \"SET_SCHOOL_FILTER\",\n isSchoolFilterOn: true,\n })\n } else if (schoolFilterParam === false) {\n setSchoolFilterValueIndex(1)\n\n dispatch({\n type: \"SET_SCHOOL_FILTER\",\n isSchoolFilterOn: false,\n })\n }\n }, [schoolFilterParam])\n\n // syncs filters with queryFilters if url changes\n useEffect(() => {\n let newFilters = {\n salary: {},\n education: {},\n dress: {},\n activity: {},\n }\n\n // parse queryFilters to update filters\n for (let key in queryFilters?.refinementList) {\n if (newFilters[key]) {\n queryFilters.refinementList[key].forEach((filterValue) => {\n newFilters[key][filterValue] = true\n })\n }\n }\n\n setFilters(newFilters)\n }, [queryFilters])\n\n // will display loading screen and scroll to component, need to use timeout to give loading time and mask scrolling\n // only fires if state is passed to link from \"see more matches\" button\n // looking for better solution\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (window.history.state.scrollToExplore === true || pageParam) {\n setIsLoadingScreen(true)\n setTimeout(() => {\n ref.current !== null && scrollToElementWithOffset(ref.current, 225, \"auto\")\n }, 1000)\n setTimeout(() => {\n setIsLoadingScreen(false)\n }, 1000)\n }\n }\n }, [ref.current])\n\n useEffect(() => {\n // gets school specific careers based on petersons majors data and cosmicjs careers which have linked majors\n if (!!firebase) {\n const getSchoolData = async () => {\n // get petersons school data, might be nothing\n const res = await firebase.getPetersonsSchoolData(subdomainPetersonsInstitutionId)\n const { majorsData = [] } = res?.data || {}\n\n const schoolSpecificCareers = getSchoolSpecificCareers(allCosmicjsCareers, majorsData)\n setSchoolSpecificCareers(schoolSpecificCareers)\n }\n\n getSchoolData()\n }\n }, [firebase])\n\n /**\n * Maps over the displayMatches and returns a list of CardCareers components, if the career is found in allCosmicjsCareers else returns null\n **/\n const FilteredMatchCards = displayMatches.map((orderedCareer) => {\n // find and merge career with career ID and correlation\n const foundCareer = allCosmicjsCareers.find((allCareer) => allCareer.slug === orderedCareer.slug)\n\n if (foundCareer) {\n return (\n <li className=\"ais-Hits-item\" key={orderedCareer.id}>\n <CardCareers\n objectID={orderedCareer.id}\n img={foundCareer.career_banner_image}\n title={foundCareer.title}\n slug={foundCareer.slug}\n demand={foundCareer.career_demand}\n category={foundCareer?.career_job_categories?.title}\n contentType={\"careers\"}\n salaryEntry={foundCareer.career_salary_entry_level}\n salaryExperienced={foundCareer.career_salary_experienced}\n correlation={orderedCareer.correlation}\n thumbsFeedback={true}\n setDislikedCareerSlugs={setDislikedCareerSlugs}\n />\n </li>\n )\n } else {\n return null\n }\n }).filter((match) => match !== null)\n\n return (\n <>\n {isLoadingScreen && <LoadingSpinner />}\n <div\n className=\"ais-SearchBox algolia-careers-personality-explore\"\n style={{ display: \"flex\", justifyContent: \"space-between\", maxWidth: \"unset\", flexWrap: \"wrap\", gap: \"1rem\" }}\n >\n <form noValidate=\"\" className=\"ais-SearchBox-form\" action=\"\" role=\"search\" onSubmit={(e) => e.preventDefault()} style={{maxWidth: '400px', minHeight: '45px'}}>\n <input\n type=\"search\"\n placeholder={formatMessage({ id: \"algolia-careers-personality-search-by-job-title\", defaultMessage: \"Search by job title\" })}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n required=\"\"\n maxLength=\"512\"\n className=\"ais-SearchBox-input\"\n onChange={(e) =>\n dispatch({\n type: \"SET_SEARCH_STATE\",\n newSearchState: e.target.value,\n })\n }\n value={searchState}\n ></input>\n <button type=\"submit\" title=\"Submit your search query.\" className=\"ais-SearchBox-submit\" style={{height:\"45px\"}}>\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"far\"\n data-icon=\"search\"\n className=\"svg-inline--fa fa-search fa-w-16 \"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M508.5 468.9L387.1 347.5c-2.3-2.3-5.3-3.5-8.5-3.5h-13.2c31.5-36.5 50.6-84 50.6-136C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c52 0 99.5-19.1 136-50.6v13.2c0 3.2 1.3 6.2 3.5 8.5l121.4 121.4c4.7 4.7 12.3 4.7 17 0l22.6-22.6c4.7-4.7 4.7-12.3 0-17zM208 368c-88.4 0-160-71.6-160-160S119.6 48 208 48s160 71.6 160 160-71.6 160-160 160z\"\n ></path>\n </svg>\n </button>\n {searchState.length > 0 && (\n <button\n type=\"reset\"\n onClick={(e) =>\n dispatch({\n type: \"SET_SEARCH_STATE\",\n newSearchState: \"\",\n })\n }\n title=\"Clear the search query.\"\n className=\"ais-SearchBox-reset\"\n hidden=\"\"\n >\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"times\"\n className=\"svg-inline--fa fa-times fa-w-11 \"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 352 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"\n ></path>\n </svg>\n </button>\n )}\n </form>\n <div>\n {subdomainPetersonsInstitutionId && (\n <div className=\"results-school-toggle\">\n <SelectButton\n value={schoolFilterOptions[schoolFilterValueIndex]}\n options={schoolFilterOptions}\n onChange={handleSchoolFilterChange}\n className=\"no-transition-selectbutton\"\n />\n </div>\n )}{\" \"}\n </div>\n </div>\n\n <div className=\"stream stream-careers stream-careers-explore\" ref={ref}>\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters stream-explore-filters-matches\">\n <button className=\"stream-explore-filters-button\" onClick={handleFiltersOnClick}>\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{\n color: \"#363636\",\n marginLeft: \".5rem\",\n }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{\n color: \"#363636\",\n marginLeft: \".5rem\",\n }}\n />\n </button>\n\n <div className={`explore-context-filter ${showFilters ? \"show\" : \"hide\"}`}>\n <h3>\n <FormattedMessage id=\"algolia-careers-personality-filter-careers-by\" defaultMessage=\"Filter Careers by\" />:\n </h3>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={<FormattedMessage id=\"results-filter-salary\" defaultMessage=\"Salary\" />}\n style={{\n marginBottom: \"1.5rem\",\n }}\n />\n <div className=\"ais-RefinementList\">\n <ul className=\"ais-RefinementList-list\">\n {salaryOptions.map((option, index) => (\n <li key={index} className=\"ais-RefinementList-item\">\n <label className=\"ais-RefinementList-label\">\n <input\n className=\"ais-RefinementList-checkbox\"\n type=\"checkbox\"\n checked={filters.salary[option.value] || false}\n onChange={(event) => updateFilters(\"salary\", option.value, event.target.checked)}\n />\n <span className=\"ais-RefinementList-labelText\">{option.text}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={<FormattedMessage id=\"results-filter-education\" defaultMessage=\"Education\" />}\n style={{\n marginBottom: \"1.5rem\",\n }}\n />\n <ul className=\"ais-RefinementList-list\">\n {educationOptions.map((option, index) => (\n <li key={index} className=\"ais-RefinementList-item\">\n <label className=\"ais-RefinementList-label\">\n <input\n className=\"ais-RefinementList-checkbox\"\n type=\"checkbox\"\n checked={filters.education[option.value] || false}\n onChange={(event) => updateFilters(\"education\", option.value, event.target.checked)}\n />\n <span className=\"ais-RefinementList-labelText\">{option.text}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={<FormattedMessage id=\"results-filter-dress\" defaultMessage=\"Dress\" />}\n style={{\n marginBottom: \"1.5rem\",\n }}\n />\n <ul className=\"ais-RefinementList-list\">\n {dressOptions.map((option, index) => (\n <li key={index} className=\"ais-RefinementList-item\">\n <label className=\"ais-RefinementList-label\">\n <input\n className=\"ais-RefinementList-checkbox\"\n type=\"checkbox\"\n checked={filters.dress[option.value] || false}\n onChange={(event) => updateFilters(\"dress\", option.value, event.target.checked)}\n />\n <span className=\"ais-RefinementList-labelText\">{option.text}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n <div className=\"filter filter-four filter-last\">\n <EyeBrow\n text={<FormattedMessage id=\"algolia-careers-personality-physical-activity\" defaultMessage=\"Physical Activity\" />}\n style={{\n marginBottom: \"1.5rem\",\n }}\n />\n <ul className=\"ais-RefinementList-list\">\n {activityOptions.map((option, index) => (\n <li key={index} className=\"ais-RefinementList-item\">\n <label className=\"ais-RefinementList-label\">\n <input\n className=\"ais-RefinementList-checkbox\"\n type=\"checkbox\"\n checked={filters.activity[option.value] || false}\n onChange={(event) => updateFilters(\"activity\", option.value, event.target.checked)}\n />\n <span className=\"ais-RefinementList-labelText\">{option.text}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"sort-by\" defaultMessage=\"Sort by\" />:\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <Link to=\"/dashboard?category=Careers&showSaved=0\">\n <FormattedMessage id=\"all\" defaultMessage=\"All\" />\n </Link>\n </li>\n\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <Link to=\"/dashboard?category=PersonalityCareers&personality=true\" className={\"active\"}>\n <FormattedMessage id=\"matches\" defaultMessage=\"Matches\" />\n </Link>\n </li>\n\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <Link to=\"/dashboard?category=Careers&showSaved=1\">\n <FormattedMessage id=\"algolica-careers-explore-saved\" defaultMessage=\"Saved\" />\n </Link>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <div className=\"ais-Hits\">\n <ul className=\"ais-Hits-list\">{FilteredMatchCards}</ul>\n </div>\n\n <div className=\"ais-Pagination\">\n <Pagination\n activePage={activePage}\n itemsCountPerPage={10}\n totalItemsCount={filteredMatches.length}\n pageRangeDisplayed={7}\n onChange={handlePageChange}\n activeLinkClass=\"ais-Pagination-link ais-Pagination-link--selected\"\n linkClass=\"ais-Pagination-link\"\n innerClass=\"ais-Pagination-list\"\n itemClass=\"ais-Pagination-item ais-Pagination-item--page\"\n itemClassPrev=\"ais-Pagination-item ais-Pagination-item--disabled ais-Pagination-item--previousPage\"\n hideFirstLastPages\n prevPageText={\n <span className=\"ais-Pagination-link\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"chevron-left\"\n className=\"svg-inline--fa fa-chevron-left fa-w-10 fa-sm \"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 320 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"\n ></path>\n </svg>\n </span>\n }\n nextPageText={\n <a className=\"ais-Pagination-link\" aria-label=\"Next page\" href=\"#\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"chevron-right\"\n className=\"svg-inline--fa fa-chevron-right fa-w-10 fa-sm \"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 320 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"\n ></path>\n </svg>\n </a>\n }\n />\n </div>\n </div>\n </>\n )\n}\n\nconst salaryOptions = [\n // Very Important, Important, Not that Important\n {\n key: \"Not that Important\",\n text: <FormattedMessage id=\"results-filter-not-that-important\" defaultMessage=\"Not that Important\" />,\n value: \"Not that Important\",\n },\n {\n key: \"Important\",\n text: <FormattedMessage id=\"results-filter-important\" defaultMessage=\"Important\" />,\n value: \"Important\",\n },\n {\n key: \"Very Important\",\n text: <FormattedMessage id=\"results-filter-very-important\" defaultMessage=\"Very Important\" />,\n value: \"Very Important\",\n },\n]\n\nconst educationOptions = [\n // License, Certificate, Apprenticeship, 2-Year College, 4-Year College, Graduate School\n {\n key: \"High School\",\n text: <FormattedMessage id=\"results-filter-high-school\" defaultMessage=\"High School\" />,\n value: \"High School\",\n },\n {\n key: \"License\",\n text: <FormattedMessage id=\"results-filter-license\" defaultMessage=\"License\" />,\n value: \"License\",\n },\n {\n key: \"Certificate\",\n text: <FormattedMessage id=\"results-filter-certificate\" defaultMessage=\"Certificate\" />,\n value: \"Certificate\",\n },\n {\n key: \"Apprenticeship\",\n text: <FormattedMessage id=\"results-filter-apprenticeship\" defaultMessage=\"Apprenticeship\" />,\n value: \"Apprenticeship\",\n },\n {\n key: \"2-year College\",\n text: <FormattedMessage id=\"results-filter-2-year-college\" defaultMessage=\"2-year College\" />,\n value: \"2-year College\",\n },\n {\n key: \"4-year College\",\n text: <FormattedMessage id=\"results-filter-4-year-college\" defaultMessage=\"4-year College\" />,\n value: \"4-year College\",\n },\n {\n key: \"Graduate School\",\n text: <FormattedMessage id=\"results-filter-graduate-school\" defaultMessage=\"Graduate School\" />,\n value: \"Graduate School\",\n },\n]\n\nconst dressOptions = [\n // Business, Business Casual, Casual\n {\n key: \"casual\",\n text: <FormattedMessage id=\"results-filter-casual\" defaultMessage=\"Casual\" />,\n value: \"casual\",\n },\n {\n key: \"business casual\",\n text: <FormattedMessage id=\"results-filter-business-casual\" defaultMessage=\"Business Casual\" />,\n value: \"business casual\",\n },\n {\n key: \"business\",\n text: <FormattedMessage id=\"results-filter-business\" defaultMessage=\"Business\" />,\n value: \"business\",\n },\n {\n key: \"uniform\",\n text: <FormattedMessage id=\"results-filter-uniform\" defaultMessage=\"Uniform\" />,\n value: \"uniform\",\n },\n]\n\nconst activityOptions = [\n // Stationary, Moderately Active, Active\n {\n key: \"stationary\",\n text: <FormattedMessage id=\"results-filter-stationary\" defaultMessage=\"Stationary\" />,\n value: \"stationary\",\n },\n {\n key: \"moderately active\",\n text: <FormattedMessage id=\"results-filter-moderately-active\" defaultMessage=\"Moderately Active\" />,\n value: \"moderately active\",\n },\n {\n key: \"active\",\n text: <FormattedMessage id=\"results-filter-active\" defaultMessage=\"Active\" />,\n value: \"active\",\n },\n]\n\nfunction scrollToElementWithOffset(element, offset, behavior) {\n if (typeof window === \"undefined\") return\n\n const rect = element.getBoundingClientRect()\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop\n const elementTop = rect.top + scrollTop\n\n // Scroll to the element with the offset\n window.scrollTo({\n top: elementTop - offset,\n behavior: behavior || \"smooth\",\n })\n}\n\nexport default AlgoliaCareersPersonalityExplore\n","import React, { useState, useEffect, useRef, useContext } from \"react\"\nimport orderBy from \"lodash.orderby\"\nimport _ from \"lodash\"\nimport CardCareers from \"../cards/cards-careers\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faChevronDown,\n faChevronUp,\n faChevronRight,\n faChevronLeft,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n SearchBox,\n Configure,\n Pagination,\n Hits,\n RefinementList,\n ClearRefinements,\n ScrollTo,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { AlgoliaCareersPersonalityExplore } from \"./algolia-careers-personality-explore\"\nimport {\n useQueryParam,\n JsonParam,\n BooleanParam,\n StringParam,\n} from \"use-query-params\"\nimport { globalHistory } from \"@reach/router\"\nimport Link from \"../../link\"\nimport { FirebaseContext } from \"../../components/Firebase\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { localizePersonalityCheckboxTranslation, localizePathwayCheckboxTranslation,\n localizeEducationCheckboxTranslations } from \"./localized-algolia-checkboxes\"\n// @TODO Style tweaking and cleanup\n// @TODO make the component NOT display if there are no results\n// @TODO update filter states\n// @TODO pull in salary data when available, remove eslint disables\n\nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst careerResult = ({ hit }) => {\n const {\n objectID,\n title,\n career_banner_image,\n career_salary_entry_level,\n career_salary_experienced,\n career_demand,\n career_job_categories,\n slug,\n type,\n } = hit\n\n return (\n <CardCareers\n objectID={objectID}\n img={career_banner_image}\n title={title}\n slug={slug}\n demand={career_demand}\n category={career_job_categories}\n contentType={type}\n salaryEntry={career_salary_entry_level}\n salaryExperienced={career_salary_experienced}\n backURL={'' || null}\n />\n )\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaCareersExplore = props => {\n const { classContext, filterList } = props\n const { profile } = useContext(FirebaseContext)\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n const [categoryQuery] = useQueryParam(\"category\", StringParam)\n const [personalityQuery] = useQueryParam(\"personality\", BooleanParam)\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n\n const { locale, formatMessage } = useIntl()\n const localeFilter = `locale:${locale}`\n const filterListWithLocale = filterList\n ? `(${filterList}) AND ${localeFilter}`\n : localeFilter\n\n const setHTMLScrollStyle = behavior => {\n document.querySelector(\"html\").style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\n \"showSaved\",\n BooleanParam\n )\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [showSaved, setShowSaved] = useState(showSavedQuery || false)\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * Handles toggling of the newest | saved feature. Updates URL\n *\n * @param {SyntheticEvent} e\n */\n const handleShowSavedClick = e => {\n e.preventDefault()\n if (e.target.attributes.class.value === \"active\") {\n return\n }\n setShowSaved(!showSaved)\n setQueryFilters(undefined)\n setShowSavedQuery(!showSaved)\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setShowSaved(showSavedQuery)\n }, [showSavedQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle(\"smooth\")\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle(\"auto\")\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList\n ? searchInput.refinementList\n : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery =\n queryFilters?.query !== searchInput?.query &&\n searchInput?.query.length > 0\n const isFilterSelectionQuery =\n !_.isEqual(queryRefinementList, searchInputRefinementList) &&\n !_.isEmpty(searchInputRefinementList)\n const isSortByQuery = showSaved !== showSavedQuery\n const isEmptyURL = queryFilters || showSavedQuery ? false : true\n const isEmptySearch = _.isEqual(searchInput, {\n configure: { hitsPerPage: 8, distinct: true, filters: \"\" },\n })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = e => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList\n ? searchState.refinementList\n : {}\n const filtersHaveChanged =\n !_.isEqual(queryRefinementList, searchStateRefinementList) &&\n !_.isEmpty(searchStateRefinementList)\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n const [hasMatches, setHasMatches] = useState(false)\n\n useEffect(() => {\n if (profile && profile.assessmentRecord) {\n setHasMatches(true)\n } else if (profile && !profile.assessmentRecord) {\n setHasMatches(false)\n }\n }, [profile])\n\n const transformCareerPersonalityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePersonalityItem = { ...item };\n if (\n localizePersonalityCheckboxTranslation[item.label] &&\n localizePersonalityCheckboxTranslation[item.label][locale]\n ) {\n localizePersonalityItem.label =\n localizePersonalityCheckboxTranslation[item.label][locale];\n }\n return localizePersonalityItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformCareerPathwayFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePathwayItem = { ...item };\n if (\n localizePathwayCheckboxTranslation[item.label] &&\n localizePathwayCheckboxTranslation[item.label][locale]\n ) {\n localizePathwayItem.label =\n localizePathwayCheckboxTranslation[item.label][locale];\n }\n return localizePathwayItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformCareerEducationFilterItems = (items) => {\n return items.map((item) => {\n const locItem = {\n ...item\n };\n if (localizeEducationCheckboxTranslations[item.label] && localizeEducationCheckboxTranslations[item.label][locale])\n locItem.label = localizeEducationCheckboxTranslations[item.label][locale] || item;\n return locItem;\n });\n };\n\n return (\n <InstantSearch\n indexName=\"careers_explore\"\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n >\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\" }),\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div\n className={`stream stream-${classContext} stream-${classContext}-explore`}\n >\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n <button\n className=\"stream-explore-filters-button\"\n onClick={filters}\n >\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n </button>\n\n <div\n className={`explore-context-filter ${showFilters ? \"show\" : \"hide\"\n }`}\n >\n <h3><FormattedMessage id=\"filter-careers-by\" defaultMessage=\"Filter Careers by\" />:</h3>\n <div className=\"filter filter-personality filter-three\">\n <EyeBrow\n text={<FormattedMessage id=\"algolia-stories-explore-personality\" defaultMessage=\"Personality\" />}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={50}\n attribute=\"career_personality_filter\"\n transformItems={transformCareerPersonalityFilterItems}\n />\n </div>\n <div className=\"filter filter-three\">\n <EyeBrow\n text={formatMessage({ id: \"careers-explore-pathways\", defaultMessage: \"PathWays\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"career_pathways_filter\"\n transformItems={transformCareerPathwayFilterItems}\n />\n </div>\n <div className=\"filter filter-three filter-last\">\n <EyeBrow\n text={formatMessage({ id: \"careers-explore-education-required\", defaultMessage: \"Education Required\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n attribute=\"career_education_required_filter\"\n transformItems={transformCareerEducationFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={showSaved && !personalityQuery ? \"\" : \"active\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"all\" defaultMessage=\"All\" />\n </a>\n </li>\n {hasMatches && (\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n {/* <a\n href=\"/\"\n // className={showSaved ? \"\" : \"active\"}\n // onClick={handleShowSavedClick}\n > */}\n <Link\n to=\"/dashboard?category=PersonalityCareers&page=1&personality=true\"\n className={personalityQuery ? \"active\" : \"\"}\n >\n <FormattedMessage id=\"matches\" defaultMessage=\"Matches\" />\n </Link>\n\n {/* </a> */}\n </li>\n )}\n\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a\n href=\"/\"\n className={showSaved && !personalityQuery ? \"active\" : \"\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolica-careers-explore-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <Configure\n hitsPerPage={8}\n distinct\n filters={showSaved ? filterListWithLocale : localeFilter}\n />\n\n <Hits hitComponent={careerResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaCareersExplore\n","import React from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport Link from \"../../link\"\nimport { FormattedMessage } from \"react-intl\"\n\nconst CardSchools = props => {\n const {\n img,\n title,\n slug,\n city,\n state,\n acceptance,\n enrolled,\n objectID,\n idx,\n contentType,\n hideBookmarks,\n } = props\n\n return (\n <div\n className=\"component-card component-card-schools\"\n key={idx}\n data-object={objectID}\n >\n <div className=\"component-card-image component-card-image-schools\">\n {img ? (\n <Link to={`/school/${slug}`}>\n <img\n src={`${img}?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces`}\n alt=\"\"\n />\n </Link>\n ) : (\n <Link to={`/school/${slug}`}>\n <img\n src=\"https://imgix.cosmicjs.com/8cbd9150-6568-11eb-8120-dfe8ec2b682f-campus-centered.jpg?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces\"\n alt=\"\"\n />\n </Link>\n )}\n </div>\n <div className=\"component-card-meta component-card-meta-schools\">\n <div className=\"component-card-meta-header component-card-meta-header-schools\">\n {!hideBookmarks && (\n <Bookmark\n contentTitle={title}\n classContext={\"schools\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n )}\n\n <Link\n to={`/school/${slug}`}\n className=\"component-card-title component-card-title-schools\"\n >\n {title}\n </Link>\n </div>\n <div className=\"component-card-location component-card-location-schools\">\n {city && !state && <span>{city}</span>}\n {state && !city && <span>{state}</span>}\n {city && state && (\n <span>\n {city}, {state}\n </span>\n )}\n </div>\n {enrolled && (\n <span className=\"component-card-students component-card-students-schools\">\n {enrolled.toLocaleString(\"en\")}{\" \"}\n <FormattedMessage id=\"school-card-students\" defaultMessage=\"Students\" />\n </span>\n )}\n {enrolled && acceptance && <span className=\"pipe\">|</span>}\n {acceptance && (\n <span className=\"component-card-acceptance component-card-acceptance-schools\">\n {Math.floor(acceptance)}%{\" \"}<FormattedMessage id=\"school-card-acceptance\" defaultMessage=\"Acceptance\" />\n </span>\n )}\n </div>\n </div>\n )\n}\n\nexport default CardSchools\n","import React, { useState, useEffect, useRef } from \"react\"\nimport orderBy from 'lodash.orderby';\nimport _ from \"lodash\"\nimport CardSchools from \"../cards/cards-schools\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faChevronDown, faChevronUp, faChevronRight, faChevronLeft, faTimes } from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from 'react-outside-click-handler';\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from 'algoliasearch';\nimport { InstantSearch, SearchBox, Configure, Pagination, Hits, RefinementList, ClearRefinements, ScrollTo } from 'react-instantsearch-dom';\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, BooleanParam } from \"use-query-params\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport {\n globalHistory,\n} from \"@reach/router\"\nimport { localizeSizeCheckboxTranslations, localizeSettingCheckboxTranslations,\n localizeTypeCheckboxTranslations, localizeCostCheckboxTranslations} from \"./localized-algolia-checkboxes\"\n\n\n\n// @TODO Style tweaking and cleanup\n// @TODO make the component NOT display if there are no results\n// @TODO update filter states\n\nconst searchClient = algoliasearch(AlgoliaClientKeys.appId, AlgoliaClientKeys.apiKey);\n\nconst schoolResult = ({ hit }) => {\n const {\n objectID,\n title,\n school_banner_image,\n slug,\n type,\n school_city,\n school_state_or_region,\n school_acceptance_rate,\n school_enrolled_count\n } = hit;\n\n return (\n <CardSchools\n objectID={objectID}\n img={school_banner_image}\n title={title}\n slug={slug}\n contentType={type}\n city={school_city}\n state={school_state_or_region}\n acceptance={school_acceptance_rate}\n enrolled={school_enrolled_count}\n />\n );\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaSchoolsExplore = props => {\n const { classContext, filterList } = props\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n const { locale, formatMessage } = useIntl()\n const localeFilter = `locale:${locale}`\n const filterListWithLocale = filterList ? `(${filterList}) AND ${localeFilter}` : localeFilter\n\n const setHTMLScrollStyle = (behavior) => {\n document.querySelector('html').style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\"queryFilters\", JsonParam)\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\"showSaved\", BooleanParam)\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [showSaved, setShowSaved] = useState(showSavedQuery || false)\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * Handles toggling of the newest | saved feature. Updates URL\n *\n * @param {SyntheticEvent} e\n */\n const handleShowSavedClick = e => {\n e.preventDefault()\n if (e.target.attributes.class.value === \"active\") {\n return\n }\n setShowSaved(!showSaved)\n setQueryFilters(undefined)\n setShowSavedQuery(!showSaved)\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setShowSaved(showSavedQuery)\n }, [showSavedQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle('smooth')\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle('auto')\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList ? searchInput.refinementList : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery = (queryFilters?.query !== searchInput?.query && searchInput?.query.length > 0)\n const isFilterSelectionQuery = (!_.isEqual(queryRefinementList, searchInputRefinementList) && !_.isEmpty(searchInputRefinementList))\n const isSortByQuery = showSaved !== showSavedQuery\n const isEmptyURL = (queryFilters || showSavedQuery) ? false : true\n const isEmptySearch = _.isEqual(searchInput, { configure: { hitsPerPage: 8, distinct: true, filters: '' } })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = (e) => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList ? searchState.refinementList : {}\n const filtersHaveChanged = (!_.isEqual(queryRefinementList, searchStateRefinementList) && !_.isEmpty(searchStateRefinementList))\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n const transformSchoolSizeFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeSizetItem = { ...item };\n if (\n localizeSizeCheckboxTranslations[item.label] &&\n localizeSizeCheckboxTranslations[item.label][locale]\n ) {\n localizeSizetItem.label =\n localizeSizeCheckboxTranslations[item.label][locale];\n }\n return localizeSizetItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformSchoolSettingFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeSettingtItem = { ...item };\n if (\n localizeSettingCheckboxTranslations[item.label] &&\n localizeSettingCheckboxTranslations[item.label][locale]\n ) {\n localizeSettingtItem.label =\n localizeSettingCheckboxTranslations[item.label][locale];\n }\n return localizeSettingtItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformSchoolTypeFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeTypetItem = { ...item };\n if (\n localizeTypeCheckboxTranslations[item.label] &&\n localizeTypeCheckboxTranslations[item.label][locale]\n ) {\n localizeTypetItem.label =\n localizeTypeCheckboxTranslations[item.label][locale];\n }\n return localizeTypetItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformSchoolCostFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeCosttItem = { ...item };\n if (\n localizeCostCheckboxTranslations[item.label] &&\n localizeCostCheckboxTranslations[item.label][locale]\n ) {\n localizeCosttItem.label =\n localizeCostCheckboxTranslations[item.label][locale];\n }\n return localizeCosttItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n return (\n\n <InstantSearch\n indexName=\"schools_explore\"\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n >\n\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\" })\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div className={`stream stream-${classContext} stream-${classContext}-explore`}>\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n <button className=\"stream-explore-filters-button\" onClick={filters}>\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon className={`${!showFilters ? 'show' : 'hide'}`} icon={faChevronDown} style={{ color: '#363636', marginLeft: '.5rem' }} />\n <FontAwesomeIcon className={`${showFilters ? 'show' : 'hide'}`} icon={faChevronUp} style={{ color: '#363636', marginLeft: '.5rem' }} />\n </button>\n\n <div className={`explore-context-filter ${showFilters ? 'show' : 'hide'}`}>\n <h3><FormattedMessage id=\"algolia-school-explore-filter-school-by\" defaultMessage=\"Filter Schools by\" />:</h3>\n <div className=\"filter filter-five\">\n <EyeBrow text={formatMessage({ id: \"school-explore-size\", defaultMessage: \"Size\" })} style={{ marginBottom: '1.5rem' }} />\n <RefinementList\n attribute=\"school_size_filter\"\n transformItems={transformSchoolSizeFilterItems}\n />\n </div>\n <div className=\"filter filter-five\">\n <EyeBrow text={formatMessage({ id: \"school-explore-setting\", defaultMessage: \"Setting\" })} style={{ marginBottom: '1.5rem' }} />\n <RefinementList\n attribute=\"school_setting_filter\"\n transformItems={transformSchoolSettingFilterItems}\n />\n </div>\n <div className=\"filter filter-five\">\n <EyeBrow text={formatMessage({ id: \"school-explore-type\", defaultMessage: \"Type\" })} style={{ marginBottom: '1.5rem' }} />\n <RefinementList\n attribute=\"school_type_filter\"\n transformItems={transformSchoolTypeFilterItems}\n />\n </div>\n <div className=\"filter filter-five\">\n <EyeBrow text={formatMessage({ id: \"school-explore-acceptance-rate\", defaultMessage: \"Acceptance Rate\" })} style={{ marginBottom: '1.5rem' }} />\n <RefinementList\n attribute=\"school_selectivity_filter\"\n transformItems={items =>\n orderBy(items, ['label', 'count'], ['asc', 'desc'])\n }\n />\n </div>\n <div className=\"filter filter-five filter-last\">\n <EyeBrow text={formatMessage({ id: \"school-explore-cost\", defaultMessage: \"Cost\" })} style={{ marginBottom: '1.5rem' }} />\n <RefinementList\n attribute=\"school_cost_filter\"\n transformItems={transformSchoolCostFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a href=\"/\" className={(showSaved) ? '' : 'active'} onClick={handleShowSavedClick}>\n <FormattedMessage id=\"algolia-stories-view-newest\" defaultMessage=\"Newest\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a href=\"/\" className={(showSaved) ? 'active' : ''} onClick={handleShowSavedClick}>\n <FormattedMessage id=\"algolia-stories-view-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <Configure\n hitsPerPage={8}\n distinct\n filters={(showSaved) ? filterListWithLocale : localeFilter}\n />\n\n <Hits hitComponent={schoolResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaSchoolsExplore\n","import React from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport Link from \"../../link\"\nimport { FormattedMessage } from \"react-intl\"\n\nconst CardMajors = props => {\n const {\n img,\n title,\n slug,\n bachelor,\n associate,\n graduate,\n master,\n doctorate,\n categories,\n objectID,\n idx,\n contentType,\n hideBookmarks,\n } = props\n\n return (\n <div\n className=\"component-card component-card-majors\"\n key={idx}\n data-object={objectID}\n >\n <div className=\"component-card-image component-card-image-majors\">\n {img ? (\n <Link to={`/major/${slug}`}>\n <img\n src={`${img}?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces`}\n alt=\"\"\n />\n </Link>\n ) : (\n <Link to={`/major/${slug}`}>\n <img\n src=\"https://imgix.cosmicjs.com/90920fd0-6000-11eb-ad8f-d1a7eae548e8-major1.jpg?q=&auto=compress,&w=712&h=446&fit=crop&crop=faces\"\n alt=\"\"\n />\n </Link>\n )}\n </div>\n <div className=\"component-card-meta component-card-meta-majors\">\n <div className=\"component-card-meta-header component-card-meta-header-majors\">\n {!hideBookmarks && (\n <Bookmark\n contentTitle={title}\n classContext={\"majors\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n )}\n <Link\n to={`/major/${slug}`}\n className=\"component-card-title component-card-title-majors\"\n >\n {title}\n </Link>\n </div>\n {(bachelor || associate || graduate || master || doctorate) && (\n <div className=\"component-card-degree component-card-degree-major\">\n <ul>\n <li>\n <strong><FormattedMessage id=\"cards-major-degree\" defaultMessage=\"Degree\" />: </strong>\n </li>\n {associate === true && <li><FormattedMessage id=\"cards-major-associates\" defaultMessage=\"Associate's\" /></li>}\n {bachelor && <li><FormattedMessage id=\"cards-major-bachelor\" defaultMessage=\"Bachelor's\" /></li>}\n {graduate && <li><FormattedMessage id=\"cards-major-graduate\" defaultMessage=\"Graduate\" /></li>}\n {master && <li><FormattedMessage id=\"cards-major-masters\" defaultMessage=\"Master's\" /></li>}\n {doctorate && <li><FormattedMessage id=\"cards-major-doctorate\" defaultMessage=\"Doctorate\" /></li>}\n </ul>\n </div>\n )}\n {categories && (\n <div className=\"component-card-category component-card-category-major\">\n <strong><FormattedMessage id=\"cards-major-category\" defaultMessage=\"Category\" />:</strong> {categories}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport default CardMajors\n","import React, { useState, useRef, useEffect } from \"react\"\nimport orderBy from \"lodash.orderby\"\nimport CardMajors from \"../cards/cards-majors\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport _ from \"lodash\"\nimport {\n faChevronDown,\n faChevronUp,\n faChevronRight,\n faChevronLeft,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from 'react-outside-click-handler';\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n SearchBox,\n Configure,\n Pagination,\n Hits,\n RefinementList,\n ClearRefinements,\n ScrollTo,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, BooleanParam } from \"use-query-params\"\nimport { globalHistory } from \"@reach/router\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { localizePersonalityCheckboxTranslation, localizePathwayCheckboxTranslation } from \"./localized-algolia-checkboxes\"\n \nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst majorResult = ({ hit }) => {\n const {\n objectID,\n title,\n major_banner_image,\n major_job_categories,\n slug,\n type,\n major_bachelor,\n major_associate,\n major_graduate,\n major_master,\n major_doctorate,\n } = hit\n\n return (\n <CardMajors\n objectID={objectID}\n img={major_banner_image}\n title={title}\n slug={slug}\n categories={major_job_categories}\n contentType={type}\n bachelor={major_bachelor}\n associate={major_associate}\n graduate={major_graduate}\n master={major_master}\n doctorate={major_doctorate}\n />\n )\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaMajorExplore = props => {\n const { classContext, filterList } = props\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n const { locale, formatMessage } = useIntl()\n const localeFilter = `locale:${locale} AND (major_bachelor:true OR major_associate:true OR major_graduate:true OR major_master:true OR major_doctorate:true)`\n const filterListWithLocale = filterList\n ? `(${filterList}) AND ${localeFilter}`\n : localeFilter\n\n const setHTMLScrollStyle = behavior => {\n document.querySelector(\"html\").style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\n \"showSaved\",\n BooleanParam\n )\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [showSaved, setShowSaved] = useState(showSavedQuery || false)\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * Handles toggling of the newest | saved feature. Updates URL\n *\n * @param {SyntheticEvent} e\n */\n const handleShowSavedClick = e => {\n e.preventDefault()\n if (e.target.attributes.class.value === \"active\") {\n return\n }\n setShowSaved(!showSaved)\n setQueryFilters(undefined)\n setShowSavedQuery(!showSaved)\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setShowSaved(showSavedQuery)\n }, [showSavedQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle(\"smooth\")\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle(\"auto\")\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList\n ? searchInput.refinementList\n : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery =\n queryFilters?.query !== searchInput?.query &&\n searchInput?.query.length > 0\n const isFilterSelectionQuery =\n !_.isEqual(queryRefinementList, searchInputRefinementList) &&\n !_.isEmpty(searchInputRefinementList)\n const isSortByQuery = showSaved !== showSavedQuery\n const isEmptyURL = queryFilters || showSavedQuery ? false : true\n const isEmptySearch = _.isEqual(searchInput, {\n configure: { hitsPerPage: 8, distinct: true, filters: \"\" },\n })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = (e) => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList\n ? searchState.refinementList\n : {}\n const filtersHaveChanged =\n !_.isEqual(queryRefinementList, searchStateRefinementList) &&\n !_.isEmpty(searchStateRefinementList)\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n const transformMajorsPersonalityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePersonalityItem = { ...item };\n if (\n localizePersonalityCheckboxTranslation[item.label] &&\n localizePersonalityCheckboxTranslation[item.label][locale]\n ) {\n localizePersonalityItem.label =\n localizePersonalityCheckboxTranslation[item.label][locale];\n }\n return localizePersonalityItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformMajorsPathwayFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePathwayItem = { ...item };\n if (\n localizePathwayCheckboxTranslation[item.label] &&\n localizePathwayCheckboxTranslation[item.label][locale]\n ) {\n localizePathwayItem.label =\n localizePathwayCheckboxTranslation[item.label][locale];\n }\n return localizePathwayItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n return (\n <InstantSearch\n indexName=\"majors_explore\"\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n >\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\"}),\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div\n className={`stream stream-${classContext} stream-${classContext}-explore`}\n >\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n\n <button\n className=\"stream-explore-filters-button\"\n onClick={filters}\n >\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n </button>\n\n <div className={`explore-context-filter ${showFilters ? \"show\" : \"hide\" }`}>\n <h3><FormattedMessage id=\"majors-explore-filter-majors-by\" defaultMessage=\"Filter Majors by\" />:</h3>\n <div className=\"filter filter-personality filter-two\">\n <EyeBrow\n text={formatMessage({id: \"algolia-stories-explore-personality\", defaultMessage: \"Personality\"})}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={50}\n attribute=\"major_personality_filter\"\n transformItems={transformMajorsPersonalityFilterItems}\n />\n </div>\n <div className=\"filter filter-two filter-last\">\n <EyeBrow\n text={formatMessage({id: \"algolia-majors-pathways\", defaultMessage: \"Pathways\"})}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"major_pathways_filter\"\n transformItems={transformMajorsPathwayFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\" style={{ marginLeft: \"auto\" }}>\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={showSaved ? \"\" : \"active\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-newest\" defaultMessage=\"Newest\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a\n href=\"/\"\n className={showSaved ? \"active\" : \"\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n\n <Configure\n hitsPerPage={8}\n distinct\n filters={showSaved ? filterListWithLocale : localeFilter}\n />\n </OutsideClickHandler>\n\n <Hits hitComponent={majorResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaMajorExplore\n","import React from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport Link from \"../../link\"\n\nconst CardCompanies = props => {\n const {\n img,\n title,\n slug,\n location,\n objectID,\n idx,\n industries,\n size,\n contentType,\n hideBookmarks,\n } = props\n\n return (\n <div\n className=\"component-card component-card-companies\"\n key={idx}\n data-object={objectID}\n >\n {!hideBookmarks && (\n <Bookmark\n contentTitle={title}\n classContext={\"companies\"}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n )}\n <div className=\"component-card-image component-card-image-companies\">\n <Link to={`/company/${slug}`}>\n <img\n src={`${img}?q=&auto=compress,&w=224&h=224&fit=crop&crop=faces`}\n alt=\"\"\n />\n </Link>\n </div>\n <div className=\"component-card-meta component-card-meta-companies\">\n <Link\n to={`/company/${slug}`}\n className=\"component-card-title component-card-title-companies\"\n >\n {title}\n </Link>\n <div className=\"component-card-location component-card-location-companies\">\n {location}\n </div>\n <span className=\"component-card-size component-card-size-companies\">\n {size?.join(\", \")}\n </span>\n {industries?.length > 0 && size?.length > 0 && (\n <span className=\"pipe\">|</span>\n )}\n <span className=\"component-card-industry component-card-industry-companies\">\n {industries?.join(\", \")}\n </span>\n </div>\n </div>\n )\n}\n\nexport default CardCompanies\n","import React, { useState, useEffect, useRef } from \"react\"\nimport orderBy from \"lodash.orderby\"\nimport _ from \"lodash\"\nimport CardCompanies from \"../cards/cards-companies\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faChevronDown,\n faChevronUp,\n faChevronRight,\n faChevronLeft,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n SearchBox,\n Configure,\n Pagination,\n Hits,\n RefinementList,\n ClearRefinements,\n ScrollTo,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, BooleanParam } from \"use-query-params\"\nimport { globalHistory } from \"@reach/router\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { localizeSizeCheckboxTranslations, localizeIndustryCheckboxTranslations } from \"./localized-algolia-checkboxes\"\n\n// @TODO Style tweaking and cleanup\n// @TODO make the component NOT display if there are no results\n// @TODO update filter states\n\nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst companyResult = ({ hit }) => {\n const {\n objectID,\n title,\n company_logo,\n company_location,\n slug,\n type,\n } = hit\n\n return (\n <CardCompanies\n objectID={objectID}\n img={company_logo}\n title={title}\n slug={slug}\n location={company_location}\n contentType={type}\n />\n )\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaCompaniesExplore = props => {\n const { classContext, filterList } = props\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n const { locale, formatMessage } = useIntl()\n const localeFilter = `locale:${locale}`\n const filterListWithLocale = filterList ? `(${filterList}) AND ${localeFilter}` : localeFilter\n\n const setHTMLScrollStyle = behavior => {\n document.querySelector(\"html\").style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\n \"showSaved\",\n BooleanParam\n )\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [showSaved, setShowSaved] = useState(showSavedQuery || false)\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * Handles toggling of the newest | saved feature. Updates URL\n *\n * @param {SyntheticEvent} e\n */\n const handleShowSavedClick = e => {\n e.preventDefault()\n if (e.target.attributes.class.value === \"active\") {\n return\n }\n setShowSaved(!showSaved)\n setQueryFilters(undefined)\n setShowSavedQuery(!showSaved)\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setShowSaved(showSavedQuery)\n }, [showSavedQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle(\"smooth\")\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle(\"auto\")\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList\n ? searchInput.refinementList\n : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery =\n queryFilters?.query !== searchInput?.query &&\n searchInput?.query.length > 0\n const isFilterSelectionQuery =\n !_.isEqual(queryRefinementList, searchInputRefinementList) &&\n !_.isEmpty(searchInputRefinementList)\n const isSortByQuery = showSaved !== showSavedQuery\n const isEmptyURL = queryFilters || showSavedQuery ? false : true\n const isEmptySearch = _.isEqual(searchInput, {\n configure: { hitsPerPage: 8, distinct: true, filters: \"\" },\n })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = (e) => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList\n ? searchState.refinementList\n : {}\n const filtersHaveChanged =\n !_.isEqual(queryRefinementList, searchStateRefinementList) &&\n !_.isEmpty(searchStateRefinementList)\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n const transformCompaniesSizeFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeSizeItem = { ...item };\n if (\n localizeSizeCheckboxTranslations[item.label] &&\n localizeSizeCheckboxTranslations[item.label][locale]\n ) {\n localizeSizeItem.label =\n localizeSizeCheckboxTranslations[item.label][locale];\n }\n return localizeSizeItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformCompaniesIndustryFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeIndustryItem = { ...item };\n if (\n localizeIndustryCheckboxTranslations[item.label] &&\n localizeIndustryCheckboxTranslations[item.label][locale]\n ) {\n localizeIndustryItem.label =\n localizeIndustryCheckboxTranslations[item.label][locale];\n }\n return localizeIndustryItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n return (\n <InstantSearch\n indexName=\"companies_explore\"\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n >\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\"}),\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div\n className={`stream stream-${classContext} stream-${classContext}-explore`}\n >\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n <button\n className=\"stream-explore-filters-button\"\n onClick={filters}\n >\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n </button>\n\n <div\n className={`explore-context-filter ${\n showFilters ? \"show\" : \"hide\"\n }`}\n >\n <h3><FormattedMessage id=\"companies-explore-filter-companies-by\" defaultMessage=\"Filter Companies by\" />:</h3>\n <div className=\"filter filter-two\">\n <EyeBrow text={formatMessage({ id: \"companies-explore-size\", defaultMessage: \"Size\" })} style={{ marginBottom: \"1.5rem\" }} />\n <RefinementList\n attribute=\"company_size_filter\"\n transformItems={transformCompaniesSizeFilterItems}\n />\n </div>\n <div className=\"filter filter-two filter-last\">\n <EyeBrow\n text={formatMessage({ id: \"companies-explore-industry\", defaultMessage: \"Industry\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n attribute=\"company_industry_filter\"\n transformItems={transformCompaniesIndustryFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={showSaved ? \"\" : \"active\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-newest\" defaultMessage=\"Newest\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a\n href=\"/\"\n className={showSaved ? \"active\" : \"\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <Configure\n hitsPerPage={8}\n distinct\n filters={showSaved ? filterListWithLocale : localeFilter}\n />\n\n <Hits hitComponent={companyResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaCompaniesExplore\n","import React from \"react\"\nimport Bookmark from \"../bookmark/bookmark\"\nimport ReactPlayer from \"react-player\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faPlayCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport Link from \"../../link\"\nimport { FormattedMessage } from \"react-intl\"\n\nconst CardVideos = props => {\n const {\n img,\n title,\n slug,\n story_job_title,\n story_company,\n story_quote,\n story_video_url,\n objectID,\n idx,\n contentType,\n } = props\n\n return (\n <div\n className=\"component-card component-card-stories\"\n key={idx}\n data-object={objectID}\n >\n <div className=\"component-card-image component-card-image-video component-card-image-video-stories\">\n <div className=\"video-wrapper\">\n <ReactPlayer\n url={story_video_url}\n light={img}\n controls={true}\n playing={true}\n width=\"100%\"\n height=\"100%\"\n playIcon={\n <>\n <button className=\"button component-button component-button-video component-button-video-large\">\n <FontAwesomeIcon className=\"play-video\" icon={faPlayCircle} />\n <FormattedMessage id=\"card-stories-watch-video\" defaultMessage=\"Watch Video\" />\n </button>\n <button className=\"button component-button component-button-video component-button-video-small\">\n <FontAwesomeIcon className=\"play-video\" icon={faPlayCircle} />\n <span className=\"sr-only\">\n <FormattedMessage id=\"card-stories-watch-video\" defaultMessage=\"Watch Video\" />\n </span>\n </button>\n </>\n }\n />\n </div>\n </div>\n <div className=\"component-card-meta component-card-meta-stories\">\n <div className=\"component-card-meta-header component-card-meta-header-stories\">\n <Bookmark\n classContext={\"videos\"}\n contentTitle={title}\n contentId={objectID}\n contentSlug={slug}\n contentType={contentType}\n />\n\n <Link\n to={`/story/${slug}`}\n className=\"component-card-title component-card-title-stories\"\n >\n {story_job_title}\n </Link>\n </div>\n <div className=\"component-card-company component-card-company-stories\">\n {story_company}\n </div>\n <blockquote className=\"component-blockquote component-blockquote-stories\">\n <p>{story_quote}</p>\n <cite>— {title}</cite>\n </blockquote>\n </div>\n </div>\n )\n}\n\nexport default CardVideos\n","import React, { useState, useEffect, useRef } from \"react\"\nimport orderBy from \"lodash.orderby\"\nimport _ from \"lodash\"\nimport CardVideos from \"../cards/cards-videos\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport {\n faChevronDown,\n faChevronUp,\n faChevronRight,\n faChevronLeft,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport { faSearch } from \"@fortawesome/pro-regular-svg-icons\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\nimport OutsideClickHandler from \"react-outside-click-handler\"\nimport AlgoliaClientKeys from \"./AlgoliaClientKeys\"\nimport algoliasearch from \"algoliasearch\"\nimport {\n InstantSearch,\n SearchBox,\n Configure,\n Pagination,\n Hits,\n RefinementList,\n ClearRefinements,\n ScrollTo,\n} from \"react-instantsearch-dom\"\nimport \"./algolia.css\"\nimport \"./algolia-explore.css\"\nimport { useQueryParam, JsonParam, BooleanParam } from \"use-query-params\"\nimport { globalHistory } from \"@reach/router\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { localizeEducationCheckboxTranslations, localizeIdentityCheckboxTranslation,\n localizeInterestCheckboxTranslation, localizePersonalityCheckboxTranslation } from \"./localized-algolia-checkboxes\"\n\n// @TODO Style tweaking and cleanup\n// @TODO make the component NOT display if there are no results\n// @TODO update filter states\n\nconst searchClient = algoliasearch(\n AlgoliaClientKeys.appId,\n AlgoliaClientKeys.apiKey\n)\n\nconst videoResult = ({ hit }) => {\n const {\n objectID,\n title,\n story_personal_photo,\n story_video_url,\n story_job_title,\n story_company,\n story_quote,\n slug,\n type,\n } = hit\n\n return (\n <CardVideos\n objectID={objectID}\n img={story_personal_photo}\n title={title}\n slug={slug}\n story_video_url={story_video_url}\n story_job_title={story_job_title}\n story_company={story_company}\n story_quote={story_quote}\n contentType={type}\n />\n )\n}\n\n/*\n * title = The title of the page. ie - Financial Manager, Architect, etc.\n * filterReference = The Algolia filter reference. ie - story_school_reference\n * classContext = A class to override default styles. ie - career, company, major, etc.\n */\n\nconst AlgoliaVideosExplore = props => {\n const { classContext, filterList } = props\n\n const [loadedFromHistory, setLoadedFromHistory] = useState(false)\n\n // ref to handle URL update timeout\n // ref to handle reseting scroll behavior to auto on timeout\n // ref to handle toggling off loaded from history\n const debouncedSetState = useRef(null)\n const resetScrollRef = useRef(null)\n const loadingRef = useRef(null)\n const { locale, formatMessage } = useIntl()\n const localeFilter = `locale:${locale}`\n\n const setHTMLScrollStyle = behavior => {\n document.querySelector(\"html\").style.scrollBehavior = behavior\n }\n\n // component mount / unmount hook to handle:\n // 1. clearing timeouts for\n // 2. setting loaded from history to prevent from triggering re-route, starts timeout to set back for normal behavior\n // 3. removing smooth scrolling\n // 4. unmount, clear timeouts and set scroll style to auto\n useEffect(() => {\n const timeoutLoadedFromHistory = () => {\n loadingRef.current = setTimeout(() => {\n setLoadedFromHistory(false)\n }, 100)\n }\n globalHistory.listen(({ action }) => {\n if (action === \"POP\") {\n setHTMLScrollStyle(\"auto\")\n setLoadedFromHistory(true)\n timeoutLoadedFromHistory()\n clearTimeout(debouncedSetState.current)\n } else if (action === \"PUSH\") {\n setLoadedFromHistory(false)\n clearTimeout(debouncedSetState.current)\n }\n })\n timeoutLoadedFromHistory()\n\n return () => {\n setHTMLScrollStyle(\"auto\")\n clearTimeout(debouncedSetState.current)\n clearTimeout(resetScrollRef.current)\n clearTimeout(loadingRef.current)\n }\n }, [])\n\n // URL search parameters\n // applied filters object, page, filters, and search input data of stories\n // boolean for if saved is showing\n const [queryFilters, setQueryFilters] = useQueryParam(\n \"queryFilters\",\n JsonParam\n )\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\n \"showSaved\",\n BooleanParam\n )\n\n // component state for showing saved vs newest results. Initial value set by query if exists\n // component state for toggling filter visibility\n // component state for instantly updating search results, can inherit value from URL\n const [showSaved, setShowSaved] = useState(showSavedQuery || false)\n const [showFilters, setShowFilters] = useState(false)\n const [searchState, setSearchState] = useState(queryFilters || {})\n\n const filters = () => {\n if (!showFilters) {\n setShowFilters(true)\n } else {\n handleOutsideFilterClick()\n setShowFilters(false)\n }\n }\n\n /**\n * Handles toggling of the newest | saved feature. Updates URL\n *\n * @param {SyntheticEvent} e\n */\n const handleShowSavedClick = e => {\n e.preventDefault()\n if (e.target.attributes.class.value === \"active\") {\n return\n }\n setShowSaved(!showSaved)\n setQueryFilters(undefined)\n setShowSavedQuery(!showSaved)\n }\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setShowSaved(showSavedQuery)\n }, [showSavedQuery])\n\n // hook for updating component state when query filters change\n useEffect(() => {\n setSearchState(queryFilters)\n }, [queryFilters])\n\n // Handles updating the component search state and URL after any change to algolias search filters\n const onSearchStateChange = searchInput => {\n // set scroll to smooth for algolia components\n setHTMLScrollStyle(\"smooth\")\n\n // reset scroll behavior on timeout, unmount reset is inconsistent\n resetScrollRef.current = setTimeout(() => {\n setHTMLScrollStyle(\"auto\")\n }, 1)\n\n // update component state after any change. Allows for instant filtering\n setSearchState(searchInput)\n\n // conditional variables, may be absent from query or component search state\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchInputRefinementList = searchInput.refinementList\n ? searchInput.refinementList\n : {}\n\n // booleans to determine the type of query change. Determined by comparing URL with current search\n const isTypedQuery =\n queryFilters?.query !== searchInput?.query &&\n searchInput?.query.length > 0\n const isFilterSelectionQuery =\n !_.isEqual(queryRefinementList, searchInputRefinementList) &&\n !_.isEmpty(searchInputRefinementList)\n const isSortByQuery = showSaved !== showSavedQuery\n const isEmptyURL = queryFilters || showSavedQuery ? false : true\n const isEmptySearch = _.isEqual(searchInput, {\n configure: { hitsPerPage: 9, distinct: true, filters: \"\" },\n })\n\n // clear timeout on URL updates for typed query\n clearTimeout(debouncedSetState.current)\n\n if (isTypedQuery) {\n // updates URL after timeout\n debouncedSetState.current = setTimeout(() => {\n setQueryFilters(searchInput)\n }, 1000)\n } else if (isFilterSelectionQuery) {\n // do nothing if filter change, URL is only updated after filter dropdown is exited\n } else if (isSortByQuery) {\n // do nothing if sort by query change, URL is updated on click\n } else if (isEmptySearch && isEmptyURL) {\n // if attempting to re route with no search info. Needed because of sort by toggling triggering this function on category change\n } else {\n // immediately update URL by default, runs when new page selected\n if (!loadedFromHistory) {\n setQueryFilters(searchInput)\n }\n }\n setLoadedFromHistory(false)\n }\n\n // handles toggle off of showFilters and updates URL\n const handleOutsideFilterClick = e => {\n // prevents click from firing when clicking scroll bar\n if (e?.target?.tagName === \"HTML\") return\n\n // check to see if filters changed, prevents URL setting when they are the same as current params\n const queryRefinementList = queryFilters ? queryFilters.refinementList : {}\n const searchStateRefinementList = searchState?.refinementList\n ? searchState.refinementList\n : {}\n const filtersHaveChanged =\n !_.isEqual(queryRefinementList, searchStateRefinementList) &&\n !_.isEmpty(searchStateRefinementList)\n\n showFilters && filtersHaveChanged && setQueryFilters(searchState)\n\n setShowFilters(false)\n }\n\n const transformVideoEducationFilterItems = (items) => {\n return items.map((item) => {\n const locItem = {\n ...item\n };\n if (localizeEducationCheckboxTranslations[item.label] && localizeEducationCheckboxTranslations[item.label][locale])\n locItem.label = localizeEducationCheckboxTranslations[item.label][locale] || item;\n return locItem;\n });\n };\n\n const transformVideoIdentityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeIdentityItem = { ...item };\n if (\n localizeIdentityCheckboxTranslation[item.label] &&\n localizeIdentityCheckboxTranslation[item.label][locale]\n ) {\n localizeIdentityItem.label =\n localizeIdentityCheckboxTranslation[item.label][locale];\n }\n return localizeIdentityItem;\n });\n // Sort the items alphabetically by their localized labels\n const sortedItems = orderBy(localizedItems,[\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n \n const transformVideoInterestFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizeInterestItem = { ...item };\n if (\n localizeInterestCheckboxTranslation[item.label] &&\n localizeInterestCheckboxTranslation[item.label][locale]\n ) {\n localizeInterestItem.label =\n localizeInterestCheckboxTranslation[item.label][locale];\n }\n return localizeInterestItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n const transformVideoPersonalityFilterItems = (items) => {\n const localizedItems = items.map((item) => {\n const localizePersonalityItem = { ...item };\n if (\n localizePersonalityCheckboxTranslation[item.label] &&\n localizePersonalityCheckboxTranslation[item.label][locale]\n ) {\n localizePersonalityItem.label =\n localizePersonalityCheckboxTranslation[item.label][locale];\n }\n return localizePersonalityItem;\n });\n const sortedItems = orderBy(localizedItems, [\"label\", \"count\"], [\"asc\", \"desc\"]);\n return sortedItems;\n };\n\n return (\n <InstantSearch\n indexName=\"stories_people_view_videos\"\n searchState={searchState || {}}\n onSearchStateChange={onSearchStateChange}\n searchClient={searchClient}\n >\n <SearchBox\n searchAsYouType={true}\n translations={{\n placeholder: formatMessage({ id: \"algolia-stories-view-search-placeholder\", defaultMessage: \"Search by name, job title, location, company\" }),\n }}\n submit={<FontAwesomeIcon icon={faSearch} />}\n reset={<FontAwesomeIcon icon={faTimes} />}\n />\n\n <ScrollTo>\n <div\n className={`stream stream-${classContext} stream-${classContext}-explore stream-${classContext}-videos-explore`}\n >\n <OutsideClickHandler onOutsideClick={handleOutsideFilterClick}>\n <div className=\"stream-explore-filters\">\n <button\n className=\"stream-explore-filters-button\"\n onClick={filters}\n >\n <FormattedMessage id=\"more-filters\" defaultMessage=\"More Filters\" />\n <FontAwesomeIcon\n className={`${!showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronDown}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n <FontAwesomeIcon\n className={`${showFilters ? \"show\" : \"hide\"}`}\n icon={faChevronUp}\n style={{ color: \"#363636\", marginLeft: \".5rem\" }}\n />\n </button>\n\n <div\n className={`explore-context-filter ${\n showFilters ? \"show\" : \"hide\"\n }`}\n >\n <h3><FormattedMessage id=\"filter-videos-by\" defaultMessage=\"Filter Videos by\" />:</h3>\n <div className=\"filter filter-personality filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-personality\", defaultMessage: \"Personality\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={50}\n attribute=\"story_personality_filter\"\n transformItems={transformVideoPersonalityFilterItems}\n />\n </div>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-interests\", defaultMessage: \"Interests\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n limit={30}\n attribute=\"story_interests_filter\"\n transformItems={transformVideoInterestFilterItems}\n />\n </div>\n <div className=\"filter filter-four\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-identity\", defaultMessage: \"Identity\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n attribute=\"story_identity_filter\"\n transformItems={transformVideoIdentityFilterItems}\n operator=\"and\"\n />\n </div>\n <div className=\"filter filter-four filter-last\">\n <EyeBrow\n text={formatMessage({ id: \"algolia-stories-explore-education\", defaultMessage: \"Education\" })}\n style={{ marginBottom: \"1.5rem\" }}\n />\n <RefinementList\n attribute=\"story_required_education_filter\"\n transformItems={transformVideoEducationFilterItems}\n />\n </div>\n <ClearRefinements\n translations={{\n reset: formatMessage({ id: \"careers-explore-clear-filters\", defaultMessage: \"Clear Filters\" }),\n }}\n />\n </div>\n\n <ul className=\"explore-filters-list\">\n <li className=\"explore-filters-list-item explore-filters-list-item-sort\">\n <FormattedMessage id=\"algolia-stories-view-sort-by\" defaultMessage=\"Sort by:\" />\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-newest\">\n <a\n href=\"/\"\n className={showSaved ? \"\" : \"active\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-newest\" defaultMessage=\"Newest\" />\n </a>\n </li>\n <li className=\"explore-filters-list-item explore-filters-list-item-saved\">\n <a\n href=\"/\"\n className={showSaved ? \"active\" : \"\"}\n onClick={handleShowSavedClick}\n >\n <FormattedMessage id=\"algolia-stories-view-saved\" defaultMessage=\"Saved\" />\n </a>\n </li>\n </ul>\n </div>\n </OutsideClickHandler>\n\n <Configure\n hitsPerPage={9}\n distinct\n filters={\n showSaved ? `${filterList} AND has_video:true AND ${localeFilter}` : `has_video:true AND ${localeFilter}`\n }\n />\n\n <Hits hitComponent={videoResult} />\n\n <Pagination\n showFirst={false}\n showLast={false}\n translations={{\n previous: <FontAwesomeIcon icon={faChevronLeft} size=\"sm\" />,\n next: <FontAwesomeIcon icon={faChevronRight} size=\"sm\" />,\n }}\n />\n </div>\n </ScrollTo>\n </InstantSearch>\n )\n}\n\nexport default AlgoliaVideosExplore\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from '../Firebase'\nimport { organizeByType } from \"../bookmark/utils/utils\"\nimport AlgoliaStoriesExplore from \"./algolia-stories-explore\"\nimport AlgoliaCareersExplore from \"./algolia-careers-explore\"\nimport AlgoliaCareersPersonalityExplore from \"./algolia-careers-personality-explore\"\nimport AlgoliaSchoolsExplore from \"./algolia-schools-explore\"\nimport AlgoliaMajorsExplore from \"./algolia-majors-explore\"\nimport AlgoliaCompaniesExplore from \"./algolia-companies-explore\"\nimport AlgoliaVideosExplore from \"./algolia-videos-explore\"\nimport { Dropdown } from \"semantic-ui-react\"\n\nimport { useQueryParam, StringParam, JsonParam, BooleanParam } from \"use-query-params\";\n\nimport \"semantic-ui-css/components/dropdown.min.css\"\nimport \"semantic-ui-css/components/search.min.css\"\nimport \"semantic-ui-css/components/transition.min.css\"\nimport \"semantic-ui-css/components/label.min.css\"\nimport \"semantic-ui-css/components/icon.min.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst AlgoliaToggle = props => {\n const { heading } = props\n const { locale } = useIntl()\n const { profile } = useContext(FirebaseContext)\n const [selectState, setSelectState] = useState('People')\n const [saved, setSaved] = useState(null)\n\n const [categoryQuery, setCategoryQuery] = useQueryParam(\"category\", StringParam)\n const [queryFilters, setQueryFilters] = useQueryParam(\"queryFilters\", JsonParam)\n const [showSavedQuery, setShowSavedQuery] = useQueryParam(\"showSaved\", BooleanParam)\n const [personalityQuery, setPersonalityQuery] = useQueryParam(\"personality\", BooleanParam)\n\n useEffect(() => {\n if (profile && profile.bookmarks) {\n const bookmarks = organizeByType(profile.bookmarks)\n setSaved(bookmarks)\n }\n }, [profile])\n\n const options = [\n {\n key: \"Personality\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-careers\"\n defaultMessage=\"Careers\"\n />, value: \"PersonalityCareers\"\n },\n {\n key: \"People\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-people\"\n defaultMessage=\"People\"\n />, value: \"People\"\n },\n {\n key: \"Careers\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-careers\"\n defaultMessage=\"Careers\"\n />, value: \"Careers\"\n },\n {\n key: \"Schools\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-schools\"\n defaultMessage=\"Schools\"\n />, value: \"Schools\"\n },\n {\n key: \"Majors\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-majors\"\n defaultMessage=\"Majors\"\n />, value: \"Majors\"\n },\n {\n key: \"Companies\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-companies\"\n defaultMessage=\"Companies\"\n />, value: \"Companies\"\n },\n {\n key: \"Videos\", text: <FormattedMessage\n id=\"algolia-toggle-dropdown-videos\"\n defaultMessage=\"Videos\"\n />, value: \"Videos\"\n },\n ]\n\n /**\n * Generate valid Algolia filter list from saved items array.\n *\n * @param {string} type\n * @returns {null|string}\n */\n const getFilters = type => {\n if (saved && saved.hasOwnProperty(type)) {\n return saved[type].join(\" OR \")\n } else {\n return null\n }\n }\n\n // PersonalityCareers temporarily included in dropwdown but removed with CSS in aloglia css file, important to remove when refactoring\n // First item will be invisible from dropdown\n //\n //.explore-sortby.first-hidden{\n // div[role=\"option\"]:first-of-type{\n // display: none !important;\n // }\n //}\n\n const content = {\n PersonalityCareers: <AlgoliaCareersPersonalityExplore classContext={'careers'} />,\n People: <AlgoliaStoriesExplore classContext={'stories'} filterList={getFilters('stories') || 'false_attribute:false'} />,\n Careers: <AlgoliaCareersExplore classContext={'careers'} filterList={getFilters('careers') || 'false_attribute:false'} />,\n Schools: <AlgoliaSchoolsExplore classContext={'schools'} filterList={getFilters('schools') || 'false_attribute:false'} />,\n Majors: <AlgoliaMajorsExplore classContext={'majors'} filterList={getFilters('majors') || 'false_attribute:false'} />,\n Companies: <AlgoliaCompaniesExplore classContext={'companies'} filterList={getFilters('companies') || 'false_attribute:false'} />,\n Videos: <AlgoliaVideosExplore classContext={'stories'} filterList={getFilters('stories') || 'false_attribute:false'} />\n }\n\n function changeHandler(e, data) {\n e.preventDefault()\n setSelectState(data.value);\n\n setCategoryQuery(data.value)\n setQueryFilters(undefined)\n setShowSavedQuery(undefined)\n }\n\n useEffect(() => {\n if (categoryQuery === \"Careers\" && personalityQuery === true) {\n setSelectState('PersonalityCareers')\n } else {\n setSelectState(categoryQuery || 'People')\n }\n }, [categoryQuery])\n\n return (\n <section className=\"explore\">\n <div className=\"inner inner-explore\">\n <h2>{heading}</h2>\n <div className=\"explore-sortby first-hidden\">\n <span\n style={{\n fontWeight: \"bold\",\n marginBottom: \".5rem\",\n display: \"block\",\n color: \"#565656\",\n }}\n >\n <FormattedMessage\n id=\"algolia-toggle-explore-categories\"\n defaultMessage=\"Explore Categories\"\n />\n </span>\n\n <Dropdown\n value={selectState}\n fluid\n required\n selection\n icon=\"chevron down\"\n options={options}\n onChange={changeHandler}\n className=\"ais-MenuSelect\"\n upward={false}\n />\n </div>\n {/* this ensures that the algolia components for each language are individually rendered and their internal states are reset during a language switch */}\n { locale === 'es-ES' ? content[selectState] : content[selectState]}\n </div>\n </section>\n )\n}\n\nexport default AlgoliaToggle\n","import React, { useContext, useRef } from \"react\"\nimport { FirebaseContext } from \"../Firebase/index.js\"\nimport { useReactToPrint } from \"react-to-print\"\nimport PortfolioContent from \"../portfolio/PortfolioContent.js\"\nimport \"./portfolio.css\"\n\n/**\n * A user's Portfolio tab\n */\nconst Portfolio = () => {\n const { profile, loading, user } = useContext(FirebaseContext)\n\n // this pdf export code is not currently being used\n const portfolioRef = useRef()\n const handlePrint = useReactToPrint({\n content: () => portfolioRef.current,\n })\n const handlePdfExport = () => {\n if (typeof window !== \"undefined\") {\n\n setTimeout(function () {\n handlePrint()\n }, 1000)\n }\n }\n\n if (loading || !profile) {\n return (\n <>\n <div\n style={{\n textAlign: \"center\",\n marginTop: \"10em\",\n marginBottom: \"10em\",\n fontSize: \"20px\",\n }}\n >\n Loading ...\n </div>\n </>\n )\n }\n\n return (\n <PortfolioContent \n profile={profile}\n isPublicFacing={false}\n userId={user.membership.userId}\n />\n )\n}\n\nexport default Portfolio\n","import MilestoneListDates from \"./MilestoneListDates\"\nimport MilestoneTextDate from \"./MilestoneTextDate\"\nimport MilestoneTextDates from \"./MilestoneTextDates\"\nimport React from \"react\"\nimport MilestoneAlgoliaListDates from \"./MilestoneAlgoliaListDates\"\n\n/**\n * A component to render milestones.\n *\n * @param {Milestone} milestone\n * The current milestone to render.\n * @param milestoneLabel\n * The milestone labeling for that milestone type.\n *\n * @return {JSX.Element|null}\n */\nconst MilestoneView = ({ milestone, milestoneLabel }) => {\n\n /**\n * Gets the date period render.\n *\n * @param {Milestone} milestone\n * A milestone that uses a `DatePeriod` to store date information.\n *\n * @return {JSX.Element|null}\n */\n const getDatePeriod = (milestone) => {\n if (milestone?.period.endDate && milestone?.period.startDate) {\n return (\n <div className=\"career-plan-planned-item-milestone-date\"><strong>{milestone.period.startDateYear}-{milestone.period.endDateYear}</strong></div>\n );\n }\n return null;\n }\n\n /**\n * Gets the date render.\n *\n * @param {Milestone} milestone\n * A milestone that uses a `DateMonthYear` to store date information.\n *\n * @return {JSX.Element|null}\n */\n const getDate = (milestone) => {\n if (milestone?.date.date) {\n return (\n <div className=\"career-plan-planned-item-milestone-date\"><strong>{milestone.date.year}</strong></div>\n );\n }\n return null;\n }\n\n /**\n * Gets the milestone title or label if you will.\n *\n * @param {Milestone} milestone\n *\n * @return {JSX.Element}\n */\n const getLabel = (milestone) => {\n return (\n <div className=\"career-plan-planned-item-milestone-title\">\n {milestoneLabel.title}\n </div>\n );\n }\n\n /**\n * Gets the primary detail information of the milestone.\n *\n * @param {Milestone} milestone\n *\n * @return {JSX.Element|null}\n */\n const getPrimaryDetail = (milestone) => {\n if (!milestone.goal) {\n return null;\n }\n return (\n <div className=\"career-plan-planned-item-milestone-major\"><strong>{milestoneLabel.goalLabel}:</strong> {milestone.goal}</div>\n );\n }\n\n /**\n * Gets the list information from a `MilestoneListType` milestone.\n *\n * @param {MilestoneListType} milestone\n * The milestone.\n *\n * @return {JSX.Element|null}\n */\n const getListDetail = (milestone) => {\n const milestoneCount = milestone.list.length;\n if (!milestone.list || milestoneCount < 1) {\n return null;\n }\n let moreMessage = null;\n if (milestoneCount > 3) {\n const moreNumber = milestoneCount - 3;\n moreMessage = `... + ${moreNumber} more`;\n }\n const listRender = [];\n for (let i = 0; i < 3; i++) {\n if (i === 2) {\n listRender.push(<div key={i}>{milestone.list[i]}{moreMessage}</div>);\n }\n else {\n listRender.push(<div key={i}>{milestone.list[i]}</div>);\n }\n }\n\n return (\n <div className=\"career-plan-planned-item-milestone-schools\">\n <div className=\"career-plan-planned-item-milestone-schools-label\"><strong>{milestoneLabel.goalDetailLabelPlural}:</strong></div>\n <div className=\"career-plan-planned-item-milestone-school\">\n {listRender}\n </div>\n </div>\n );\n }\n\n /**\n * Gets the text details of a milestone.\n *\n * @param {MilestoneTextType} milestone\n * A milestone that has text for the secondary detail.\n *\n * @return {JSX.Element|null}\n */\n const getTextDetail = (milestone) => {\n if (!milestone.text) {\n return null;\n }\n return (\n <div className=\"career-plan-planned-item-milestone-details-label\"><strong>{milestoneLabel.goalDetailLabel}:</strong> {milestone.text}</div>\n );\n }\n\n if (milestone instanceof MilestoneListDates || milestone instanceof MilestoneAlgoliaListDates) {\n return (\n <div className=\"career-plan-planned-item-milestone\">\n {getLabel(milestone)}\n {getDatePeriod(milestone)}\n {getPrimaryDetail(milestone)}\n {getListDetail(milestone)}\n </div>\n );\n }\n else if (milestone instanceof MilestoneTextDate) {\n return (\n <div className=\"career-plan-planned-item-milestone\">\n {getLabel(milestone)}\n {getDate(milestone)}\n {getPrimaryDetail(milestone)}\n {getTextDetail(milestone)}\n </div>\n );\n }\n else if (milestone instanceof MilestoneTextDates) {\n return (\n <div className=\"career-plan-planned-item-milestone\">\n {getLabel(milestone)}\n {getDatePeriod(milestone)}\n {getPrimaryDetail(milestone)}\n {getTextDetail(milestone)}\n </div>\n );\n }\n else {\n return null;\n }\n};\n\nexport default MilestoneView;\n","import React from \"react\"\nimport MilestoneView from \"./career-plan-milestone-view\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faEdit } from \"@fortawesome/free-solid-svg-icons\"\n\n/**\n * Component that renders the milestones of a plan.\n *\n * @param {CareerPlan} plan\n * The user's plan.\n * @param milestoneLabels\n * The milestone labeling.\n *\n * @return {JSX.Element|[]}\n */\nconst CareerPlanView = ({ plan, milestoneLabels }) => {\n\n /**\n * The milestones.\n *\n * @type {Milestone[]}\n */\n const milestones = plan.milestones;\n\n /**\n * The milestone render array.\n *\n * @type {*[]}\n */\n const milestoneRender = [];\n\n if (!milestones || milestones.length < 1) {\n return (\n <div>This plan has no milestones set, click <FontAwesomeIcon aria-hidden=\"true\" icon={faEdit} size=\"lg\" /><span className=\"sr-only\">Edit</span> it to add some!</div>\n );\n }\n\n milestones\n .sort(\n (a, b) =>\n new Date(a.period?._startDate ?? null) -\n new Date(b.period?._startDate ?? null)\n )\n .forEach((milestone, index) => {\n milestoneRender.push(\n <MilestoneView\n milestoneLabel={milestoneLabels[milestone.type]}\n key={index}\n milestone={milestone}\n />\n )\n })\n\n return milestoneRender;\n}\n\nexport default CareerPlanView;\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport Link from \"../../link\"\nimport { FirebaseContext } from \"../Firebase\"\nimport CareerPlanView from \"./career-plan-view\"\nimport allowedTypes from \"./AllowedTypes\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faEdit, faTimes, faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport { Button, Confirm } from \"semantic-ui-react\"\n\nimport \"semantic-ui-css/components/modal.min.css\"\nimport \"semantic-ui-css/components/dimmer.min.css\"\nimport \"./career-plans.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst copyText = (\n <p>\n <FormattedMessage\n id=\"career-plan-para-1\"\n defaultMessage=\"Make your future a reality with our career planning tool! Create a\n personalized timeline using our Guided or Unguided workflow. Choose from\n pre-populated career pathways or start from scratch and build your own.\n Don't be afraid to dream big and set 3-month, 1-year, and 10-year goals. \n Get started now to unlock your full potential!\"\n />\n </p>\n)\n\n/**\n * Component to load all career plans for a user.\n */\nconst CareerPlans = props => {\n /**\n * Milestone labeling data.\n *\n * @type {{}}\n */\n const milestoneLabels = {}\n const { formatMessage, locale } = useIntl()\n\n const dataCosmicMilestones = useStaticQuery(graphql`\n {\n allCosmicjsMilestones {\n edges {\n node {\n metadata {\n description\n milestone_id\n goal_label\n goal_detail_label\n goal_detail_label_plural\n }\n title\n locale\n }\n }\n }\n }\n `)\n\n dataCosmicMilestones.allCosmicjsMilestones.edges.filter((data) => data.node.locale === locale).forEach(({ node }) => {\n const milestoneId = node.metadata.milestone_id\n if (\n !node.title ||\n !allowedTypes.includes(milestoneId) ||\n !node.metadata.goal_label\n ) {\n return null\n }\n milestoneLabels[node.metadata.milestone_id] = {\n title: node.title,\n goalLabel: node.metadata.goal_label,\n goalDetailLabel: node.metadata.goal_detail_label,\n goalDetailLabelPlural: node.metadata.goal_detail_label_plural,\n }\n })\n\n const { firebase, loading, user } = useContext(FirebaseContext)\n const [loadingPlans, setLoadingPlans] = useState(true)\n const [plans, setPlans] = useState([])\n const [removingPlan, setRemovingPlan] = useState(null)\n const [planLoadError, setPlanLoadError] = useState(false)\n\n const [open, setOpen] = useState(null)\n const handleConfirm = () => setOpen(null)\n const handleCancel = () => setOpen(null)\n\n /**\n * Deletes a plan from the user's account.\n *\n * @param planId\n * The plan ID to delete.\n * @param index\n * The current index of the plan in the user's plan list.\n */\n const removePlan = (planId, index) => {\n if (removingPlan) {\n return\n }\n setRemovingPlan({ planId, index })\n firebase.deleteCareerPlan(planId).then(\n () => {\n plans.splice(index, 1)\n setPlans([...plans])\n setRemovingPlan(null)\n },\n () => {\n setRemovingPlan(null)\n }\n )\n }\n\n /**\n * Load's a users plans.\n */\n useEffect(() => {\n let isCancelled = false\n\n if (loading) {\n return\n }\n\n if (firebase) {\n try {\n const getPlans = async () => {\n const userPlans = await firebase.loadCareerPlans(user._delegate.uid)\n if (!isCancelled) {\n setPlans(userPlans)\n setLoadingPlans(false)\n setPlanLoadError(false)\n }\n }\n getPlans()\n } catch (e) {\n console.error(\"💣\", e)\n if (!isCancelled) {\n setLoadingPlans(false)\n setPlanLoadError(true)\n }\n }\n }\n\n return () => {\n isCancelled = true\n }\n }, [firebase, loading])\n\n\n // If plans are loading do not finish rendering.\n if (loadingPlans) {\n return <div><FormattedMessage\n id=\"account-loading\"\n defaultMessage=\"Loading ...\" /></div>\n }\n\n /**\n * Renders an error message or empty plan message.\n *\n * @return {JSX.Element}\n */\n const emptyPlans = () => {\n if (planLoadError) {\n return (\n <div className=\"message message-error\">\n <FormattedMessage\n id=\"career-plan-loading-error\"\n defaultMessage=\"There was an error loading your plans, try refreshing the page.\"\n />\n </div>\n )\n }\n return (\n <>\n <h2><FormattedMessage\n id=\"career-plan-career-plans\"\n defaultMessage=\"Career Plans\"\n /></h2>\n\n <div className=\"new-plan-container\">\n <h6><FormattedMessage\n id=\"career-plan-add-a-new-plan\"\n defaultMessage=\"Add A New Plan\"\n /></h6>\n <div className=\"career-plan-tab-header-options\">\n <Link\n className=\"printer-none button component-button component-button-ghost component-button-default first component-button-small\"\n to=\"/create-a-plan\"\n >\n +{\" \"}<FormattedMessage\n id=\"career-plan-guided\"\n defaultMessage=\"Guided\"\n />\n </Link>\n\n <Link\n className=\"printer-none button component-button component-button-ghost component-button-default last component-button-small\"\n to=\"/career-builder\"\n >\n +{\" \"}<FormattedMessage\n id=\"career-plan-unguided\"\n defaultMessage=\"Unguided\"\n />\n </Link>\n </div>\n </div>\n {copyText}\n </>\n )\n }\n\n /**\n * Gets the plans render if there are any.\n *\n * @return {JSX.Element|[]}\n */\n const getPlanRender = () => {\n if (!Array.isArray(plans) || plans.length < 1) {\n return emptyPlans()\n }\n\n const careersPlanRender = []\n careersPlanRender.push(copyText)\n plans.forEach((careerPlan, index) => {\n careersPlanRender.push(\n <div\n className=\"career-plan-planned\"\n key={`career-plan-${index}-${careerPlan.id}`}\n >\n <div className=\"career-plan-planned-item-header\">\n <Link to={`/career-builder?plan=${careerPlan.id}`}>\n <span className=\"sr-only\"><FormattedMessage\n id=\"career-plan-edit\"\n defaultMessage=\"Edit\"\n /></span>\n <FontAwesomeIcon icon={faEdit} size=\"lg\" />\n </Link>\n <h3>{careerPlan.label}</h3>\n <Button\n className=\"button component-button component-button-text\"\n disabled={!!removingPlan}\n onClick={e => setOpen(index)}\n >\n {removingPlan?.index !== index ? (\n <>\n <span><FormattedMessage\n id=\"career-plan-remove\"\n defaultMessage=\"Remove\"\n /> </span>\n <FontAwesomeIcon icon={faTimes} size=\"lg\" />\n </>\n ) : (\n <>\n <span><FormattedMessage\n id=\"career-plan-removing...\"\n defaultMessage=\"Removing...\"\n /> </span>\n <FontAwesomeIcon icon={faSpinner} spin size=\"lg\" />\n </>\n )}\n </Button>\n <Confirm\n open={open === index}\n onCancel={handleCancel}\n onConfirm={() => {\n handleConfirm()\n removePlan(careerPlan.id, index)\n }}\n style={{ overflowWrap: 'normal' }}\n size={\"tiny\"}\n confirmButton={formatMessage({ id: \"career-plan-remove\", defaultMessage: \"Remove\" })}\n content={<h5 style={{padding: '1rem 1rem 0'}}><FormattedMessage\n id=\"career-plan-removing-are-you-sure-text\"\n defaultMessage=\"Are you sure you would like to remove this plan?\"\n /> </h5>}\n />\n </div>\n <div className=\"career-plan-planned-item\">\n <CareerPlanView\n milestoneLabels={milestoneLabels}\n plan={careerPlan}\n />\n </div>\n </div>\n )\n })\n\n return careersPlanRender\n }\n\n /**\n * Displays creation buttons, but an error message if user is at the plan limit.\n *\n * @return {JSX.Element}\n */\n const getAddNewPlanSection = () => {\n if (Array.isArray(plans) && plans.length < 10 && plans.length >= 1) {\n return (\n <>\n <h2><FormattedMessage\n id=\"career-plan-career-plans\"\n defaultMessage=\"Career Plans\"\n /></h2>\n\n <div className=\"new-plan-container\">\n <h6><FormattedMessage\n id=\"career-plan-add-a-new-plan\"\n defaultMessage=\"Add A New Plan\"\n /></h6>\n <div className=\"career-plan-tab-header-options\">\n <Link\n className=\"printer-none button component-button component-button-ghost component-button-default first component-button-small\"\n to=\"/create-a-plan\"\n >\n +{\" \"}<FormattedMessage\n id=\"career-plan-guided\"\n defaultMessage=\"Guided\"\n />\n </Link>\n\n <Link\n className=\"printer-none button component-button component-button-ghost component-button-default last component-button-small\"\n to=\"/career-builder\"\n >\n +{\" \"}<FormattedMessage\n id=\"career-plan-unguided\"\n defaultMessage=\"Unguided\"\n />\n </Link>\n </div>\n </div>\n </>\n )\n } else if (!Array.isArray(plans) || plans.length < 1) {\n return null\n } else {\n return (\n <div className=\"message message-warning\">\n <FormattedMessage\n id=\"career-plan-para-2\"\n defaultMessage=\"You have reached the career plan limit of 10 plans, and will be unable\n to add any new plans.\"\n />\n\n </div>\n )\n }\n }\n\n return (\n <section className=\"career-plan-tab\">\n <div className=\"career-plan-tab-header\">{getAddNewPlanSection()}</div>\n <div className=\"career-plan-tab-header career-plan-tab-header-planned paragraph\">\n {getPlanRender()}\n </div>\n </section>\n )\n}\n\nexport default CareerPlans\n","import React, { useState, useEffect, useContext } from \"react\"\nimport Link from \"../../link\"\nimport \"../career-resources/career-resources-tab.css\"\nimport \"./overview.css\"\nimport { FirebaseContext } from \"../Firebase\"\nimport dayjs from \"dayjs\"\nimport questionData from \"../../components/assessment/questions.js\"\nimport { FormattedMessage } from \"react-intl\"\n\nconst AssessmentOverview = () => {\n const { profile } = useContext(FirebaseContext)\n\n const [isAssessmentTaken, setIsAssessmentTaken] = useState(false)\n const [assessmentDate, setAssessmentDate] = useState(null)\n\n const [canResume, setCanResume] = useState(false)\n\n useEffect(() => {\n // if profile exists and has assessment data, set avaliable data\n if (profile?.assessmentRecord) {\n const {\n createdDate,\n responsesVersion,\n responses,\n resultProfile,\n } = profile.assessmentRecord\n\n if (\n responsesVersion === questionData.version &&\n responses.length < questionData.questions.length\n ) {\n setCanResume(true)\n }\n\n if (resultProfile) {\n setIsAssessmentTaken(true)\n }\n\n if (createdDate) {\n let date = dayjs(new Date(createdDate.toDate())).format(\"MMMM DD, YYYY\")\n setAssessmentDate(date)\n }\n }\n }, [profile])\n\n return (\n <div className=\"assessments-overview\">\n\n <h2><FormattedMessage\n id=\"assessment-overview-content-assessment\"\n defaultMessage=\"Assessment\"\n /></h2>\n\n <section>\n <img\n src={\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/assessment-assets%2FIH9%20smaller.jpg?alt=media&token=e5b5f1c3-ad4d-4b63-ba81-a723cca9391d\"\n }\n />\n <div className=\"assessment-info\">\n <div>\n <Link\n className=\"component-card-title\"\n to={\"/assessment/personality/results\"}\n >\n <FormattedMessage id=\"assessment-overview-personality-assessment\" defaultMessage=\"Personality Assessment\" />\n </Link>\n <p>\n <FormattedMessage\n id=\"assessment-overview-personality-assessment-description\"\n defaultMessage=\"The world is big and full of opportunity! This assessment uses the\n Holland Code to determine your personality profile and match you\n to career possibilities that are right for you.\"\n />\n </p>\n </div>\n\n {isAssessmentTaken && !canResume && (\n <Link\n style={{ alignSelf: \"flex-start\" }}\n type=\"button\"\n className=\"button component-button component-button-default\"\n to={\"/assessment/personality/results\"}\n >\n {\" \"}\n <FormattedMessage\n id=\"assessment-overview-review-results\"\n defaultMessage=\"Review Results\"\n />\n </Link>\n )}\n\n {!isAssessmentTaken && (\n <Link\n style={{ alignSelf: \"flex-start\" }}\n type=\"button\"\n className=\"button component-button component-button-default\"\n to={\"/assessment/personality\"}\n >\n {\" \"}\n {canResume ? <FormattedMessage\n id=\"assessment-overview-resume-assessment\"\n defaultMessage=\"Resume Assessment\"\n /> : <FormattedMessage id=\"assessment-overview-take-personality-assessment\" defaultMessage=\"Take Personality Assessment\" />}\n </Link>\n )}\n </div>\n\n {isAssessmentTaken && (\n <div className=\"assessment-info end\">\n <div>\n <p><FormattedMessage\n id=\"assessment-overview-completed\"\n defaultMessage=\"Completed\"\n />: {assessmentDate}</p>\n </div>\n <Link\n style={{ alignSelf: \"flex-start\", minWidth: \"259px\" }}\n type=\"button\"\n className=\"button component-button component-button-ghost\"\n to={\"/assessment/personality\"}\n >\n {\" \"}\n {canResume ? <FormattedMessage\n id=\"assessment-overview-resume-assessment\"\n defaultMessage=\"Resume Assessment\"\n /> : <FormattedMessage\n id=\"assessment-overview-retake-assessment\"\n defaultMessage=\"Retake Assessment\"\n />}\n </Link>\n </div>\n )}\n </section>\n </div>\n )\n}\n\nexport default AssessmentOverview\n","import { globalHistory } from \"@reach/router\"\nimport { useState, useEffect } from \"react\"\n\nfunction useClientSideLocale() {\n const [locale, setLocale] = useState(\"en-US\")\n const pathname = globalHistory.location.pathname\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (pathname.split(\"/\").includes(\"es-ES\")) {\n setLocale(\"es-ES\")\n } else {\n setLocale(\"en-US\")\n }\n } else {\n setLocale(\"en-US\")\n } \n }, [pathname])\n\n return locale\n}\n\nexport default useClientSideLocale\n","import { faDownload, faEye } from \"@fortawesome/pro-regular-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { ProgressBar } from \"react-bootstrap\"\nimport { useQueryParam, StringParam } from \"use-query-params\"\nimport React, { useState, useEffect, useContext } from \"react\"\n\nimport { FirebaseContext } from \"../Firebase\"\nimport EyeBrow from \"../eyebrow/eyebrow\"\n\nimport \"./work-readiness.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { useActivities } from \"./useActivities\"\nimport useClientSideLocale from \"../hooks/useClientSideLocale\"\n\n/**\n * Work Readiness tab component, displays either K-12 or Adult work readiness activities.\n *\n * @returns JSX component\n */\nconst WorkReadinessTab = () => {\n const { formatMessage } = useIntl()\n const { subdomainConfig } = useContext(FirebaseContext)\n const { subdomainAudienceType } = subdomainConfig\n\n const categories = {\n \"K-12\": [\n {\n name: \"6th Grade\",\n displayName: formatMessage({\n id: \"engage-6th-grade\",\n defaultMessage: \"6th Grade\",\n }),\n key: \"6th-grade\",\n },\n {\n name: \"7th Grade\",\n displayName: formatMessage({\n id: \"engage-7th-grade\",\n defaultMessage: \"7th Grade\",\n }),\n key: \"7th-grade\",\n },\n {\n name: \"8th Grade\",\n displayName: formatMessage({\n id: \"engage-8th-grade\",\n defaultMessage: \"8th Grade\",\n }),\n key: \"8th-grade\",\n },\n {\n name: \"9th Grade\",\n displayName: formatMessage({\n id: \"engage-9th-grade\",\n defaultMessage: \"9th Grade\",\n }),\n key: \"9th-grade\",\n },\n {\n name: \"10th Grade\",\n displayName: formatMessage({\n id: \"engage-10th-grade\",\n defaultMessage: \"10th Grade\",\n }),\n key: \"10th-grade\",\n },\n {\n name: \"11th Grade\",\n displayName: formatMessage({\n id: \"engage-11th-grade\",\n defaultMessage: \"11th Grade\",\n }),\n key: \"11th-grade\",\n },\n {\n name: \"12th Grade\",\n displayName: formatMessage({\n id: \"engage-12th-grade\",\n defaultMessage: \"12th Grade\",\n }),\n key: \"12th-grade\",\n },\n ],\n ADULT: [\n {\n name: \"Career and Self Development\",\n displayName: formatMessage({\n id: \"engage-career-self-development\",\n defaultMessage: \"Career & Self Development\",\n }),\n key: \"career_and_self_dev\",\n },\n {\n name: \"Communication\",\n displayName: formatMessage({\n id: \"engage-communication\",\n defaultMessage: \"Communication\",\n }),\n key: \"communication\",\n },\n {\n name: \"Critical Thinking\",\n displayName: formatMessage({\n id: \"engage-critical-thinking\",\n defaultMessage: \"Critical Thinking\",\n }),\n key: \"critical_thinking\",\n },\n {\n name: \"Equity and Inclusion\",\n displayName: formatMessage({\n id: \"engage-equity-inclusion\",\n defaultMessage: \"Equity & Inclusion\",\n }),\n key: \"equity_and_inclusion\",\n },\n {\n name: \"Leadership\",\n displayName: formatMessage({\n id: \"engage-leadership\",\n defaultMessage: \"Leadership\",\n }),\n key: \"leadership\",\n },\n {\n name: \"Professionalism\",\n displayName: formatMessage({\n id: \"engage-professionalism\",\n defaultMessage: \"Professionalism\",\n }),\n key: \"professionalism\",\n },\n {\n name: \"Teamwork\",\n displayName: formatMessage({\n id: \"engage-teamwork\",\n defaultMessage: \"Teamwork\",\n }),\n key: \"teamwork\",\n },\n {\n name: \"Technology\",\n displayName: formatMessage({\n id: \"engage-technology\",\n defaultMessage: \"Technology\",\n }),\n key: \"technology\",\n },\n ],\n }\n\n return (\n <>\n {subdomainAudienceType === \"K-12\" ? (\n <WorkReadiness audience=\"K-12\" categories={categories[\"K-12\"]} />\n ) : (\n <WorkReadiness audience=\"ADULT\" categories={categories[\"ADULT\"]} />\n )}\n </>\n )\n}\n\nconst WorkReadiness = ({ audience, categories }) => {\n const [percentageComplete, setPercentageComplete] = useState(0)\n const [selectedCategoryIndex, setSelectedCategoryIndex] = useState(0)\n // all activities for the currently displayed category\n const [displayedActivities, setDisplayedActivities] = useState([])\n // URL query parameter for category\n const [categoryQuery, setCategoryQuery] = useQueryParam(\"activityCategory\", StringParam)\n const { localFirestore } = useContext(FirebaseContext)\n\n const locale = useClientSideLocale()\n\n // list of all possible activities for the current locale from Cosmic\n const allActivities = useActivities(locale)\n\n // function to handle category of content a user selects\n const handleCategorySelect = (index) => {\n setSelectedCategoryIndex(index)\n setCategoryQuery(categories[index].key, \"replaceIn\")\n }\n\n // listen for changes in URL parameters\n useEffect(() => {\n if (categoryQuery) {\n const categoryIndex = categories.findIndex((item) => item.key === categoryQuery)\n setSelectedCategoryIndex(categoryIndex)\n }\n }, [categoryQuery])\n\n // utility function for filtering activities by category\n const getActivitesByCategory = (category) => {\n return allActivities.filter((item) => item.category === category)\n }\n\n useEffect(() => {\n // get only the activities for the currently displayed category\n const activities = getActivitesByCategory(categories[selectedCategoryIndex]?.name) || []\n\n setDisplayedActivities(activities)\n }, [selectedCategoryIndex, locale, displayedActivities])\n\n useEffect(() => {\n // use this to keep track of activities that a user has completed\n // figure out the percentage of activities completed for the current category\n\n const completedDisplayedActivities = displayedActivities.filter((item) =>\n localFirestore.activityRecord?.some((activity) => activity.slug === item.slug)\n )\n\n const percentage = Math.floor((completedDisplayedActivities.length / displayedActivities.length) * 100)\n setPercentageComplete(percentage)\n }, [localFirestore.activityRecord, displayedActivities])\n\n return (\n <div className=\"engage\">\n <div className=\"inner engage-introduction\">\n <h2>\n <FormattedMessage id=\"dashboard-tab-work-readiness\" defaultMessage=\"Work Readiness\" />\n </h2>\n {audience === \"K-12\" ? (\n <>\n <p>\n <FormattedMessage\n id=\"engage-k12-para-1\"\n defaultMessage=\"We're here to help you navigate those four years of your life\n called high school\"\n />\n </p>\n <p>\n <FormattedMessage\n id=\"engage-k12-para-2\"\n defaultMessage=\"We've talked to experts of all kinds - students, teachers,\n nutritonists, and other people on the inside - and shared their\n insight. Maybe their ideas will inspire you. We hope they do.\"\n />\n </p>\n </>\n ) : (\n <>\n <p>\n <FormattedMessage\n id=\"engage-para-1\"\n defaultMessage=\"Prepare for success in the workplace! Learn how to advocate for\n yourself and others, chart an inspiring path for your future,\n develop plans for your future, master decision-making, immerse\n yourself in the principles of equity and inclusion practices, and\n hone your listening skills.\"\n />\n </p>\n\n <p>\n <FormattedMessage id=\"engage-para-2\" defaultMessage=\"Activities are based on the NACE competency framework.\" />\n </p>\n </>\n )}\n </div>\n <div className=\"engage-body\">\n <aside>\n <EyeBrow text={<FormattedMessage id=\"breadcrumbs-categories\" defaultMessage=\"Categories\" />} style={{ marginBottom: \"1.5rem\" }} />\n <ul>\n {categories.map((item, index) => (\n <li\n key={index}\n role=\"button\"\n onClick={() => handleCategorySelect(index)}\n className={index === selectedCategoryIndex ? \"category selected\" : \"category\"}\n >\n {item.displayName}\n </li>\n ))}\n </ul>\n </aside>\n <main>\n <div className=\"engage-progress-header\">\n <div className=\"engage-progress-header-start\">\n <label>{`${percentageComplete}%`}</label>\n </div>\n <div className=\"engage-progress-header-end\">\n <div className=\"content\">\n <label>{`${categories[selectedCategoryIndex]?.displayName}`}</label>\n\n <ProgressBar variant=\"info\" now={percentageComplete} />\n </div>\n </div>\n </div>\n <div className=\"engage-materials\">\n {displayedActivities.map((item) => (\n <ActivityCard\n key={item.id}\n id={item.id}\n slug={item.slug}\n title={item.title}\n image={item.image}\n imageAlt={item.imageAlt}\n downloadFile={item.downloadFile}\n viewUrl={item.viewUrl}\n />\n ))}\n {/* {loadedActivities[selectedCategoryIndex]?.activities.length % 2 !==\n 0 && <div style={{ minWidth: \"47%\" }} />} */}\n </div>\n </main>\n </div>\n </div>\n )\n}\n\nconst ActivityCard = (props) => {\n const { slug, title, image, imageAlt, viewUrl, downloadFile, coordinates } = props\n\n const { localFirestore, notifier } = useContext(FirebaseContext)\n\n const [isCompleted, setIsCompleted] = useState(false)\n\n // function used for handling the checkbox select\n const handleCheckboxSelect = async () => {\n if (isCompleted) {\n // remove from local firestore and firebase\n await localFirestore.removeActivity({ slug: slug })\n } else {\n // add to local firestore and firebase\n await localFirestore.addActivity({\n slug: slug,\n title: title,\n })\n await notifier.handleActivityCompletion(title, slug)\n }\n }\n\n useEffect(() => {\n // check if the activity is completed whenever the activity record changes, could happen through subscription database changes\n if (localFirestore.activityRecord) {\n const isCompleted = localFirestore.activityRecord.some((activity) => activity.slug === slug)\n setIsCompleted(isCompleted)\n }\n }, [localFirestore.activityRecord])\n\n return (\n <div className=\"engage-material-item\">\n <div className=\"checkbox\">\n <label class=\"custom-checkbox\">\n <input type=\"checkbox\" checked={isCompleted} onClick={(e) => handleCheckboxSelect(e, slug, title, coordinates)} />\n <span class=\"checkmark\"></span>\n </label>\n </div>\n\n <div className=\"image-container\">\n <img src={image || \"https://imgix.cosmicjs.com/14c6ef90-481c-11ee-89ab-17371fc03105-Personal-Brand.jpg\"} alt={imageAlt} />\n </div>\n\n <div className=\"content\">\n <h6>{title}</h6>\n <div className=\"links\">\n {downloadFile && (\n <a href={downloadFile} download rel=\"noopener noreferrer\" target=\"_blank\">\n <FontAwesomeIcon icon={faDownload} size=\"sm\" /> <FormattedMessage id=\"engage-download\" defaultMessage=\"Download\" />\n </a>\n )}\n {viewUrl && (\n <a href={viewUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n <FontAwesomeIcon icon={faEye} size=\"sm\" /> <FormattedMessage id=\"engage-view\" defaultMessage=\"View\" />\n </a>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default WorkReadinessTab\n","import React from \"react\"\nimport \"react-responsive-tabs/styles.css\"\nimport AlgoliaToggle from \"../algolia/algolia-toggle\"\nimport Portfolio from \"./portfolio\"\nimport CareerPlans from \"../careers/career-plans\"\nimport Selects from \"../career-resources/career-resources-content\"\nimport AssessmentOverview from \"../assessment/assessment-overview-content\"\nimport { FormattedMessage } from \"react-intl\"\nimport WorkReadiness from \"../work-readiness/work-readiness-tab\"\n\nconst DashboardTabContent = [\n {\n name: <a href={void 0}><FormattedMessage\n id=\"dashboard-tab-explore\"\n defaultMessage=\"Explore\"\n /></a>,\n param: \"explore\",\n content: <AlgoliaToggle heading={<FormattedMessage id=\"dashboard-tab-explore\" defaultMessage=\"Explore\" />} />,\n },\n {\n name: <a href={void 0}><FormattedMessage\n id=\"dashboard-tab-assessment\"\n defaultMessage=\"Assessment\"\n /></a>,\n param: \"assessment\",\n content: <AssessmentOverview />,\n },\n {\n name: <a href={void 0}><FormattedMessage\n id=\"dashboard-tab-portfolio\"\n defaultMessage=\"Portfolio\"\n /></a>,\n param: \"portfolio\",\n content: <Portfolio />,\n },\n {\n name: <a href={void 0}><FormattedMessage\n id=\"dashboard-tab-career-plans\"\n defaultMessage=\"Career Plans\"\n /></a>,\n param: \"career-plan\",\n content: <CareerPlans hasPublicToggle={false} />,\n },\n {\n name: <a href={void 0}><FormattedMessage id=\"dashboard-tab-work-readiness\" defaultMessage=\"Work Readiness\" /></a>,\n param: \"work-readiness\",\n content: <WorkReadiness />,\n },\n]\n\nexport default DashboardTabContent\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n vertical: false,\n toggle: false,\n role: 'group'\n};\nvar ButtonGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n toggle = _ref.toggle,\n vertical = _ref.vertical,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n var baseClass = prefix;\n if (vertical) baseClass = prefix + \"-vertical\";\n return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n ref: ref,\n className: classNames(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\")\n }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","import React, { useState, useRef, useEffect, useContext, useCallback } from \"react\"\nimport ReactDOM from 'react-dom';\nimport { FirebaseContext } from \"../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons';\nimport { faArrowToBottom, faStarShooting } from '@fortawesome/pro-solid-svg-icons';\nimport { notificationOptions } from \"../dashboard/notifications/notificationOptions\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport SimpleLocalize from \"../SimpleLocalize\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { Dropdown, ButtonGroup } from \"react-bootstrap\"\nimport * as XLSX from 'xlsx';\n\nconst DashboardThisWeek = ({ pageContext }) => {\n const [data, setData] = useState([])\n const [exportCsv, setExportCsv] = useState(false)\n\n const handleExportData = useCallback((itemType, itemsData) => {\n setData(prevData => ({\n ...prevData,\n [itemType]: itemsData,\n }));\n }, []);\n\n const flattenDataForExcel = (data) => {\n const wb = XLSX.utils.book_new();\n const sections = Object.keys(data);\n \n sections.forEach((section) => {\n let ws_data = [];\n const sectionName = section === \"goals\" ? \"Goals\" : \"Looking Forward To\";\n const headers = ['Date', 'Name', 'Status'];\n const headerKeys = ['date', 'name', 'completed'];\n \n ws_data.push([sectionName]);\n \n if (data[section].length > 0) {\n ws_data.push(headers);\n \n data[section].forEach(item => {\n const row = headerKeys.map(header =>\n header === \"completed\"\n ? item[header] === true\n ? \"Done\"\n : \"Active\"\n : item[header]\n )\n ws_data.push(row);\n });\n }\n \n const ws = XLSX.utils.aoa_to_sheet(ws_data);\n XLSX.utils.book_append_sheet(wb, ws, sectionName);\n });\n \n return wb;\n }\n\n const downloadExcel = (data) => {\n const wb = flattenDataForExcel(data);\n XLSX.writeFile(wb, 'this_week.xlsx');\n }\n\n useEffect(() => {\n if (exportCsv && data.length !== 0) {\n downloadExcel(data)\n }\n setExportCsv(false)\n }, [data, exportCsv])\n\n return (\n <SimpleLocalize {...{ pageContext }}>\n <section className=\"this-week\">\n <div className=\"this-week-details\">\n <div\n className=\"this-week-details-header\"\n >\n <div\n className=\"eyebrow component-eyebrow this-week-details-header-title\"\n >\n <FormattedMessage\n id=\"dashboard-this-week\"\n defaultMessage=\"This Week\"\n />\n <FontAwesomeIcon className=\"this-week-details-header-title-icon\" icon={faStarShooting} color=\"#CAFE07\" size=\"lg\" style={{ marginLeft: \"0.5rem\" }}/>\n </div>\n <button\n className=\"this-week-details-header-export\"\n onClick={() => setExportCsv(true)}\n >\n <FontAwesomeIcon\n icon={faArrowToBottom}\n size=\"lg\"\n color=\"#54757A\"\n />\n </button>\n </div>\n <ThisWeekItem type=\"goals\" exportCsv={exportCsv} onExportData={handleExportData}/>\n <ThisWeekItem type=\"lookingForwardTo\" exportCsv={exportCsv} onExportData={handleExportData}/>\n </div> \n </section>\n </SimpleLocalize>\n )\n}\n\nconst ThisWeekItem = ( {type, exportCsv, onExportData} ) => {\n const { setPointTotals, setNotification, firebase, profile, notifier} = useContext(\n FirebaseContext\n )\n\n const [newEntryVal, setNewEntryVal] = useState(\"\")\n const [items, setItems] = useState([])\n const [editingItems, setEditingItems] = useState(\n items.reduce((prev, curr) => ({ ...prev, [curr.id]: false }), {})\n )\n const [pastEdit, setPastEdit] = useState(\"\")\n const prevItemsLenRef = useRef(items.length)\n const [filter, setFilter] = useState(\"active\")\n const [menuOpen, setMenuOpen] = useState(null)\n\n const inputRefs = useRef({})\n const itemsEndRef = useRef(null)\n\n const intl = useIntl();\n\n\n useEffect(() => {\n const currentLength = items.length\n if (prevItemsLenRef.current && currentLength > prevItemsLenRef.current) {\n if (itemsEndRef.current && itemsEndRef.current.parentElement) {\n const container = itemsEndRef.current.parentElement\n container.scrollTop = container.scrollHeight\n }\n }\n prevItemsLenRef.current = currentLength\n }, [items.length])\n\n useEffect(() => {\n items.forEach(item => {\n if (editingItems[item.id] && inputRefs.current[item.id]) {\n inputRefs.current[item.id].focus()\n }\n })\n }, [editingItems])\n\n useEffect(() => {\n onExportData(type, items);\n }, [items, type]);\n\n useEffect(() => {\n if (profile[type] && items.length === 0) {\n let items;\n if (!Array.isArray(profile[type])) {\n const currentDate = new Date().toLocaleDateString()\n const newItem = {\n id: uuidv4(),\n name: profile[type],\n completed: false,\n date: currentDate,\n }\n \n items = [newItem]\n } else {\n items = profile[type]\n }\n setItems(items)\n }\n }, [profile[type]])\n\n const handleAddBlur = async e => {\n if (e.target.value != \"\") {\n const currentDate = new Date().toLocaleDateString()\n const newItem = {\n id: uuidv4(),\n name: newEntryVal,\n completed: false,\n date: currentDate,\n }\n\n setItems(prevItems => {\n const updatedItems = [...prevItems, newItem]\n\n firebase.updateProfile({\n data: { [type]: updatedItems },\n })\n\n return updatedItems\n })\n\n setNewEntryVal(\"\")\n\n try {\n await notifier.handleGoalSetting(profile)\n } catch (e) {\n console.error(e)\n }\n }\n }\n\n const handleCheckboxChange = (e, item) => {\n const completed = e.target.checked\n const newItem = { ...item, completed: completed }\n\n setItems(prevItems => {\n const updatedItems = prevItems.map(prevItem => (item.id === prevItem.id ? newItem : prevItem))\n\n firebase.updateProfile({\n data: { [type]: updatedItems },\n })\n\n return updatedItems\n })\n }\n\n const handleEditBlur = () => {\n\n let editedItems = items\n if (items.some(item => item.name == \"\")) {\n editedItems = items.map(item => item.name == \"\" ? pastEdit : item)\n setPastEdit(\"\")\n setItems(editedItems)\n }\n\n const updatedEditingItems = items.reduce(\n (prev, curr) => ({ ...prev, [curr.id]: false }),\n {}\n )\n setEditingItems(updatedEditingItems)\n \n firebase.updateProfile({\n data: {[type] : editedItems}\n })\n }\n\n const handleEdit = (e, id) => { \n e.stopPropagation()\n let updatedEditingItems = items.reduce(\n (prev, curr) => ({ ...prev, [curr.id]: false }),\n {}\n )\n\n setPastEdit(items.filter(item => item.id === id)[0])\n updatedEditingItems[id] = true\n setEditingItems(updatedEditingItems)\n }\n\n const handleEditingChange = (e, id) => {\n e.stopPropagation() \n const newName = e.currentTarget.textContent\n\n setItems(prevItems => {\n const updatedItems = prevItems.map(prevItem =>\n id === prevItem.id ? { ...prevItem, name: newName } : prevItem\n )\n\n return updatedItems\n })\n }\n\n const handleKeyDown = (e, type) => {\n if (e.key == \"Enter\" && type == \"add\") {\n handleAddBlur(e)\n }\n\n if (e.key == \"Enter\" && type == \"edit\") {\n handleEditBlur()\n }\n }\n\n const handleChange = e => {\n setNewEntryVal(e.target.value)\n }\n \n return (\n <div className=\"this-week\">\n <div className=\"this-week-details-title\">\n <p className=\"this-week-details-title-item\">\n {type === \"goals\" ? (\n <FormattedMessage\n id={\"dashboard-my-goals\"}\n defaultMessage={\"My Goals\"}\n />\n ) : (\n <FormattedMessage\n id={\"dashboard-something-I'm-looking-forward-to\"}\n defaultMessage={\"Something I'm Looking Forward To\"}\n />\n )}\n </p>\n {items.length !== 0 && (\n <div className=\"this-week-details-title-item-types\">\n <button\n className={\n filter === \"active\"\n ? \"filter-button filter-button-bold\"\n : \"filter-button\"\n }\n onClick={() => {\n setFilter(\"active\")\n }}\n >\n <FormattedMessage\n id=\"dashboard-filter-active\"\n defaultMessage=\"Active\"\n />\n </button>\n <button\n className={\n filter === \"done\"\n ? \"filter-button filter-button-bold\"\n : \"filter-button\"\n }\n onClick={() => {\n setFilter(\"done\")\n }}\n >\n <FormattedMessage\n id=\"dashboard-filter-completed\"\n defaultMessage=\"Completed\"\n />\n </button>\n <button\n className={\n filter === \"all\"\n ? \"filter-button filter-button-last filter-button-bold\"\n : \"filter-button filter-button-last\"\n }\n onClick={() => {\n setFilter(\"all\")\n }}\n >\n <FormattedMessage\n id=\"dashboard-filter-all\"\n defaultMessage=\"All\"\n />\n </button>\n </div>\n )}\n </div>\n {items.length != 0 ? (\n <div className=\"this-week-details-filled\">\n <div className=\"this-week-details-items\">\n {items\n .filter(item => {\n if (filter === \"active\") return !item.completed\n if (filter === \"done\") return item.completed\n return true\n })\n .map((item, index) => {\n return (\n <div\n className={\n index === 0\n ? \"item-container item-container-first\"\n : \"item-container\"\n }\n key={item.id}\n >\n <div className=\"item-container-input\">\n <label className=\"custom-checkbox\">\n <input\n type=\"checkbox\"\n checked={item.completed}\n onChange={e => handleCheckboxChange(e, item)}\n onKeyDown={e => handleKeyDown(e, \"add\")}\n />\n <span className=\"checkmark\"></span>\n </label>\n {editingItems[item.id] ? (\n <>\n <div\n className=\"editing-input\"\n contentEditable={true}\n ref={el => {\n if (el) {\n inputRefs.current[item.id] = el\n el.textContent = item.name\n }\n }}\n style={\n item.completed\n ? {\n textDecoration: \"line-through\",\n opacity: 0.5,\n }\n : {}\n }\n onBlur={e => handleEditBlur()}\n onKeyDown={e => handleKeyDown(e, \"edit\", item)}\n onInput={e => handleEditingChange(e, item.id)}\n ></div>\n </>\n ) : (\n <label\n className=\"item-label\"\n onDoubleClick={e => handleEdit(e, item.id)}\n style={\n item.completed\n ? { textDecoration: \"line-through\", opacity: 0.5 }\n : {}\n }\n >\n {item.name}\n </label>\n )}\n </div>\n <div className=\"item-container-menu\">\n <p className=\"item-container-menu-date\">{item.date}</p>\n <EditingMenu\n itemId={item.id}\n menuOpen={menuOpen}\n setMenuOpen={setMenuOpen}\n handleEdit={handleEdit}\n firebase={firebase}\n type={type}\n setItems={setItems}\n items={items}\n />\n </div>\n </div>\n )\n })}\n <div ref={itemsEndRef} />\n </div>\n </div>\n ) : (\n <div className=\"this-week-details-empty\">\n <blockquote\n className=\"component-blockquote component-blockquote-stories\"\n style={{ marginTop: \"0.5rem\", marginBottom: \"0.5rem\" }}\n >\n <p>\n {type === \"goals\" ? (\n <FormattedMessage\n id={\"dashboard-para-1\"}\n defaultMessage={`What do you want to accomplish? Set SMART Specific, Measurable,\n Attainable, Relevant, and Time-bound goals.`}\n />\n ) : (\n <FormattedMessage\n id={\"dashboard-para-2\"}\n defaultMessage={`Take the time to focus on the good things in your life.`}\n />\n )}\n </p>\n </blockquote>\n </div>\n )}\n <input\n className=\"editing-input editing-input-new\"\n type=\"text\"\n value={newEntryVal}\n onChange={handleChange}\n onBlur={e => handleAddBlur(e)}\n onKeyDown={e => handleKeyDown(e, \"add\")}\n placeholder={\n type === \"goals\"\n ? intl.formatMessage({\n id: \"dashboard-new-goal\",\n defaultMessage: \"New Goal\",\n })\n : intl.formatMessage({\n id: \"dashboard-new-event\",\n defaultMessage: \"New Event\",\n })\n }\n />\n </div>\n )\n}\n\n\n\nconst EditingMenu = ({ itemId, menuOpen, setMenuOpen, handleEdit, firebase, type, setItems }) => {\n\n const toggleRef = useRef(null);\n const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0 });\n\n const updateDropdownPosition = () => {\n if (toggleRef.current) {\n const rect = toggleRef.current.getBoundingClientRect();\n setDropdownPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX\n });\n }\n };\n\n const handleDropdownClick = () => {\n updateDropdownPosition()\n\n if (menuOpen !== itemId) {\n setMenuOpen(itemId)\n } else {\n setMenuOpen(null)\n }\n }\n\n const handleDropdownBlur = () => {\n if (document.activeElement === document.body) {\n setMenuOpen(null);\n }\n }\n\n const handleDropdownDelete = () => {\n\n setMenuOpen(null)\n\n setItems(prevItems => {\n const updatedItems = prevItems.filter(prevItem => itemId !== prevItem.id)\n \n firebase.updateProfile({\n data: {[type] : updatedItems}\n })\n return updatedItems\n })\n\n }\n\n return (\n <Dropdown\n as={ButtonGroup}\n className=\"ellipsis\"\n onClick={e => handleDropdownClick()}\n >\n <Dropdown.Toggle\n id={`dropdown-basic-${itemId}`}\n className=\"item-dropdown\"\n style={{\n background: \"none\",\n border: \"none\",\n opacity: menuOpen == itemId ? 1 : null,\n }}\n onBlur={handleDropdownBlur}\n >\n <FontAwesomeIcon icon={faEllipsisH} />\n </Dropdown.Toggle>\n\n {ReactDOM.createPortal(\n <div\n className=\"menu\"\n style={{\n top: dropdownPosition.top,\n left: dropdownPosition.left,\n position: \"absolute\",\n }}\n >\n <Dropdown.Menu>\n <Dropdown.Item onClick={e => handleEdit(e, itemId)}>\n <FormattedMessage\n id=\"dashboard-item-menu-edit\"\n defaultMessage=\"Edit\"\n />\n </Dropdown.Item>\n <Dropdown.Item onClick={() => handleDropdownDelete()}>\n <FormattedMessage\n id=\"dashboard-item-menu-delete\"\n defaultMessage=\"Delete\"\n />\n </Dropdown.Item>\n </Dropdown.Menu>\n </div>,\n document.body\n )}\n </Dropdown>\n )\n}\n\nexport default DashboardThisWeek\n","import React from \"react\"\nimport { StaticQuery, graphql } from \"gatsby\"\nimport Link from \"../../link\"\nimport { useIntl } from \"react-intl\"\n\nconst KnowledgeBaseLinks = () => {\n const { locale } = useIntl();\n return (\n <section\n className=\"knowledge-base-links\"\n style={{ margin: \"0 0 1rem .5rem\" }}\n >\n <StaticQuery\n query={graphql`\n {\n allCosmicjsBasicPages(\n sort: { order: DESC, fields: created_at }\n filter: { slug: { nin: [\"privacy-policy\", \"terms-of-use\"] } }\n ) {\n edges {\n node {\n slug\n title\n created_at\n locale\n }\n }\n }\n }\n `}\n render={data =>\n data.allCosmicjsBasicPages.edges.filter((lang) => lang.node.locale === locale).map(({ node }, idx) => {\n return (\n <div key={idx}>\n <Link to={`/about/${node.slug}`}>{node.title}</Link>\n </div>\n )\n })\n }\n ></StaticQuery>\n </section>\n )\n}\n\nexport default KnowledgeBaseLinks\n","import { faRocket } from \"@fortawesome/pro-regular-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { ProgressBar } from \"react-bootstrap\"\nimport React, { useState, useContext, useEffect, Fragment } from \"react\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nimport \"./daily-quest.css\"\n\nimport { faCheckCircle } from \"@fortawesome/pro-duotone-svg-icons\"\n\nimport { faChevronCircleRight, faTimesCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport { FirebaseContext } from \"../Firebase\"\nimport Link, { navigate } from \"../../link\"\n\nconst DailyQuest = () => {\n const { localFirestore, notifier, profile } = useContext(FirebaseContext)\n const [completionStatus, setCompletionStatus] = useState(\"ACTIVE\")\n const [currentPromptIndex, setCurrentPromptIndex] = useState(0)\n\n const todaysQuest = localFirestore.dailyQuest || []\n\n const handleSubmitResponse = async ({ response, promptId }) => {\n const isLast = currentPromptIndex === todaysQuest.length - 1\n\n await localFirestore.setDailyQuestResponse({ response, promptId })\n\n if (isLast) {\n const { pointsAwarded } = localFirestore.getDailyQuestResults()\n\n await notifier.handleDailyQuestCompletion(pointsAwarded, profile)\n }\n }\n\n useEffect(() => {\n const { currentQuestionIndex, questCompletionStatus } = localFirestore.getDailyQuestCompletionStatus()\n setCurrentPromptIndex(currentQuestionIndex)\n setCompletionStatus(questCompletionStatus)\n }, [])\n\n return (\n <div className=\"daily-quest dashboard-daily-quest\">\n <div className=\"daily-quest-heading\">\n <div className=\"eyebrow component-eyebrow\">\n <FormattedMessage id=\"daily-quest-heading\" defaultMessage=\"Daily Quest \" />\n <FontAwesomeIcon icon={faRocket} color={\"#B849CE\"} style={{ marginLeft: \".5rem\" }} />\n </div>\n <div className=\"daily-quest-progress\">\n <span>\n {completionStatus === \"ACTIVE\" && (\n <>\n {\" \"}\n {currentPromptIndex + 1}/{todaysQuest.length}{\" \"}\n </>\n )}\n </span>\n <ProgressBar variant=\"info\" now={completionStatus === \"ACTIVE\" ? (currentPromptIndex / todaysQuest.length) * 100 : 100} />\n </div>\n </div>\n\n <div className=\"daily-quest-body\">\n {completionStatus === \"ACTIVE\" && (\n <PromptSlides\n setCompletionStatus={setCompletionStatus}\n handleSubmitResponse={handleSubmitResponse}\n currentPromptIndex={currentPromptIndex}\n setCurrentPromptIndex={setCurrentPromptIndex}\n todaysQuest={localFirestore.dailyQuest || []}\n />\n )}\n {completionStatus === \"COMPLETE\" && <CompletionSlide />}\n </div>\n </div>\n )\n}\n\nconst StoryImage = ({ storyImage, storySlug }) => {\n if (!storyImage) {\n return <></>\n }\n\n return (\n <Link to={`/story/${storySlug}`}>\n <img src={`${storyImage}?w=400&h=300&q=100&fit=facearea&facepad=6&ar=13:2`} alt=\"story\" style={{width: '200px'}}/>\n </Link>\n )\n}\n\nconst PromptSlides = ({ todaysQuest, setCompletionStatus, currentPromptIndex, setCurrentPromptIndex, handleSubmitResponse }) => {\n const incrementPromptIndex = () => {\n if (currentPromptIndex < todaysQuest.length - 1) {\n setCurrentPromptIndex(currentPromptIndex + 1)\n } else {\n setCurrentPromptIndex(0)\n setCompletionStatus(\"COMPLETE\")\n }\n }\n\n return (\n <>\n {todaysQuest.map((question, index) => {\n switch (question.question_type.value) {\n case \"yes / no\":\n return (\n <Fragment key={`question-${index}`}>\n <YesNoSlide\n keyName={`question-${index}`}\n isCurrent={index === currentPromptIndex}\n incrementPromptIndex={incrementPromptIndex}\n question={question}\n handleSubmitResponse={handleSubmitResponse}\n />\n </Fragment>\n )\n case \"multiple choice\":\n return (\n <Fragment key={`question-${index}`}>\n <MultipleChoiceSlide\n keyName={`question-${index}`}\n isCurrent={index === currentPromptIndex}\n incrementPromptIndex={incrementPromptIndex}\n question={question}\n handleSubmitResponse={handleSubmitResponse}\n />\n </Fragment>\n )\n case \"open response\":\n return (\n <Fragment key={`question-${index}`}>\n <OpenResponseSlide\n keyName={`question-${index}`}\n isCurrent={index === currentPromptIndex}\n incrementPromptIndex={incrementPromptIndex}\n question={question}\n handleSubmitResponse={handleSubmitResponse}\n />\n </Fragment>\n )\n }\n })}\n </>\n )\n}\n\n// switch to DOMPurify\nconst YesNoSlide = ({ question, isCurrent, incrementPromptIndex, handleSubmitResponse, keyName }) => {\n const { locale } = useIntl()\n const { promptId } = question\n const [isNextEnabled, setIsNextEnabled] = useState(false)\n\n const [userResponse, setUserResponse] = useState(null)\n\n const handleYesNoClick = (response) => {\n setUserResponse(response)\n setIsNextEnabled(true)\n }\n\n const handleYesNoSubmit = () => {\n if (userResponse === null) return\n handleSubmitResponse({ response: userResponse, promptId: promptId })\n }\n\n return (\n <Fragment key={keyName}>\n {isCurrent && (\n <>\n <div className=\"daily-quest-content\">\n <div className=\"daily-quest-story\">\n <StoryImage storyImage={question.storyImage} storySlug={question.storySlug} />\n\n <div\n dangerouslySetInnerHTML={{\n __html: locale !== \"es-ES\" ? question.question_prompt : question.question_prompt_es,\n }}\n className=\"daily-quest-prompt-text\"\n />\n </div>\n\n <div className=\"daily-quest-option-grid\">\n <button\n className={userResponse === \"yes\" ? \"correct\" : \"\"}\n onClick={() => {\n handleYesNoClick(\"yes\")\n }}\n >\n <FormattedMessage id=\"daily-quest-yes\" defaultMessage=\"Yes\" />\n </button>\n <button\n className={userResponse === \"no\" ? \"correct\" : \"\"}\n onClick={() => {\n handleYesNoClick(\"no\")\n }}\n >\n <FormattedMessage id=\"daily-quest-no\" defaultMessage=\"No\" />\n </button>\n </div>\n </div>\n <QuestFooter\n responseStatus={\"NONE\"}\n incrementPromptIndex={incrementPromptIndex}\n isNextEnabled={isNextEnabled}\n submissionCallback={handleYesNoSubmit}\n />\n </>\n )}\n </Fragment>\n )\n}\n\nconst MultipleChoiceSlide = ({ question, isCurrent, incrementPromptIndex, handleSubmitResponse, keyName }) => {\n const { locale } = useIntl()\n const {\n question_prompt,\n question_prompt_es,\n multiple_choice_option_1,\n multiple_choice_option_2,\n multiple_choice_option_3,\n multiple_choice_option_4,\n multiple_choice_option_1_es,\n multiple_choice_option_2_es,\n multiple_choice_option_3_es,\n multiple_choice_option_4_es,\n multiple_choice_answer,\n promptId,\n storyImage,\n storySlug,\n } = question\n\n const [responseStatus, setResponseStatus] = useState(\"NONE\")\n const [isNextEnabled, setIsNextEnabled] = useState(false)\n const [selectedOption, setSelectedOption] = useState(null)\n\n const answerDictionary = {\n 1: multiple_choice_option_1,\n 2: multiple_choice_option_2,\n 3: multiple_choice_option_3,\n 4: multiple_choice_option_4,\n }\n\n const spanishAnswerDictionary = {\n 1: multiple_choice_option_1_es,\n 2: multiple_choice_option_2_es,\n 3: multiple_choice_option_3_es,\n 4: multiple_choice_option_4_es,\n }\n\n const handleMultipleChoiceSubmit = (responseIndex) => {\n if (responseStatus === \"CORRECT\" || responseStatus === \"INCORRECT\") return\n\n setSelectedOption(responseIndex)\n\n handleSubmitResponse({ response: responseIndex, promptId: promptId })\n\n if (responseIndex === multiple_choice_answer) {\n setResponseStatus(\"CORRECT\")\n } else {\n setResponseStatus(\"INCORRECT\")\n }\n\n setIsNextEnabled(true)\n }\n\n const renderClassName = (index) => {\n if (responseStatus === \"CORRECT\" && index === multiple_choice_answer) {\n return \"correct\"\n } else if (responseStatus === \"INCORRECT\" && index === selectedOption) {\n return \"incorrect\"\n } else {\n return \"\"\n }\n }\n\n return (\n <Fragment key={keyName}>\n {isCurrent && (\n <>\n <div className=\"daily-quest-content\">\n <div className=\"daily-quest-story\">\n <StoryImage storyImage={storyImage} storySlug={storySlug} />\n <div\n dangerouslySetInnerHTML={{\n __html: locale !== \"es-ES\" ? question_prompt : question_prompt_es,\n }}\n className=\"daily-quest-prompt-text\"\n />\n </div>\n\n <div className=\"daily-quest-option-grid\">\n {multiple_choice_option_1 && (\n <button\n className={renderClassName(1)}\n onClick={() => {\n handleMultipleChoiceSubmit(1)\n }}\n >\n {locale !== \"es-ES\" ? multiple_choice_option_1 : multiple_choice_option_1_es}\n </button>\n )}\n {multiple_choice_option_2 && (\n <button\n className={renderClassName(2)}\n onClick={() => {\n handleMultipleChoiceSubmit(2)\n }}\n >\n {locale !== \"es-ES\" ? multiple_choice_option_2 : multiple_choice_option_2_es}\n </button>\n )}\n {multiple_choice_option_3 && (\n <button\n className={renderClassName(3)}\n onClick={() => {\n handleMultipleChoiceSubmit(3)\n }}\n >\n {locale !== \"es-ES\" ? multiple_choice_option_3 : multiple_choice_option_3_es}\n </button>\n )}\n {multiple_choice_option_4 && (\n <button\n className={renderClassName(4)}\n onClick={() => {\n handleMultipleChoiceSubmit(4)\n }}\n >\n {locale !== \"es-ES\" ? multiple_choice_option_4 : multiple_choice_option_4_es}\n </button>\n )}\n </div>\n </div>\n <QuestFooter\n responseStatus={responseStatus}\n isNextEnabled={isNextEnabled}\n correctAnswer={\n responseStatus === \"INCORRECT\"\n ? `${locale !== \"es-ES\" ? answerDictionary[multiple_choice_answer] : spanishAnswerDictionary[multiple_choice_answer]}`\n : \"\"\n }\n incrementPromptIndex={incrementPromptIndex}\n />\n </>\n )}\n </Fragment>\n )\n}\n\nconst OpenResponseSlide = ({ question, isCurrent, incrementPromptIndex, handleSubmitResponse, keyName }) => {\n const { locale } = useIntl()\n const [userResponse, setUserResponse] = useState(\"\")\n\n const handleChange = (event) => {\n setUserResponse(event.target.value)\n }\n\n const handleOpenResponseSubmit = () => {\n handleSubmitResponse({\n response: userResponse,\n promptId: question.promptId,\n })\n }\n\n return (\n <Fragment key={keyName}>\n {isCurrent && (\n <>\n <div className=\"daily-quest-content\">\n <div className=\"daily-quest-story\">\n <StoryImage storyImage={question.storyImage} storySlug={question.storySlug} />\n <div\n dangerouslySetInnerHTML={{\n __html: locale !== \"es-ES\" ? question.question_prompt : question.question_prompt_es,\n }}\n className=\"daily-quest-prompt-text\"\n />\n </div>\n <textarea onChange={handleChange} name=\"open-response\" rows=\"4\" cols=\"50\" />\n </div>\n <QuestFooter\n responseStatus={\"NONE\"}\n isNextEnabled={userResponse.length > 0}\n submissionCallback={handleOpenResponseSubmit}\n incrementPromptIndex={incrementPromptIndex}\n />\n </>\n )}\n </Fragment>\n )\n}\n\nconst CompletionSlide = () => {\n const { firebase, localFirestore } = useContext(FirebaseContext)\n const [totalCorrectAnswers, setTotalCorrectAnswers] = useState(0)\n const [totalQuestions, setTotalQuestions] = useState(0)\n const [pointsAwarded, setPointsAwarded] = useState(0)\n\n useEffect(() => {\n const { totalCorrect, totalQuestions, pointsAwarded } = localFirestore.getDailyQuestResults()\n\n setTotalCorrectAnswers(totalCorrect)\n setTotalQuestions(totalQuestions)\n setPointsAwarded(pointsAwarded)\n }, [firebase])\n\n return (\n <div className=\"daily-quest-completion\">\n <div className=\"daily-quest-score\">\n <FontAwesomeIcon icon={faRocket} size=\"3x\" color={\"#B849CE\"} />\n <div>\n <h6>\n <FormattedMessage id=\"daily-quest-scored\" defaultMessage=\"You Scored\" />\n </h6>\n <h3>\n {totalCorrectAnswers} / {totalQuestions}\n </h3>\n </div>\n </div>\n <span>\n <FormattedMessage id=\"daily-quest-congrats\" defaultMessage=\"Congratulations on completing the task!\" />\n <br />\n <FormattedMessage id=\"daily-quest-congrats-earned\" defaultMessage=\"You have earned\" /> {pointsAwarded}{\" \"}\n <FormattedMessage id=\"daily-quest-points\" defaultMessage=\" points.\" />\n </span>\n </div>\n )\n}\n\n// response status can be \"CORRECT\", \"INCORRECT\", or \"NONE\"\nconst QuestFooter = ({ responseStatus, submissionCallback, isNextEnabled, correctAnswer, incrementPromptIndex }) => {\n const handleNextClick = () => {\n if (submissionCallback) {\n submissionCallback()\n }\n incrementPromptIndex()\n }\n\n const [dynamicFeedback, setDynamicFeedback] = useState(null)\n\n const renderPositiveFeedback = () => {\n let randomInt = Math.floor(Math.random() * 5)\n\n switch (randomInt) {\n case 0:\n return <FormattedMessage id=\"daily-quest-feedback-correct-0\" defaultMessage=\"Amazing!\" />\n case 1:\n return <FormattedMessage id=\"daily-quest-feedback-correct-1\" defaultMessage=\"Nicely done!\" />\n case 2:\n return <FormattedMessage id=\"daily-quest-feedback-correct-2\" defaultMessage=\"Correct!\" />\n case 3:\n return <FormattedMessage id=\"daily-quest-feedback-correct-3\" defaultMessage=\"Excellent!\" />\n case 4:\n return <FormattedMessage id=\"daily-quest-feedback-correct-4\" defaultMessage=\"Good!\" />\n default:\n return <FormattedMessage id=\"daily-quest-feedback-correct\" defaultMessage=\"Amazing!\" />\n }\n }\n\n useEffect(() => {\n if (responseStatus === \"CORRECT\") {\n setDynamicFeedback(renderPositiveFeedback())\n }\n }, [responseStatus])\n\n return (\n <div className=\"daily-quest-footer\">\n <div className=\"daily-quest-feedback\">\n {responseStatus === \"CORRECT\" && (\n <>\n <FontAwesomeIcon icon={faCheckCircle} color={\"#50A097\"} />\n <span>{dynamicFeedback}</span>{\" \"}\n </>\n )}\n\n {responseStatus === \"INCORRECT\" && (\n <>\n <FontAwesomeIcon icon={faTimesCircle} color={\"#94342A\"} />\n <span>\n <FormattedMessage id=\"daily-quest-feedback-incorrect\" defaultMessage=\"Oh no, that's a wrong answer!\" />\n </span>{\" \"}\n {correctAnswer && (\n <>\n {\" \"}\n <br />\n <span className=\"daily-quest-feedback-correction\">\n <FormattedMessage id=\"daily-quest-correction-message\" defaultMessage=\"Correct answer: \" /> {correctAnswer}\n </span>\n </>\n )}\n </>\n )}\n </div>\n\n {isNextEnabled ? (\n <button onClick={handleNextClick}>\n <FontAwesomeIcon icon={faChevronCircleRight} size=\"lg\" color={\"#50A097\"} />\n </button>\n ) : (\n <button disabled>\n <FontAwesomeIcon icon={faChevronCircleRight} size=\"lg\" color={\"#D3D3D3\"} />\n </button>\n )}\n </div>\n )\n}\nexport default DailyQuest\n","import { createContext } from 'react';\n\nexport const PropsContext = createContext(null);\n","import React, { useContext, useEffect, useState } from \"react\"\nimport { useLocation } from \"@reach/router\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { navigate } from \"../../link\"\nimport SEO from \"../seo\"\nimport DashboardThisWeek from \"./dashboard-this-week\"\nimport AlgoliaStoriesWeek from \"../algolia/algolia-stories-week\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faQuestionCircle } from \"@fortawesome/free-solid-svg-icons\"\nimport Modal from \"react-bootstrap/Modal\"\nimport KnowledgeBaseLinks from \"./knowledge-base\"\nimport LoadingSpinner from \"../loading/LoadingSpinner.js\"\nimport { CSSTransition } from \"react-transition-group\"\nimport \"../loading/spinner.css\"\nimport DailyQuest from \"../daily-quest/dashboard-daily-quest\"\nimport Link from \"../../link\"\nimport { FormattedMessage } from \"react-intl\"\nimport { PropsContext } from \"../../components/dashboard/PropsContext\"\n\nconst Dashboard = () => {\n const { pageContext } = useContext(PropsContext)\n const { firebase, user, loading, profile, localFirestore } = useContext(FirebaseContext)\n const [showModal, setShowModal] = useState(false)\n const [displayLoading, setDisplayLoading] = useState(true)\n const location = useLocation()\n\n useEffect(() => {\n loading === false && setDisplayLoading(false)\n }, [loading])\n\n const handleClose = () => setShowModal(false)\n const handleOpen = e => {\n e.preventDefault()\n setShowModal(true)\n }\n\n if (!loading && user && !profile) {\n return (\n <>\n <div\n style={{\n textAlign: \"center\",\n marginTop: \"10em\",\n marginBottom: \"10em\",\n fontSize: \"20px\",\n }}\n >\n <FormattedMessage\n id=\"dashboard-heading-error-loading-profile\"\n defaultMessage=\"There was a problem loading your profile. Please try again later,\"\n /><FormattedMessage\n id=\"login-or\"\n defaultMessage=\"or\"\n />\n {\" \"}\n <Link to=\"/contact\"><FormattedMessage\n id=\"registration-form-contact-us\"\n defaultMessage=\"contact us\"\n /></Link> <FormattedMessage\n id=\"dashboard-heading-support-if-problem-continues\"\n defaultMessage=\"for support if the problem continues.\"\n />\n </div>\n </>\n )\n }\n\n if (!loading && !user) {\n // done loading and user is not authenticated\n navigate(\"/\")\n return null\n }\n\n function scrollToTop() {\n // If user is coming to dashboard and the anchorate is present\n // do not scroll to top, as we want scroll to stay at anchorate position.\n if (location.hash === \"#start\") {\n return\n }\n window.scrollTo(0, 0)\n }\n\n return (\n <>\n <CSSTransition\n in={displayLoading}\n timeout={500}\n classNames=\"loader\"\n onEnter={() => {\n scrollToTop()\n }}\n onExiting={() => {\n scrollToTop()\n }}\n onExit={() => {\n scrollToTop()\n }}\n onExited={() => {\n scrollToTop()\n }}\n unmountOnExit\n >\n <LoadingSpinner />\n </CSSTransition>\n\n {!loading && !localFirestore.isQuestLoading && (\n <section>\n <SEO title=\"Dashboard\" />\n <section\n className=\"dashboard-intro\"\n style={{ backgroundColor: \"white\" }}\n >\n <div className=\"inner inner-dashboard-intro\">\n <div className=\"dashboard-intro-header\" style={{ width: \"100%\" }}>\n <h1>\n <FormattedMessage id=\"dashboard-hi\" defaultMessage=\"Hi\" />\n {profile && profile.firstName ? `, ${profile.firstName}` : \"\"}\n !\n </h1>\n <button onClick={handleOpen}>\n <FontAwesomeIcon\n icon={faQuestionCircle}\n size=\"2x\"\n color=\"#40777c\"\n />\n </button>\n <Modal show={showModal} onHide={handleClose} centered size=\"lg\">\n <Modal.Header closeButton>\n <Modal.Title>\n <FormattedMessage\n id=\"dashboard-modal-title\"\n defaultMessage=\"Have a question? We are here to help!\"\n />\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p>\n <FormattedMessage\n id=\"dashboard-modal-body-para-1\"\n defaultMessage=\"Here are links to frequently asked questions.\"\n />\n </p>\n <KnowledgeBaseLinks />\n <p>\n <FormattedMessage\n id=\"dashboard-modal-body-para-2\"\n defaultMessage=\"If you can't find what you're looking for, feel free to\n reach out to our team\"\n />\n \n <Link to=\"/contact\">\n <FormattedMessage\n id=\"dashboard-modal-body-here\"\n defaultMessage=\"here.\"\n />\n </Link>\n </p>\n </Modal.Body>\n </Modal>\n </div>\n <div className=\"dashboard-weekly\">\n <DailyQuest />\n <DashboardThisWeek\n firebase={firebase}\n profile={profile}\n pageContext={pageContext}\n />\n </div>\n <AlgoliaStoriesWeek />\n </div>\n </section>\n </section>\n )}\n </>\n )\n}\n\nexport default Dashboard\n","import React, { useState, useContext, createContext, useEffect } from \"react\"\nimport Tabs from \"react-responsive-tabs\"\nimport DashboardTabContent from \"./dashboard-tab-content\"\nimport Dashboard from \"./dashboard-heading\"\nimport \"react-responsive-tabs/styles.css\"\nimport \"./dashboard.css\"\nimport { useQueryParam, StringParam } from \"use-query-params\"\nimport { PropsContext } from \"./PropsContext\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { navigate } from \"gatsby\"\n\nfunction getTabs() {\n return DashboardTabContent.map((tab, index) => ({\n title: tab.name,\n getContent: () => tab.content,\n /* Optional parameters */\n key: index,\n tabClassName: \"tab tab-page\",\n panelClassName: \"panel\",\n }))\n}\n\nconst DashboardExplore = (props) => {\n const { user, profile, firebase, notifier } = useContext(FirebaseContext)\n\n const [isWelcomeSent, setIsWelcomeSent] = useState(false)\n\n useEffect(() => {\n if (!user || user?.membership?.active !== true) {\n navigate(\"/\", { replace: true })\n }\n }, [user])\n\n useEffect(() => {\n const sendAsyncWelcome = async () => {\n if (!!profile && !isWelcomeSent) {\n await sendWelcomeNotification(profile?.loginCount)\n }\n }\n\n sendAsyncWelcome()\n }, [])\n\n const sendWelcomeNotification = async (loginCount) => {\n if (isWelcomeSent) return\n setIsWelcomeSent(true)\n const visitCount = await firebase.getVisitCount()\n\n if (visitCount <= 1 && loginCount <= 1) {\n await notifier.handleWelcomeNotification()\n }\n\n if (visitCount > 1) {\n await notifier.handleReturningUserNotification()\n }\n }\n\n // tab param in written string format\n const [tabParam, setTabParam] = useQueryParam(\"tab\", StringParam)\n\n // selected tab index\n const [selectedTab, setSelectedTab] = useState(0)\n\n // array of avaliable tabs in written string format\n const tabs = DashboardTabContent.map((tab) => tab.param)\n\n const setLocation = (index) => {\n // prevents default focus behavior from RRT from lingering after click or back / forward navigation\n document.activeElement.blur()\n\n setTabParam(tabs[index], \"push\")\n setSelectedTab(index)\n }\n\n useEffect(() => {\n // if there is a tab parameter, set the selected tab to that, default to 0 if missing, need to trim trailing slashes in URL\n if (tabParam) {\n tabs.includes(tabParam.replace(/\\/$/, \"\")) && setSelectedTab(tabs.indexOf(tabParam.replace(/\\/$/, \"\")))\n } else {\n setSelectedTab(0)\n }\n }, [tabParam])\n\n return (\n <PropsContext.Provider value={{ ...props }}>\n <section className=\"dashboard-intro-tabs\">\n <div id=\"tab-nav-position\">\n <Dashboard />\n </div>\n <div id=\"start\" />\n <Tabs\n items={getTabs()}\n onChange={(index) => setLocation(index)}\n transform={false}\n selectedTabKey={selectedTab}\n showMoreLabel={<>⋮</>}\n showMore={true}\n />\n </section>\n </PropsContext.Provider>\n )\n}\n\nexport default DashboardExplore\n","import React, { useEffect } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCog } from \"@fortawesome/pro-light-svg-icons\"\n\nconst MaintenancePage = () => {\n // forces reload when component is unmounted and maintenance is done\n useEffect(() => {\n return () => {\n if (typeof window !== \"undefined\") {\n window.location.reload()\n }\n }\n }, [])\n\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100vh\",\n fontSize: \"4rem\",\n textAlign: \"center\",\n maxWidth: \"700px\",\n flexDirection: \"column\",\n gap: \"2rem\",\n margin: \"0 auto\",\n }}\n >\n <div>\n <FontAwesomeIcon color={\"#8FBCC7\"} icon={faCog} spin size=\"lg\" />\n </div>\n\n <p>\n 🔧\n <b style={{ fontSize: \"30px\" }}>\n {\" \"}\n Wingspans is momentarily under construction.\n </b>{\" \"}\n 🔧\n <br />\n <br />\n We're taking a short break to upgrade our platform, ensuring you have\n the best possible experience as you navigate your career journey.\n {/* <br />\n <br />\n <i>Expected Time to Resume Your Journey:</i>\n <b> 24 hours </b> */}\n <br />\n <br />\n 🌟 Helping you pave the way for a bright future is our utmost priority.\n 🌟\n <br />\n <br />\n If you have any questions or need assistance during this upgrade, please\n don't hesitate to contact us at{\" \"}\n <a href=\"support@wingspans.com\"> support@wingspans.com</a>\n <br />\n <br />\n Thank you for your understanding and patience. We're here to support you\n every step of the way!\n </p>\n </div>\n )\n}\n\nexport default MaintenancePage\n","import { useState } from \"react\"\nimport { schoolOrganizationOptions } from \"../organizationOptions\"\n\nconst defaultConfiguration = {\n subdomain: null,\n subdomainSchoolId: null,\n subdomainAudienceType: \"ADULT\",\n subdomainSamlProviderId: null,\n subdomainOpenIdConnectProviderId: null,\n subdomainState: 'RI',\n isWhitelistedSubdomain: true,\n petersons_institution_id: null,\n}\n\n/**\n * @description Function to get initial subdomain data including the subdomain, school id, audience type, saml provider id, openid connect provider id, and whether the subdomain is whitelisted\n * Whitelisting is necessary here because of wildcard subdomains and the need to redirect non-whitelisted subdomains to the main site\n *\n * Whitelisted sites include the following:\n * - Production deployment for www.wingspans.com\n * - Production deployments where the subdomain matches the key in the organization options file\n * - Localhost builds\n * - Live Development builds where the domain is not wingspans.com\n *\n * Non-whitelisted sites include any other subdomains that are not in the organization options file\n *\n * @returns {Object} subdomainData - The subdomain data object\n * @returns {string} subdomainData.subdomain - The subdomain name from the URL\n * @returns {string} subdomainData.subdomainSchoolId - The school id associated with the subdomain\n * @returns {string} subdomainData.subdomainAudienceType - The audience type associated with the subdomain (ADULT or K-12)\n * @returns {string} subdomainData.subdomainSamlProviderId - The saml provider id associated with the subdomain (if applicable)\n * @returns {string} subdomainData.subdomainOpenIdConnectProviderId - The openid connect provider id associated with the subdomain (if applicable)\n * @returns {boolean} subdomainData.isWhitelistedSubdomain - Whether the subdomain is whitelisted, non whitelisted subdomains will redirect to the main site\n */\nconst getSubdomainData = () => {\n // catch for server side rendering\n if (typeof window === \"undefined\") {\n return defaultConfiguration\n }\n\n const subdomain = window.location.hostname.split(\".\")[0]\n const domain = window.location.hostname.split(\".\")[1]\n\n // For testing purposes, you can set a default organization for this value that matches the subdomain / key\n // const subdomain = 'www'\n // const domain = 'wingspans'\n\n // should never be the case\n if (!subdomain) {\n return defaultConfiguration\n }\n\n const matchedOrganization = schoolOrganizationOptions.find((org) => org.key === subdomain)\n\n if (subdomain !== \"www\" && domain === \"wingspans\" && !matchedOrganization) {\n defaultConfiguration.isWhitelistedSubdomain = false\n }\n\n if (!matchedOrganization) {\n console.warn(\"Subdomain not in list of options:\", subdomain)\n return defaultConfiguration\n }\n\n // at this point we have a matched organization\n const { key, value, text, audience_type = \"ADULT\", saml_provider_id, openid_connect_provider_id, petersons_institution_id = null, state = 'RI' } = matchedOrganization\n\n return {\n subdomain: key,\n subdomainSchoolId: value,\n subdomainSchoolName: text,\n subdomainAudienceType: audience_type === \"ADULT\" || audience_type === \"K-12\" ? audience_type : \"ADULT\",\n subdomainSamlProviderId: saml_provider_id,\n subdomainOpenIdConnectProviderId: openid_connect_provider_id,\n subdomainPetersonsInstitutionId: petersons_institution_id,\n subdomainState: state,\n isWhitelistedSubdomain: defaultConfiguration.isWhitelistedSubdomain,\n }\n}\n\n/**\n * @description Custom hook to get subdomain data\n * @returns {Object} subdomainData\n * @returns {string} subdomainData.subdomain - The subdomain name from the URL\n * @returns {string} subdomainData.subdomainSchoolId - The school id associated with the subdomain\n * @returns {string} subdomainData.subdomainAudienceType - The audience type associated with the subdomain (ADULT or K-12)\n * @returns {string} subdomainData.subdomainSamlProviderId - The saml provider id associated with the subdomain (if applicable)\n * @returns {string} subdomainData.subdomainOpenIdConnectProviderId - The openid connect provider id associated with the subdomain (if applicable)\n * @returns {string} subdomainData.subdomainState - The state associated with the subdomain\n * @returns {boolean} subdomainData.isWhitelistedSubdomain - Whether the subdomain is whitelisted, non whitelisted subdomains will redirect to the main site\n */\nconst useSubdomain = () => {\n const [subdomainData] = useState(() => getSubdomainData())\n return subdomainData\n}\n\nexport default useSubdomain\n","/**\n * Layout component that queries for data\n * with Gatsby's useStaticQuery component\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React, { useEffect, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { useStaticQuery, graphql } from \"gatsby\"\nimport { FirebaseContext, useAuth } from \"./Firebase\"\n\nimport Header from \"./header\"\nimport Footer from \"./footer\"\nimport LevelsModal from \"./levels/LevelsModal.js\"\nimport \"./variables.css\"\nimport \"./layout.css\"\nimport \"./component.css\"\nimport \"./fonts.css\"\nimport LanguageSwitcher from \"./language-switcher/LanguageSwitcher\"\nimport SimpleLocalize from \"./SimpleLocalize\"\nimport { walkThroughSteps } from \"./get-started/utils/utils\"\n\nimport { Router } from \"@reach/router\"\nimport Dashboard from \"../components/dashboard/dashboard\"\nimport englishMessages from \"../../lang/en-US.json\"\nimport spanishMessages from \"../../lang/es-ES.json\"\nimport PrivateRoute from \"./Firebase/PrivateRoute\"\nimport MyAccount from \"./private/account\"\nimport Subscription from \"./private/subscription\"\nimport CancelMembership from \"./private/cancel\"\nimport useClientSideLocale from \"./hooks/useClientSideLocale.js\"\nimport ProfilePage from \"../pages/profile\"\n\nimport { Toaster } from \"sonner\"\n\nimport MaintenancePage from \"./maintenance/maintenance.js\"\nimport FinalistBanner from \"./promotional/banners/finalists.js\"\nimport useSubdomain from \"./hooks/useSubdomain.js\"\nimport { navigate } from \"gatsby\"\n\n// if localization is enabled, show language switcher and allow user to change language\nconst localizationEnabled = process.env.GATSBY_ENABLE_LOCALIZATION === \"true\"\n\n// if maintenance is enabled, allow bypass for development on branch\nconst isMaintenanceBypassOn = process.env.GATSBY_MAINTENANCE_BYPASS === \"true\"\n\n// Main layout component for entire site\nconst Layout = (props) => {\n const { user, firebase, loading, profile, updateAssessment, globalSiteConfig, localFirestore, notifier } = useAuth()\n const subdomainConfig = useSubdomain()\n const { isWhitelistedSubdomain } = subdomainConfig\n const { children } = props\n\n const [signing, setSigning] = useState(false)\n const [pointTotals, setPointTotals] = useState(null)\n const [level, setLevel] = useState(null)\n const [walkThroughStepValues, setWalkThroughStepValues] = useState(walkThroughSteps)\n\n\n const data = useStaticQuery(graphql`\n query SiteTitleQuery {\n site {\n siteMetadata {\n title\n }\n }\n }\n `)\n\n const locale = useClientSideLocale()\n\n let pageContext = locale === \"es-ES\" ? { language: \"es-ES\", messages: spanishMessages } : { language: \"en-US\", messages: englishMessages }\n\n useEffect(() => {\n if (!isWhitelistedSubdomain) {\n navigate(\"https://www.wingspans.com/\", { replace: true })\n }\n }, [isWhitelistedSubdomain])\n\n return (\n <FirebaseContext.Provider\n value={{\n user,\n firebase,\n loading,\n profile,\n signing,\n setSigning,\n pointTotals,\n setPointTotals,\n walkThroughStepValues,\n setWalkThroughStepValues,\n updateAssessment,\n subdomainConfig,\n level,\n setLevel,\n localFirestore,\n notifier,\n }}\n >\n {globalSiteConfig?.isMaintenanceOn && !isMaintenanceBypassOn ? (\n <MaintenancePage />\n ) : (\n <SimpleLocalize {...{ pageContext }}>\n <Header siteTitle={data.site.siteMetadata.title} />\n {!notifier.isDisabled && (\n <Toaster\n toastOptions={{\n style: {\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px\",\n },\n className: \"toaster\",\n }}\n pauseWhenPageIsHidden={true}\n />\n )}\n\n <LevelsModal />\n\n {/* public dashboards in both languages */}\n <Router basepath=\"/\">\n <Dashboard path={\"/dashboard\"} pageContext={{ language: \"en-US\", messages: englishMessages }} />\n <Dashboard path={\"/es-ES/dashboard\"} pageContext={{ language: \"es-ES\", messages: spanishMessages }} />\n </Router>\n\n {/* member pages in both languages, private */}\n <Router basepath=\"/member\">\n <PrivateRoute path=\"/account\" component={MyAccount} pageContext={{ language: \"en-US\", messages: englishMessages }} />\n <PrivateRoute path=\"/subscription\" component={Subscription} pageContext={{ language: \"en-US\", messages: englishMessages }} />\n <PrivateRoute path=\"/cancel\" component={CancelMembership} pageContext={{ language: \"en-US\", messages: englishMessages }} />\n\n <PrivateRoute path=\"/es-ES/account\" component={MyAccount} pageContext={{ language: \"es-ES\", messages: spanishMessages }} />\n <PrivateRoute path=\"/es-ES/subscription\" component={Subscription} pageContext={{ language: \"es-ES\", messages: spanishMessages }} />\n <PrivateRoute path=\"/es-ES/cancel\" component={CancelMembership} pageContext={{ language: \"es-ES\", messages: spanishMessages }} />\n </Router>\n\n {/* spanish public profile */}\n <Router basepath=\"/es-ES\">\n <ProfilePage path=\"/profile/*\" />\n </Router>\n\n {/* handles most content, pages built during build process */}\n <main role=\"contentinfo\">{children}</main>\n\n {/* footer at bottom of all pages */}\n <Footer props={props} />\n </SimpleLocalize>\n )}\n </FirebaseContext.Provider>\n )\n}\n\nLayout.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default Layout\n","import modalButterfly from \"../../images/levels/butterfly.png\"\nimport modalBee from \"../../images/levels/bee.png\"\nimport modalHummingbird from \"../../images/levels/hummingbird.png\"\nimport modalBluejay from \"../../images/levels/bluejay.png\"\nimport modalHeron from \"../../images/levels/heron.png\"\nimport modalEagle from \"../../images/levels/eagle.png\"\nimport { faFire } from \"@fortawesome/pro-solid-svg-icons\"\n\nexport default [\n {\n points: [0, 10],\n name: \"Fire\",\n message: \"Ready to grow!\",\n profileColor: \"orange\",\n modalColor: \"orange\",\n image: faFire,\n },\n {\n points: [10, 50],\n name: \"Butterfly\",\n message: \"Symbolizing that a small change can give rise to a big tidal wave.\",\n profileColor: \"#D1BCFC\",\n modalColor: \"#4B489D\",\n image: modalButterfly,\n },\n {\n points: [50, 100],\n name: \"Bee\",\n message: \"Symbolizing focus and hardwork.\",\n profileColor: \"#F99F00\",\n modalColor: \"C86C20\",\n image: modalBee,\n },\n {\n points: [100, 250],\n name: \"Hummingbird\",\n message: \"Symbolizing timeless job and nectar of life.\",\n profileColor: \"#C7EB29\",\n modalColor: \"#35A994\",\n image: modalHummingbird,\n },\n {\n points: [250, 500],\n name: \"Bluejay\",\n message: \"Symbolizing communication, curiosity, and confidence. A sighting may be an omen urging you to speak up, be bold, and chase your goals.\",\n profileColor: \"#bad8fc\",\n modalColor: \"#20419A\",\n image: modalBluejay,\n },\n {\n points: [500, 1000],\n name: \"Heron\",\n message: \"Symbolizing elegance, patience, wisdom, messages, self-possession, transformation, and good fortune.\",\n profileColor: \"#D1DCFF\",\n modalColor: \"#4B489D\",\n image: modalHeron,\n },\n {\n points: [1000, Infinity],\n name: \"Eagle\",\n message: \"Symbolizing enlightenment.\",\n profileColor: \"#FFD00C\",\n modalColor: \"#2b1c1c\",\n image: modalEagle,\n },\n]\n","import React from \"react\"\nimport \"./spinner.css\"\nimport Logo from \"../../images/logo2.png\"\n\nconst LoadingSpinner = (props) => (\n <div className=\"loader-container\">\n <section className=\"fade-in\">\n <img src={Logo} className=\"loading-logo\" />\n <div className=\"lds-roller\">\n <div />\n <div />\n <div />\n <div />\n <div />\n <div />\n <div />\n <div />\n </div>\n {props.children}\n </section>\n </div>\n)\n\nexport default LoadingSpinner\n","export const makeGoalNotification = (points) => {\n const notification = {\n templateId: \"A13\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 1,\n heading: \"Yes!\",\n headingEs: \"¡SÃ!\",\n message: `You set ${points} goal${points > 1 ? \"s\" : ''} and earned ${points} point${points > 1 ? \"s\" : ''}`,\n messageEs: `Estableciste ${points} objetivos y ganaste ${points} puntos`,\n isEmail: false,\n isToast: true,\n isInstantPointDelivery: true,\n pageLink: null,\n delaySeconds: 15,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [\"A13\"],\n }\n\n return notification\n}\n\nexport const makeSkillNotification = (points) => {\n const notification = {\n templateId: \"A5\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n expireAfterDays: 15,\n type: \"accomplishment\",\n point: 1,\n heading: \"Yes!\",\n headingEs: \"¡SÃ!\",\n message: `You set ${points} skill${points > 1 ? \"s\" : ''} and earned ${points} point${points > 1 ? \"s\" : ''}`,\n messageEs: `Estableces ${points} habilidades y ganas ${points} puntos`,\n isEmail: false,\n isToast: true,\n isInstantPointDelivery: true,\n pageLink: null,\n delaySeconds: 30,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [\"A5\"],\n }\n\n return notification\n}\n\nexport const makeInterestNotification = (points) => {\n const notification = {\n templateId: \"A6\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 1,\n heading: \"Yes!\",\n headingEs: \"¡SÃ!\",\n message: `You set ${points} interest${points > 1 ? \"s\" : ''} and earned ${points} point${points > 1 ? \"s\" : ''}`,\n messageEs: `Estableciste ${points} intereses y ganaste ${points} puntos`,\n isEmail: false,\n isToast: true,\n isInstantPointDelivery: true,\n pageLink: null,\n delaySeconds: 15,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [\"A6\"],\n }\n\n return notification\n}\n\nexport const makeNewCareerPlanNotification = (planName) => {\n const notification = {\n templateId: \"A2\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 10,\n heading: \"Go get em!\",\n headingEs: \"¡Ve a por ellos!\",\n message: `You created ${planName} and earned 10 points`,\n messageEs: `Has creado ${planName} y has ganado 10 puntos`,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeDailyQuestCompletionNotification = (points) => {\n const notification = {\n templateId: \"A1\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 1,\n type: \"accomplishment\",\n point: points,\n heading: \"Way to go!\",\n headingEs: \"¡Bien hecho!\",\n message: `You completed the daily quest and earned ${points} pts.`,\n messageEs: `Completaste la misión diaria y ganaste ${points} pts.`,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [\"A1\"],\n }\n return notification\n}\n\nexport const makeStoryReadingNotification = (storyTitle, storySlug) => {\n const notification = {\n templateId: `A3-${storySlug}`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 2,\n heading: \"Great job!\",\n headingEs: \"¡Buen trabajo!\",\n message: `You engaged with the story featuring ${storyTitle} and earned 2 pts.`,\n messageEs: `Te comprometiste con la historia con ${storyTitle} y ganaste 2 puntos.`,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeStoryMotivationalNotification = () => {\n const notification = {\n templateId: `A1`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 10,\n type: \"motivational\",\n point: 0,\n heading: \"Great job!\",\n headingEs: \"¡Buen trabajo!\",\n message: `You haven't read a story in a while. Don't give up now!`,\n messageEs: \"Hace tiempo que no lees un cuento. ¡No te rindas ahora!\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 10,\n isPermanent: false,\n clearIds: [\"A1\"],\n }\n return notification\n}\n\nexport const makeNewBookmarkNotification = (contentType, contentTitle, contentSlug) => {\n let message = \"\"\n let messageEs = \"\"\n let heading = \"\"\n let headingEs = \"\"\n\n switch (contentType) {\n case \"stories\":\n heading = \"Way to go!\"\n headingEs = \"¡Bien hecho!\"\n message = `You bookmarked the story ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado la historia como ${contentTitle} y has ganado 1 pt`\n break\n case \"careers\":\n heading = \"Great job!\"\n headingEs = \"¡Buen trabajo!\"\n message = `You bookmarked the career ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado la carrera ${contentTitle} y has ganado 1 punto`\n break\n case \"companies\":\n heading = \"Great job!\"\n headingEs = \"¡Buen trabajo!\"\n message = `You bookmarked the company ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado la empresa como ${contentTitle} y has ganado 1 pt`\n break\n case \"blogs\":\n heading = \"Great job!\"\n headingEs = \"¡Buen trabajo!\"\n message = `You bookmarked the blog post ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado la entrada del blog ${contentTitle} y has ganado 1 pt`\n break\n case \"majors\":\n heading = \"You're on your way!\"\n headingEs = \"¡Estás en camino!\"\n message = `You bookmarked the degree ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado el grado ${contentTitle} y has ganado 1 pt`\n break\n case \"schools\":\n heading = \"Yes!\"\n headingEs = \"¡SÃ!\"\n message = `You bookmarked the school ${contentTitle} and earned 1 pt`\n messageEs = `Has marcado la escuela ${contentTitle} y has ganado 1 pt`\n break\n default:\n console.error(\"Invalid content type\")\n return null\n }\n\n const notification = {\n templateId: `A10-${contentSlug}`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 1,\n heading: heading,\n headingEs: \"\",\n message: message,\n messageEs: \"\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeNewResumeExperienceNotification = () => {\n const notification = {\n templateId: `A9`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 1,\n heading: \"Amazing!\",\n headingEs: \"¡Asombroso!\",\n message: `You entered an experience and earned one point! To export your resume to Word, select Export and choose a template.`,\n messageEs: \"¡Entraste en una experiencia y ganaste un punto! Para exportar tu currÃculum a Word, selecciona Exportar y elige una plantilla\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeNewStoryboardProjectNotification = () => {\n const notification = {\n templateId: `A11`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 1,\n heading: \"Amazing!\",\n headingEs: \"¡Asombroso!\",\n message: \"You added a project to your storyboard and earned one point! To see your public portfolio, click the Share button.\",\n messageEs: \"¡Agregaste un proyecto a tu storyboard y obtuviste un punto! Para ver su cartera pública, haga clic en el botón Compartir.\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeActivityCompletionNotification = (activityTitle, activitySlug) => {\n const notification = {\n templateId: `A2-${activitySlug}`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 5,\n heading: \"Great job!\",\n headingEs: \"¡Buen trabajo!\",\n message: `You completed the activity ${activityTitle} and earned 5 pts.`,\n messageEs: `Has completado la actividad ${activityTitle} y has ganado 5 puntos.`,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeApproachingLevelNotification = ({ name, message, distanceToGoal }) => {\n const notification = {\n templateId: `M22-${name}`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"motivational\",\n point: 0,\n heading: \"Keep going!\",\n headingEs: \"¡Sigue!\",\n message: `You are ${distanceToGoal} points away from the next level: ${name}`,\n messageEs: `Estás a ${distanceToGoal} a puntos del siguiente nivel: ${name}`,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 5,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makePersonalInfoNotification = () => {\n const notification = {\n templateId: `A4`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"accomplishment\",\n point: 5,\n heading: \"Way to go!\",\n headingEs: \"¡Bien hecho!\",\n message: `You completed the personal information in your portfolio and earned 5 pts.`,\n messageEs: \"Completaste la información personal en tu portafolio y ganaste 5 pts.\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeShortTimedMotivationalNotification = (deliveredNotificationSet) => {\n let motivationalOptions = [\n {\n templateId: `M5`,\n heading: \"Keep it up!\",\n headingEs: \"¡Seguid asÃ!\",\n message: \"Take the personality assessment to get the juices flowing!\",\n messageEs: \"¡Haz la evaluación de personalidad para que fluyan los jugos!\",\n isPermanent: true,\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `M6`,\n heading: \"Keep it up!\",\n headingEs: \"¡Seguid asÃ!\",\n message: \"Would you walk a mile in someone's shoes? Bookmark that person's story.\",\n messageEs: \"¿CaminarÃas una milla en los zapatos de alguien? Marque la historia de esa persona.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M6`],\n },\n {\n templateId: `M7`,\n heading: \"Keep it up!\",\n headingEs: \"¡Seguid asÃ!\",\n message: \"Listen to one person's story by selecting Listen to profile under the profile pic.\",\n messageEs: \"Escuche la historia de una persona seleccionando Escuchar perfil debajo de la foto de perfil.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M7`],\n },\n {\n templateId: `M8`,\n heading: \"Assess your skills!\",\n headingEs: \"¡Evalúa tus habilidades!\",\n message: \"Go to a career that interests you and select the skills you already have.\",\n messageEs: \"Ve a una carrera que te interese y selecciona las habilidades que ya tienes.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M8`],\n },\n {\n templateId: `M9`,\n heading: \"Keep it up!\",\n headingEs: \"¡Seguid asÃ!\",\n message: \"Add 3 SMART goals in <i>THIS WEEK</i> to help you achieve your dreams\",\n messageEs: \"Añade 3 objetivos SMART en ESTA SEMANA para ayudarte a alcanzar tus sueños\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M9`],\n },\n {\n templateId: `M15`,\n heading: \"Get to know the world of work\",\n headingEs: \"Conoce el mundo laboral\",\n message: \"Do the Daily Quest to meet one inspiring person.\",\n messageEs: \"Haz la búsqueda diaria para conocer a una persona inspiradora.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M15`],\n },\n {\n templateId: `M16`,\n heading: \"Something to think about\",\n headingEs: \"Algo en lo que pensar\",\n message: \"Where do you see yourself in 10 years?\",\n messageEs: \"¿Dónde te ves dentro de 10 años?\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M16`],\n },\n {\n templateId: `M17`,\n heading: \"Something to think about\",\n headingEs: \"Algo en lo que pensar\",\n message: \"What does success mean to you? Keep this in mind as you go through the site.\",\n messageEs: \"¿Qué significa el éxito para ti? Tenga esto en cuenta a medida que avanza por el sitio.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M17`],\n },\n {\n templateId: `M19`,\n heading: \"Something to think about\",\n headingEs: \"Algo en lo que pensar\",\n message: \"What makes you happy? Keep this in mind as you go through the site.\",\n messageEs: \"¿Qué te hace feliz? Tenga esto en cuenta a medida que avanza por el sitio.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M19`],\n },\n {\n templateId: `M20`,\n heading: \"Something to think about\",\n headingEs: \"Algo en lo que pensar\",\n message: \"What is your greatest accomplishment? Keep this in mind as you go through the site.\",\n messageEs: \"¿Cuál es tu mayor logro? Tenga esto en cuenta a medida que avanza por el sitio.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M20`],\n },\n ]\n\n const queuedNotification = motivationalOptions.find((option) => !deliveredNotificationSet.has(option.templateId))\n\n if (!queuedNotification) {\n // No more motivational notifications to deliver\n return null\n }\n\n const notification = {\n templateId: queuedNotification.templateId,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"motivational\",\n point: 0,\n heading: queuedNotification.heading,\n headingEs: queuedNotification.headingEs,\n message: queuedNotification.message,\n messageEs: queuedNotification.messageEs,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: queuedNotification.isPermanent,\n clearIds: queuedNotification.clearIds,\n }\n return notification\n}\n\nexport const makeMediumTimedMotivationalNotification = (deliveredNotificationSet) => {\n let motivationalOptions = [\n {\n templateId: `M10`,\n heading: \"Excel in the workplace!\",\n headingEs: \"¡Sobresalir en el lugar de trabajo!\",\n message: \"Develop your communication skills in <i>Work Readiness</i>.\",\n messageEs: \"Desarrolla tus habilidades de comunicación en la preparación para el trabajo.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M10`],\n },\n {\n templateId: `M11`,\n heading: \"Excel in the workplace!\",\n headingEs: \"¡Sobresalir en el lugar de trabajo!\",\n message: \"Craft your career story in <i>Work Readiness</i>.\",\n messageEs: \"Elabora tu historia profesional en preparación para el trabajo\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M11`],\n },\n {\n templateId: `M12`,\n heading: \"Excel in the workplace!\",\n headingEs: \"¡Sobresalir en el lugar de trabajo!\",\n message: \"Cultivate a growth mindset for feedback in <i>Work Readiness</i>.\",\n messageEs: \"Cultive una mentalidad de crecimiento para obtener retroalimentación en la preparación para el trabajo.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M12`],\n },\n {\n templateId: `M13`,\n heading: \"Excel in the workplace!\",\n headingEs: \"¡Sobresalir en el lugar de trabajo!\",\n message: \"Succeed at time management in <i>Work Readiness</i>.\",\n messageEs: \"Triunfa en la gestión del tiempo en la preparación para el trabajo.\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M13`],\n },\n {\n templateId: `M14`,\n heading: \"Excel in the workplace!\",\n headingEs: \"¡Sobresalir en el lugar de trabajo!\",\n message: \"Prepare for success in the workplace in <i>Work Readiness</i>.\",\n messageEs: \"Prepárese para el éxito en el lugar de trabajo en la preparación para el trabajo\",\n isPermanent: false,\n expireAfterDays: 30,\n clearIds: [`M14`],\n },\n ]\n\n const queuedNotification = motivationalOptions.find((option) => !deliveredNotificationSet.has(option.templateId))\n\n if (!queuedNotification) {\n // No more motivational notifications to deliver\n return null\n }\n\n const notification = {\n templateId: queuedNotification.templateId,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 30,\n type: \"motivational\",\n point: 0,\n heading: queuedNotification.heading,\n headingEs: queuedNotification.headingEs,\n message: queuedNotification.message,\n messageEs: queuedNotification.messageEs,\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: queuedNotification.isPermanent,\n clearIds: queuedNotification.clearIds,\n }\n return notification\n}\n\nexport const makeWelcomeNotification = () => {\n const notification = {\n templateId: `I1`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 1000,\n type: \"initial\",\n point: 0,\n heading: `Welcome to Wingspans!`,\n headingEs: \"Bienvenido a Wingspans\",\n message: `We're on a mission to help you find a career that makes you excited to wake up in the morning. Begin your journey by selecting Get Started.`,\n messageEs:\n \"Tenemos la misión de ayudarte a encontrar una carrera que te emocione al despertarte por la mañana. Comience su recorrido seleccionando Comenzar\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [],\n }\n return notification\n}\n\nexport const makeDailyQuestChallengeCompletionNotification = () => {\n const notification = {\n templateId: `A14`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 5,\n type: \"accomplishment\",\n point: 30,\n heading: `Great Job!`,\n headingEs: \"¡Buen trabajo!\",\n message: `You completed the Daily Quest challenge and earned 30 points.`,\n messageEs: \"Has completado el desafÃo de la misión diaria y has ganado 30 puntos.\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: [\"M24\"],\n }\n return notification\n}\n\nexport const makeReturningUserNotification = () => {\n const notification = {\n templateId: `I2`,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 1,\n type: \"initial\",\n point: 0,\n heading: `Welcome back!`,\n headingEs: \"¡Bienvenido!\",\n message: `Let's continue exploring the world of work.`,\n messageEs: \"Sigamos explorando el mundo laboral.\",\n isEmail: false,\n isToast: true,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [\"I2\"],\n }\n return notification\n}\n","/**\n * Notification that a faculty member receives when they visit the educator dashboard.\n * Cycles through a set of motivational messages to encourage faculty to engage with the platform and does not repeat messages that have already been delivered.\n *\n * @param {string} studentName - The name of the student who completed the assessment\n * @returns {Notification} - The notification object\n */\nexport const makeEducatorMotivationalNotification = (profile, deliveredNotificationSet) => {\n const { userId } = profile\n\n let motivationalOptions = [\n {\n templateId: `EM1`,\n heading: \"Welcome to Wingspans!\",\n headingEs: \"\",\n message: \"We're on a mission to help your students find a career that's meaningful to them.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM2`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Have your students do the Daily Quest to increase their exposure to the world of work.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM3`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Ask your students to bookmark 3 careers they want to learn more about.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM4`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Ask your students to bookmark 3 careers that interest them.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM5`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Ask your students where they see themselves in 10 years?\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM6`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Ask your students to add 3 SMART goals in THIS WEEK.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n {\n templateId: `EM7`,\n heading: \"Student Engagement:\",\n headingEs: \"\",\n message: \"Ask your students to bookmark 3 people who inspire them.\",\n messageEs: \"\",\n expireAfterDays: 300,\n clearIds: [],\n },\n ]\n\n const queuedNotification = motivationalOptions.find((option) => !deliveredNotificationSet.has(option.templateId))\n\n if (!queuedNotification) {\n // No more motivational notifications to deliver\n return null\n }\n\n const notification = {\n templateId: queuedNotification.templateId,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 300,\n type: \"motivational\",\n point: 0,\n heading: queuedNotification.heading,\n headingEs: queuedNotification.headingEs,\n message: queuedNotification.message,\n messageEs: queuedNotification.messageEs,\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: true,\n clearIds: queuedNotification.clearIds,\n senderId: userId,\n sendToSelf: true,\n sendToEducators: false,\n sendToAdmins: false,\n }\n return notification\n}\n\n/**\n * Notification that a faculty member receives when they create a new student group\n *\n * @param {string} groupName - The name of the new student group\n * @param {number} numStudents - The number of students in the new group\n * @returns {Notification} - The notification object\n */\nexport const makeEducatorNewStudentGroupNotification = (profile, groupName, numStudents) => {\n const { userId } = profile\n\n const notification = {\n templateId: \"EG1\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 300,\n type: \"motivational\",\n point: 0,\n heading: \"Groups:\",\n headingEs: \"\",\n message: `You created ${groupName} group, with ${numStudents} students.`,\n messageEs: \"\",\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n senderId: userId,\n sendToSelf: true,\n sendToEducators: false,\n sendToAdmins: false,\n }\n return notification\n}\n\n/**\n * Notification that a faculty member receives when they create a new faculty group\n *\n * @param {string} groupName - The name of the new faculty group\n * @param {number} numFaculty - The number of faculty in the new group\n * @returns {Notification} - The notification object\n */\nexport const makeEducatorNewFacultyGroupNotification = (profile, groupName, numFaculty) => {\n const { userId } = profile\n\n const notification = {\n templateId: \"EG2\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 300,\n type: \"motivational\",\n point: 0,\n heading: \"Groups:\",\n headingEs: \"\",\n message: `You created ${groupName} group, with ${numFaculty} faculty members.`,\n messageEs: \"\",\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n senderId: userId,\n sendToSelf: true,\n sendToEducators: false,\n sendToAdmins: false,\n }\n return notification\n}\n\n/**\n * Notification that a faculty member receives when a student does one of the following:\n * - Completes the personality assessment\n * - Completes a career plan\n * - Completes the resume\n * - Completes the Daily Quest\n * - Sets a goal\n * - Bookmarks a career\n * - Bookmarks a degree\n */\nexport const makeEducatorStudentEventNotification = (profile, eventType, param1) => {\n const { firstName, lastName, userId } = profile\n const studentName = `${firstName || \"\"} ${lastName || \"\"}`\n\n let notification = {\n templateId: null,\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 300,\n type: \"activity\",\n point: 0,\n heading: \"Activity:\",\n headingEs: \"\",\n message: \"\",\n messageEs: \"\",\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n senderId: userId,\n sendToSelf: false,\n sendToEducators: true,\n sendToAdmins: false,\n }\n\n switch (eventType) {\n case \"PERSONALITY_ASSESSMENT\":\n notification.templateId = `EA1-${userId}`\n notification.message = `${studentName || `A student`} completed the personality assessment.`\n notification.isPermanent = true\n break\n case \"CAREER_PLAN\":\n notification.templateId = \"EA2\"\n notification.message = `${studentName || `A student`} completed a career plan.`\n break\n case \"RESUME\":\n notification.templateId = `EA3-${userId}`\n notification.message = `${studentName || `A student`} added experience to their resume.`\n notification.isPermanent = true\n break\n case \"QUEST\":\n notification.templateId = \"EA4\"\n notification.message = `${studentName || `A student`} completed the daily quest.`\n break\n case \"GOAL\":\n notification.templateId = `EA5-${userId}`\n notification.message = `${studentName || `A student`} set a goal.`\n notification.isPermanent = true\n break\n case \"BOOKMARK_CAREER\":\n notification.templateId = `EA6-${userId}-${param1}`\n notification.message = `${studentName || `A student`} bookmarked ${param1 || `a`} career.`\n notification.isPermanent = true\n break\n case \"BOOKMARK_DEGREE\":\n notification.templateId = `EA7-${userId}-${param1}`\n notification.message = `${studentName || `A student`} bookmarked ${param1 || `a`} degree.`\n notification.isPermanent = true\n break\n default:\n console.error(\"Invalid student event activity\")\n return null\n }\n\n return notification\n}\n\n// admin notifications, delivered to all admins of a school\n\n/**\n * Notification that a faculty member receives when they create a new student group\n *\n * @param {string} groupName - The name of the new student group\n * @param {number} numStudents - The number of students in the new group\n * @returns {Notification} - The notification object\n */\nexport const makeAdminGroupNotification = (profile, groupName) => {\n const { userId, firstName, lastName } = profile\n const facultyName = `${firstName || \"\"} ${lastName || \"\"}`\n\n const notification = {\n templateId: \"EG3\",\n notificationId: null,\n isRead: false,\n isHidden: false,\n publicationDate: null,\n expirationDate: null,\n expireAfterDays: 300,\n type: \"activity\",\n point: 0,\n heading: \"Groups:\",\n headingEs: \"\",\n message: `${facultyName.trim() || 'A faculty member'} created a group: ${groupName}`, \n messageEs: \"\",\n pageLink: null,\n delaySeconds: 0,\n delayMinutes: 0,\n delayHours: 0,\n delayDays: 0,\n isPermanent: false,\n clearIds: [],\n senderId: userId,\n sendToSelf: false,\n sendToEducators: false,\n sendToAdmins: true,\n }\n return notification\n}","import { useState, useEffect, useRef } from \"react\"\nimport {\n makeGoalNotification,\n makeSkillNotification,\n makeInterestNotification,\n makeNewCareerPlanNotification,\n makeDailyQuestCompletionNotification,\n makeStoryReadingNotification,\n makeNewBookmarkNotification,\n makeActivityCompletionNotification,\n makeNewResumeExperienceNotification,\n makeNewStoryboardProjectNotification,\n makeStoryMotivationalNotification,\n makeApproachingLevelNotification,\n makePersonalInfoNotification,\n makeShortTimedMotivationalNotification,\n makeMediumTimedMotivationalNotification,\n makeWelcomeNotification,\n makeDailyQuestChallengeCompletionNotification,\n makeReturningUserNotification,\n} from \"./notificationTemplates\"\nimport {\n makeEducatorMotivationalNotification,\n makeEducatorNewStudentGroupNotification,\n makeEducatorNewFacultyGroupNotification,\n makeEducatorStudentEventNotification,\n makeAdminGroupNotification\n} from \"./educatorNotificationTemplates\"\nimport { useLocation } from \"@reach/router\"\n\n// This is a custom hook that handles notifications, local state is used to keep track of dynamic values used in composing notifications\nconst useNotifications = (firebase, profile) => {\n const [isInitialized, setIsInitialized] = useState(false)\n const [isDisabled, setIsDisabled] = useState(false)\n const [historicalNotificationsRecord, setHistoricalNotificationsRecord] = useState([])\n const [historicalEducatorNotificationsRecord, setHistoricalEducatorNotificationsRecord] = useState([])\n\n const [goalsCount, setGoalsCount] = useState(0)\n const [skillsCount, setSkillsCount] = useState(0)\n const [interestsCount, setInterestsCount] = useState(0)\n\n const goalClockRef = useRef(null)\n const skillClockRef = useRef(null)\n const interestClockRef = useRef(null)\n\n const [userSessionMinutes, setUserSessionMinutes] = useState(0)\n\n const [isShortTimedMotivationSent, setIsShortTimedMotivationSent] = useState(false)\n const [isMediumTimedMotivationSent, setIsMediumTimedMotivationSent] = useState(false)\n const [isEducatorMotivationalNotificationSent, setIsEducatorMotivationalNotificationSent] = useState(false)\n\n const location = useLocation()\n\n const hiddenPaths = [\"/educator\", \"educator/\", \"educator\", \"/educator/\", \"profile\"]\n\n // setIsDisabled if the user is on a disabled route\n useEffect(() => {\n // hides the sign in button on matching paths\n if (location?.pathname && hiddenPaths.includes(location.pathname.split('/')[1])) {\n setIsDisabled(true)\n } else {\n setIsDisabled(false)\n }\n }, [location])\n\n useEffect(() => {\n /**\n * Initialize so that we can check if the user is logged in before any actions are taken\n */\n const init = async () => {\n const userId = firebase?.auth?._delegate?.currentUser?.uid || null\n if (isInitialized) return\n if (!userId) return\n\n setIsInitialized(true)\n }\n\n init()\n }, [firebase?.auth?._delegate?.currentUser?.uid, isInitialized])\n\n const handleWelcomeNotification = async () => {\n const notificationPayload = makeWelcomeNotification()\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleReturningUserNotification = async () => {\n const isDateToday = (timestamp) => {\n const date = new Date(timestamp.seconds * 1000)\n\n const preciseTime = date.setMilliseconds(date.getMilliseconds() + timestamp.nanoseconds / 1_000_000)\n // Get today's start (midnight)\n const todayStart = new Date()\n todayStart.setHours(0, 0, 0, 0)\n\n const todayEnd = new Date()\n todayEnd.setHours(23, 59, 59, 999)\n\n const isSentToday = preciseTime >= todayStart.getTime() && preciseTime <= todayEnd.getTime()\n\n return isSentToday\n }\n\n const hasBeenSentToday = historicalNotificationsRecord\n .filter((notification) => notification.templateId === \"I2\")\n .some((notification) => isDateToday(notification.publicationDate))\n\n if (hasBeenSentToday) {\n return null\n }\n\n const notificationPayload = makeReturningUserNotification()\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleGoalSetting = async (profile) => {\n setGoalsCount((prevCount) => prevCount + 1)\n const notificationPayload = makeGoalNotification(goalsCount + 1)\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"GOAL\")\n\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating notification\", error)\n }\n startTimer(goalClockRef, 15000, () => setGoalsCount(0))\n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for goal setting\", error)\n }\n }\n\n const handleSkillSetting = async () => {\n setSkillsCount((prevCount) => prevCount + 1)\n const notificationPayload = makeSkillNotification(skillsCount + 1)\n await firebase.createUserNotification(notificationPayload)\n startTimer(skillClockRef, 15000, () => setSkillsCount(0))\n }\n\n const handleInterestSetting = async () => {\n setInterestsCount((prevCount) => prevCount + 1)\n const notificationPayload = makeInterestNotification(interestsCount + 1)\n await firebase.createUserNotification(notificationPayload)\n startTimer(interestClockRef, 15000, () => setInterestsCount(0))\n }\n\n const handleNewCareerPlan = async (planName, profile) => {\n const notificationPayload = makeNewCareerPlanNotification(planName)\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"CAREER_PLAN\", planName)\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating notification\", error)\n }\n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new career plan\", error)\n }\n }\n\n const handleDailyQuestCompletion = async (points, profile) => {\n const notificationPayload = makeDailyQuestCompletionNotification(points)\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"QUEST\")\n\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating daily quest completion notification\", error)\n }\n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for daily quest completion notification\", error)\n }\n\n const past5DaysQuestCount = await firebase.getPast5DaysQuestCompletionCount()\n\n if (past5DaysQuestCount === 5) {\n const notificationPayload = makeDailyQuestChallengeCompletionNotification()\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating daily quest challenge completion notification\", error)\n }\n }\n }\n\n const handleStoryReading = async (storyTitle, storySlug) => {\n const notificationPayload = makeStoryReadingNotification(storyTitle, storySlug)\n const motivationalNotificationPayload = makeStoryMotivationalNotification()\n await firebase.createUserNotification(notificationPayload)\n await firebase.createUserNotification(motivationalNotificationPayload)\n }\n\n const handleNewResumeExperience = async (profile) => {\n const notificationPayload = makeNewResumeExperienceNotification()\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"RESUME\")\n\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating new resume experience notification\", error )\n }\n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new resume experience\", error)\n }\n\n }\n\n const handleNewStoryboardProject = async (profile) => {\n const notificationPayload = makeNewStoryboardProjectNotification()\n\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating new storyboard project notification\", error )\n }\n }\n\n const handleNewBookmark = async (contentType, contentTitle, contentSlug, profile) => {\n const notificationPayload = makeNewBookmarkNotification(contentType, contentTitle, contentSlug)\n\n try {\n await firebase.createUserNotification(notificationPayload)\n } catch (error) {\n console.error(\"Error creating new bookmark notification\", error)\n }\n\n if (contentType === \"careers\") {\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"BOOKMARK_CAREER\", contentTitle)\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new bookmark career\", error)\n }\n }\n\n if (contentType === 'majors') {\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"BOOKMARK_DEGREE\", contentTitle)\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new bookmark degree\", error)\n }\n }\n\n }\n\n const handleActivityCompletion = async (activityTitle, activitySlug) => {\n const notificationPayload = makeActivityCompletionNotification(activityTitle, activitySlug)\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleApproachingLevel = async ({ name, message, points: [goalPoints], userPoints }) => {\n const distanceToGoal = Math.abs(goalPoints - userPoints)\n const notificationPayload = makeApproachingLevelNotification({ name, message, distanceToGoal })\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handlePersonalInfoSetting = async () => {\n const notificationPayload = makePersonalInfoNotification()\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleShortTimedMotivation = async () => {\n if (isShortTimedMotivationSent) return\n setIsShortTimedMotivationSent(true)\n\n const timedShortMotivationIds = [\"M5\", \"M6\", \"M7\", \"M8\", \"M9\", \"M15\", \"M16\", \"M17\", \"M19\", \"M20\"]\n\n let deliveredMotivationIdsSet = new Set(\n historicalNotificationsRecord\n .map((notification) => notification.templateId)\n .filter((templateId) => timedShortMotivationIds.includes(templateId))\n )\n\n if (deliveredMotivationIdsSet.size >= timedShortMotivationIds.length) {\n // reset these notifications\n for (const notification of historicalNotificationsRecord.filter((notification) => timedShortMotivationIds.includes(notification.templateId))) {\n await firebase.deleteUserNotification({ notificationId: notification.notificationId })\n }\n }\n\n const notificationPayload = makeShortTimedMotivationalNotification(deliveredMotivationIdsSet)\n if (!notificationPayload) return\n\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleMediumTimedMotivation = async () => {\n if (isMediumTimedMotivationSent) return\n setIsMediumTimedMotivationSent(true)\n\n const timedMediumMotivationIds = [\"M10\", \"M11\", \"M12\", \"M13\", \"M14\"]\n\n const deliveredMotivationIdsSet = new Set(\n historicalNotificationsRecord\n .map((notification) => notification.templateId)\n .filter((templateId) => timedMediumMotivationIds.includes(templateId))\n )\n\n if (deliveredMotivationIdsSet.size >= timedMediumMotivationIds.length) {\n // reset these notifications\n for (const notification of historicalNotificationsRecord.filter((notification) => timedMediumMotivationIds.includes(notification.templateId))) {\n await firebase.deleteUserNotification({ notificationId: notification.notificationId })\n }\n }\n\n const notificationPayload = makeMediumTimedMotivationalNotification(deliveredMotivationIdsSet)\n if (!notificationPayload) return\n\n await firebase.createUserNotification(notificationPayload)\n }\n\n const handleMakeEducatorMotivationalNotification = async (profile) => {\n if (isEducatorMotivationalNotificationSent) return\n\n const educatorMotivationalIds = [\"EM1\", \"EM2\", \"EM3\", \"EM4\", \"EM5\", \"EM6\", \"EM7\"]\n\n const deliveredEducatorMotivationIdsSet = new Set(\n historicalEducatorNotificationsRecord\n .map((notification) => notification.templateId)\n .filter((templateId) => educatorMotivationalIds.includes(templateId))\n )\n\n const educatorNotificationPayload = makeEducatorMotivationalNotification(profile, deliveredEducatorMotivationIdsSet)\n if (!educatorNotificationPayload) return\n\n await firebase.createEducatorNotification(educatorNotificationPayload)\n setIsEducatorMotivationalNotificationSent(true)\n }\n\n const handleMakeEducatorNewStudentGroupNotification = async (profile, groupName, numStudents) => {\n const educatorNotificationPayload = makeEducatorNewStudentGroupNotification(profile, groupName, numStudents)\n const adminGroupNotificationPayload = makeAdminGroupNotification(profile, groupName) \n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new student group\", error)\n }\n\n try {\n await firebase.createEducatorNotification(adminGroupNotificationPayload)\n } catch (error) {\n console.error(\"Error creating admin notification for new student group\", error)\n }\n }\n\n const handleMakeEducatorNewFacultyGroupNotification = async (profile, groupName, numFaculty) => {\n const educatorNotificationPayload = makeEducatorNewFacultyGroupNotification(profile, groupName, numFaculty)\n const adminGroupNotificationPayload = makeAdminGroupNotification(profile, groupName) \n\n try {\n await firebase.createEducatorNotification(educatorNotificationPayload)\n } catch (error) {\n console.error(\"Error creating educator notification for new student group\", error)\n }\n\n try {\n await firebase.createEducatorNotification(adminGroupNotificationPayload)\n } catch (error) {\n console.error(\"Error creating admin notification for new student group\", error)\n }\n \n }\n\n const handleMakeEducatorAssessmentCompletionNotification = async (profile) => {\n const educatorNotificationPayload = makeEducatorStudentEventNotification(profile, \"PERSONALITY_ASSESSMENT\")\n await firebase.createEducatorNotification(educatorNotificationPayload)\n }\n\n // /**\n // * Function to be triggered by students when they complete an event of some kind, will notify the educator that has the student in their group\n // * \n // * @param {string} studentName - The name of the student that completed the activity\n // * @param {string} activityType - The type of activity the student completed 'PERSONALITY_ASSESSMENT', 'CARREER_PLAN', 'RESUME', 'QUEST', 'GOAL', 'BOOKMARK_CAREER', 'BOOKMARK_DEGREE'\n // * @param {string} param1 - Optional parameter to be used in the notification message\n // * @returns {Promise} \n // * */\n // const handleMakeEducatorStudentEventNotification = async (studentName, activityType, param1) => {\n // const educatorNotificationPayload = makeEducatorStudentEventNotification(studentName, activityType, param1)\n // await firebase.createEducatorNotification(educatorNotificationPayload)\n // }\n\n // Function to start the timer, this will reset the goals count after a certain amount of time\n const startTimer = (clockRef, expirationTime, resetCallback) => {\n // If a timer is already running, clear it\n if (clockRef.current) {\n clearTimeout(clockRef.current)\n }\n // Set a new timer that resets the state after\n clockRef.current = setTimeout(() => {\n resetCallback()\n }, expirationTime)\n }\n\n useEffect(() => {\n if (!isInitialized) return\n // Set an interval to increment the minutes state every minute\n const intervalId = setInterval(() => {\n // Check if the page is currently visible\n const isPageVisible = () => {\n if (typeof window === \"undefined\") {\n return false\n } else {\n return !document.hidden\n }\n }\n\n if (isPageVisible()) {\n setUserSessionMinutes((prevMinutes) => prevMinutes + 1)\n }\n }, 60000)\n\n return () => {\n // clean up timers\n if (goalClockRef.current) {\n clearTimeout(goalClockRef.current)\n }\n\n if (skillClockRef.current) {\n clearTimeout(skillClockRef.current)\n }\n\n if (interestClockRef.current) {\n clearTimeout(interestClockRef.current)\n }\n\n clearInterval(intervalId)\n }\n }, [isInitialized])\n\n useEffect(() => {\n if (userSessionMinutes === 3) {\n handleShortTimedMotivation()\n } else if (userSessionMinutes === 10) {\n handleMediumTimedMotivation()\n }\n }, [userSessionMinutes])\n\n return {\n isDisabled,\n setIsDisabled,\n handleGoalSetting,\n handleSkillSetting,\n handleInterestSetting,\n handleNewCareerPlan,\n handleDailyQuestCompletion,\n handleStoryReading,\n handleNewBookmark,\n handleActivityCompletion,\n handleNewResumeExperience,\n handleNewStoryboardProject,\n handleApproachingLevel,\n handlePersonalInfoSetting,\n setHistoricalNotificationsRecord,\n setHistoricalEducatorNotificationsRecord,\n handleWelcomeNotification,\n handleReturningUserNotification,\n handleMakeEducatorMotivationalNotification,\n handleMakeEducatorNewStudentGroupNotification,\n handleMakeEducatorNewFacultyGroupNotification,\n handleMakeEducatorAssessmentCompletionNotification\n // handleMakeEducatorStudentEventNotification,\n }\n}\n\nexport default useNotifications\n","/**\n * @description List of school / organization options. This list contains the general configuration settings for each schools subdomain deployment and is also used in several other\n * parts of the application such as the login page, the admin dashboard, and the magic link creation process. This is sorted alphabetically by the text field.\n *\n * @typedef {Object} SchoolOrganizationOption\n * @property {string[]} sso_methods - Methods for single sign-on (e.g., \"saml\", \"openIdConnect\",\"google\", \"email\"). This determines the login method for the school.Use one if using saml or openId connect, use both if using google or email. Order Matters, first entry is primary\n * @property {string} logo - URL to the school's logo.\n * @property {string} domain - The school's login URL, this is where you will be directed after selecting a school from the wingspans.com school selection dropdown menu.\n * @property {string} key - Unique key for the school, used to match the subdomain of the current deployment.\n * @property {string} text - Display name of the school for the login page.\n * @property {string[]} emails - List of email domains associated with the school that are allowed to sign up, if SSO does not match then the users account will not be created.\n * @property {string} audience - Description of the target audience for the login button, not enabled.\n * @property {string} value - Unique key identifier for the school, federal school ID in most cases, may be the name of an org if not a school.\n * @property {(\"K-12\" | \"ADULT\")} audience_type - Type of audience (e.g., \"K-12\", \"ADULT\"), used to distinguish lesson materials.\n * @property {string|null} saml_provider_id - SAML provider ID if applicable, otherwise null.\n * @property {string|null} openid_connect_provider_id - OpenID Connect provider ID if applicable, otherwise null.\n * @property {string|null} banner - URL to the login page banner image if any, otherwise null.\n * @property {string|null} banner_position - Horizontal position of the banner if any, otherwise null.\n * @property {(\"button\" | \"link\" | null)} magic_link_type - Type of magic link if any, otherwise null.\n * @property {boolean} hide_name - Flag to determine if the schools name should be hidden in the signup page when their logo includes the name prominently.\n * @property {boolean} reverse_names - Flag to determine if the users first and last names should be reversed upon account creation.\n * @property {string} state - State abbreviation for the school, used for default salaries when avaliable.\n * @property {string|null} petersons_institution_id - Petersons institution ID for colleges, used for major filtering .\n*/\nexport const schoolOrganizationOptions = [\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FThe%20MET%20logo.jpeg?alt=media&token=2c1fbedb-fc27-4869-8fd7-1308bfbb4c98\",\n domain: \"https://themet.wingspans.com\",\n key: \"themet\",\n text: \"The MET High School\",\n emails: [\"@metmail.org\", \"@wingspans.com\"],\n audience: \"Students and Faculty Login\",\n value: \"400166\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"openIdConnect\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FBHCCBulldogMascot.png?alt=media&token=59883130-f1bf-4f06-87f4-aa09d9292dad\",\n domain: \"https://bunkerhill.wingspans.com\",\n key: \"bunkerhill\",\n text: \"Bunker Hill Community College\",\n emails: [\"@bhcc.edu\", \"@wingspans.com\"],\n audience: \"Students and Faculty Login\",\n value: \"11210\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: \"oidc.bunkerhill\",\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/sign-up-pages%2FBHCC%20Compressed.jpg?alt=media&token=28aa6eb8-5f33-4dd9-bfe5-f11488ef1fde\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"MA\",\n petersons_institution_id: \"5475\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FEagle%20adj%20(CMYK).jpg?alt=media&token=6e533edb-f57b-46cf-85be-099c5ec4baa0\",\n domain: \"https://northlandpioneer.wingspans.com\",\n key: \"northlandpioneer\",\n text: \"Northland Pioneer Community College\",\n emails: [\"@npc.edu\", \"@mail.npc.edu\", \"@stu.npc.edu\"],\n audience: \"Students and Faculty Login\",\n value: \"011862\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.northlandpioneer\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/sign-up-pages%2FNPC%20963kB%20Compressed.jpg?alt=media&token=4e4094b4-de94-4d12-884d-f350d51350b3\",\n banner_position: \"50%\",\n magic_link_type: \"link\",\n hide_name: false,\n reverse_names: false,\n state: \"AZ\",\n petersons_institution_id: \"5475\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRCC.jpg?alt=media&token=0e41f6e2-7ba4-4db4-975c-245bf6a27724\",\n domain: \"https://roxbury.wingspans.com\",\n key: \"roxbury\",\n text: \"Roxbury Community College\",\n emails: [\"@rcc.mass.edu\", \"@roxbury.edu\"],\n audience: \"Students and Faculty Login\",\n value: \"011930\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.roxbury\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/sign-up-pages%2FBetter%20Roxbury%20compressed.jpg?alt=media&token=47c2f5f5-a23f-4e95-b676-9d23094be448\",\n banner_position: \"50%\",\n magic_link_type: \"link\",\n hide_name: false,\n reverse_names: false,\n state: \"MA\",\n petersons_institution_id: \"8348\",\n },\n {\n sso_methods: [\"google\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FNTU%20logo.jpeg?alt=media&token=ca4f6947-efa0-45f6-a8b2-6b9f9a9f0d79\",\n domain: \"https://navajotech.wingspans.com\",\n key: \"navajotech\",\n text: \"Navajo Tech University\",\n emails: [\"@navajotech.edu\"],\n audience: \"Students and Faculty Login\",\n value: \"016119\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"NM\",\n petersons_institution_id: \"140373\",\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FEagle-Rock-School-Press-Release-Logo-white-on-purple.jpeg?alt=media&token=fdb6bc1a-e1d4-4eb2-9413-bf4ed08865d4\",\n domain: null,\n key: \"eaglerock\",\n text: \"Eagle Rock High School\",\n emails: [],\n audience: \"Students and Faculty Login\",\n value: \"060551\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCFCC%20.jpeg?alt=media&token=5e8a0041-1132-48d5-a433-bdfad5c66119\",\n domain: \"https://capefear.wingspans.com\",\n key: \"capefear\",\n text: \"Cape Fear Community College\",\n emails: [\"@cfcc.edu\", \"@mail.cfcc.edu\", \"@AD.cfcc.edu\", \"@ad.cfcc.edu\"],\n audience: \"Students and Faculty Login\",\n value: \"005320\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.capefear\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCape%20Fear%20Campus.jpeg?alt=media&token=85e75cdc-52cc-4df0-a54a-d540c96c232e\",\n banner_position: \"50%\",\n magic_link_type: \"link\",\n hide_name: true,\n reverse_names: false,\n state: \"NC\",\n petersons_institution_id: \"5547\",\n },\n {\n sso_methods: [\"microsoft\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCCAC%20logo.jpeg?alt=media&token=f658b4ad-75bb-462a-a67a-46c6ffc0c189\",\n domain: null,\n key: \"alleghenycounty\",\n text: \"Community College of Allegheny County\",\n emails: [],\n audience: \"Students and Faculty Login\",\n value: \"003231\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"PA\",\n petersons_institution_id: \"5914\",\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMillis%20High%20School%20logo.png?alt=media&token=f0c6ce7c-4ebc-4548-9338-fa06b72e5cf2\",\n domain: null,\n key: \"millishighschool\",\n text: \"Millis High School\",\n emails: [\"@millisschools.org\"],\n audience: \"Students and Faculty Login\",\n value: \"01870020\",\n audience_type: \"K-12\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"MA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"google\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FSomeville%20High%20School%20S%20Logo%202022-no%20circle%20SMALLER.jpeg?alt=media&token=3b7b69cd-0d86-49c7-bcde-1bd47eec6bc3\",\n domain: \"https://somerville.wingspans.com\",\n key: \"somerville\",\n text: \"Somerville Public Schools\",\n emails: [\"@k12.somerville.ma.us\"],\n audience: \"Students and Faculty Login\",\n value: \"251089001745\",\n audience_type: \"K-12\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/sign-up-pages%2Fsomerville.jpeg?alt=media&token=579497c7-2cf5-4ac6-8ddf-c3697ac8dd7b\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"MA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"google\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fcharette-hs.png?alt=media&token=f3160f6f-d39f-4de1-a490-f013ee503953\",\n domain: \"https://charette.wingspans.com\",\n key: \"charette\",\n text: \"Charette High School\",\n emails: [\"@charettepvd.org\"],\n audience: \"Students and Faculty Login\",\n value: \"81601\",\n audience_type: \"K-12\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: null,\n banner_position: null,\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FURI-Ram.jpg?alt=media&token=653470b4-6c46-40dd-afc3-c7b029776f46\",\n domain: \"https://uri.wingspans.com\",\n key: \"uri\",\n text: \"University of Rhode Island\",\n emails: [\"@uri.edu\", \"@wingspans.com\"],\n audience: \"Students and Faculty Login\",\n value: \"003414\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.uri\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FURI.jpeg?alt=media&token=930a2f63-9d71-4d30-ba06-2ab8d2392abf\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: \"9362\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FKennedy%20King%20College%20GCR%20image.png?alt=media&token=876224f5-6409-470f-a9dd-0352eb82fb71\",\n domain: \"https://kennedyking.wingspans.com\",\n key: \"kennedyking\",\n text: \"Kennedy King College\",\n emails: [\"@ccc.edu\", \"@student.ccc.edu\"],\n audience: \"\",\n value: \"001654\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.kennedyking\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fkennedy%20king%20college%20campus-sm.jpeg?alt=media&token=508d2e1b-939c-421a-b524-5cc3ea9d1e92\",\n banner_position: \"70%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"IL\",\n petersons_institution_id: \"5706\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FGeorgetown_Hoyas_Logo_.png?alt=media&token=a0d64fcb-89b5-4f6e-9fc2-4b8c4935aad0\",\n domain: \"https://georgetown.wingspans.com\",\n key: \"georgetown\",\n text: \"Georgetown University\",\n emails: [\"@georgetown.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"001445\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.georgetown\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FGeorgetown%20University%20campus.jpeg?alt=media&token=cadd4898-4cd8-428a-929a-87fe729363e2\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"DC\",\n petersons_institution_id: \"6446\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMendocino%20College%20logo.png?alt=media&token=4199ad9c-56e3-4131-bb16-16607794c799\",\n domain: \"https://mendocino.wingspans.com\",\n key: \"mendocino\",\n text: \"Mendocino College\",\n emails: [\"@mendocino.edu\", \"@student.mendocino.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"011672\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.mendocino\",\n openid_connect_provider_id: \"oidc.mendocino\",\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMendocino%20College%20campus.jpg?alt=media&token=7dfb10dc-ce65-4043-8e07-4f76213612bb\",\n banner_position: \"40%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: \"7404\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Froane%20state%20logo.png?alt=media&token=dcc0b8d4-f4af-4c46-959c-bf3664330360\",\n domain: \"https://roanestate.wingspans.com\",\n key: \"roanestate\",\n text: \"Roane State Community College\",\n emails: [\"@roanestate.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"009914\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.roanestate\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRoane%20State%20Community%20College.jpeg?alt=media&token=06d752e9-971c-451e-8468-dd90fbe49e8a\",\n banner_position: \"10%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: true,\n state: \"TN\",\n petersons_institution_id: \"8316\",\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCU%20logo.png?alt=media&token=bf5ad201-f41f-44db-99b5-da75b4ee6363\",\n domain: \"https://collegeunbound.wingspans.com\",\n key: \"collegeunbound\",\n text: \"College Unbound\",\n emails: [\"@collegeunbound.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"042836\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCollege%20Unbound%20campus.jpeg?alt=media&token=eec063a6-2810-4867-b102-ea3e93ce9f95\",\n banner_position: \"65%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRIRAL%2BLogo%2B(white).jpg?alt=media&token=0235f492-a811-42c7-b651-2677999946fe\",\n domain: \"https://riral.wingspans.com\",\n key: \"riral\",\n text: \"Rhode Island Regional Adult Learning\",\n emails: [\"@riral.org\", \"@student.riral.org\", \"@wingspans.com\"],\n audience: \"\",\n value: \"9001\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRIRAL%20-%20Woonsocket.jpg?alt=media&token=96e137c2-a241-4c5f-bb79-eb3e6797b1f0\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"openIdConnect\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FParkland%20college%20logo.jpeg?alt=media&token=2a2db49e-0a71-4c56-a65c-c4f99dfd8f99\",\n domain: \"https://parkland.wingspans.com\",\n key: \"parkland\",\n text: \"Parkland College\",\n emails: [\"@stu.parkland.edu\", \"@parkland.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"007118\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: \"oidc.parkland\",\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FParklandCollege-ZoomBkgd_Campus-Daylight3.jpg?alt=media&token=0218ced9-321b-46ca-9a69-c7a993a588d9\",\n banner_position: \"88%\",\n magic_link_type: \"link\",\n hide_name: true,\n reverse_names: false,\n state: \"IL\",\n petersons_institution_id: \"8058\",\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FEdmonds_College_Logo.png?alt=media&token=131e18be-5f71-4c22-b6c9-03fab85835f3&_gl=1*34o7sw*_ga*MTI1ODQzNDQyNi4xNjYxOTU5MjY0*_ga_CW55HF8NVT*MTY5NTg0NDIzMy4xMjUuMS4xNjk1ODQ0MjgyLjExLjAuMA..\",\n domain: \"https://edmonds.wingspans.com\",\n key: \"edmonds\",\n text: \"Edmonds College\",\n emails: [\"@edmonds.edu\", \"@student.edmonds.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"005501\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FEdmonds%20College.jpeg?alt=media&token=52972876-16ab-4542-a326-608249b0f223&_gl=1*99kj1v*_ga*MTI1ODQzNDQyNi4xNjYxOTU5MjY0*_ga_CW55HF8NVT*MTY5NTg1MTE4NS4xMjYuMS4xNjk1ODUxMjc3LjQzLjAuMA..\",\n banner_position: \"20%\",\n magic_link_type: \"link\",\n hide_name: true,\n reverse_names: false,\n state: \"WA\",\n petersons_institution_id: \"6222\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMassHire%20-%20logo.png?alt=media&token=4d7ffaa3-f010-4464-a5e8-9256562d410f\",\n domain: \"https://masshiredowntown.wingspans.com\",\n key: \"masshiredowntown\",\n text: \"MassHire Career Center\",\n emails: [],\n audience: \"\",\n value: \"masshiredowntown\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fmasshire-5-1000.jpg?alt=media&token=06d9ba0f-a193-478e-90c3-ff2a3361117c\",\n banner_position: \"40%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"MA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FIvy%20Tech%20-%20Logo.png?alt=media&token=b9205138-f61f-40aa-bf62-04db28715475\",\n domain: \"https://ivytech.wingspans.com\",\n key: \"ivytech\",\n text: \"Ivy Tech Community College\",\n emails: [],\n audience: \"\",\n value: \"009917\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FIvy%20Tech%20-%20Campus.jpg?alt=media&token=4ea1df5f-16bb-4861-882d-eb94c036eb4d\",\n banner_position: \"20%\",\n magic_link_type: \"button\",\n hide_name: false,\n reverse_names: false,\n state: \"IN\",\n petersons_institution_id: '6749',\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FPasadena%20City%20College%20logo.png?alt=media&token=a51bbb86-1143-40a1-a192-951ff59cadc7\",\n domain: \"https://pasadena.wingspans.com\",\n key: \"pasadena\",\n text: \"Pasadena City College\",\n emails: [],\n audience: \"\",\n value: \"1261\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FPasadena%20City%20College.jpg?alt=media&token=34eb6436-680f-421e-be63-fba05146186b\",\n banner_position: \"20%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: \"8064\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fmohawk-valley-logo-400.png?alt=media&token=fefb3594-e270-4a8d-aced-5da05b5df3b3\",\n domain: \"https://mohawkvalley.wingspans.com\",\n key: \"mohawkvalley\",\n text: \"Mohawk Valley Community College\",\n emails: [],\n audience: \"\",\n value: \"002871\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMohawk%20Valley%20Community%20College%20-%20Campus.jpeg?alt=media&token=cba124b6-9669-4315-b29b-54d39443d379\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"NY\",\n petersons_institution_id: \"7545\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FWashburn%20University%20-%20Logo%202.png?alt=media&token=5353fd92-9627-4d23-bc9a-e3787fde46a4\",\n domain: \"https://washburn.wingspans.com\",\n key: \"washburn\",\n text: \"Washburn University\",\n emails: [\"@washburn.edu\"],\n audience: \"\",\n value: \"001949\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.washburn\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FWashburn%20Univeristy%20-%20campus.jpg?alt=media&token=eb40c5fb-27c6-4390-94c8-470b58ce5543\",\n banner_position: \"60%\",\n magic_link_type: \"link\",\n hide_name: true,\n reverse_names: false,\n state: \"KS\",\n petersons_institution_id: \"9577\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRio%20Salado%20College%20-%20Logo%202.jpeg?alt=media&token=e37d11fa-8ce8-4807-ba20-04877d8e6377\",\n domain: \"https://riosalado.wingspans.com\",\n key: \"riosalado\",\n text: \"Rio Salado College\",\n emails: [\"@riosalado.edu\", \"@domail.maricopa.edu\", \"@wingspans.com\", \"@maricopa.edu\"],\n audience: \"\",\n value: \"014483\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.riosalado\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRio%20Salado%20Campus.jpeg?alt=media&token=95de3fbd-6e3e-4c0a-b957-ce1a72d034a2\",\n banner_position: \"60%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"AZ\",\n petersons_institution_id: \"8312\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FColumbus%20State%20-%20Logo.png?alt=media&token=5deedfda-9740-4a6e-a026-698e490fa682\",\n domain: \"https://columbusstate.wingspans.com\",\n key: \"columbusstate\",\n text: \"Columbus State College\",\n emails: [],\n audience: \"\",\n value: \"001561\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FColumbus%20State%20CC.jpg?alt=media&token=8ef2f19c-526e-4e0b-ba4f-b1429b5901d8\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: false,\n reverse_names: false,\n state: \"GA\",\n petersons_institution_id: \"5905\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCommunity%20College%20of%20Philadelphia%20-%20Logo.jpeg?alt=media&token=e1d30854-7310-4101-966a-8c44dade9c1f\",\n domain: \"https://ccp.wingspans.com\",\n key: \"ccp\",\n text: \"Community College of Philadelphia\",\n emails: [],\n audience: \"\",\n value: \"003249\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FCommunity%20College%20of%20Philadelphia%20-%20Campus.jpeg?alt=media&token=6ad8eb22-e874-4943-b904-b39f9bd7ed38\",\n banner_position: null,\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"PA\",\n petersons_institution_id: \"5929\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FNormandale%20Community%20College%20-%20Logo.jpeg?alt=media&token=35ecc71c-0b4f-43bb-86d3-cc02740e6e40\",\n domain: \"https://normandale.wingspans.com\",\n key: \"normandale\",\n text: \"Normandale Community College\",\n emails: [],\n audience: \"\",\n value: \"007954\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FNormandale%20Community%20College%20-%20Campus.jpg?alt=media&token=7895a1c0-aabc-41df-8c76-a08ed9cf7280\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"MN\",\n petersons_institution_id: \"7784\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FPortland%20Community%20College%20-%20Logo.jpg?alt=media&token=78efac6b-710d-466b-ac4c-7baa0ee2f400\",\n domain: \"https://portland.wingspans.com\",\n key: \"portland\",\n text: \"Portland Community College\",\n emails: [],\n audience: \"\",\n value: \"003213\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FPortland%20CC.jpeg?alt=media&token=aa223fe3-3526-4f39-bf27-3858e290e2a3\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"OR\",\n petersons_institution_id: \"8185\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FHighline%20College%20-%20Logo.png?alt=media&token=8e3176b6-72fe-4244-a0fc-e45c25a35e8e\",\n domain: \"https://highline.wingspans.com\",\n key: \"highline\",\n text: \"Highline College\",\n emails: [],\n audience: \"\",\n value: \"003781\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FHighline%20College%20-%20Campus.jpeg?alt=media&token=926e0183-faa6-4cc7-bb3c-ee80fa691ef4\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"WA\",\n petersons_institution_id: \"6635\",\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMadison%20College%20-%20Logo.jpeg?alt=media&token=01c68810-ceb3-4d04-a126-788aaac06690\",\n domain: \"https://madisoncollege.wingspans.com\",\n key: \"madisoncollege\",\n text: \"Madison College\",\n emails: [\"@madisoncollege.edu\"],\n audience: \"\",\n value: \"4007\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.madison\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FMadison%20College%20-%20Campus.jpeg?alt=media&token=1193dca6-f1bd-4928-ac55-35d261caa0b4\",\n banner_position: \"60%\",\n magic_link_type: \"link\",\n hide_name: false,\n reverse_names: true,\n state: \"WI\",\n petersons_institution_id: \"7278\",\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fpolaris_MEP_logo-sm.jpg?alt=media&token=d65cff7c-f847-42d2-b8b4-a9c84d8c3200\",\n domain: \"https://polarismep.wingspans.com\",\n key: \"polarismep\",\n text: \"Polaris MEP\",\n emails: [],\n audience: \"\",\n value: \"polarismep\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2F072_PolarisMEP_background-sm.jpg?alt=media&token=c0baf877-574b-4f30-8812-eadbc939f589\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"google\", \"email\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FWesterly%20Public%20Schools%20logo.jpeg?alt=media&token=c8a2e14b-fedc-4339-9988-1b3ef40f9546\",\n domain: \"https://westerly.wingspans.com\",\n key: \"westerly\",\n text: \"Westerly School District\",\n emails: [\"@westerly.k12.ri.us\", \"@wpsri.org\", \"@students.westerlyps.org\", \"@students.wpsri.org\", \"@wingspans.com\"],\n audience: \"\",\n value: \"440117000325\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FWesterly%20Public%20Schools.jpeg?alt=media&token=14cae313-58b9-495c-8348-40e2eff2ee85\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Flubbock2.png?alt=media&token=f1752e4b-d89d-431f-983f-61e2208d6331\",\n domain: \"https://lubbock.wingspans.com\",\n key: \"lubbock\",\n text: \"Lubbock ISD\",\n emails: [\"@lubbockisd.org\", \"@lubbockisd.net\", \"@wingspans.com\"],\n audience: \"\",\n value: \"4828500\",\n audience_type: \"K-12\",\n saml_provider_id: \"saml.lubbock\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Flubbock-statue.jpg?alt=media&token=5d12ba39-7f43-4624-ad16-b17523e6504b\",\n banner_position: \"40%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"TX\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fdallas3.jpg?alt=media&token=a7e5348b-1767-4bab-9a8e-cff6d32ca9ca\",\n domain: \"https://dallaswfs.wingspans.com\",\n key: \"dallaswfs\",\n text: \"Dallas Workforce Solutions\",\n emails: [],\n audience: \"\",\n value: \"wfsdallas\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fdallas.jpg?alt=media&token=459fde92-2bcb-47bc-9b29-551617e8b884\",\n banner_position: \"60%\",\n magic_link_type: \"button\",\n hide_name: true,\n reverse_names: false,\n state: \"TX\",\n petersons_institution_id: null,\n },\n {\n sso_methods: [\"saml\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fwingspanslogo.png?alt=media&token=db601cc2-f784-4e04-9f5a-985bed9da723\",\n domain: \"https://team.wingspans.com\",\n key: \"team\",\n text: \"Wingspans Team\",\n emails: [\"@wingspans.com\"],\n audience: \"\",\n value: \"000000\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.wingspans\",\n openid_connect_provider_id: null,\n banner:\n \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fjuan-ramos-EWN0rrwbBIQ-unsplash%20(1).jpg?alt=media&token=7862983b-2666-4583-9310-d76c87f2f667\",\n banner_position: \"50%\",\n magic_link_type: \"button\",\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n // use google for now, remove saml once confirmed\n sso_methods: [\"google\"],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FShawnee%20logo.png?alt=media&token=933bf33e-a268-4dd7-b263-711dfd48cff9\",\n domain: \"https://shawnee.wingspans.com\",\n key: \"shawnee\",\n text: \"Shawnee Community College\",\n emails: [\"@shawneecc.edu\"],\n audience: \"\",\n value: \"007693\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.shawnee\",\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FShawnee%20campus.jpg?alt=media&token=7eee7ee8-ebbd-4348-ba5b-3f7ae4234e34\",\n banner_position: \"50%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"IL\",\n petersons_institution_id: \"8616\",\n },\n {\n // k-12 demo school with no SSO\n sso_methods: ['email'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fwingspanslogo.png?alt=media&token=db601cc2-f784-4e04-9f5a-985bed9da723\",\n domain: \"https://k12.wingspans.com\",\n key: \"k12\",\n text: \"K-12 demo\",\n emails: [],\n audience: \"\",\n value: \"k12\",\n audience_type: \"K-12\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fkids%20copy%20(1).gif?alt=media&token=fab7a71a-56fa-4537-b867-2dbb61d520d2\",\n banner_position: \"55%\",\n magic_link_type: null,\n hide_name: false,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: null,\n },\n {\n sso_methods: ['saml'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRIC_Logo_Square_Burgundy_RGB%20(1).png?alt=media&token=21627a20-65fd-4910-a301-5fcf09ce082a\",\n domain: \"https://ric.wingspans.com\",\n key: \"ric\",\n text: \"Rhode Island College\",\n emails: [\"@email.ric.edu\", \"@ric.edu\"],\n audience: \"\",\n value: \"003407\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.ric\",\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FRIC%20Forman_Center%20(1)%20(4)%20(1).jpg?alt=media&token=11629c4c-623f-4d1e-bfa9-6fa527f4c14c\",\n banner_position: \"75%\",\n magic_link_type: null,\n hide_name: true,\n reverse_names: false,\n state: \"RI\",\n petersons_institution_id: \"8292\",\n },\n {\n sso_methods: ['saml'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FOCC%20Logo%20Black%20(1).png?alt=media&token=e769c9a4-d16e-48f2-a7a1-2b2382ebba93\",\n domain: \"https://onondaga.wingspans.com\",\n key: \"onondaga\",\n text: \"Onondaga Community College\",\n emails: [\"@sunyocc.edu\", \"@clasnet.sunyocc.edu\"],\n audience: \"\",\n value: \"160973001\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.onondaga\",\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FOnondaga%20CC.jpg?alt=media&token=fcfd050c-b5a5-411d-a1fe-593c847797e5\",\n banner_position: \"40%\",\n magic_link_type: \"link\",\n hide_name: true,\n reverse_names: false,\n state: \"NY\",\n petersons_institution_id: \"7980\",\n },\n {\n sso_methods: ['saml'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FOKSTATE%20logo%20(1).png?alt=media&token=46aef9f5-c482-41a0-ac13-2a9913824449\",\n domain: \"https://osu-okc.wingspans.com\",\n key: \"osu-okc\",\n text: \"OSU OKC\",\n emails: [\"@okstate.edu\"],\n audience: \"\",\n value: \"009647\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.osu-okc\",\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FOSUOKC%20Building%205%20(1).jpg?alt=media&token=91fe4800-2dd4-4c8a-b343-9b38fc1f8511\",\n banner_position: \"40%\",\n magic_link_type: false,\n hide_name: true,\n reverse_names: false,\n state: \"OK\",\n petersons_institution_id: \"7969\",\n },\n {\n sso_methods: ['saml'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FAllan%20Hancock%20College%20-%20Black%20(1).jpg?alt=media&token=0ea0fbe1-c086-49b2-98b0-28a176093c24\",\n domain: \"https://hancock.wingspans.com\",\n key: \"hancock\",\n text: \"Allan Hancock\",\n emails: [\"@hancockcollege.edu\", \"@my.hancockcollege.edu\"],\n audience: \"\",\n value: \"3143396\",\n audience_type: \"ADULT\",\n saml_provider_id: \"saml.hancock\",\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FAllan%20Hancock%20Student%20Services%20DSC_1595%20(1).jpg?alt=media&token=5d6de5ef-958b-4feb-a285-fd43d7d9c0d8\",\n banner_position: \"40%\",\n magic_link_type: false,\n hide_name: true,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: \"5052\",\n },\n {\n sso_methods: ['google'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FPurpleWolf-Web.png?alt=media&token=5b019218-84df-4aa6-9585-0d1967bbcfe8\",\n domain: \"https://fortbragg.wingspans.com\",\n key: \"fortbragg\",\n text: \"Fort Bragg\",\n emails: [\"@fbusd.us\", \"@wingspans.com\"],\n audience: \"\",\n value: \"061407001610\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Ffort-bragg-high-school-1024x683.jpg?alt=media&token=ff19b686-7999-4a90-a031-18e33416138a\",\n banner_position: \"70%\",\n magic_link_type: false,\n hide_name: false,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: ['google'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FNoyo%20Logo.png?alt=media&token=302f8ea2-0844-4db3-a393-110ac56b2e78\",\n domain: \"https://noyo.wingspans.com\",\n key: \"noyo\",\n text: \"Noyo\",\n emails: [\"@fbusd.us\", \"@wingspans.com\"],\n audience: \"\",\n value: \"061407000660\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2FIMG_9342.JPG?alt=media&token=16ed281e-92d4-41f9-b3ed-455ca101d18f\",\n banner_position: \"70%\",\n magic_link_type: false,\n hide_name: true,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: null,\n },\n {\n sso_methods: ['google'],\n logo: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fcalbright_logo_color.webp?alt=media&token=ddb4a8cf-2f7f-44c8-92bc-47bb1ef07147\",\n domain: \"https://calbright.wingspans.com\",\n key: \"calbright\",\n text: \"Calbright College\",\n emails: [\"@calbright.org\", \"@calbrightcollege.org\", \"@calbrightcollege.edu\", \"@calbright.edu\", \"@wingspans.com\"],\n audience: \"\",\n value: \"83-2103700\",\n audience_type: \"ADULT\",\n saml_provider_id: null,\n openid_connect_provider_id: null,\n banner: \"https://firebasestorage.googleapis.com/v0/b/lucid-bond-288217.appspot.com/o/school-logos%2Fshutterstock_2448871857.jpg?alt=media&token=533259bd-f555-4ea8-b628-6e2a9c04c757\",\n banner_position: \"70%\",\n magic_link_type: false,\n hide_name: true,\n reverse_names: false,\n state: \"CA\",\n petersons_institution_id: '101',\n },\n]\n .sort(function (a, b) {\n return a.text === b.text ? 0 : a.text < b.text ? -1 : 1\n })\n\n","import React from \"react\"\nimport \"./AddButton.css\"\n\n/**\n * Reusable \"Add\" button for the portfolio section\n */\nconst AddButton = ({label, onClick}) => {\n return (\n <button className=\"add-button\" onClick={onClick}>\n {\"+ \"}{label}\n </button>\n )\n}\n\nexport default AddButton\n","import React from \"react\"\nimport \"./EditButton.css\"\n\n/**\n * Reusable edit button for the portfolio section\n */\nconst EditButton = ({onClick}) => {\n const penSVG = (\n <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.8614 1.00001C16.2231 0.998937 16.5815 1.06962 16.9157 1.20797C17.2499 1.34632 17.5533 1.54959 17.8084 1.80601L19.1954 3.19601C19.7108 3.71251 20.0003 4.41236 20.0003 5.14201C20.0003 5.87167 19.7108 6.57152 19.1954 7.08801L17.1374 9.14601L11.8544 3.86401L14.0544 1.66401H14.0694C14.5673 1.23416 15.2036 0.998395 15.8614 1.00001ZM17.1374 7.73101L18.4874 6.38201C18.8155 6.05335 18.9998 5.60792 18.9998 5.14351C18.9998 4.67911 18.8155 4.23368 18.4874 3.90501L17.0994 2.51401C16.9372 2.35092 16.7443 2.22161 16.5318 2.13355C16.3193 2.0455 16.0915 2.00045 15.8614 2.00101C15.6313 2.00037 15.4032 2.04538 15.1906 2.13343C14.9779 2.22149 14.7848 2.35084 14.6224 2.51401L13.2694 3.86401L17.1374 7.73101ZM11.8544 3.86401L17.2064 9.06401L8.48443 17.794C8.05836 18.2181 7.53366 18.5297 6.95743 18.701L2.72143 19.947C2.59919 19.9822 2.47263 20 2.34543 20C2.13616 20.0002 1.92973 19.9516 1.74258 19.8579C1.55543 19.7643 1.39274 19.6282 1.26745 19.4606C1.14217 19.293 1.05776 19.0984 1.02095 18.8924C0.984145 18.6864 0.99595 18.4747 1.05543 18.274L2.29943 14.04C2.47068 13.463 2.78271 12.9375 3.20743 12.511L11.8544 3.86401ZM16.3994 8.39701L12.5514 4.57201L3.91643 13.219C3.60962 13.5273 3.38421 13.907 3.26043 14.324L2.01543 18.556C1.99743 18.6153 1.99573 18.6784 2.01051 18.7385C2.02529 18.7987 2.056 18.8538 2.09943 18.898C2.144 18.9412 2.19913 18.972 2.25932 18.9873C2.3195 19.0026 2.38264 19.0018 2.44243 18.985L6.67343 17.741C7.08854 17.6168 7.46644 17.3918 7.77343 17.086L16.3994 8.39701Z\" fill=\"currentColor\"/>\n <path d=\"M11.8544 3.86401L17.1374 9.14601L19.1954 7.08801C19.7108 6.57152 20.0003 5.87167 20.0003 5.14201C20.0003 4.41236 19.7108 3.71251 19.1954 3.19601L17.8084 1.80601C17.5533 1.54959 17.2499 1.34632 16.9157 1.20797C16.5815 1.06962 16.2231 0.998937 15.8614 1.00001C15.2036 0.998395 14.5673 1.23416 14.0694 1.66401H14.0544L11.8544 3.86401ZM11.8544 3.86401L17.2064 9.06401L8.48443 17.794C8.05836 18.2181 7.53366 18.5297 6.95743 18.701L2.72143 19.947C2.59919 19.9822 2.47263 20 2.34543 20C2.13616 20.0002 1.92973 19.9516 1.74258 19.8579C1.55543 19.7643 1.39274 19.6282 1.26745 19.4606C1.14217 19.293 1.05776 19.0984 1.02095 18.8924C0.984145 18.6864 0.99595 18.4747 1.05543 18.274L2.29943 14.04C2.47068 13.463 2.78271 12.9375 3.20743 12.511L11.8544 3.86401ZM17.1374 7.73101L18.4874 6.38201C18.8155 6.05335 18.9998 5.60792 18.9998 5.14351C18.9998 4.67911 18.8155 4.23368 18.4874 3.90501L17.0994 2.51401C16.9372 2.35092 16.7443 2.22161 16.5318 2.13355C16.3193 2.0455 16.0915 2.00045 15.8614 2.00101C15.6313 2.00037 15.4032 2.04538 15.1906 2.13343C14.9779 2.22149 14.7848 2.35084 14.6224 2.51401L13.2694 3.86401L17.1374 7.73101ZM16.3994 8.39701L12.5514 4.57201L3.91643 13.219C3.60962 13.5273 3.38421 13.907 3.26043 14.324L2.01543 18.556C1.99743 18.6153 1.99573 18.6784 2.01051 18.7385C2.02529 18.7987 2.056 18.8538 2.09943 18.898C2.144 18.9412 2.19913 18.972 2.25932 18.9873C2.3195 19.0026 2.38264 19.0018 2.44243 18.985L6.67343 17.741C7.08854 17.6168 7.46644 17.3918 7.77343 17.086L16.3994 8.39701Z\" stroke=\"currentColor\"/>\n </svg>\n )\n \n return (\n <button className=\"edit-button\" onClick={onClick}>\n {penSVG}\n </button>\n )\n}\n\nexport default EditButton\n","import { useState } from 'react'\n\nconst useModal = () => {\n const [isShowing, setIsShowing] = useState(false);\n\n function toggle(state) {\n // explicitly set state if needed, else toggle normally\n if (typeof state === \"boolean\") {\n setIsShowing(state)\n } else {\n setIsShowing(!isShowing);\n }\n }\n\n return [\n isShowing,\n toggle\n ];\n}\n\nexport default useModal;","import React, { useState, useContext, useEffect } from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport Form from \"react-bootstrap/Form\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCopy } from \"@fortawesome/free-solid-svg-icons\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport { useLocation } from \"@reach/router\"\nimport { sendStandardToast } from \"../toasts/standard-toast\"\nimport SubmitButton from \"../portfolio/SubmitButton\"\n\nconst PortfolioShareModal = ({ show, togglePortfolioShareModal }) => {\n const [checked, setChecked] = useState(false)\n const { firebase, profile } = useContext(FirebaseContext)\n const location = useLocation()\n const { protocol, hostname, port } = location\n\n const { locale } = useIntl()\n\n const handleCheckboxChange = async (e) => {\n if (e.target.checked) {\n handleSubmit()\n } else {\n // Delete the public profile without confirmation\n const success = await firebase.makeProfilePrivate()\n if (!success) {\n console.error(\"couldnt set firebase public setting\")\n } else {\n setChecked(false)\n }\n }\n }\n\n const handleSubmit = async () => {\n const success = await firebase.makeProfilePublic()\n if (!success) {\n setChecked(false)\n } else {\n setChecked(true)\n }\n }\n\n const publicPortfolioURL = `https://${hostname}${locale === \"es-ES\" ? \"/es-ES\" : \"\"}/profile/${profile.userId}`\n\n const handleCopy = () => {\n navigator.clipboard.writeText(publicPortfolioURL)\n\n sendStandardToast({\n heading: <FormattedMessage id=\"portfolio-share-model-profile-link-copied\" defaultMessage=\"Profile link copied to clipboard\" />,\n type: \"success\",\n })\n }\n\n useEffect(() => {\n // set the preview image to current image, once available\n if (profile && profile.profileIsPublic === true) {\n setChecked(true)\n }\n }, [profile])\n\n return (\n <Modal className=\"portfolio-share-modal\" show={show} onHide={() => togglePortfolioShareModal()} size=\"md\" animation={false}>\n <Modal.Header closeButton>\n <div className=\"eyebrow component-eyebrow\">\n <FormattedMessage id=\"portfolio-share-model-profile-sharing\" defaultMessage=\"Profile Sharing\" />\n </div>\n </Modal.Header>\n <Modal.Body>\n <div\n className=\"toggle-row\"\n style={{\n backgroundColor: \"whitesmoke\",\n fontWeight: \"bold\",\n }}\n >\n <label style={{ fontWeight: \"bold\" }}>\n <FormattedMessage id=\"portfolio-share-model-profile-sharing-is-on\" defaultMessage=\"Profile sharing is\" />{\" \"}\n {checked ? <FormattedMessage id=\"switch-on\" defaultMessage=\"ON\" /> : <FormattedMessage id=\"switch-off\" defaultMessage=\"OFF\" />}\n </label>\n\n <Form.Check\n id={`portfolio-public-switch-toggle`}\n className=\"portfolio-toggle\"\n type=\"switch\"\n // label={isPublic ? \"Public\" : \"Private\"}\n checked={checked}\n onChange={(e) => handleCheckboxChange(e)}\n />\n </div>\n\n {/* {checked && (\n <>\n <div className=\"toggle-row\">\n <label>\n {\" \"}\n <FormattedMessage id=\"portfolio-share-model-personal-information\" defaultMessage=\"Personal information\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"personal_information\" />\n </div>{\" \"}\n <div className=\"toggle-row\">\n <label>\n {\" \"}\n <FormattedMessage id=\"portfolio-share-model-resume\" defaultMessage=\"Resume\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"resume\" />\n </div>\n <div className=\"toggle-row\">\n <label>\n <FormattedMessage id=\"portfolio-share-model-interests-and-skills\" defaultMessage=\"Interests and skills\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"interests_skills\" />\n </div>{\" \"}\n <div className=\"toggle-row\">\n <label>\n <FormattedMessage id=\"portfolio-share-model-assessment\" defaultMessage=\"Assessment\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"assessment\" />\n </div>{\" \"}\n <div className=\"toggle-row\">\n <label>\n <FormattedMessage id=\"portfolio-share-model-career-plans\" defaultMessage=\"Career plans\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"career_plans\" />\n </div>{\" \"}\n <div className=\"toggle-row\">\n <label>\n <FormattedMessage id=\"portfolio-share-model-saved\" defaultMessage=\"Saved\" />\n </label>\n <PortfolioPublicToggle isBlank={true} section=\"bookmarks\" />\n </div>\n </>\n )} */}\n </Modal.Body>\n <Modal.Footer>\n {checked && (\n <>\n <label style={{ textAlign: \"left\" }}>\n <FormattedMessage id=\"portfolio-share-model-public-URL\" defaultMessage=\"Public URL\" />\n </label>\n <div style={{ display: \"flex\", marginBottom: \"1rem\" }}>\n <input\n type=\"text\"\n style={{\n backgroundColor: \"#fff\",\n fontSize: \"14px\",\n width: \"90%\",\n }}\n defaultValue={publicPortfolioURL}\n disabled={true}\n />\n <button\n style={{ background: \"none\" }}\n type=\"submit\"\n onClick={handleCopy}\n >\n <FontAwesomeIcon color={\"#40777C\"} icon={faCopy} size=\"lg\" />\n </button>\n </div>\n\n <a href={`${locale === \"es-ES\" ? \"/es-ES\" : \"\"}/profile/${profile.userId}`} target=\"_blank\">\n <SubmitButton\n label={<FormattedMessage id=\"portfolio-share-model-view-public-portfolio\" defaultMessage=\"View Public Portfolio\" />}\n isFilled={true}\n />\n </a>\n </>\n )}\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport default PortfolioShareModal\n","export default __webpack_public_path__ + \"static/classic-resume-c50127d5cde396e2a56de5e7a2fcfa86.png\";","export default __webpack_public_path__ + \"static/accent-resume-6bd013633937f3e3c89605cd7ad986dc.png\";","export default __webpack_public_path__ + \"static/modern-resume-783721729922a31c153f27b3ead1c053.png\";","export default __webpack_public_path__ + \"static/minimalist-resume-86c775b9f98ebe8d14da5451089b58c4.png\";","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderWorkSection = workExperiences => {\n if (!workExperiences || workExperiences.length === 0) {\n return []\n }\n \n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"WORK EXPERIENCE\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...workExperiences\n .map(experience => {\n const {\n title = \"JOB TITLE\",\n employer = \"EMPLOYER NAME\",\n location = \"LOCATION\",\n bulletPoints = [],\n startDate = \"\",\n endDate = \"current\",\n } = experience\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: `${title}`,\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 50,\n },\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${employer} | ${location} | ${startDate} - ${endDate}`,\n size: 20,\n }),\n ],\n }),\n ...bulletPoints.map(\n bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderSkillsSection = skills => {\n if (!skills || skills.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"SKILLS\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: `${skills.join(', ')}`,\n }),\n ],\n }),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderInterestsSection = interests => {\n if (!interests || interests.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"INTERESTS\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: `${interests.join(', ')}`,\n }),\n ],\n }),\n ]\n}\n","import { Paragraph, TextRun, AlignmentType } from \"docx\"\n\nexport const renderIntroduction = (introduction) => {\n if (!introduction) {\n return []\n }\n\n return [\n new Paragraph({\n spacing: {\n before: 200,\n },\n alignment: AlignmentType.CENTER,\n children: [\n new TextRun({\n text: introduction,\n })\n ],\n }),\n ]\n}\n","import { Paragraph, TextRun, AlignmentType, Header } from \"docx\"\nimport { renderWorkSection } from \"./renderWorkSection.js\"\nimport { renderVolunteerSection } from \"./renderVolunteerSection.js\"\nimport { renderEducationSection } from \"./renderEducationSection.js\"\nimport { renderAwardSection } from \"./renderAwardSection.js\"\nimport { renderLifeSection } from \"./renderLifeSection.js\"\nimport { renderSkillsSection } from \"./renderSkillsSection.js\"\nimport { renderInterestsSection } from \"./renderInterestsSection.js\"\nimport { renderLeadershipSection } from \"./renderLeadershipSection.js\"\nimport { renderCertificateSection } from \"./renderCertificateSection.js\"\nimport { renderCourseworkSection } from \"./renderCourseworkSection.js\"\nimport { renderIntroduction } from \"./renderIntroduction.js\"\n\nconst classicTemplate = (\n name,\n city,\n state,\n email,\n work,\n education,\n volunteer,\n awards,\n life,\n leadership,\n certificate,\n coursework,\n skills,\n interests,\n sectionOrder,\n introduction,\n) => {\n const typeToSection = {\n \"education\": renderEducationSection(education),\n \"work\": renderWorkSection(work),\n \"leadership\": renderLeadershipSection(leadership),\n \"volunteer\": renderVolunteerSection(volunteer),\n \"award\": renderAwardSection(awards),\n \"life\": renderLifeSection(life),\n \"certificate\": renderCertificateSection(certificate),\n \"coursework\": renderCourseworkSection(coursework),\n \"skills\": renderSkillsSection(skills),\n \"interests\": renderInterestsSection(interests),\n \"introduction\": renderIntroduction(introduction),\n }\n\n return {\n styles: {\n paragraphStyles: [\n {\n name: \"Normal\",\n id: \"work-history\",\n run: {\n font: \"cambria\",\n size: 20,\n },\n paragraph: {\n font: \"cambria\",\n size: 20,\n },\n },\n ],\n },\n sections: [\n {\n headers: {\n default: new Header({\n children: [\n new Paragraph({\n children: [\n new TextRun({\n text: `${name ?? \"NAME\"}`,\n font: \"cambria\",\n size: 32,\n bold: true,\n }),\n ],\n alignment: AlignmentType.CENTER,\n bold: true,\n }),\n new Paragraph({\n text: `${city ? city : \"CITY\"}, ${\n state ? state : \"STATE\"\n } - PHONE - ${email ?? \"EMAIL\"}`,\n alignment: AlignmentType.CENTER,\n }),\n ],\n }),\n },\n properties: {\n page: {\n margin: {\n top: 0,\n right: 720,\n bottom: 300,\n left: 720,\n },\n },\n },\n children: sectionOrder.map(type => typeToSection[type] || []).flat(),\n },\n ],\n }\n}\n\nexport default classicTemplate\n","import {\n Paragraph,\n TextRun,\n} from \"docx\"\nimport { createDurationString } from \"../../utils/utils\"\n\nexport const renderEducationSection = educationExperiences => {\n if (!educationExperiences || educationExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"EDUCATION\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...educationExperiences\n .map(experience => {\n let fieldString = experience.field || \"FIELD OF STUDY\"\n const school = experience.school || \"SCHOOL\"\n const location = experience.location || \"LOCATION\"\n const bulletPoints = experience.bulletPoints || []\n const startDate = experience.startDate || \"\"\n let endDate = experience.endDate || \"\"\n\n // If the experience includes a degree, add it to the field string\n if (experience.degree) {\n fieldString = `${experience.degree}, ${fieldString}`\n }\n\n // If the experience includes a startDate but not an endDate, then it's \n // currently ongoing\n if (startDate && !endDate) {\n endDate = \"Present\"\n }\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: `${school}`,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${fieldString} | ${location}`,\n }),\n new TextRun({\n text: (startDate ? ` | ${createDurationString(startDate, endDate)}` : \"\"),\n }),\n ],\n }),\n ...bulletPoints\n .map(\n bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderLeadershipSection = leadershipExperiences => {\n if (!leadershipExperiences || leadershipExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"LEADERSHIP EXPERIENCE\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...leadershipExperiences\n .map(experience => {\n const {\n title = \"TITLE\",\n location = \"LOCATION\",\n affiliation = \"AFFILIATION\",\n bulletPoints = [],\n startDate = \"\",\n endDate = \"current\",\n } = experience\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: title,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${affiliation} | ${location} | ${startDate} - ${endDate}`,\n }),\n ],\n }),\n ...bulletPoints\n .map(\n bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderVolunteerSection = volunteerExperiences => {\n if (!volunteerExperiences || volunteerExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"VOLUNTEER\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...volunteerExperiences\n .map(experience => {\n const {\n title = \"TITLE\",\n employer = \"ORGANIZATION\",\n location = \"LOCATION\",\n bulletPoints = [],\n startDate = \"\",\n endDate = \"current\",\n } = experience\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: `${title}`,\n size: 21,\n bold: true,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${employer} | ${location} | ${startDate} - ${endDate}`,\n }),\n ],\n }),\n ...bulletPoints\n .map(\n bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n} from \"docx\"\n\nexport const renderAwardSection = awardsExperiences => {\n if (!awardsExperiences || awardsExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"HONORS AND AWARDS\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...awardsExperiences\n .map(experience => {\n const {\n title = \"AWARD\",\n associatedOrg = \"\",\n issuer = \"ISSUER\",\n bulletPoints = [],\n endDate = \"\",\n } = experience\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: `${title}`,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${issuer}${associatedOrg && `, associated with ${associatedOrg}` } | ${endDate}`,\n size: 20,\n }),\n ],\n }),\n ...bulletPoints.map(bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderLifeSection = lifeExperiences => {\n if (!lifeExperiences || lifeExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"LIFE EXPERIENCE\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...lifeExperiences\n .map(experience => {\n const {\n milestone = \"MILESTONE\",\n bulletPoints = [],\n endDate = \"\",\n } = experience\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: `${milestone}`,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${endDate}`,\n size: 20,\n }),\n ],\n }),\n ...bulletPoints.map(bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n }),\n )\n ]\n })\n .flat(),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n} from \"docx\"\n\nexport const renderCertificateSection = certificateExperiences => {\n if (!certificateExperiences || certificateExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"LICENSES AND CERTIFICATIONS\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...certificateExperiences\n .map(experience => {\n const {\n title = \"CERTIFICATE TITLE\",\n issuer = \"SCHOOL\",\n bulletPoints = [],\n endDate = \"\",\n } = experience\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: title,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: `${issuer}${issuer && endDate && \" | \"}${endDate}`,\n size: 20,\n }),\n ],\n }),\n ...bulletPoints.map(bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n} from \"docx\"\n\nexport const renderCourseworkSection = courseworkExperiences => {\n if (!courseworkExperiences || courseworkExperiences.length === 0) {\n return []\n }\n\n return [\n new Paragraph({\n children: [\n new TextRun({\n text: \"COURSEWORK\",\n bold: true,\n size: 21,\n }),\n ],\n spacing: {\n before: 200,\n },\n border: {\n bottom: {\n color: \"#d3d3d3\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ...courseworkExperiences\n .map(experience => {\n const {\n title = \"COURSE TITLE\",\n school = \"SCHOOL\",\n bulletPoints = [],\n } = experience\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: title,\n bold: true,\n size: 21,\n }),\n ],\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: school,\n size: 20,\n }),\n ],\n }),\n ...bulletPoints.map(bulletPoint =>\n new Paragraph({\n bullet: {\n level: 0,\n },\n children: [\n new TextRun({\n text: bulletPoint,\n font: \"cambria\",\n size: 20,\n }),\n ],\n })\n )\n ]\n })\n .flat(),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n AlignmentType,\n Tab,\n TabStopType,\n} from \"docx\"\nimport { createDurationString } from \"../../utils/utils\"\n\n// Function to create a header for resume sections\nexport const createHeader = text => {\n return new Paragraph({\n children: [\n new TextRun({\n text: text,\n size: 24,\n font: \"Cambria\",\n characterSpacing: 60,\n bold: false,\n }),\n ],\n alignment: AlignmentType.CENTER,\n border: {\n bottom: {\n color: \"#000000\",\n space: 1, // Adjusts the spacing between the text and the border\n style: \"single\", // This is the style of the border\n size: 6, // Thickness of the border\n },\n },\n spacing: { before: 50, after: 150 },\n })\n}\n\n// Function to create a sub-header for resume sections\nexport const createSubHeader = (role, organization) => {\n return new Paragraph({\n children: [\n new TextRun({\n text: role,\n bold: true,\n italics: true,\n size: 22,\n }),\n new TextRun({\n text: \" | \",\n bold: true,\n size: 22,\n }),\n new TextRun({\n text: organization,\n bold: true,\n size: 22,\n }),\n ],\n spacing: { before: 100, after: 50 },\n })\n}\n\n// Function to create bullet points for resume sections\nexport const createBulletPoint = text => {\n if (!text.trim()) return null\n\n return new Paragraph({\n text: text,\n bullet: {\n level: 0,\n },\n size: 20,\n })\n}\n\n// Function to create bullet points for resume sections\nexport const createSkillsInterestsBullet = (text) => {\n\n return new Paragraph({\n children: [\n new TextRun({\n text: text,\n size: 20,\n })\n ]\n\n })\n}\n\nexport const createSpacingLine = new Paragraph({\n children: [\n new TextRun({\n text: \"\",\n size: 10,\n }),\n ],\n})\n\nexport const createAlignedHeader = (title, organization, startDate, endDate) => {\n const duration = createDurationString(startDate, endDate)\n return new Paragraph({\n tabStops: [\n {\n position: 10450,\n type: TabStopType.RIGHT,\n },\n ],\n children: [\n new TextRun({\n text: title,\n bold: true,\n italics: true,\n size: 22,\n }),\n new TextRun({\n text: \" | \",\n bold: true,\n size: 22,\n }),\n new TextRun({\n text: organization,\n bold: true,\n size: 22,\n }),\n new TextRun({\n children: [\n new Tab(), \n duration,\n ],\n size: 22,\n }),\n ]\n })\n}\n\nexport const createLifeSubHeader = (milestone, time) => {\n return new Paragraph({\n tabStops: [\n {\n position: 10450,\n type: TabStopType.RIGHT,\n },\n ],\n children: [\n new TextRun({\n text: milestone,\n bold: true,\n italics: true,\n size: 22,\n }),\n new TextRun({\n children: [\n new Tab(),\n time,\n ],\n size: 22,\n }),\n ]\n })\n}\n","import { createHeader, createSkillsInterestsBullet, createSpacingLine } from './componentHelpers'\n\nexport const renderSkillsInterestsSection = (type, items) => {\n if (!type || !items || !items.length) {\n return []\n }\n \n const itemsString = items.join(\", \")\n \n return [\n createHeader(type.toUpperCase()),\n createSkillsInterestsBullet(itemsString),\n createSpacingLine,\n ]\n}\n","import {\n createHeader,\n createLifeSubHeader,\n createBulletPoint,\n createSpacingLine,\n } from \"./componentHelpers\"\n \n export const renderLifeSection = (life) => {\n if (!life || life.length === 0) {\n return []\n }\n\n return [\n createHeader(\"LIFE EXPERIENCES\"),\n ...life\n .filter(experience => experience)\n .flatMap(experience => {\n const milestone = experience.milestone || \"MILESTONE\"\n const time = experience.endDate || \"TIME PERIOD\"\n let bulletPoints = experience.bulletPoints || []\n\n return [\n createLifeSubHeader(milestone, time),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n }\n","import { Paragraph, TextRun, AlignmentType } from \"docx\"\nimport { createSpacingLine } from \"./componentHelpers\"\n\nexport const renderIntroduction = (introduction) => {\n if (!introduction) {\n return []\n }\n\n return [\n new Paragraph({\n alignment: AlignmentType.CENTER,\n children: [\n new TextRun({\n text: introduction,\n })\n ],\n }),\n createSpacingLine,\n ]\n}\n","import { Paragraph, TextRun, AlignmentType } from \"docx\";\nimport { renderEducationSection } from \"./renderEducationSection\";\nimport { renderLeadershipSection } from \"./renderLeadershipSection\";\nimport { renderWorkSection } from \"./renderWorkSection\";\nimport { renderSkillsInterestsSection } from \"./renderSkillsInterestsSection\";\nimport { renderVolunteerSection } from \"./renderVolunteerSection\";\nimport { renderAwardsSection } from \"./renderAwardSection\";\nimport { renderLifeSection } from \"./renderLifeSection\";\nimport { renderCertificateSection } from \"./renderCertificateSection\"\nimport { renderCourseworkSection } from \"./renderCourseworkSection\"\nimport { renderIntroduction } from \"./renderIntroduction\"\nimport { createSpacingLine } from \"./componentHelpers\";\n\nconst minimalistTemplate = (\n name,\n city,\n state,\n email,\n work,\n education,\n volunteer,\n awards,\n life,\n leadership,\n certificate,\n coursework,\n skills,\n interests,\n sectionOrder,\n introduction,\n) => {\n const typeToSection = {\n \"education\": renderEducationSection(education),\n \"work\": renderWorkSection(work),\n \"leadership\": renderLeadershipSection(leadership),\n \"volunteer\": renderVolunteerSection(volunteer),\n \"award\": renderAwardsSection(awards),\n \"life\": renderLifeSection(life),\n \"certificate\": renderCertificateSection(certificate),\n \"coursework\": renderCourseworkSection(coursework),\n \"skills\": renderSkillsInterestsSection(\"skills\", skills),\n \"interests\": renderSkillsInterestsSection(\"interests\", interests),\n \"introduction\": renderIntroduction(introduction),\n }\n\n return {\n styles: {\n default: {\n document: {\n run: {\n font: \"Cambria\",\n },\n },\n },\n },\n sections: [\n {\n properties: {\n page: {\n margin: {\n top: 720,\n right: 720,\n bottom: 720,\n left: 720,\n },\n },\n },\n children: [\n // Header section for Name and Contact Information\n new Paragraph({\n children: [\n new TextRun({\n text: `${name}`,\n size: 50,\n font: \"Cambria\",\n characterSpacing: 150,\n }),\n new TextRun({\n text: `${city || \"CITY\"}, ${state || \"STATE\"} | ${email}`,\n size: 20,\n break: 1,\n }),\n createSpacingLine,\n ],\n alignment: AlignmentType.CENTER,\n }),\n ...(sectionOrder.map(type => typeToSection[type] || []).flat()),\n ],\n },\n ],\n }\n}\n\nexport default minimalistTemplate\n","import { createHeader, createBulletPoint, createAlignedHeader, createSpacingLine } from \"./componentHelpers\"\n\nexport const renderEducationSection = (educationExperiences) => {\n if (!educationExperiences || educationExperiences.length === 0) {\n return []\n }\n \n return [\n createHeader(\"EDUCATION\"),\n ...educationExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n let fieldString = experience.field || \"FIELD\"\n const school = experience.school || \"SCHOOL\"\n const bulletPoints = experience.bulletPoints || []\n const startDate = experience.startDate || \"\"\n let endDate = experience.endDate || \"\"\n\n // If the experience includes a degree, add it to the field string\n if (experience.degree) {\n fieldString = `${experience.degree}, ${fieldString}`\n }\n\n // If the experience includes a startDate but not an endDate, then it's \n // currently ongoing\n if (startDate && !endDate) {\n endDate = 'Present'\n }\n\n return [\n createAlignedHeader(school, fieldString, startDate, endDate), \n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import { createHeader, createAlignedHeader, createBulletPoint, createSpacingLine } from './componentHelpers'\n\nexport const renderWorkSection = workExperiences => {\n if (!workExperiences || workExperiences.length === 0) {\n return []\n }\n \n return [\n createHeader(\"WORK EXPERIENCE\"),\n ...workExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"JOB TITLE\"\n const employer = experience.employer || \"EMPLOYER\"\n const bulletPoints = experience.bulletPoints || []\n const startDate= experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n\n return [\n createAlignedHeader(title, employer, startDate, endDate),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import { createHeader, createAlignedHeader, createBulletPoint, createSpacingLine } from './componentHelpers'\n\nexport const renderLeadershipSection = leadershipExperiences => {\n if (!leadershipExperiences || leadershipExperiences.length === 0) {\n return []\n }\n\n return [\n createHeader(\"LEADERSHIP EXPERIENCE\"),\n ...leadershipExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"TITLE\"\n const affiliation = experience.affiliation || \"AFFILIATION\"\n const bulletPoints = experience.bulletPoints || []\n const startDate= experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n\n return [\n createAlignedHeader(title, affiliation, startDate, endDate),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import { createHeader, createAlignedHeader, createBulletPoint, createSpacingLine } from './componentHelpers'\n\nexport const renderVolunteerSection = volunteerExperiences => {\n if (!volunteerExperiences || volunteerExperiences.length === 0) {\n return []\n }\n\n return [\n createHeader(\"VOLUNTEER EXPERIENCE\"),\n ...volunteerExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"TITLE\"\n const organization = experience.employer || \"ORGANIZATION\"\n const bulletPoints = experience.bulletPoints || []\n const startDate= experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n\n return [\n createAlignedHeader(title, organization, startDate, endDate),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import {\n createHeader,\n createAlignedHeader,\n createBulletPoint,\n createSpacingLine,\n} from \"./componentHelpers\"\n\nexport const renderAwardsSection = awardExperiences => {\n if (!awardExperiences || awardExperiences.length === 0) {\n return []\n }\n \n return [\n createHeader(\"AWARDS\"),\n ...awardExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"AWARD TITLE\"\n const issuer = experience.issuer || \"ISSUER\"\n const bulletPoints = experience.bulletPoints || []\n const date = experience.endDate || \"AWARD DATE\"\n\n return [\n createAlignedHeader(title, issuer, \"\", date),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import {\n createHeader,\n createAlignedHeader,\n createBulletPoint,\n createSpacingLine,\n} from \"./componentHelpers\"\n\nexport const renderCertificateSection = certificateExperiences => {\n if (!certificateExperiences || certificateExperiences.length === 0) {\n return []\n }\n \n return [\n createHeader(\"LICENSES AND CERTIFICATIONS\"),\n ...certificateExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"CERTIFICATE TITLE\"\n const issuer = experience.issuer || \"ISSUER\"\n const bulletPoints = experience.bulletPoints || []\n const date = experience.endDate || \"\"\n\n return [\n createAlignedHeader(title, issuer, \"\", date),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import {\n createHeader,\n createAlignedHeader,\n createBulletPoint,\n createSpacingLine,\n} from \"./componentHelpers\"\n\nexport const renderCourseworkSection = courseworkExperiences => {\n if (!courseworkExperiences || courseworkExperiences.length === 0) {\n return []\n }\n \n return [\n createHeader(\"COURSEWORK\"),\n ...courseworkExperiences\n .filter(experience => experience)\n .flatMap(experience => {\n const title = experience.title || \"COURSE TITLE\"\n const school = experience.school || \"SCHOOL\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createAlignedHeader(title, school, \"\", \"\"),\n ...bulletPoints.map(b => createBulletPoint(b)),\n createSpacingLine,\n ]\n }),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n HeadingLevel,\n ShadingType,\n Tab,\n TabStopType,\n} from \"docx\"\nimport { createDurationString } from \"../../utils/utils\"\n\nexport const createHeader = text => {\n const shadingPadding = new Paragraph({\n shading: {\n type: ShadingType.CLEAR,\n fill: \"F2F2F2\",\n },\n children: [new TextRun({ text: \"\\u00A0\", size: 5 })],\n })\n return [\n createSpacingLine,\n shadingPadding,\n new Paragraph({\n heading: HeadingLevel.HEADING_1,\n shading: {\n type: ShadingType.CLEAR,\n fill: \"F2F2F2\",\n },\n children: [\n new TextRun({\n text: \" \" + text,\n size: 24,\n color: \"000000\",\n }),\n ],\n }),\n shadingPadding,\n ]\n}\n\nexport const createSubHeader = (\n role,\n organization,\n location,\n startDate,\n endDate,\n) => {\n const duration = createDurationString(startDate, endDate)\n const secondLine = `${organization}${organization && location && \" | \"}${location}`\n\n return [\n createAlignedTexts(role, duration),\n new Paragraph({\n children: [\n new TextRun({\n text: secondLine,\n size: 22,\n }),\n ],\n }),\n ]\n}\n\nexport const createBulletPoint = text => {\n if (!text.trim()) return null\n\n return new Paragraph({\n text: text,\n bullet: {\n level: 0,\n },\n size: 20,\n })\n}\n\nexport const createSpacingLine = new Paragraph({\n children: [\n new TextRun({\n text: \"\",\n size: 10,\n }),\n ],\n})\n\nexport const createAlignedTexts = (leftText, rightText) => {\n return new Paragraph({\n spacing: {\n before: 50,\n },\n tabStops: [\n {\n position: 10450,\n type: TabStopType.RIGHT,\n },\n ],\n children: [\n new TextRun({\n text: leftText,\n bold: true,\n size: 22,\n }),\n new TextRun({\n children: [\n new Tab(),\n rightText,\n ],\n size: 22,\n }),\n ],\n })\n}\n\nexport const createSkillsInterestsBullet = (text) => {\n if (!text.trim()) return null\n\n return new Paragraph({\n children: [\n new TextRun({\n text: text,\n size: 20,\n })\n ]\n })\n}\n","import { createHeader, createAlignedTexts, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderLifeSection = (life) => {\n if (!life || life.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"LIFE EXPERIENCES\"),\n ...life\n .filter((experience) => experience)\n .flatMap((experience) => {\n const milestone = experience.milestone || \"MILESTONE\"\n const time = experience.endDate || \"TIME PERIOD\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createAlignedTexts(milestone, time),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import {\n createHeader,\n createSkillsInterestsBullet,\n} from \"./componentHelpers\"\n \nexport const renderSkillsInterestsSection = (type, items) => {\n if (!type || !items || !items.length) {\n return []\n }\n \n const itemsString = items.join(\", \")\n \n return [\n ...createHeader(type.toUpperCase()),\n createSkillsInterestsBullet(itemsString),\n ]\n}\n","import { Paragraph, TextRun, AlignmentType } from \"docx\"\n\nexport const renderIntroduction = (introduction) => {\n if (!introduction) {\n return []\n }\n\n return [\n new Paragraph({\n spacing: {\n before: 100,\n },\n alignment: AlignmentType.CENTER,\n children: [\n new TextRun({\n text: introduction,\n })\n ],\n }),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n Tab,\n TabStopType,\n} from \"docx\"\nimport { renderEducationSection } from \"./renderEducationSection\"\nimport { renderLeadershipSection } from \"./renderLeadershipSection\"\nimport { renderWorkSection } from \"./renderWorkSection\"\nimport { renderVolunteerSection } from \"./renderVolunteerSection\"\nimport { renderLifeSection } from \"./renderLifeSection\"\nimport { renderSkillsInterestsSection } from \"./renderSkillsInterestsSection\"\nimport { renderAwardsSection } from \"./renderAwardSection\"\nimport { renderCertificateSection } from \"./renderCertificateSection\"\nimport { renderCourseworkSection } from \"./renderCourseworkSection\"\nimport { renderIntroduction } from \"./renderIntroduction.js\"\n\nconst accentTemplate = (\n name,\n city,\n state,\n email,\n work,\n education,\n volunteer,\n awards,\n life,\n leadership,\n certificate,\n coursework,\n skills,\n interests,\n sectionOrder,\n introduction,\n) => {\n const typeToSection = {\n \"education\": renderEducationSection(education),\n \"work\": renderWorkSection(work),\n \"leadership\": renderLeadershipSection(leadership),\n \"volunteer\": renderVolunteerSection(volunteer),\n \"award\": renderAwardsSection(awards),\n \"life\": renderLifeSection(life),\n \"skills\": renderSkillsInterestsSection(\"skills\", skills),\n \"certificate\": renderCertificateSection(certificate),\n \"coursework\": renderCourseworkSection(coursework),\n \"interests\": renderSkillsInterestsSection(\"interests\", interests),\n \"introduction\": renderIntroduction(introduction),\n }\n\n return {\n styles: {\n default: {\n document: {\n run: {\n font: \"Calibri\",\n },\n },\n },\n },\n sections: [\n {\n properties: {\n page: {\n margin: {\n top: 720,\n right: 720,\n bottom: 720,\n left: 720,\n },\n },\n },\n children: [\n ...createResumeHeader(name, city, state, email),\n ...(sectionOrder.map(type => typeToSection[type] || []).flat()),\n ],\n },\n ],\n }\n}\n\n/**\n * Generates the header section for the accent template\n */\nconst createResumeHeader = (name, city, state, email) => {\n const headerTabStops = [\n {\n position: 5225,\n type: TabStopType.LEFT,\n },\n {\n position: 7837.5,\n type: TabStopType.LEFT,\n },\n ]\n\n return [\n new Paragraph({\n tabStops: headerTabStops,\n children: [\n new TextRun({\n text: name,\n bold: true,\n size: 32,\n }),\n new TextRun({ \n children: [\n new Tab(),\n \"Phone\",\n new Tab(),\n \"Email\",\n ],\n bold: true,\n }),\n ],\n }),\n new Paragraph({\n tabStops: headerTabStops,\n children: [\n new TextRun({ \n children: [\n new Tab(),\n \"PHONE\",\n new Tab(),\n email,\n ],\n }),\n ],\n }),\n new Paragraph({\n tabStops: headerTabStops,\n children: [\n new TextRun({ \n children: [\n new Tab(),\n \"Location\",\n new Tab(),\n \"LinkedIn\",\n ],\n bold: true,\n }),\n ],\n }),\n new Paragraph({\n tabStops: headerTabStops,\n children: [\n new TextRun({ \n children: [\n new Tab(),\n `${city}, ${state}`,\n new Tab(),\n \"LINKEDIN\",\n ],\n }),\n ],\n }),\n ]\n}\n\nexport default accentTemplate\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderEducationSection = (educationExperiences) => {\n if (!educationExperiences || educationExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"EDUCATION\"),\n ...educationExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n let fieldString = experience.field || 'FIELD'\n const school = experience.school || 'SCHOOL'\n const location = experience.location || 'LOCATION'\n const bulletPoints = experience.bulletPoints || []\n const startDate = experience.startDate || ''\n let endDate = experience.endDate || ''\n\n // If the experience includes a degree, add it to the field string\n if (experience.degree) {\n fieldString = `${experience.degree}, ${fieldString}`\n }\n\n // If the experience includes a startDate but not an endDate, then it's \n // currently ongoing\n if (startDate && !endDate) {\n endDate = 'Present'\n }\n\n return [\n createSubHeader(\n school,\n fieldString,\n location,\n startDate,\n endDate,\n ),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderWorkSection = (workExperiences) => {\n if (!workExperiences || workExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"WORK EXPERIENCE\"),\n ...workExperiences\n .filter((experience) => experience)\n .flatMap(experience => {\n\n const title = experience.title || 'JOB TITLE'\n const employer = experience.employer || 'EMPLOYER'\n const location = experience.location || 'LOCATION'\n const startDate = experience.startDate || 'STARTDATE'\n const endDate = experience.endDate || 'Present'\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createSubHeader(\n title,\n employer,\n location,\n startDate,\n endDate,\n ),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderLeadershipSection = (leadershipExperiences) => {\n if (!leadershipExperiences || leadershipExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"LEADERSHIP EXPERIENCE\"),\n ...leadershipExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || 'TITLE'\n const affiliation = experience.affiliation || 'AFFILIATION'\n const location = experience.location || 'LOCATION'\n const startDate = experience.startDate || 'STARTDATE'\n const endDate = experience.endDate || 'Present'\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createSubHeader(\n title,\n affiliation,\n location,\n startDate,\n endDate,\n ),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderVolunteerSection = (volunteerExperiences) => {\n if (!volunteerExperiences || volunteerExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"VOLUNTEER EXPERIENCE\"),\n ...volunteerExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n\n const title = experience.title || 'TITLE'\n const employer = experience.employer || 'ORGANIZATION'\n const location = experience.location || 'LOCATION'\n const startDate = experience.startDate || 'STARTDATE'\n const endDate = experience.endDate || 'Present'\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createSubHeader(\n title,\n employer,\n location,\n startDate,\n endDate,\n ),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderAwardsSection = (awardExperiences) => {\n if (!awardExperiences || awardExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"AWARDS\"),\n ...awardExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n\n const title = experience.title || 'TITLE'\n const issuer = experience.issuer || 'ISSUER'\n const associatedOrg = experience.associatedOrg\n const endDate = experience.endDate || 'DATE AWARDED'\n const bulletPoints = experience.bulletPoints || []\n\n const headerText = `${issuer}${associatedOrg && \", associated with \" + associatedOrg}`\n\n return [\n createSubHeader(title, headerText, \"\", \"\", endDate),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderCertificateSection = (certificateExperiences) => {\n if (!certificateExperiences || certificateExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"LICENSES AND CERTIFICATIONS\"),\n ...certificateExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n\n const title = experience.title || 'TITLE'\n const issuer = experience.issuer || 'ISSUER'\n const endDate = experience.endDate || ''\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createSubHeader(title, issuer, \"\", \"\", endDate),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderCourseworkSection = (courseworkExperiences) => {\n if (!courseworkExperiences || courseworkExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"COURSEWORK\"),\n ...courseworkExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n\n const title = experience.title || 'TITLE'\n const school = experience.school || 'SCHOOL'\n // const endDate = experience.endDate || 'DATE AWARDED'\n const bulletPoints = experience.bulletPoints || []\n\n return [\n createSubHeader(title, school, \"\", \"\", \"\"),\n bulletPoints.map(b => createBulletPoint(b)),\n ].flat()\n }),\n ]\n}\n","import {\n Paragraph,\n TextRun,\n} from \"docx\"\nimport { createDurationString } from \"../../utils/utils\"\n\nexport const createHeader = text => {\n return [\n new Paragraph({\n spacing: {\n before: 150,\n },\n children: [\n new TextRun({\n text: text,\n size: 28,\n }),\n ],\n border: {\n bottom: {\n color: \"#000000\",\n space: 1,\n style: \"single\",\n size: 6,\n },\n },\n }),\n ]\n}\n\nexport const createSubHeader = (\n role,\n organization,\n location,\n startDate,\n endDate\n) => {\n const duration = createDurationString(startDate, endDate)\n\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: role, \n size: 24,\n bold: true,\n })\n ]\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: organization,\n size: 22,\n }),\n new TextRun({\n text: (location ? ` | ${location}` : \"\"),\n size: 22,\n }),\n new TextRun({\n text: (duration ? ` | ${duration}` : \"\"),\n size: 22,\n }),\n ],\n }),\n ]\n}\n\nexport const createLifeSubHeader = (\n milestone,\n time,\n) => {\n return [\n new Paragraph({\n spacing: {\n before: 50,\n },\n children: [\n new TextRun({\n text: milestone, \n size: 24,\n })\n ]\n }),\n new Paragraph({\n children: [\n new TextRun({\n text: time,\n size: 22,\n }),\n ],\n }),\n ]\n}\n\nexport const createBulletPoint = text => {\n if (!text.trim()) return null\n\n return new Paragraph({\n text: text,\n bullet: {\n level: 0,\n },\n size: 20,\n })\n}\n\nexport const createSpacingLine = new Paragraph({\n text: \"\",\n})\n\nexport const createSkillsInterestsBullet = (text) => {\n if (!text.trim()) return null\n\n return new Paragraph({\n children: [\n new TextRun({\n text: text,\n size: 20,\n }),\n ],\n })\n}\n","import { createHeader, createSkillsInterestsBullet } from './componentHelpers'\n\nexport const renderSkillsInterestsSection = (type, items) => {\n if (!type || !items || !items.length) {\n return []\n }\n \n const itemsString = items.join(\", \")\n \n return [\n ...createHeader(type.toUpperCase()),\n createSkillsInterestsBullet(itemsString),\n ]\n}\n","import { createHeader, createLifeSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderLifeSection = (lifeExperiences) => {\n if (!lifeExperiences || lifeExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"LIFE EXPERIENCE\"),\n ...lifeExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const milestone = experience.milestone || \"MILESTONE\"\n const time = experience.endDate || \"TIME PERIOD\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createLifeSubHeader(milestone, time),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { Paragraph, TextRun } from \"docx\"\n\nexport const renderIntroduction = (introduction) => {\n if (!introduction) {\n return []\n }\n\n return [\n new Paragraph({\n spacing: {\n before: 150,\n },\n children: [\n new TextRun({\n text: introduction,\n })\n ],\n }),\n ]\n}\n","import { \n Paragraph, \n TextRun, \n Tab,\n TabStopType,\n} from \"docx\"\nimport { renderEducationSection } from \"./renderEducationSection\"\nimport { renderAwardsSection } from \"./renderAwardSection\"\nimport { renderWorkSection } from \"./renderWorkSection\"\nimport { renderLeadershipSection } from \"./renderLeadershipSection\"\nimport { renderSkillsInterestsSection } from \"./renderSkillsInterestsSection\"\nimport { renderVolunteerSection } from \"./renderVolunteerSection\"\nimport { renderLifeSection } from \"./renderLifeSection\"\nimport { renderCertificateSection } from \"./renderCertificateSection\"\nimport { renderCourseworkSection } from \"./renderCourseworkSection\"\nimport { renderIntroduction } from \"./renderIntroduction\"\n\nconst modernTemplate = (name, city, state, email, work, education, volunteer, awards, life, leadership, certificate, coursework,skills, interests, sectionOrder, introduction) => {\n const typeToSection = {\n \"education\": renderEducationSection(education),\n \"work\": renderWorkSection(work),\n \"leadership\": renderLeadershipSection(leadership),\n \"volunteer\": renderVolunteerSection(volunteer),\n \"award\": renderAwardsSection(awards),\n \"life\": renderLifeSection(life),\n \"certificate\": renderCertificateSection(certificate),\n \"coursework\": renderCourseworkSection(coursework),\n \"skills\": renderSkillsInterestsSection(\"skills\", skills),\n \"interests\": renderSkillsInterestsSection(\"interests\", interests),\n \"introduction\": renderIntroduction(introduction),\n }\n\n return {\n styles: {\n default: {\n document: {\n run: {\n font: \"Calibri\",\n },\n },\n },\n },\n sections: [\n {\n properties: {\n page: {\n margin: {\n top: 720,\n right: 720,\n bottom: 720,\n left: 720,\n },\n },\n },\n children: [\n // Header section for Name and Contact Information\n ...createResumeHeader({\n name: name,\n location: `${city || \"CITY\"}, ${state || \"STATE\"}`,\n email: email,\n phone: \"PHONE\",\n website: \"WEBSITE\",\n }),\n ...(sectionOrder.map(type => typeToSection[type] || []).flat()),\n ],\n },\n ],\n }\n}\n\n/**\n * Generates the header section for the modern template\n */\nconst createResumeHeader = ({ name, location, email, phone, website }) => {\n return [\n new Paragraph({\n children: [\n new TextRun({ \n text: name, \n size: 50 \n }),\n ]\n }),\n new Paragraph({\n tabStops: [\n {\n position: 2612.5,\n type: TabStopType.LEFT,\n },\n {\n position: 5225,\n type: TabStopType.LEFT,\n },\n {\n position: 7837.5,\n type: TabStopType.LEFT,\n },\n ],\n children: [\n new TextRun({ \n children: [\n location,\n new Tab(),\n email,\n new Tab(),\n phone,\n new Tab(),\n website,\n ]\n }),\n ]\n })\n ]\n}\n\nexport default modernTemplate\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderEducationSection = (educationExperiences) => {\n if (!educationExperiences || educationExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"EDUCATION\"),\n ...educationExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n let fieldString = experience.field || \"FIELD OF STUDY\"\n const school = experience.school || \"SCHOOL\"\n const location = experience.location || \"LOCATION\"\n const bulletPoints = experience.bulletPoints || []\n const startDate = experience.startDate || \"\"\n let endDate = experience.endDate || \"\"\n\n // If the experience includes a degree, add it to the field string\n if (experience.degree) {\n fieldString = `${experience.degree}, ${fieldString}`\n }\n\n // If the experience includes a startDate but not an endDate, then it's \n // currently ongoing\n if (startDate && !endDate) {\n endDate = 'Present'\n }\n\n return [\n ...createSubHeader(\n school,\n fieldString,\n location,\n startDate,\n endDate,\n ),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { createHeader, createBulletPoint, createSubHeader } from \"./componentHelpers\";\n\nexport const renderWorkSection = (workExperiences) => {\n if (!workExperiences || workExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"PROFESSIONAL EXPERIENCE\"),\n ...workExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || \"JOB TITLE\"\n const employer = experience.employer || \"EMPLOYER\"\n const startDate = experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n const location = experience.location || \"LOCATION\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(title, employer, location, startDate, endDate),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ];\n};\n","import { createHeader, createBulletPoint, createSubHeader } from \"./componentHelpers\"\n\nexport const renderLeadershipSection = (leadershipExperiences) => {\n if (!leadershipExperiences || leadershipExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"LEADERSHIP EXPERIENCE\"),\n ...leadershipExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const affiliation = experience.affiliation || \"AFFILIATION\"\n const title = experience.title || \"TITLE\"\n const startDate = experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n const location = experience.location || \"LOCATION\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(\n title,\n affiliation,\n location,\n startDate,\n endDate\n ),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderVolunteerSection = (volunteerExperiences) => {\n if (!volunteerExperiences || volunteerExperiences.length === 0) {\n return []\n }\n \n return [\n ...createHeader(\"VOLUNTEER EXPERIENCE\"),\n ...volunteerExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || \"TITLE\"\n const organization = experience.employer || \"ORGANIZATION\"\n const startDate = experience.startDate || \"STARTDATE\"\n const endDate = experience.endDate || \"Present\"\n const location = experience.location || \"LOCATION\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(title, organization, location, startDate, endDate),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderAwardsSection = (awardsExperiences) => {\n if (!awardsExperiences || awardsExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"AWARDS\"),\n ...awardsExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || \"AWARD TITLE\"\n const associatedOrg = experience.associatedOrg || \"ASSOCIATED ORGANIZATION\"\n const issuer = experience.issuer || \"ISSUER\"\n const date = experience.endDate || \"DATE AWARDED\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(title, issuer, associatedOrg, \"\", date),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderCertificateSection = (certificateExperiences) => {\n if (!certificateExperiences || certificateExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"LICENSES AND CERTIFICATIONS\"),\n ...certificateExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || \"CERTIFICATE TITLE\"\n const issuer = experience.issuer || \"ISSUER\"\n const date = experience.endDate || \"\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(title, issuer, \"\", \"\", date),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import { createHeader, createSubHeader, createBulletPoint } from \"./componentHelpers\"\n\nexport const renderCourseworkSection = (courseworkExperiences) => {\n if (!courseworkExperiences || courseworkExperiences.length === 0) {\n return []\n }\n\n return [\n ...createHeader(\"COURSEWORK\"),\n ...courseworkExperiences\n .filter((experience) => experience)\n .flatMap((experience) => {\n const title = experience.title || \"COURSE TITLE\"\n const school = experience.school || \"SCHOOL\"\n const bulletPoints = experience.bulletPoints || []\n\n return [\n ...createSubHeader(title, school, \"\", \"\", \"\"),\n ...bulletPoints.map(b => createBulletPoint(b)),\n ]\n }),\n ]\n}\n","import {\n Document,\n Packer,\n} from \"docx\"\nimport { saveAs } from \"file-saver\"\n\nimport { filterExperiencesByType, renderMonthName } from \"../utils/utils.js\"\nimport classicTemplate from \"./classic/classicTemplate.js\"\nimport minimalistTemplate from \"./minimalist/minimalistTemplate.js\"\nimport accentTemplate from \"./accent/accentTemplate.js\"\nimport modernTemplate from \"./modern/modernTemplate.js\"\n\n\n/**\n * Formats/Cleans-up an experience's data before the experience gets passed to\n * the resume builder functions.\n * - Converts an experience's dates into locale-specific strings. Stores \n * the strings as the *startDate* and *endDate* properties of the experience\n * - Combines the experience's description and highlights into a single array.\n * Stores the array as the *bulletPoints* property of the experience.\n * \n * @param {*} experience - an experience from the resume builder\n */\nconst formatExperienceData = (experience) => {\n // Combine descriptions and non-empty highlights into a single list of bullet points\n const bulletPoints = []\n if (experience.description) {\n bulletPoints.push(experience.description)\n }\n if (experience.highlights) {\n const actualHighlights = experience.highlights.filter(highlight => !!highlight)\n bulletPoints.push(...actualHighlights)\n }\n experience.bulletPoints = bulletPoints\n\n // Convert the start and end dates to locale-specific strings\n if (experience.startDateMonth && experience.startDateYear) {\n experience.startDate = renderMonthName(experience.startDateMonth) + \" \" + experience.startDateYear\n }\n if (experience.endDateMonth && experience.endDateYear) {\n experience.endDate = renderMonthName(experience.endDateMonth) + \" \" + experience.endDateYear\n }\n}\n\nconst GenerateResumeDOCX = async ({\n name,\n email,\n experiences,\n skills,\n interests,\n city,\n state,\n template,\n sectionOrder,\n introduction,\n}) => {\n const work = filterExperiencesByType(experiences, \"work\")\n const education = filterExperiencesByType(experiences, \"education\")\n const volunteer = filterExperiencesByType(experiences, \"volunteer\")\n const awards = filterExperiencesByType(experiences, \"award\")\n const life = filterExperiencesByType(experiences, \"life\")\n const leadership = filterExperiencesByType(experiences, \"leadership\")\n const certificate = filterExperiencesByType(experiences, \"certificate\")\n const coursework = filterExperiencesByType(experiences, \"coursework\")\n\n const experienceLists = [work, education, volunteer, awards, life, leadership, certificate, coursework]\n experienceLists.forEach(\n experiences => experiences.forEach(\n experience => formatExperienceData(experience))\n )\n\n const templateFunctions = {\n CLASSIC: classicTemplate,\n ACCENT: accentTemplate,\n MINIMALIST: minimalistTemplate,\n MODERN: modernTemplate,\n }\n\n const selectedTemplateFunction =\n templateFunctions[template] || templateFunctions[\"CLASSIC\"]\n\n let doc = new Document(\n selectedTemplateFunction(\n name || \"NAME\",\n city || \"CITY\",\n state || \"STATE\",\n email || \"EMAIL\",\n work,\n education,\n volunteer,\n awards,\n life,\n leadership,\n certificate,\n coursework,\n skills,\n interests,\n sectionOrder,\n introduction,\n )\n )\n\n try {\n const blob = await Packer.toBlob(doc);\n saveAs(blob, `${name.replace(/\\s+/g, \"-\").toLowerCase()}-resume.docx`);\n } catch (error) {\n console.error('Failed to create blob or save file:', error);\n }\n}\n\nexport default GenerateResumeDOCX\n","import React, { useState, useContext } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faArrowToBottom } from '@fortawesome/pro-solid-svg-icons';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport classicTemplateImage from '../../../../static/assets/images/resume-templates/classic-resume.png';\nimport accentTemplateImage from '../../../../static/assets/images/resume-templates/accent-resume.png';\nimport modernTemplateImage from '../../../../static/assets/images/resume-templates/modern-resume.png';\nimport minimalistTemplateImage from '../../../../static/assets/images/resume-templates/minimalist-resume.png';\nimport { FormattedMessage } from \"react-intl\"\nimport SubmitButton from '../../portfolio/SubmitButton';\nimport GenerateResumeDOCX from './generateDOCX';\nimport { FirebaseContext } from '../../Firebase';\nimport { defaultResumeColumnOneOrder, defaultResumeColumnTwoOrder } from '../utils/experienceTypes';\nimport useBackwardsCompatibleIntroduction from '../../portfolio/useBackwardsCompatibleIntroduction';\nimport './resume-doc-modal.css'\n\nconst ResumeDocModal = () => {\n const { firebase, profile, user } = useContext(FirebaseContext)\n const [selectedTemplate, setSelectedTemplate] = useState(\"CLASSIC\")\n const [show, setShow] = useState(false)\n const introduction = useBackwardsCompatibleIntroduction(profile.introduction, profile.aboutMe, profile.myStrengths, profile.myWeaknesses);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const determineSectionOrder = async () => {\n const savedColumnOneOrder = await firebase.getResumeColumnOrder(\"1\")\n const savedColumnTwoOrder = await firebase.getResumeColumnOrder(\"2\")\n\n const firstHalfOrder = savedColumnOneOrder || defaultResumeColumnOneOrder\n const secondHalfOrder = savedColumnTwoOrder || defaultResumeColumnTwoOrder\n\n return [\"introduction\", ...firstHalfOrder, ...secondHalfOrder]\n }\n\n const handleExportToWord = async () => {\n const resumeData = await firebase.getResumeData()\n if (!(resumeData?.experiences?.filter(e => !!e.id).length)\n && !(profile?.skills?.length)\n && !(profile?.skills?.length)) {\n alert(\"Cannot export: No resume items found\")\n return\n }\n const allResumeExperiences = resumeData?.experiences?.filter(e => !!e.id) || []\n \n const sectionOrder = await determineSectionOrder()\n\n await GenerateResumeDOCX({\n name: `${profile?.firstName ?? \"\"} ${profile?.lastName ?? \"\"}`,\n email: user?.email,\n experiences: allResumeExperiences,\n skills: profile?.skills || [], \n interests: profile?.interests || [],\n city: profile?.city,\n state: profile?.state,\n template: selectedTemplate,\n sectionOrder: sectionOrder,\n introduction: introduction,\n })\n handleClose()\n }\n\n const templateImages = {\n CLASSIC: classicTemplateImage,\n ACCENT: accentTemplateImage,\n MINIMALIST: minimalistTemplateImage,\n MODERN: modernTemplateImage,\n };\n \n const templateNames = {\n CLASSIC: \"Classic\",\n ACCENT: \"Accent\",\n MINIMALIST: \"Minimalist\",\n MODERN: \"Modern\",\n }\n\n const selectTemplate = (template) => {\n setSelectedTemplate(template);\n };\n\n const renderTemplateSelection = () => (\n <div className=\"template-section\">\n {Object.entries(templateImages).map(([key, src]) => (\n <div key={key} className=\"template-object\">\n <p>\n <FormattedMessage \n id={`resume-template-${templateNames[key].toLowerCase()}`} \n defaultMessage={templateNames[key]} \n />\n </p>\n <img\n key={key}\n src={src}\n alt={`${key} template`}\n className={`template-image ${\n selectedTemplate === key ? \"template-image-selected\" : \"\"\n }`}\n onClick={() => selectTemplate(key)}\n />\n </div>\n ))}\n </div>\n )\n\n return (\n <>\n <button\n className=\"export-button\"\n onClick={handleShow}\n title=\"Export\"\n >\n <FormattedMessage id=\"portfolio-export\" defaultMessage=\"Export\" />\n {\" \"}\n <FontAwesomeIcon\n icon={faArrowToBottom}\n size=\"lg\"\n color=\"#54757A\"\n />\n </button>\n\n <Modal show={show} onHide={handleClose} size=\"xl\">\n <Modal.Header closeButton>\n <Modal.Title className=\"no-margin-title\">\n <FormattedMessage id=\"resume-choose-template\" defaultMessage=\"Choose a Resume Template\" />\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n {renderTemplateSelection()}\n <div className=\"export-buttons\">\n <SubmitButton \n label={<FormattedMessage id=\"resume-export-to-word\" defaultMessage=\"Export to Word\" />}\n isFilled={true}\n onClick={handleExportToWord}\n />\n </div>\n </Modal.Body>\n </Modal>\n </>\n )\n};\n\nexport default ResumeDocModal;\n","import React from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport { FormattedMessage } from \"react-intl\"\nimport SubmitButton from \"../../portfolio/SubmitButton\"\n\nconst ResumeTipsModal = ({ show, onClose }) => {\n return (\n <Modal\n className=\"resume-tips-modal\"\n show={show}\n onHide={() => onClose()}\n size=\"lg\"\n animation={false}\n >\n <Modal.Header closeButton>\n <div className=\"eyebrow component-eyebrow\"><FormattedMessage\n id=\"portfolio-tips-modal-tips\"\n defaultMessage=\"Tips\"\n /></div>\n </Modal.Header>\n <Modal.Body>\n <ul>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-1\"\n defaultMessage=\"Tailor your resume for every job application.\"\n /></li>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-2\"\n defaultMessage={`Use action words! For example, \"Managed a crew of 8 technicians,\"\n not \"Was in charge of a crew of 8 technicians.\"`}\n />\n </li>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-3\"\n defaultMessage={`Be as specific as possible. For example, \"Managed a team of 8\n technicians in completing X projects, resulting in a Y% increase in\n productivity.\"`}\n />\n </li>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-4\"\n defaultMessage={`Add keywords to your resume from the job posting.`}\n /></li>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-5\"\n defaultMessage={`Craft compelling bullet points using the highlights fields.`}\n /></li>\n <li><FormattedMessage\n id=\"portfolio-tips-modal-list-6\"\n defaultMessage={`Don't focus on tasks, instead explain what those tasks achieved.`}\n />\n </li>\n </ul>\n </Modal.Body>\n <Modal.Footer style={{ justifyContent: \"flex-start\" }}>\n <SubmitButton\n label={<FormattedMessage id=\"portfolio-tips-modal-back\" defaultMessage=\"back\"/>}\n isFilled={false}\n onClick={onClose}\n />\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport default ResumeTipsModal\n","import React, { useState } from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport ResumeExperienceEditorModal from \"./ResumeExperienceEditorModal\"\nimport ResumeTipsModal from \"./tips/tips-modal\"\nimport SubmitButton from \"../portfolio/SubmitButton\"\nimport { FormattedMessage } from \"react-intl\"\nimport { experienceTypeData } from \"./utils/experienceTypes\"\n\n/**\n * Modal for adding a new resume experience of any type. Contains three modals\n * in total:\n * 1) A modal for selecting which type of experience to add\n * 2) A ResumeTipsModal\n * 3) A ResumeExperienceEditorModal for actually adding the new resume experience\n */\nconst ExperienceTypeSelector = ({ isSelectorModalOpen, closeSelectorModal }) => {\n const [selectedType, setSelectedType] = useState(null)\n const [tipsModalOpen, setTipsModalOpen] = useState(false)\n\n const handleClose = () => {\n setSelectedType(null)\n closeSelectorModal()\n }\n\n return (\n <>\n {/* first modal, for selecting */}\n <Modal\n className=\"selector-modal\"\n show={isSelectorModalOpen && (selectedType === null) && !tipsModalOpen}\n onHide={handleClose}\n size=\"md\"\n animation={false}\n >\n <Modal.Header closeButton>\n <div className=\"eyebrow component-eyebrow\"> \n <FormattedMessage\n id=\"portfolio-experience-selector-add-experience\"\n defaultMessage=\"Add experience\"\n />\n </div>\n </Modal.Header>\n <Modal.Body>\n {experienceTypeData.map(section => (\n <button\n key={section.type}\n className=\"experience-type-row\"\n onClick={() => setSelectedType(section.type)}\n >\n <span>\n <FontAwesomeIcon icon={section.icon} />\n </span>\n {\" \"}\n {section.label}\n </button>\n ))}\n </Modal.Body>\n <Modal.Footer>\n <SubmitButton\n label={<FormattedMessage id=\"portfolio-experience-selector-resume-tips\" defaultMessage=\"Resume Tips\"/>}\n isFilled={false}\n onClick={() => setTipsModalOpen(true)}\n />\n </Modal.Footer>\n </Modal>\n\n {/* second modal, for adding a new experience */}\n\n <ResumeTipsModal \n show={tipsModalOpen}\n onClose={() => setTipsModalOpen(false)}\n />\n\n <ResumeExperienceEditorModal\n isNewExperience={true}\n show={selectedType !== null}\n type={selectedType}\n closeTimelineModal={() => handleClose()}\n />\n </>\n )\n}\n\nexport default ExperienceTypeSelector\n","import React, { useState } from \"react\"\nimport PortfolioProfile from \"../../../static/assets/images/portfolio-profile-default.jpg\"\nimport ProfileImageModal from \"../dashboard/portfolio-profile-image-modal\"\nimport useModal from \"../hooks/useModal\"\nimport PortfolioShareModal from \"../dashboard/portfolio-share-modal\"\nimport { FormattedMessage } from \"react-intl\"\nimport ResumeDocModal from \"../resume/docxExport/resume-doc-modal\"\nimport AddButton from \"./AddButton\"\nimport ExperienceTypeSelector from \"../resume/experience-type-selector-modal\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faShare } from \"@fortawesome/pro-solid-svg-icons\"\nimport \"./portfolio-heading.css\"\n\n/**\n * The heading of a user's public or private portfolio\n */\nconst PortfolioHeading = ({profile = {}, isPublicFacing}) => {\n const [isShowingPortfolioShareModal, togglePortfolioShareModal] = useModal()\n const [selectorModalOpen, setSelectorModalOpen] = useState(false)\n\n const showLocation = isPublicFacing \n && (profile.city || profile.state) \n && !(profile.introduction || profile.aboutMe || profile.myWeaknesses || profile.myStrengths)\n\n return (\n <div className=\"portfolio-heading\">\n <div className=\"profile-picture-container\">\n <img\n className=\"profile-picture\"\n src={profile.profileImageUrl || PortfolioProfile}\n alt=\"User's profile picture\"\n />\n {!isPublicFacing && (\n <div className=\"profile-picture-edit image-edit-button-container\">\n <ProfileImageModal currentImage={profile.profileImageUrl || PortfolioProfile} />\n </div>\n )}\n </div>\n {/* This div fills the space that the profile picture would fill if it \n * wasn't absolutely positioned */}\n <div className=\"profile-picture-standin\"/>\n {profile.firstName && (\n <h2>\n <strong>{profile.firstName}</strong>\n {profile.lastName ? ` ${profile.lastName}` : \"\"}\n </h2>\n )}\n {showLocation && (\n <div className=\"location\">\n {`${profile.city}${profile.city && profile.state && \", \"}${profile.state}`}\n </div>\n )}\n {!isPublicFacing && (\n <>\n <ExperienceTypeSelector\n isSelectorModalOpen={selectorModalOpen}\n closeSelectorModal={() => setSelectorModalOpen(false)}\n />\n <AddButton\n label={<FormattedMessage id=\"portfolio-heading-add-experience\" defaultMessage=\"Add experience\" />}\n onClick={() => setSelectorModalOpen(true)}\n />\n <div className=\"portfolio-heading-right\">\n <button className=\"share-button\" onClick={() => togglePortfolioShareModal()} title=\"Share\">\n <FormattedMessage id=\"portfolio-share\" defaultMessage=\"Share\" />\n {\" \"}\n <FontAwesomeIcon icon={faShare} size=\"lg\" color=\"#54757A\" />\n </button>\n <PortfolioShareModal show={isShowingPortfolioShareModal} togglePortfolioShareModal={togglePortfolioShareModal} />\n <ResumeDocModal />\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default PortfolioHeading\n","import React, { useState, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { Modal } from \"react-bootstrap\"\nimport SubmitButton from \"./SubmitButton\"\nimport { FormattedMessage } from \"react-intl\"\nimport \"./portfolio-editor-modal-styles.css\"\n\n/**\n * Modal used to edit a user's introduction section.\n */\nconst IntroductionEditModal = ({show, savedQuote, savedIntroduction, savedCity, savedState, onClose}) => {\n const {\n firebase,\n notifier,\n setWalkThroughStepValues,\n } = useContext(FirebaseContext)\n const [quote, setQuote] = useState(\"\")\n const [introduction, setIntroduction] = useState(\"\")\n const [city, setCity] = useState(\"\")\n const [state, setState] = useState(\"\")\n\n const resetFormValues = () => {\n setQuote(savedQuote || \"\")\n setIntroduction(savedIntroduction || \"\")\n setCity(savedCity || \"\")\n setState(savedState || \"\")\n }\n\n const handleSave = async () => {\n try {\n await firebase.updateProfile({ \n data: {\n profileQuote: quote,\n introduction: introduction,\n city: city,\n state: state,\n // remove any deprecated introduction values\n aboutMe: \"\",\n myStrengths: \"\",\n myWeaknesses: \"\",\n } \n })\n \n await firebase.saveWalkthroughStep(\"buildPortfolio\", true)\n onClose()\n notifier.handlePersonalInfoSetting()\n firebase.getWalkthroughSteps().then(res => setWalkThroughStepValues(res))\n } catch (e) {\n console.log(e)\n }\n }\n\n return (\n <Modal \n className=\"portfolio-editor-modal\" \n show={show} \n onShow={resetFormValues}\n onHide={onClose} \n size=\"lg\" \n animation={false}\n scrollable={true}\n >\n <Modal.Header closeButton>\n <Modal.Title>\n <FormattedMessage\n id=\"portfolio-introduction-edit-modal-title\"\n defaultMessage={\"Edit Introduction Section\"}\n />\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <label htmlFor=\"quote\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-quote\"\n defaultMessage=\"Quote\"\n />\n </label>\n <div className=\"input-instructions\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-default-quote\"\n defaultMessage={`Choose a quote that captures the essence of who you\n are. It can be your own or one that's well known.`}\n />\n </div>\n <textarea \n id=\"quote\" \n maxLength={1000}\n rows={2}\n value={quote}\n onChange={(event) => setQuote(event.target.value)}\n />\n\n <label htmlFor=\"introduction\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-introduction\"\n defaultMessage=\"Introduction\"\n />\n </label>\n <div className=\"input-instructions\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-default-about-me\"\n defaultMessage={`What makes you unique? Talk about your biggest wins, \n your most compelling experiences, and what inspires \n you to do what you do. Show, not tell.`}\n />\n </div>\n <textarea \n id=\"introduction\" \n maxLength={2000}\n rows={3}\n value={introduction}\n onChange={(event) => setIntroduction(event.target.value)}\n />\n\n <label htmlFor=\"city\">\n <FormattedMessage \n id=\"portfolio-personal-info-form-city\"\n defaultMessage=\"City\"\n />\n </label>\n <input \n id=\"city\" \n type=\"text\" \n maxLength={50}\n value={city}\n onChange={(event) => setCity(event.target.value)}\n />\n\n <label htmlFor=\"state\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-state\"\n defaultMessage=\"State\"\n />\n </label>\n <input \n id=\"state\" \n type=\"text\"\n maxLength={15}\n value={state}\n onChange={(event) => setState(event.target.value)}\n />\n </Modal.Body>\n <Modal.Footer>\n <SubmitButton\n label={<FormattedMessage id=\"resume-experience-editor-modal-save\" defaultMessage=\"Save\"/>}\n isFilled={true}\n onClick={handleSave}\n />\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport default IntroductionEditModal\n","import React, { useState } from \"react\"\nimport { FormattedMessage } from \"react-intl\"\nimport EditButton from \"./EditButton.js\"\nimport IntroductionEditModal from \"./IntroductionEditModal.js\"\nimport useBackwardsCompatibleIntroduction from \"./useBackwardsCompatibleIntroduction.js\"\nimport \"./PortfolioIntroduction.css\"\nimport \"./placeholder-section-styles.css\"\n\n/**\n * The introduction section of a user's public or private portfolio\n */\nconst PortfolioIntroduction = ({profile = {}, isPublicFacing}) => {\n const [editing, setEditing] = useState(false)\n\n const profileQuote = profile.profileQuote || \"\"\n const city = profile.city || \"\"\n const state = profile.state || \"\"\n const aboutMe = profile.aboutMe || \"\"\n const myStrengths = profile.myStrengths || \"\"\n const myWeaknesses = profile.myWeaknesses || \"\"\n const introduction = useBackwardsCompatibleIntroduction(profile.introduction, aboutMe, myStrengths, myWeaknesses)\n\n if (isPublicFacing && !introduction && !profileQuote) {\n return null\n }\n\n return (\n <div className=\"portfolio-introduction-container\">\n <IntroductionEditModal\n show={editing}\n savedQuote={profileQuote}\n savedIntroduction={introduction}\n savedCity={city}\n savedState={state}\n onClose={() => setEditing(false)}\n />\n {profileQuote && (\n <div className=\"editable-text-container\">\n <q>{profileQuote}</q>\n {!isPublicFacing && <EditButton onClick={() => setEditing(true)}/>}\n </div>\n )}\n {introduction && (\n <div className=\"blue-container\">\n <div className=\"introduction-header\">\n <h3>\n <FormattedMessage\n id=\"portfolio-personal-info-form-introduction\"\n defaultMessage=\"Introduction\"\n />\n </h3>\n {(city || state) && (\n <div className=\"location\">\n {`${city}${city && state && \", \"}${state}`}\n </div>\n )}\n </div>\n <div className=\"editable-text-container\">\n <div className=\"introduction-text\">{introduction}</div>\n {!isPublicFacing && <EditButton onClick={() => setEditing(true)}/>}\n </div>\n </div>\n )}\n {!isPublicFacing && !introduction && !profileQuote && (\n <>\n <EditButton onClick={() => setEditing(true)}/>\n <div className=\"placeholder-title\">\n <FormattedMessage\n id=\"portfolio-personal-info-form-introduction\"\n defaultMessage=\"Introduction\"\n />\n </div>\n <div className=\"placeholder-instructions\">\n <FormattedMessage\n id=\"portfolio-introduction-placeholder-instructions\"\n defaultMessage=\"Describe what makes you unique or share a meaningful quote.\"\n />\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default PortfolioIntroduction\n","export default __webpack_public_path__ + \"static/portfolio-banner-default-ad9de08d71f302bfbc0c916ff4062d06.jpg\";","import React, { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport Modal from \"react-bootstrap/Modal\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faImages, faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport imageCompression from \"browser-image-compression\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport SubmitButton from \"../portfolio/SubmitButton\"\nimport { BarElement } from \"chart.js\"\n\nlet fileReader\nif (typeof window !== \"undefined\") {\n fileReader = new FileReader()\n}\n\nconst WallpaperImageModal = ({ currentImage }) => {\n const { firebase } = useContext(FirebaseContext)\n const [error, setError] = useState(null)\n const [fileUrl, setFileUrl] = useState(currentImage)\n const [fileBlob, setFileBlob] = useState(null)\n const [open, setOpen] = useState(false)\n const [isCompressing, setIsCompressing] = useState(false)\n const { formatMessage } = useIntl()\n const { locale } = useIntl()\n\n useEffect(() => {\n // set the preview image to current image, once available\n if (currentImage) {\n setFileUrl(currentImage)\n }\n }, [currentImage])\n\n /**\n * Validate image parameters and generate thumbnail.\n *\n * @param {SyntheticEvent} e\n */\n const handleImageChange = async e => {\n e.persist()\n const file = e.target.files[0]\n\n setError(null)\n\n if (!file) {\n return\n }\n\n const allowedTypes = [\"image/jpg\", \"image/jpeg\", \"image/png\"]\n\n if (!allowedTypes.includes(file.type)) {\n setError(\"File must be one of jpg, jpeg, png\")\n return\n }\n\n const profileImageLabel = document.getElementById('profileImageLabel');\n if (file) {\n profileImageLabel.textContent = `${file.name}`;\n } else {\n profileImageLabel.textContent = locale === 'en-US' ? 'No file chosen' : 'Ningún archivo seleccionado';\n }\n try {\n const compressedImage = await imageCompression(file, {\n maxSizeMB: 2,\n onProgress: percent => {\n percent < 100 ? setIsCompressing(true) : setIsCompressing(false)\n },\n })\n setIsCompressing(false)\n\n // Triggered by readAsDataURL\n fileReader.onloadend = () => {\n setFileUrl(fileReader.result)\n\n // create image element in order to capture pixel dimensions\n const img = new Image()\n img.src = fileReader.result\n }\n\n fileReader.readAsDataURL(compressedImage)\n setFileBlob(compressedImage)\n } catch {\n setError(\"Something went wrong uploading your image\")\n }\n }\n\n const handleSubmit = async () => {\n if (!fileBlob || error) {\n setError(\"You must upload a file before saving\")\n return\n }\n\n // store the image\n try {\n const fileURL = await firebase.storeWallpaperImage(fileBlob)\n if (fileURL) {\n await firebase.updateProfile({ data: { wallpaperImageUrl: fileURL } })\n }\n } catch (e) {\n console.log(e)\n setError(\n \"There was a problem updating your wallpaper. Please try again later.\"\n )\n }\n setOpen(false)\n }\n \n const handleClose = () => {\n setOpen(false)\n setFileUrl(currentImage)\n }\n\n return (\n <>\n <button\n style={{ backgroundColor: \"transparent\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }}\n onClick={() => setOpen(true)}\n >\n <FontAwesomeIcon icon={faImages} />\n </button>\n <Modal\n show={open}\n size=\"lg\"\n onShow={() => {\n setError(null)\n }}\n onHide={handleClose}\n centered\n animation={false}\n >\n <Modal.Header\n style={{ justifyContent: \"center\", backgroundColor: \"#F6F6F6\" }}\n closeButton\n >\n <h3 style={{ marginBottom: \"0\" }}><FormattedMessage\n id=\"portfolio-wallpaper-image-change-wallpaper\"\n defaultMessage=\"Change Wallpaper\"\n /> </h3>\n </Modal.Header>\n <Modal.Body style={{ backgroundColor: \"#F6F6F6\" }}>\n <div>\n <h5><FormattedMessage\n id=\"portfolio-wallpaper-image-wallpaper-preview\"\n defaultMessage=\"Wallpaper Preview\"\n /></h5>\n {fileUrl && !isCompressing ? (\n <div\n style={{\n backgroundImage: `url(${fileUrl})`,\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n maxWidth: \"560px\",\n height: \"200px\",\n border: \"1px dashed #bbb\",\n margin: \"1rem auto\",\n overflow: \"hidden\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"560px\",\n height: \"200px\",\n border: \"1px dashed #bbb\",\n backgroundColor: \"white\",\n margin: \"1rem auto\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <FontAwesomeIcon\n icon={faSpinner}\n spin\n size=\"3x\"\n color=\"#4DA497\"\n />\n </div>\n )}\n <div className=\"form-element\" style={{\n border: '1px solid #d3d3d3',\n padding: '10px',\n display: 'flex',\n alignItems: 'baseline',\n gap: '10px',\n borderColor: error ? \"red\" : \"\"\n }}>\n <label style={{\n padding: '2px',\n width: 'max-content',\n border: '1px solid #565656',\n cursor: 'pointer',\n margin: '0px',\n borderRadius: '3px'\n }}\n className=\" custom-file-input-label\" htmlFor=\"profileImage\">\n {locale === 'en-US' ? 'Choose file' : 'Elija el archivo'}\n </label>\n <input\n id=\"profileImage\"\n name=\"profileImage\"\n type=\"file\"\n onChange={handleImageChange}\n />\n <span id=\"profileImageLabel\">{locale === 'en-US' ? 'No file chosen' : 'Ningún archivo seleccionado'}</span>\n {error && <small style={{ color: \"red\" }}>{error}</small>}\n </div>\n </div>\n </Modal.Body>\n <Modal.Footer>\n <SubmitButton\n label={<FormattedMessage id=\"dashboard-cancel\" defaultMessage=\"Cancel\"/>}\n isFilled={false}\n onClick={handleClose}\n />\n <SubmitButton\n label={<FormattedMessage id=\"dashboard-this-week-save-button\" defaultMessage=\"Save\"/>}\n isFilled={true}\n onClick={handleSubmit}\n />\n </Modal.Footer>\n </Modal>\n </>\n )\n}\n\nexport default WallpaperImageModal\n","import React from \"react\"\nimport { useIntl } from \"react-intl\"\nimport { allowedMonths } from \"../../careers/AllowedTypes\"\nimport { renderMonthName } from \"../../resume/utils/utils\"\nimport { Dropdown } from \"semantic-ui-react\"\nimport \"./DateInput.css\"\n\n/**\n * Allows a user to input a date.\n * \n * @prop {string} month - the selected month value as a 2-digit numerical string \n * (Ex: \"01\", \"12\", etc.), or \"\" if no month is selected\n * @prop {string} year - the inputted year\n * @prop {function} updateMonth - runs when selected month changes\n * @prop {function} updateYear - runs when inputted year changes\n */\nconst DateInput = ({month=\"\", year=\"\", updateMonth, updateYear}) => {\n const { formatMessage, locale } = useIntl()\n\n const monthOptions = allowedMonths.map(monthCode => ({\n key: monthCode,\n value: monthCode,\n text: renderMonthName(monthCode, locale)\n }))\n\n return (\n <div className=\"date-input\">\n <Dropdown\n className=\"month-input\"\n selection\n fluid={true}\n icon='chevron down'\n options={monthOptions}\n onChange={(e, d) => updateMonth(d.value)}\n selectOnBlur={false}\n clearable={true}\n placeholder={formatMessage({ id: \"experience-date-input-month-placeholder\", defaultMessage: \"Month\" })}\n value={month}\n scrolling\n />\n <input \n type=\"text\"\n className=\"year-input\"\n maxLength={4}\n onChange={(event) => updateYear(event.target.value)} \n placeholder={formatMessage({ id: \"experience-dates-input-year\", defaultMessage: \"Year\" })}\n value={year} \n />\n </div>\n )\n}\n\nexport default DateInput\n","const convertMimeToExtension = (mimeType) => {\n switch (mimeType) {\n case \"image/jpg\":\n return \"jpg\"\n case \"image/jpeg\":\n return \"jpeg\"\n case \"image/png\":\n return \"png\"\n case \"video/mp4\":\n return \"mp4\"\n case \"application/pdf\":\n return \"pdf\"\n case \"application/msword\":\n return \"doc\"\n case \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n return \"docx\"\n case \"application/vnd.ms-excel\":\n return \"xls\"\n case \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":\n return \"xlsx\"\n default:\n return mimeType\n }\n}\n\nexport default convertMimeToExtension\n","import React, { useState } from \"react\"\nimport convertMimeToExtension from \"./convertMimeToExtension\"\nimport { sendStandardToast } from \"../toasts/standard-toast.js\";\nimport \"./FileUploadButton.css\"\n\n/**\n * Button that allows user's to upload files by either clicking on it, or dragging\n * onto it from desktop\n * @prop {string} instructions - message rendered within the button\n * @prop {function} processFiles - function that takes in an array of Javascript \n * File objects, which will run after the user's files have finished uploading to the browser\n * @prop {string[]} allowedTypes - array of MIME type that are allowed to be uploaded \n * using this button\n * @prop {string} id - unique identifier associated with this button (needed to prevent bugs)\n */\nconst FileUploadButton = ({instructions, processFiles, allowedTypes, id=\"\"}) => {\n const [draggingOver, setDraggingOver] = useState(false)\n\n const plusSign = (\n <svg className=\"plus-sign\" width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M-0.000488281 15.002H29.9995\" stroke=\"#40777C\" strokeWidth=\"2\"/>\n <path d=\"M15 -0.00390625V29.9961\" stroke=\"#40777C\" strokeWidth=\"2\"/>\n </svg>\n )\n\n const uploadFiles = (files) => {\n if (Array.isArray(allowedTypes)) {\n for (const f of files) {\n if (!allowedTypes.includes(f.type)) {\n sendStandardToast({\n message: `The supported file types are ${allowedTypes.map(t => convertMimeToExtension(t)).join(\", \")}`,\n heading: \"Unsupported File Type\",\n })\n return\n }\n }\n }\n processFiles(files)\n }\n\n const dropHandler = (ev) => {\n console.log(\"dropped a file!\")\n ev.preventDefault() // prevent file from being opened\n\n const uploadedFiles = []\n if (ev.dataTransfer.items) {\n // Use DataTransferItemList interface to access the file(s)\n [...ev.dataTransfer.items].forEach((item, i) => {\n // If dropped items aren't files, reject them\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n console.log(`… file[${i}].name = ${file.name}`);\n uploadedFiles.push(file)\n }\n });\n } else {\n return\n }\n\n uploadFiles(uploadedFiles)\n setDraggingOver(false)\n }\n\n const dragOverHandler = (ev) => {\n setDraggingOver(true)\n // Prevent default behavior (Prevent file from being opened)\n ev.preventDefault()\n }\n\n const handleFilesAdd = (event) => {\n event.persist()\n if (event.target.files) {\n uploadFiles(Array.from(event.target.files))\n }\n }\n\n const dragLeaveHandler = () => {\n setDraggingOver(false)\n }\n\n return (\n <label\n tabIndex={0}\n htmlFor={`fileUpload-${id}`}\n className=\"file-upload-button\"\n onDrop={dropHandler}\n onDragOver={dragOverHandler}\n onDragLeave={dragLeaveHandler}\n style={{backgroundColor: (draggingOver ? \"#EDFBFF\" : undefined)}}\n >\n {plusSign}\n {instructions && (\n <div className=\"instructions\">\n {instructions}\n </div>\n )}\n <input \n id={`fileUpload-${id}`}\n type=\"file\"\n accept={Array.isArray(allowedTypes) ? allowedTypes.join() : undefined}\n onChange={handleFilesAdd} \n multiple \n />\n </label>\n )\n}\n\nexport default FileUploadButton\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTrash } from \"@fortawesome/pro-regular-svg-icons\"\nimport FileDisplayer from \"../../user-files/FileDisplayer.js\";\nimport useSortableItem from \"../../drag-and-drop/useSortableItem.js\";\nimport \"./UploadThumbnail.css\"\n\n/**\n * A single, draggable file thumbnail in the storyboard add/edit modal\n * @prop {userFile} file\n * @prop {function} onDelete\n */\nconst UploadThumbnail = ({file, onDelete}) => {\n const { itemProperties, isDragging, isSorting } = useSortableItem({id: file.fileId})\n\n return (\n <div className=\"upload-thumbnail\" {...itemProperties}>\n <div className=\"file-preview\">\n <FileDisplayer file={file} isThumbnail={true}/>\n </div>\n <button className=\"delete-button\" onClick={() => onDelete()} style={{display: (isDragging || isSorting) ? \"none\" : undefined}} >\n <FontAwesomeIcon icon={faTrash} size=\"1x\" />\n </button> \n </div>\n )\n}\n\nexport default UploadThumbnail\n","const allowedStoryboardFileTypes = [\n \"image/jpg\", \n \"image/jpeg\", \n \"image/png\",\n \"video/mp4\",\n \"application/pdf\",\n \"application/msword\", \n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.ms-excel\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n]\n\nexport default allowedStoryboardFileTypes\n","import React, { useState, useContext } from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport { FirebaseContext } from \"../../Firebase/index.js\"\nimport DateInput from \"./DateInput.js\";\nimport FileUploadButton from \"../../user-files/FileUploadButton.js\";\nimport SortableContainer from \"../../drag-and-drop/SortableContainer.js\";\nimport UploadThumbnail from \"./UploadThumbnail.js\";\nimport { rectSortingStrategy } from \"@dnd-kit/sortable\";\nimport { closestCenter } from \"@dnd-kit/core\";\nimport useUserFiles from \"../../user-files/useUserFiles.js\";\nimport { sendStandardToast } from \"../../toasts/standard-toast.js\";\nimport { FormattedMessage, useIntl } from \"react-intl\";\nimport SubmitButton from \"../../portfolio/SubmitButton.js\";\nimport useNotifications from \"../../notifications/useNotifications.js\";\nimport allowedStoryboardFileTypes from \"../allowedStoryboardFileTypes.js\";\nimport \"./MediaUploadModal.css\"\nimport \"../../portfolio/portfolio-editor-modal-styles.css\"\n\n/**\n * Modal for adding or editing a storyboard panel\n * @prop {string} id - if editing an existing storyboard panel, the unique id for that panel\n * @prop {userFile[]} newFiles - files uploaded (by using the FileUploadButton in the storyboard) before opening this modal\n */\nconst MediaUploadModal = ({\n isOpen, \n handleClose, \n savedTitle=\"\", \n savedDescription=\"\",\n savedMonth=\"\",\n savedYear=\"\",\n savedFileIds=[], \n id, \n newFiles\n}) => {\n const [title, setTitle] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [month, setMonth] = useState(\"\")\n const [year, setYear] = useState(\"\")\n const [filesOrder, setFilesOrder] = useState([]) \n\n const { firebase, profile } = useContext(FirebaseContext)\n const { filesList, addFile } = useUserFiles(null, \"storyboard\", filesOrder)\n const { handleNewStoryboardProject } = useNotifications(firebase, profile)\n const { formatMessage } = useIntl()\n\n const processNewFiles = async (uploadedFiles) => {\n const newFileIds = uploadedFiles.map(f => addFile(f))\n setFilesOrder([...filesOrder, ...newFileIds])\n }\n \n const resetFormValues = () => {\n setTitle(savedTitle)\n setDescription(savedDescription)\n setMonth(savedMonth)\n setYear(savedYear)\n setFilesOrder(savedFileIds)\n }\n\n const onShow = () => {\n resetFormValues()\n\n if (newFiles) {\n processNewFiles(newFiles)\n }\n }\n\n const onHide = async () => {\n resetFormValues()\n handleClose()\n }\n\n const handleSave = async () => {\n if (!title || filesOrder.length === 0) {\n sendStandardToast({\n heading: <FormattedMessage id=\"resume-experience-editor-modal-submission-required-foll\" defaultMessage=\"Submission requires the following\" />,\n message: (\n <>\n {!title && <div>Title</div>}\n {filesOrder.length === 0 && <div>{\"Uploaded file(s)\"}</div>}\n </>\n ),\n })\n return\n }\n if (filesList.some(f => f.isLoading)) {\n sendStandardToast({\n heading: \"Please wait for your files to finish loading\",\n })\n return\n }\n if (filesList.some(f => f.errorMessage)) {\n sendStandardToast({\n heading: \"Unable to save some of your files\",\n message: \"Please delete any files with error messages and try again\",\n })\n return\n }\n if ((month && !year) || (year && !month) || (year && year.length !== 4)) {\n sendStandardToast({\n heading: <FormattedMessage id=\"storyboard-editor-modal-date-error\" defaultMessage=\"Invalid Date\" />,\n })\n return\n }\n\n try {\n const deletedFileIDs = savedFileIds.filter(id => !filesOrder.includes(id))\n await Promise.all(deletedFileIDs.map(async (id) => {\n await firebase.deleteUserFile(\"storyboard\", id)\n }))\n\n const newFiles = filesList.filter(f => !f.isSaved)\n await Promise.all(newFiles.map(async (f) => {\n await firebase.uploadUserFile(\"storyboard\", f.fileId, f.fileData, f.thumbnailData)\n }))\n\n if (id) {\n await firebase.editPanel(id, false, title, description, month, year, filesOrder)\n } else {\n await firebase.addPanel(title, description, month, year, filesOrder)\n } \n \n } catch (e) {\n sendStandardToast({\n heading: \"Encountered an error when saving your project.\",\n message: \"Please try again later.\",\n })\n return\n }\n\n onHide()\n if (!id) {\n await handleNewStoryboardProject(profile)\n }\n }\n\n const handleDelete = async () => {\n await Promise.all(savedFileIds.map(async (id) => {\n await firebase.deleteUserFile(\"storyboard\", id)\n }))\n await firebase.deletePanel(id)\n onHide()\n }\n\n return (\n <Modal\n show={isOpen}\n onHide={() => onHide()}\n onShow={() => onShow()}\n centered\n animation={false}\n size=\"lg\"\n scrollable=\"true\"\n className=\"storyboard-upload-modal portfolio-editor-modal\"\n >\n <Modal.Header closeButton>\n <Modal.Title>\n {id ? (\n <FormattedMessage id=\"storyboard-editor-modal-edit-project\" defaultMessage=\"Edit Project\"/>\n ) : (\n <FormattedMessage id=\"storyboard-editor-modal-add-project\" defaultMessage=\"Add Project\"/>\n )}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <label htmlFor=\"title\">\n <FormattedMessage id=\"title\" defaultMessage=\"Title\"/> *\n </label>\n <input \n id=\"title\" \n type=\"text\"\n value={title} \n onChange={(event) => setTitle(event.target.value)} \n required={true} \n maxLength={90}\n />\n\n <label htmlFor=\"description\">\n <FormattedMessage id=\"description\" defaultMessage=\"Description\"/>\n </label>\n <div className=\"input-instructions\">\n <FormattedMessage \n id=\"storyboard-editor-modal-description-placeholder\"\n defaultMessage=\"What do these files represent? What skills did you use and what did you accomplish?\"\n />\n </div>\n <textarea \n id=\"description\" \n rows=\"3\" \n value={description} \n onChange={(event) => setDescription(event.target.value)} \n />\n\n <label htmlFor=\"date\">\n <FormattedMessage id=\"date\" defaultMessage=\"Date\" />\n </label>\n <DateInput \n month={month}\n year={year}\n updateMonth={setMonth}\n updateYear={setYear}\n />\n\n <label>\n <FormattedMessage\n id=\"storyboard-editor-modal-upload-files-label\"\n defaultMessage=\"Upload Images, Documents, or Videos\"\n /> *\n </label>\n <div className=\"input-instructions\">\n <FormattedMessage \n id=\"storyboard-editor-modal-drag-drop-instructions\"\n defaultMessage=\"You can upload jpg/jpeg, png, mp4, doc/docx, pdf, and xls/xlsx files. Drag and drop file thumbnails to change their order.\"\n />\n </div>\n {filesOrder.length > 0 && (\n <SortableContainer\n className=\"thumbnails-container\"\n setOrder={setFilesOrder}\n collisionDetectionAlgorithm={closestCenter}\n sortingStrategy={rectSortingStrategy}\n idList={filesOrder}\n indicatorPadding=\"1rem\"\n >\n {filesList.map(f => \n <UploadThumbnail key={f.fileId} file={f} onDelete={() => setFilesOrder(filesOrder.filter(id => id !== f.fileId))}/>\n )}\n </SortableContainer>\n )}\n <FileUploadButton \n processFiles={processNewFiles}\n instructions={formatMessage({\n id: \"storyboard-editor-modal-file-upload-instructions\",\n defaultMessage: \"Upload files by clicking this button or dragging files from your desktop\",\n })}\n allowedTypes={allowedStoryboardFileTypes}\n id={id}\n />\n \n </Modal.Body>\n\n <Modal.Footer>\n {id && (\n <SubmitButton\n label={<FormattedMessage id=\"resume-experience-editor-modal-delete\" defaultMessage=\"Delete\"/>}\n isFilled={false}\n onClick={handleDelete}\n />\n )}\n <SubmitButton\n label={<FormattedMessage id=\"resume-experience-editor-modal-save\" defaultMessage=\"Save\"/>}\n isFilled={true}\n onClick={handleSave}\n />\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport default MediaUploadModal\n","import React, { useState } from \"react\"\nimport MediaUploadModal from \"./MediaUploadModal\"\nimport FileDisplayer from \"../../user-files/FileDisplayer\"\nimport EditButton from \"../../portfolio/EditButton\"\nimport useSortableItem from \"../../drag-and-drop/useSortableItem\";\nimport useStoryboardPanel from \"../useStoryboardPanel\"\nimport useUserFiles from \"../../user-files/useUserFiles\";\nimport \"./MediaPanel.css\"\n\n/**\n * If a description is too long to fit in the panel, replaces the excess text \n * with \"...\". Calculations rely on the fact that the text section of a MediaPanel\n * has the same width/max-height on all screen sizes, and use measurements in rem\n * from the css file\n * \n * @param {string} description\n * @param {string} title \n * @param {string} date \n * @return {string} \n */\nconst shortenDescription = (description, title, date) => {\n const zeroesPerTitleLine = 17.5\n const zeroesPerDescLine = 21\n const charsPerZero = 1.25\n const boxHeight = 11.375\n const titleLineHeight = 1.5\n const dateHeight = date ? (1.3125) : 0\n const descLineHeight = 1.22\n const unusableSpace = 0.65\n\n const titleHeight = titleLineHeight * Math.ceil(title.length / (charsPerZero * zeroesPerTitleLine))\n const verticalSpaceLeft = boxHeight - titleHeight - dateHeight - unusableSpace\n const maxDescLines = Math.floor(verticalSpaceLeft / descLineHeight)\n const maxDescChars = maxDescLines * (charsPerZero * zeroesPerDescLine)\n\n if (description.length < maxDescChars) {\n return description\n } else {\n return description.substring(0, maxDescChars - 2) + \"...\"\n }\n}\n\n/**\n * A single panel of a storyboard\n * @param {string} id - the unique id for this panel\n */\nconst MediaPanel = ({id}) => {\n const [editModalOpen, setEditModalOpen] = useState(false)\n const { title, description, month, year, dateString, fileIds} = useStoryboardPanel(null, id)\n const { filesList } = useUserFiles(null, \"storyboard\", fileIds.slice(0, 1))\n const { itemProperties } = useSortableItem({id: id})\n \n const shortenedDescription = shortenDescription(description, title, dateString)\n\n return (\n <div className=\"media-panel\" {...itemProperties}>\n <div className=\"column image\">\n {filesList.length > 0 && <FileDisplayer file={filesList[0]} isThumbnail={true}/>}\n </div>\n <div className=\"column text\">\n <div className=\"title\">{title}</div>\n {dateString && <div className=\"date\">{dateString}</div>}\n {shortenedDescription && <div className=\"description\">{shortenedDescription}</div>}\n </div>\n <EditButton onClick={() => setEditModalOpen(true)}/>\n <MediaUploadModal \n isOpen={editModalOpen} \n handleClose={() => setEditModalOpen(false)} \n id={id}\n savedTitle={title}\n savedDescription={description}\n savedMonth={month}\n savedYear={year}\n savedFileIds={fileIds}\n />\n </div>\n )\n}\n\nexport default MediaPanel\n","import React from \"react\"\nimport MediaPanel from \"./MediaPanel.js\"\nimport { closestCenter } from '@dnd-kit/core';\nimport { rectSortingStrategy } from '@dnd-kit/sortable';\nimport SortableContainer from \"../../drag-and-drop/SortableContainer.js\";\nimport { FormattedMessage } from \"react-intl\";\nimport useStoryboardPanelsOrder from \"../useStoryboardPanelsOrder.js\";\nimport \"./StoryboardPanelsContainer.css\"\nimport \"../../portfolio/placeholder-section-styles.css\"\n\n/**\n * Displays the private/editable view of the current user's storyboard panels \n */\nconst StoryboardPanelsContainer = () => {\n const {panelIds, updatePanelIdsOrder} = useStoryboardPanelsOrder(null)\n \n if (panelIds.length === 0) {\n return (\n <div className=\"no-panels\">\n <div className=\"placeholder-title\">\n <FormattedMessage\n id=\"storyboard\"\n defaultMessage=\"Storyboard\"\n />\n </div>\n <div className=\"placeholder-instructions\">\n <FormattedMessage\n id=\"storyboard-placeholder-instructions\"\n defaultMessage=\"All images, videos, and documents that you upload will be displayed here.\"\n />\n </div>\n </div>\n )\n } else {\n return (\n <SortableContainer\n className=\"has-panels\"\n setOrder={updatePanelIdsOrder}\n collisionDetectionAlgorithm={closestCenter}\n sortingStrategy={rectSortingStrategy}\n idList={panelIds}\n >\n {panelIds.map(panelID => <MediaPanel key={panelID} id={panelID} />)}\n </SortableContainer>\n )\n }\n}\n\nexport default StoryboardPanelsContainer\n","import React, { useState } from \"react\"\nimport MediaUploadModal from \"./MediaUploadModal.js\";\nimport StoryboardPanelsContainer from \"./StoryboardPanelsContainer.js\";\nimport FileUploadButton from \"../../user-files/FileUploadButton.js\";\nimport allowedStoryboardFileTypes from \"../allowedStoryboardFileTypes.js\";\nimport { FormattedMessage } from \"react-intl\";\nimport \"./Storyboard.css\"\n\n/**\n * The private/editable view of the current user's storyboard section\n */\nconst Storyboard = () => {\n const [newFiles, setNewFiles] = useState([])\n\n return (\n <div className=\"storyboard\">\n <div className=\"upload-button-container\">\n <div className=\"title\">\n <FormattedMessage\n id=\"storyboard\"\n defaultMessage=\"Storyboard\"\n />\n </div>\n <div className=\"description\">\n <FormattedMessage\n id=\"storyboard-instructions\"\n defaultMessage=\"Upload images, videos, and documents that represent your projects.\"\n />\n </div>\n <FileUploadButton \n processFiles={(files) => setNewFiles(files)}\n allowedTypes={allowedStoryboardFileTypes}\n id=\"storyboard\"\n />\n </div>\n <StoryboardPanelsContainer/>\n <MediaUploadModal \n isOpen={newFiles.length > 0} \n handleClose={() => setNewFiles([])}\n newFiles={newFiles}\n />\n </div>\n )\n}\n\nexport default Storyboard\n","import React from \"react\"\nimport PortfolioHeading from \"./portfolio-heading\"\nimport PortfolioIntroduction from \"./PortfolioIntroduction\"\nimport PortfolioBanner from \"../../../static/assets/images/portfolio-banner-default.jpg\"\nimport WallpaperImageModal from \"../dashboard/portfolio-wallpaper-image-modal\"\nimport Resume from \"../resume/Resume\"\nimport Storyboard from \"../storyboard/editable-view/Storyboard\"\nimport PublicStoryboard from \"../storyboard/public-view/PublicStoryboard\"\nimport useStoryboardPanelsOrder from \"../storyboard/useStoryboardPanelsOrder\"\nimport { FormattedMessage } from \"react-intl\"\nimport \"./PortfolioContent.css\"\nimport \"./portfolio-heading.css\"\n\n/**\n * Displays the contents of a user's public or private portfolio\n * @prop {Object} profile - the profile of the user whose portfolio is being displayed\n * @prop {boolean} isPublicFacing - whether this is the public view of the portfolio\n * @prop {string} userId - the id of the user whose portfolio is being displayed\n */\nconst PortfolioContent = ({profile, isPublicFacing, userId}) => {\n const { panelIds } = useStoryboardPanelsOrder(userId)\n\n return (\n <div className=\"portfolio-content\">\n <div className=\"wallpaper-container\">\n <img \n className=\"wallpaper\"\n src={profile.wallpaperImageUrl || PortfolioBanner}\n alt=\"User's uploaded wallpaper\"\n />\n {!isPublicFacing && (\n <div className=\"wallpaper-edit image-edit-button-container\">\n <WallpaperImageModal currentImage={profile.wallpaperImageUrl || PortfolioBanner} />\n </div>\n )}\n </div>\n <div className=\"resume-section\">\n <PortfolioHeading \n profile={profile}\n isPublicFacing={isPublicFacing}\n /> \n <PortfolioIntroduction \n profile={profile}\n isPublicFacing={isPublicFacing}\n />\n <Resume\n userId={userId}\n isPublicFacing={isPublicFacing}\n />\n </div>\n {!isPublicFacing ? (\n <div className=\"editable-storyboard-section\">\n <Storyboard />\n </div>\n ) : \n panelIds.length > 0 ? (\n <div className=\"public-storyboard-section\">\n <div className=\"storyboard-title\">\n <FormattedMessage\n id=\"storyboard\"\n defaultMessage=\"Storyboard\"\n />\n </div>\n <PublicStoryboard userId={userId} />\n </div>\n ) : null}\n \n </div>\n )\n}\n\nexport default PortfolioContent\n","import React, { useState } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport \"./SubmitButton.css\"\n\n/**\n * Reusable submit button for portfolio edit modals. Displays a loading spinner\n * while the onClick function is running.\n */\nconst SubmitButton = ({label, isFilled, onClick=(async () => null)}) => {\n const [loading, setLoading] = useState(false)\n\n const handleClick = async () => {\n setLoading(true)\n await onClick()\n setLoading(false)\n }\n\n const buttonState = loading ? \"loading\" : \n isFilled ? \"filled\" : \"unfilled\"\n\n return (\n <button\n type=\"submit\"\n className={`submit-button ${buttonState}`}\n onClick={handleClick}\n >\n {loading ? (\n <FontAwesomeIcon icon={faSpinner} spin size=\"lg\" />\n ) : (\n label\n )}\n </button>\n )\n}\n\nexport default SubmitButton\n","import { useIntl } from \"react-intl\"\n\n/**\n * If user profiles still contain \"About Me\", \"My Strengths\", or \"My Weaknesses\"\n * sections, combines them into a single localized introduction string. If the\n * user already has an introduction saved, just returns that.\n *\n * @param {string} introduction - the user's saved introduction\n * @param {string} aboutMe - the user's saved about me section\n * @param {string} strengths - the user's saved strengths section\n * @param {string} weaknesses - the user's saved weaknesses section\n * @returns {string}\n */\nconst useBackwardsCompatibleIntroduction = (introduction=\"\", aboutMe, strengths, weaknesses) => {\n const { formatMessage } = useIntl()\n\n if (!introduction) {\n const nonEmptyFields = []\n if (aboutMe) {\n const aboutMeString = formatMessage({\n id: \"portfolio-personal-info-form-about-me\",\n defaultMessage: \"A little about me\",\n })\n nonEmptyFields.push(`${aboutMeString}: ${aboutMe}`)\n }\n if (strengths) {\n const myStrengthsString = formatMessage({\n id: \"portfolio-personal-info-form-my-strengths\",\n defaultMessage: \"My Strengths\",\n })\n nonEmptyFields.push(`${myStrengthsString}: ${strengths}`)\n }\n if (weaknesses) {\n const myWeaknessesString = formatMessage({\n id: \"portfolio-personal-info-form-my-challenges\",\n defaultMessage: \"My Challenges\",\n })\n nonEmptyFields.push(`${myWeaknessesString}: ${weaknesses}`)\n }\n introduction = nonEmptyFields.join(\"\\n\")\n }\n\n return introduction\n}\n\nexport default useBackwardsCompatibleIntroduction\n","import React from \"react\"\nimport MyAccount from \"../../components/account/Account\"\n\nconst MyAccountPage = () => {\n return (\n <MyAccount />\n )\n}\n\nexport default MyAccountPage\n","import React from \"react\"\n\nconst CancelMembership = () => {\n return (\n <>\n <h2>Cancel subscription</h2>\n </>\n )\n}\n\nexport default CancelMembership\n","import React from \"react\"\n\nconst Subscription = () => {\n return (\n <>\n <h2>Manage subscription</h2>\n </>\n )\n}\n\nexport default Subscription\n","import React from \"react\";\nimport './profile-image.css';\n\n\nimport PortfolioProfile from \"../../../static/assets/images/portfolio-profile-default.jpg\"\n\nconst ProfileImage = (profile) => {\n profile = profile?.profile ? profile.profile : profile;\n return <div className=\"profile-image-container\">\n {!!profile && !!profile.profileImageUrl ? (\n <img\n className=\"profile-image\"\n style={{\n maxWidth: \"100%\",\n objectFit: \"cover\",\n objectPosition: \"center top\",\n }}\n src={profile.profileImageUrl}\n alt=\"user profile\"\n />\n ) : (\n <img\n className=\"profile-image\"\n alt=\"user profile\"\n src={PortfolioProfile}\n />\n )}\n </div>\n}\n\nexport default ProfileImage;\n","import React, { useState } from \"react\"\nimport ResumeExperienceEditorModal from \"./ResumeExperienceEditorModal\"\nimport { renderMonthName } from \"./utils/utils.js\"\nimport { useIntl } from \"react-intl\"\nimport EditButton from \"../portfolio/EditButton.js\"\nimport \"./ResumeTimelineExperience.css\"\n\n/**\n * Displays a single resume experience\n */\nconst ResumeTimelineExperience = ({\n experienceData,\n isPublicFacing,\n isLastExperience,\n}) => {\n const {\n type,\n employer = \"\",\n title = \"\",\n milestone = \"\",\n location = \"\",\n description = \"\",\n highlights = [],\n degree = \"\",\n issuer = \"\",\n associatedOrg = \"\",\n affiliation = \"\",\n school = \"\",\n field = \"\",\n startDateMonth,\n startDateYear,\n } = experienceData\n\n let endDateMonth = experienceData.endDateMonth\n let endDateYear = experienceData.endDateYear\n\n const collapseIcon = (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 19 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.5 18C14.4706 18 18.5 13.9706 18.5 9C18.5 4.02944 14.4706 0 9.5 0C4.52944 0 0.5 4.02944 0.5 9C0.5 13.9706 4.52944 18 9.5 18Z\" fill=\"white\"/>\n <path d=\"M9.5 17C13.9183 17 17.5 13.4183 17.5 9C17.5 4.58172 13.9183 1 9.5 1C5.08172 1 1.5 4.58172 1.5 9C1.5 13.4183 5.08172 17 9.5 17Z\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M6.5 9H12.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n\n const expandIcon = (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 19 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.5 18C14.4706 18 18.5 13.9706 18.5 9C18.5 4.02944 14.4706 0 9.5 0C4.52944 0 0.5 4.02944 0.5 9C0.5 13.9706 4.52944 18 9.5 18Z\" fill=\"white\"/>\n <path d=\"M9.5 17C13.9183 17 17.5 13.4183 17.5 9C17.5 4.58172 13.9183 1 9.5 1C5.08172 1 1.5 4.58172 1.5 9C1.5 13.4183 5.08172 17 9.5 17Z\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M6.5 9H12.5\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n <path d=\"M9.5 6.05 V11.95\" stroke=\"currentColor\" strokeWidth=\"2\"/>\n </svg>\n )\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n const [isCollapsed, setIsCollapsed] = useState(false)\n const { locale, formatMessage } = useIntl()\n\n const closeTimelineModal = () => {\n setIsModalOpen(false)\n }\n\n // Date Processing\n let startDate = \"\"\n if (startDateMonth && startDateYear) {\n startDate = `${renderMonthName(startDateMonth, locale)} ${startDateYear}`\n }\n let endDate = \"\"\n if (endDateMonth && endDateYear) {\n endDate = `${renderMonthName(endDateMonth, locale)} ${endDateYear}`\n }\n if (startDate && !endDate) {\n endDate = formatMessage({id: \"resume-timeline-present\", defaultMessage: \"Present\"})\n const currentDate = new Date()\n endDateMonth = currentDate.getMonth() + 1\n endDateYear = currentDate.getFullYear()\n }\n let displayDuration = \"\"\n if (startDate && endDate) {\n const month = formatMessage({id: \"resume-timeline-month\", defaultMessage: \"month\"})\n const months = formatMessage({id: \"resume-timeline-months\", defaultMessage: \"month\"})\n const year = formatMessage({id: \"resume-timeline-year\", defaultMessage: \"year\"})\n const years = formatMessage({id: \"resume-timeline-years\", defaultMessage: \"years\"})\n\n const totalMonths = (endDateYear * 12) + parseInt(endDateMonth, 10) - (startDateYear * 12) - parseInt(startDateMonth, 10)\n const numYears = Math.floor(totalMonths / 12)\n const numMonths = totalMonths % 12\n\n const yearsString = (numYears > 0) ? `${numYears} ${numYears > 1 ? years : year}` : \"\"\n const monthsString = (numMonths > 0) ? `${numMonths} ${numMonths > 1 ? months : month}` : \"\"\n\n displayDuration = `${yearsString}${yearsString && monthsString && \" \"}${monthsString}`\n }\n let displayDateRange = `${startDate}${startDate && endDate && \" - \"}${endDate}`\n\n // Title processing\n let displayTitle = title\n if (type === \"education\") {\n displayTitle = `${degree}${degree && \", \"}${field}`\n } else if (type === \"life\") {\n displayTitle = milestone\n }\n \n // Subtitle processing\n let displaySubtitle = \"\"\n let subtitle = \"\"\n if (type === \"education\" && school) {\n subtitle = school\n } else if ((type === \"work\" || type === \"volunteer\") && employer) {\n subtitle = employer\n } else if (type === \"award\" && (issuer || associatedOrg)) {\n const issuedBy = formatMessage({id: \"resume-timeline-issued-by\", defaultMessage: \"Issued by\"})\n const issuerString = issuer && `${issuedBy} ${issuer}`\n\n const associatedWith = formatMessage({id: \"resume-timeline-associated-with\", defaultMessage: \"Associated with\"})\n const associatedString = associatedOrg && `${associatedWith} ${associatedOrg}`\n \n subtitle = `${issuerString}${issuer && associatedOrg && \" | \"}${associatedString}`\n } else if (type === \"leadership\" && affiliation) {\n subtitle = affiliation\n } else if (type === \"certificate\" && issuer) {\n subtitle = issuer\n } else if (type === \"coursework\" && school) {\n subtitle = school\n }\n displaySubtitle = `${subtitle}${subtitle && location && \" | \"}${location}`\n\n // highlight processing\n const actualHighlights = highlights.filter(highlight => highlight)\n\n return (\n <div className={`resume-timeline-experience ${isLastExperience ? \"resume-timeline-experience-final\" : \"\"}`}>\n {!isPublicFacing && (\n <ResumeExperienceEditorModal\n type={type}\n experienceData={experienceData}\n show={isModalOpen}\n closeTimelineModal={closeTimelineModal}\n isNewExperience={false}\n />\n )}\n <button className=\"collapse-button\" onClick={() => setIsCollapsed(!isCollapsed)}>\n {isCollapsed ? expandIcon : collapseIcon}\n </button>\n <div className=\"experience-header\">\n <div className=\"header-text-container\">\n <div className=\"title-container\">\n <div className=\"title\">\n {displayTitle}\n </div>\n <div className=\"subtitle\">\n {displaySubtitle}\n </div>\n </div>\n <div className=\"date-container\">\n <div className=\"date-range\">{displayDateRange}</div>\n <div className=\"duration\">{displayDuration}</div>\n </div>\n </div>\n {!isPublicFacing && <EditButton onClick={() => setIsModalOpen(true)}/>}\n </div>\n {!isCollapsed && (\n <>\n {description && (\n <p className=\"description-container description-text\">\n {description}\n </p>\n )}\n {actualHighlights.length > 0 && (\n <ul className=\"bullet-points-container\">\n {actualHighlights.map((highlight, index) => (\n <li key={`highlight-${index}`} className=\"bullet-point description-text\">\n {highlight}\n </li>\n ))}\n </ul>\n )}\n </>\n )}\n </div>\n )\n}\n\nexport default ResumeTimelineExperience\n","import React from \"react\"\nimport ResumeTimelineExperience from \"./ResumeTimelineExperience.js\"\nimport \"./ResumeTimeline.css\"\n\n/**\n * Displays all resume experiences of a single experience type\n */\nconst ResumeTimeline = ({\n type,\n filteredExperiences,\n isPublicFacing,\n}) => {\n const isExperienceArrayFilled = filteredExperiences =>\n Array.isArray(filteredExperiences) && filteredExperiences.length\n\n if (!isExperienceArrayFilled(filteredExperiences)) {\n return null\n }\n\n return (\n <div className=\"resume-timeline\">\n {isExperienceArrayFilled(filteredExperiences) &&\n filteredExperiences.map((experienceData, index) => (\n <ResumeTimelineExperience\n key={experienceData.id}\n type={type}\n experienceData={experienceData}\n precedingExperience={\n filteredExperiences[index - 1] ?? null\n }\n isPublicFacing={isPublicFacing}\n isLastExperience={index === filteredExperiences.length - 1}\n />\n ))\n }\n </div>\n )\n}\n\nexport default ResumeTimeline\n","import React, { useState } from \"react\"\nimport { FormattedMessage } from \"react-intl\"\nimport ResumeExperienceEditorModal from \"./ResumeExperienceEditorModal\"\nimport AddButton from \"../portfolio/AddButton\"\nimport useSortableItem from \"../drag-and-drop/useSortableItem\"\nimport { getExperienceLabel } from \"./utils/experienceTypes\"\nimport useCheckIfMobile from \"../hooks/useCheckIfMobile\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faArrowsAltV } from \"@fortawesome/pro-solid-svg-icons\"\nimport \"./ResumeItem.css\"\n\n/**\n * Wrapper component for a single section (for example \"Work Experience\", \n * \"Education\", etc.) of a public or private resume\n */\nconst ResumeItem = ({type, isPublicFacing, children}) => {\n const [currentlyAdding, setCurrentlyAdding] = useState(false)\n const { isMobile } = useCheckIfMobile()\n const { \n itemProperties, \n handleProperties, \n isDragging,\n } = useSortableItem({id: type, disableDragging: isPublicFacing, scale: 1.04, separateDragHandle: isMobile})\n\n return (\n <>\n {!isPublicFacing && (\n <ResumeExperienceEditorModal\n isNewExperience={true}\n show={currentlyAdding}\n type={type}\n closeTimelineModal={() => setCurrentlyAdding(false)}\n />\n )}\n <div className=\"resume-item\" {...itemProperties}>\n {isMobile && !isPublicFacing && (\n <div className={`drag-handle ${isDragging ? \"dragging\" : \"\"}`} {...handleProperties}>\n <FontAwesomeIcon icon={faArrowsAltV} size=\"lg\" />\n <FormattedMessage\n id=\"resume-drag-and-drop\"\n defaultMessage=\"Drag and Drop\"\n />\n </div>\n )}\n <div className=\"item-content\">\n <div className=\"item-header\">\n <div className=\"item-label\">\n {getExperienceLabel(type)}\n </div>\n {!isPublicFacing && (\n <AddButton \n label={<FormattedMessage id=\"resume-timeline-add\" defaultMessage=\"+ Add\" />}\n onClick={() => setCurrentlyAdding(true)}\n />\n )}\n </div>\n {children}\n </div>\n </div>\n </>\n )\n}\n\nexport default ResumeItem\n","import React, { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase/index.js\"\nimport { verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { pointerWithin, closestCenter } from \"@dnd-kit/core\";\nimport ResumeItem from \"./ResumeItem.js\";\nimport SortableContainer from \"../drag-and-drop/SortableContainer.js\";\nimport { combineCollisionAlgorithms } from \"../drag-and-drop/customCollisionDetectionAlgorithms.js\";\nimport \"./ResumeColumns.css\"\n\n/**\n * A single column of a public or private resume section\n * \n * @prop {string} userId\n * @prop {string} columnNumber - the columns number, used for styling (currently just \"1\" or \"2\")\n * @prop {string[]} defaultOrder - array of the experience types that belong in this column, in the default order they should be displayed\n * @prop {*} resumeData - object that maps experience types to JSX displaying that experience type's data\n * @prop {boolean} isPublicFacing - is the public view \n */\nconst ResumeColumn = ({userId, columnNumber, defaultOrder, resumeData, isPublicFacing}) => {\n const { firebase } = useContext(FirebaseContext)\n const [potentialOrder, setPotentialOrder] = useState([])\n\n const updatePotentialOrder = (newOrder) => { \n // ensure all items from defaultOrder, and none that aren't in defaultOrder,\n // are included (in case we eventually change which types go in which column)\n const allowedItemTypes = newOrder.filter(type => defaultOrder.includes(type))\n const missingItemTypes = defaultOrder.filter(type => !newOrder.includes(type))\n setPotentialOrder([...allowedItemTypes, ...missingItemTypes])\n }\n\n useEffect(() => {\n if (firebase && columnNumber) {\n const unsubscribeFunction = firebase.subscribeToResumeOrderChanges(userId, columnNumber, updatePotentialOrder)\n return () => unsubscribeFunction()\n }\n }, [firebase, columnNumber, userId])\n\n const setOrder = async (newOrder) => {\n updatePotentialOrder(newOrder)\n await firebase.updateResumeColumnOrder(columnNumber, newOrder)\n }\n\n const actualOrder = potentialOrder.filter(itemType => resumeData[itemType] !== undefined)\n if (actualOrder.length === 0) {\n return null\n }\n\n return (\n <SortableContainer\n className={`resume-timelines-column-${columnNumber}`}\n setOrder={setOrder}\n collisionDetectionAlgorithm={combineCollisionAlgorithms([pointerWithin, closestCenter])}\n sortingStrategy={verticalListSortingStrategy}\n idList={actualOrder}\n >\n {actualOrder.map(itemType => (\n <ResumeItem key={itemType} type={itemType} isPublicFacing={isPublicFacing}>\n {resumeData[itemType]}\n </ResumeItem>\n ))}\n </SortableContainer>\n )\n}\n\nexport default ResumeColumn\n","import React from \"react\"\nimport ResumeTimeline from \"./ResumeTimeline.js\"\nimport ResumeList from \"./ResumeList.js\"\nimport { filterExperiencesByType } from \"./utils/utils.js\"\nimport ResumeColumn from \"./ResumeColumn.js\"\nimport { \n experienceTypes,\n defaultResumeColumnOneOrder, \n defaultResumeColumnTwoOrder,\n} from \"./utils/experienceTypes.js\"\nimport \"./ResumeColumns.css\"\n\n/**\n * A non-empty public or private resume section\n */\nconst ResumeColumns = ({ userId, experiences = [], skills, interests, isPublicFacing }) => {\n const processedResumeItems = {}\n\n experienceTypes.forEach(expType => {\n const matchingExperiences = filterExperiencesByType(experiences, expType)\n if (matchingExperiences.length > 0) {\n const experienceItem = (\n <ResumeTimeline\n type={expType}\n filteredExperiences={matchingExperiences}\n isPublicFacing={isPublicFacing}\n />\n )\n processedResumeItems[expType] = experienceItem\n }\n })\n\n if (skills && skills.length) {\n processedResumeItems[\"skills\"] = (\n <ResumeList type=\"skills\" items={skills} isPublicFacing={isPublicFacing}/>\n )\n }\n if (interests && interests.length) {\n processedResumeItems[\"interests\"] = (\n <ResumeList type=\"interests\" items={interests} isPublicFacing={isPublicFacing}/>\n )\n }\n\n return (\n <div className=\"resume-timelines\">\n <ResumeColumn \n userId={userId}\n columnNumber=\"1\"\n defaultOrder={defaultResumeColumnOneOrder}\n resumeData={processedResumeItems}\n isPublicFacing={isPublicFacing}\n />\n <ResumeColumn \n userId={userId}\n columnNumber=\"2\"\n defaultOrder={defaultResumeColumnTwoOrder}\n resumeData={processedResumeItems}\n isPublicFacing={isPublicFacing}\n />\n </div>\n )\n}\n\nexport default ResumeColumns\n","import React, { useState } from \"react\"\nimport ResumeColumns from \"./ResumeColumns.js\"\nimport ResumeExperienceEditorModal from \"./ResumeExperienceEditorModal.js\"\nimport { FormattedMessage } from \"react-intl\"\nimport { experienceTypeData } from \"./utils/experienceTypes\"\nimport useResumeData from \"./useResumeData.js\"\nimport \"./resume.css\"\nimport \"../portfolio/placeholder-section-styles.css\"\n\n/**\n * Base component for resume, includes editor and public version\n */\nconst Resume = ({\n userId,\n isPublicFacing,\n}) => {\n const { experiences, skills, interests } = useResumeData(userId)\n const [selectedExperienceType, setSelectedExperienceType] = useState(null)\n const isEmpty = (experiences.length === 0 && skills.length === 0 && interests.length === 0)\n\n if (isEmpty && isPublicFacing) {\n return null;\n }\n\n return (\n <>\n {/* Modal is outside of the empty resume component so it doesn't disappear\n * while the user is adding skills/interests */}\n {!isPublicFacing && (\n <ResumeExperienceEditorModal\n isNewExperience={true}\n show={selectedExperienceType !== null}\n type={selectedExperienceType}\n closeTimelineModal={() => setSelectedExperienceType(null)}\n />\n )}\n {isEmpty ? (\n <div className=\"empty-resume-section\">\n <div className=\"placeholder-title\">\n <FormattedMessage\n id=\"resume\"\n defaultMessage=\"Resume\"\n />\n </div>\n <div className=\"placeholder-instructions\">\n <FormattedMessage\n id=\"resume-placeholder-instructions\"\n defaultMessage=\"To get started, click on the buttons below or the <i>Add Experience</i> button above.\"\n />\n </div>\n <div className=\"empty-resume-suggestions\">\n {experienceTypeData.map(type => (\n <button \n key={type.type} \n className=\"suggestion-button\" \n onClick={() => setSelectedExperienceType(type.type)}\n >\n {type.label}\n </button>\n ))}\n </div>\n </div>\n ) : (\n <div className=\"resume\">\n <ResumeColumns\n userId={userId}\n isPublicFacing={isPublicFacing}\n experiences={experiences}\n skills={skills}\n interests={interests}\n />\n </div>\n )}\n </>\n )\n}\n\nexport default Resume\n","import { createContext } from 'react';\n\nexport const ExperienceEditorContext = createContext(null);","import React, { useContext, useState } from \"react\"\nimport { Dropdown } from \"semantic-ui-react\"\nimport { allowedMonthsNamesEs, allowedMonthsNames, allowedMonths } from \"../careers/AllowedTypes\"\nimport { ExperienceEditorContext } from \"./ExperienceEditorContext\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\n/**\n * A time period component for experiences.\n *\n * @param experience\n * The experience to render and update must be a `ExperienceDates` instance.\n *\n * @return {JSX.Element}\n */\nconst ExperienceDatesInput = ({ label, isSingle, required, allowJustEndDate }) => {\n const {\n experience,\n setLocalExperienceKeyValue,\n toggleExperienceIsCurrent,\n toggleExperienceOnlyHasEndDate,\n } = useContext(ExperienceEditorContext)\n const { formatMessage, locale } = useIntl()\n\n const checkIfCurrent = experience =>\n experience?.endDateMonth === null && experience?.endDateYear === null\n\n const [isCurrentChecked, setIsCurrentChecked] = useState(\n checkIfCurrent(experience)\n )\n\n const checkIfOnlyHasEndDate = experience => \n experience?.startDateMonth === null && experience?.startDateYear === null\n\n const [onlyHasEndDateChecked, setOnlyHasEndDateChecked] = useState(\n checkIfOnlyHasEndDate(experience)\n )\n\n /**\n * Keys that map to internal experience date period.\n *\n * @type {string[]}\n * Key names for dates.\n */\n const dateKeys = [\n \"startDateMonth\",\n \"startDateYear\",\n \"endDateMonth\",\n \"endDateYear\",\n ]\n\n /**\n * Default error messaging for each date.\n *\n * @type {{endDateYear: string, startDateMonth: string, startDateYear: string, endDateMonth: string}}\n */\n const defaultErrors = {\n startDateMonth: <FormattedMessage\n id=\"resume-experience-form-start-date-month-error\"\n defaultMessage=\"The start date month entered is invalid please make sure it occurs before the end date.\"\n />,\n startDateYear: <FormattedMessage\n id=\"resume-experience-form-start-date-year-error\"\n defaultMessage=\"The start date year entered is invalid please make sure it occurs before the end date and is a valid year.\"\n />,\n endDateMonth: <FormattedMessage\n id=\"resume-experience-form-end-date-month-error\"\n defaultMessage=\"The end date month entered is invalid please make sure it occurs after the start date.\"\n />,\n endDateYear: <FormattedMessage\n id=\"resume-experience-form-end-date-year-error\"\n defaultMessage=\"The end date year entered is invalid please make sure it occurs after the start date and is a valid year.\"\n />,\n }\n\n /**\n * Errors that should display for time period.\n */\n\n const [errors, setErrors] = useState({})\n\n /**\n * Current form date options.\n */\n const [dates, setDates] = useState({\n startDateMonth: experience?.startDateMonth ?? \"\",\n startDateYear: experience?.startDateYear ?? \"\",\n endDateMonth: experience?.endDateMonth ?? \"\",\n endDateYear: experience?.endDateYear ?? \"\",\n })\n\n /**\n * Gets the options list for months.\n *\n * @return {JSX.Element[]}\n * Array of month options for a select list.\n */\n const getMonthOptions = () => {\n const options = []\n for (let i = 0; i < 12; i++) {\n options.push({\n key: `${i + 1}`,\n value: `${allowedMonths[i]}`,\n text: locale === 'en-US' ? `${allowedMonthsNames[i]}` : `${allowedMonthsNamesEs[i]}`,\n })\n }\n return options\n }\n\n /**\n * The number of current errors in the time period form.\n *\n * @return {number}\n * The number of errors.\n */\n const errorCount = () => {\n let errorCounter = 0\n dateKeys.forEach(key => {\n if (errors[key]) {\n errorCounter++\n }\n })\n return errorCounter\n }\n\n /**\n * Checks if the error messaging can be cleared, and the experience dates corrected.\n *\n * @param exceptKey\n * Check all values except the key provided.\n */\n const clearErrors = exceptKey => {\n if (errorCount() === 0) {\n return\n }\n dateKeys.forEach(key => {\n try {\n if (dates[key] && key !== exceptKey) {\n // experience.period[key] = dates[key];\n errors[key] = null\n }\n } catch {\n errors[key] = defaultErrors[key]\n }\n })\n setErrors({ ...errors })\n }\n\n /**\n * Changes the start month and applies error messaging if needed.\n *\n * @param event\n * The event.\n */\n const changeStartMonth = month => {\n setDates({ ...dates, startDateMonth: month })\n setLocalExperienceKeyValue(\"startDateMonth\", month)\n try {\n // experience.period.startDateMonth = month;\n if (errors.startDateMonth) {\n errors.startDateMonth = null\n }\n clearErrors(\"startDateMonth\")\n } catch {\n // experience.period.clearStartDateMonth();\n errors.startDateMonth = defaultErrors.startDateMonth\n setErrors({ ...errors })\n }\n }\n\n /**\n * Changes the end month applies error messaging if needed.\n *\n * @param event\n * The event.\n */\n const changeEndMonth = month => {\n setDates({ ...dates, endDateMonth: month })\n setLocalExperienceKeyValue(\"endDateMonth\", month)\n try {\n // experience.period.endDateMonth = month;\n if (errors.endDateMonth) {\n errors.endDateMonth = null\n }\n clearErrors(\"endDateMonth\")\n } catch {\n // experience.period.clearEndDateMonth();\n errors.endDateMonth = defaultErrors.endDateMonth\n setErrors({ ...errors })\n }\n }\n\n /**\n * Changes the start year and applies error messaging if needed.\n *\n * @param event\n * The event.\n */\n const changeStartYear = event => {\n const year = event.target.value\n setDates({ ...dates, startDateYear: year })\n setLocalExperienceKeyValue(\"startDateYear\", year)\n if (year.length < 4) {\n // experience.period.clearStartDateYear();\n return\n }\n try {\n // experience.period.startDateYear = year;\n if (errors.startDateYear) {\n errors.startDateYear = null\n }\n clearErrors(\"startDateYear\")\n } catch {\n // experience.period.clearStartDateYear();\n errors.startDateYear = defaultErrors.startDateYear\n setErrors({ ...errors })\n }\n }\n\n /**\n * Changes the end year and applies error messaging if needed.\n *\n * @param event\n * The event.\n */\n const changeEndYear = event => {\n const year = event.target.value\n dates.endDateYear = year\n setDates({ ...dates })\n setLocalExperienceKeyValue(\"endDateYear\", year)\n if (year.length < 4) {\n // experience.period.clearEndDateYear();\n return\n }\n try {\n // experience.period.endDateYear = year;\n if (errors.endDateYear) {\n errors.endDateYear = null\n }\n clearErrors(\"endDateYear\")\n } catch {\n // experience.period.clearEndDateYear();\n errors.endDateYear = defaultErrors.endDateYear\n setErrors({ ...errors })\n }\n }\n\n const handleSetCurrent = e => {\n if (e.target.checked) {\n setIsCurrentChecked(true)\n setOnlyHasEndDateChecked(false)\n toggleExperienceIsCurrent(true)\n setDates({\n ...dates,\n endDateMonth: \"\",\n endDateYear: \"\",\n })\n } else {\n setIsCurrentChecked(false)\n toggleExperienceIsCurrent(false)\n }\n }\n\n const handleSetOnlyShowEndDate = e => {\n if (e.target.checked) {\n setOnlyHasEndDateChecked(true)\n setIsCurrentChecked(false)\n toggleExperienceOnlyHasEndDate(true)\n setDates({\n ...dates,\n startDateMonth: \"\",\n startDateYear: \"\",\n })\n } else {\n setOnlyHasEndDateChecked(false)\n toggleExperienceOnlyHasEndDate(false)\n }\n }\n\n /**\n * Renders the date errors that currently exist.\n *\n * @return {JSX.Element|null}\n * List of error messaging.\n */\n const getErrors = () => {\n const formErrors = []\n if (errors.startDateMonth) {\n formErrors.push(\n <div key=\"start-month-error\">{errors.startDateMonth}</div>\n )\n }\n if (errors.endDateMonth) {\n formErrors.push(<div key=\"end-month-error\">{errors.endDateMonth}</div>)\n }\n if (errors.startDateYear) {\n formErrors.push(<div key=\"start-year-error\">{errors.startDateYear}</div>)\n }\n if (errors.endDateYear) {\n formErrors.push(<div key=\"end-year-error\">{errors.endDateYear}</div>)\n }\n return formErrors.length > 0 ? (\n <div className=\"message message-error\">{formErrors}</div>\n ) : null\n }\n\n return (\n <>\n <label>\n {label || (\n <FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n /> \n )}\n {required && \"*\"}\n </label>\n\n {!isSingle && (\n <div style={{\n display: \"flex\", \n flexDirection: \"column\", \n justifyContent: \"flex-start\", \n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n columnGap: \"2rem\",\n rowGap: \"0.6rem\",\n marginBottom: \"1rem\",\n }}>\n <div\n className=\"form-element-date-groups\"\n style={{ flexGrow: \"0\" }}\n >\n <input\n className=\"custom-checkbox\"\n style={{ height: \"1.2rem\", width: \"1.2rem\" }}\n type=\"checkbox\"\n checked={isCurrentChecked}\n onChange={handleSetCurrent}\n />\n <span style={{ marginLeft: \".75rem\" }}><FormattedMessage\n id=\"experience-dates-input-currently-ongoing\"\n defaultMessage=\"Currently ongoing\"\n />?</span>\n </div>\n {allowJustEndDate && (\n <div\n className=\"form-element-date-groups\"\n style={{ flexGrow: \"0\" }}\n >\n <input\n className=\"custom-checkbox\"\n style={{ height: \"1.2rem\", width: \"1.2rem\" }}\n type=\"checkbox\"\n checked={onlyHasEndDateChecked}\n onChange={handleSetOnlyShowEndDate}\n />\n <span style={{ marginLeft: \"0.75rem\" }}><FormattedMessage\n id=\"experience-dates-input-display-completion-date-only\"\n defaultMessage=\"Display completion date only\"\n />?</span>\n </div>\n )}\n </div>\n )}\n\n <div className=\"form-element form-element-date\">\n <div className=\"form-element-date-groups\">\n {!isSingle && !onlyHasEndDateChecked && (\n <>\n <Dropdown\n fluid\n selection\n clearable\n icon=\"chevron down\"\n options={getMonthOptions()}\n onChange={(e, d) => changeStartMonth(d.value)}\n className=\"ais-MenuSelect\"\n placeholder={formatMessage({ id: \"experience-dates-input-month\", defaultMessage: \"Month\" })}\n style={{ minWidth: \"10em\" }}\n value={dates.startDateMonth}\n />\n <input\n onChange={changeStartYear}\n value={dates.startDateYear ?? \"\"}\n type=\"text\"\n placeholder={formatMessage({ id: \"experience-dates-input-year\", defaultMessage: \"Year\" })}\n />\n </>\n )}\n\n {!isCurrentChecked && !isSingle && !onlyHasEndDateChecked && (\n <span className=\"label\">\n <FormattedMessage\n id=\"experience-dates-input-to\"\n defaultMessage=\"to\"\n />\n </span>\n )}\n\n {(!isCurrentChecked || isSingle) && (\n <>\n <Dropdown\n fluid\n selection\n clearable\n icon=\"chevron down\"\n options={getMonthOptions()}\n onChange={(e, d) => changeEndMonth(d.value)}\n className=\"ais-MenuSelect\"\n placeholder={formatMessage({id: \"experience-dates-input-month\", defaultMessage: \"Month\"})}\n style={{ minWidth: \"10em\" }}\n value={dates.endDateMonth}\n />\n <input\n onChange={changeEndYear}\n value={dates.endDateYear ?? \"\"}\n type=\"text\"\n placeholder={formatMessage({ id: \"experience-dates-input-year\", defaultMessage: \"Year\" })}\n />\n </>\n )}\n\n {getErrors()}\n </div>\n </div>\n </>\n )\n}\n\nexport default ExperienceDatesInput\n","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'ul' : _ref$as,\n onSelect = _ref.onSelect,\n activeKey = _ref.activeKey,\n role = _ref.role,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n var forceUpdate = useForceUpdate();\n var needsRefocusRef = useRef(false);\n var parentOnSelect = useContext(SelectableContext);\n var tabContext = useContext(TabContext);\n var getControlledId, getControllerId;\n\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n\n var listNode = useRef(null);\n\n var getNextActiveChild = function getNextActiveChild(offset) {\n var currentListNode = listNode.current;\n if (!currentListNode) return null;\n var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = currentListNode.querySelector('.active');\n if (!activeChild) return null;\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n var handleSelect = function handleSelect(key, event) {\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset.rbEventKey, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n\n useEffect(function () {\n if (listNode.current && needsRefocusRef.current) {\n var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n }\n\n needsRefocusRef.current = false;\n });\n var mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n value: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))));\n});\nexport default AbstractNav;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: undefined,\n active: false,\n disabled: false\n};\nvar ListGroupItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n active = _ref.active,\n disabled = _ref.disabled,\n className = _ref.className,\n variant = _ref.variant,\n action = _ref.action,\n as = _ref.as,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'list-group-item');\n var handleClick = useCallback(function (event) {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (onClick) onClick(event);\n }, [disabled, onClick]);\n\n if (disabled && props.tabIndex === undefined) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({\n ref: ref\n }, props, {\n // eslint-disable-next-line no-nested-ternary\n as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n onClick: handleClick,\n className: classNames(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\")\n }));\n});\nListGroupItem.defaultProps = defaultProps;\nListGroupItem.displayName = 'ListGroupItem';\nexport default ListGroupItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"variant\", \"horizontal\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport warning from 'warning';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractNav from './AbstractNav';\nimport ListGroupItem from './ListGroupItem';\nvar defaultProps = {\n variant: undefined,\n horizontal: undefined\n};\nvar ListGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n activeKey: 'onSelect'\n }),\n className = _useUncontrolled.className,\n initialBsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n horizontal = _useUncontrolled.horizontal,\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'list-group');\n var horizontalVariant;\n\n if (horizontal) {\n horizontalVariant = horizontal === true ? 'horizontal' : \"horizontal-\" + horizontal;\n } else {\n horizontalVariant = null;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(!(horizontal && variant === 'flush'), '`variant=\"flush\"` and `horizontal` should not be used together.') : void 0;\n return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n ref: ref\n }, controlledProps, {\n as: as,\n className: classNames(className, bsPrefix, variant && bsPrefix + \"-\" + variant, horizontalVariant && bsPrefix + \"-\" + horizontalVariant)\n }));\n});\nListGroup.defaultProps = defaultProps;\nListGroup.displayName = 'ListGroup';\nListGroup.Item = ListGroupItem;\nexport default ListGroup;","import React, { useState, useContext } from \"react\"; \nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport { sendStandardToast } from \"../../toasts/standard-toast\"\nimport { FormattedMessage } from \"react-intl\"\nimport { faMagic } from \"@fortawesome/pro-solid-svg-icons\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"; \nimport { OverlayTrigger, Tooltip, Modal, ListGroup } from \"react-bootstrap\"; \nimport { FirebaseContext } from \"../../Firebase\"\nimport './optimizer-button.css'\n\n\nexport default function OptimizerButton({ type, text, updateData }) {\n const [showModal, setShowModal] = useState(false)\n const [optimizedBullets, setOptimizedBullets] = useState([])\n const [isLoading, setIsLoading] = useState(false)\n const { firebase } = useContext(FirebaseContext)\n\n const fetchOptimizedText = async (text, e) => {\n\n e.stopPropagation()\n\n if (!text || text.trim() === \"\" || text.length < 5) {\n sendStandardToast({\n message: (\n <>\n <div>Please ensure text is at least 20 characters long</div>\n </>\n ),\n heading: <FormattedMessage id=\"resume-text-optimizer-modal-message-requirement\" defaultMessage=\"AI Optimizer\" />,\n })\n\n return\n }\n\n\n setIsLoading(true)\n\n try {\n const response = await firebase.optimizeText(text, type)\n const optimized = response.optimized\n setOptimizedBullets(optimized)\n setShowModal(true)\n } catch (error) {\n console.error(\"Error fetching optimized bullets:\", error)\n }\n setIsLoading(false) // End loading\n }\n\n const renderTooltip = (props) => (\n <Tooltip id=\"button-tooltip\" {...props} >\n <FormattedMessage id=\"resume-use-ai-to-optimize-bullet\" defaultMessage=\"Use AI to optimize your bullet\" />\n </Tooltip>\n )\n\n const selectBullet = (bullet) => {\n setShowModal(false)\n updateData({ target: { value: bullet } })\n }\n return (\n <div className='resume-optimizer'>\n <OverlayTrigger placement=\"top\" overlay={renderTooltip}>\n <button\n onClick={!isLoading ? (e) => fetchOptimizedText(text, e) : null}\n className='optimizer-button'\n style={{pointerEvents: isLoading ? \"none\" : \"auto\"}}\n >\n {isLoading ? (\n <FontAwesomeIcon icon={faSpinner} spin size=\"1x\" color=\"#75C6D8\" />\n ) : (\n <FontAwesomeIcon icon={faMagic} size=\"1x\" color=\"#75C6D8\" />\n )}\n </button>\n </OverlayTrigger>\n <Modal show={showModal} onHide={() => setShowModal(false)} backdrop={false} className=\"optimizer-modal\">\n <div style={{ boxShadow: \"10px 10px 20px rgba(0, 0, 0, 0.5)\" }}>\n <Modal.Header closeButton>\n <Modal.Title style={{ margin: 0 }}>\n <div style={{ display: \"flex\", marginBotton: \"1rem\" }}>\n <FontAwesomeIcon icon={faMagic} color=\"#75C6D8\" />\n <h4 style={{ margin: 0, marginLeft: \"1rem\" }}>\n <b>\n <FormattedMessage id=\"resume-optimizer-choose-option\" defaultMessage=\"Choose an Option\" />\n </b>\n </h4>\n </div>\n <p style={{ margin: 0, fontSize: \"1rem\" }}>\n <FormattedMessage id=\"resume-use-ai-to-optimize-text\" defaultMessage=\"Use AI to optimize your text.\" /> \n </p>\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <ListGroup>\n {optimizedBullets.map((bullet, idx) => (\n <ListGroup.Item key={idx} action onClick={() => selectBullet(bullet)} style={{ border: \"2px solid #72e1f9\", marginTop: \"1rem\", fontSize: \"1rem\",}}>\n {bullet}\n </ListGroup.Item>\n ))}\n </ListGroup>\n </Modal.Body>\n </div>\n </Modal>\n </div>\n )\n}\n","import React, { useContext, useState } from \"react\"\nimport { ExperienceEditorContext } from \"./ExperienceEditorContext\"\nimport OptimizerButton from \"./optimizer/optimizer-button\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\"\n\n\n/**\n * Provides free form input component for experience data.\n *\n * @param experience\n * The experience, must implement the `dataKey` passed.\n * @param label\n * The label of the text field.\n * @param dataKey\n * The object property to map to the input value.\n * @param inputType\n * If the input is a text area or text input.\n * @param required\n * If input should display asterisk or block submission\n *\n * @return {JSX.Element}\n */\nconst ExperienceTextInput = ({ label, dataKey, placeholder, inputType, required }) => {\n const { experience = {}, setLocalExperienceKeyValue } = useContext(ExperienceEditorContext)\n\n /**\n * The current value of the input.\n */\n const [textValue, setTextValue] = useState(experience[dataKey])\n\n /**\n * Handler for the input to update the experience.\n *\n * @param event\n */\n const updateData = (event) => {\n const value = event.target.value\n setTextValue(value)\n setLocalExperienceKeyValue(dataKey, value)\n }\n\n return (\n <>\n <label>\n {label} {required && \"*\"}\n </label>\n <div className=\"form-element\" style={{ flexFlow: \"unset\" }}>\n {inputType === \"textarea\" ? (\n <div style={{ display: \"flex\", width: \"100%\" }}>\n <textarea placeholder={placeholder} value={textValue ?? \"\"} cols=\"5\" rows={dataKey === \"description\" && \"3\"} onChange={updateData} />\n <OptimizerButton type=\"description\" text={textValue} updateData={updateData} />\n <button\n style={{\n backgroundColor: \"white\",\n paddingRight: \"0px\",\n paddingLeft: \"0px\",\n }}\n disabled={true}\n >\n <FontAwesomeIcon icon={faTimes} size=\"1x\" color=\"white\" />\n </button>\n </div>\n ) : (\n <input type=\"text\" placeholder={placeholder} value={textValue ?? \"\"} onChange={updateData} required={required} />\n )}\n </div>\n </>\n )\n}\n\nexport default ExperienceTextInput\n","import React, { useContext } from \"react\"\nimport { ExperienceEditorContext } from \"./ExperienceEditorContext\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\"\nimport OptimizerButton from \"./optimizer/optimizer-button\"\n\nconst ExperienceBulletInput = ({ highlight, index, placeholder }) => {\n const { dispatchHighlightAction } = useContext(ExperienceEditorContext)\n \n const updateData = (event) => {\n const value = event.target.value\n dispatchHighlightAction(\"UPDATE_INPUT_VALUE\", value, index)\n }\n\n const removeInput = (event) => {\n event.preventDefault()\n dispatchHighlightAction(\"DELETE_INPUT_FIELD\", null, index)\n }\n\n return (\n <>\n <div className=\"form-element\" style={{ flexFlow: \"unset\", marginBottom: \"1rem\" }}>\n <textarea type=\"text\" value={highlight ?? \"\"} placeholder={placeholder ?? \"\"} onChange={updateData} rows={1} />\n <OptimizerButton type='bullet' text={highlight ?? \"\"} updateData={updateData}/>\n <button\n onClick={removeInput}\n style={{\n backgroundColor: \"white\",\n paddingRight: \"0px\",\n paddingLeft: \"0px\",\n }}\n >\n <FontAwesomeIcon icon={faTimes} size=\"1x\" color=\"#363636\" />\n </button>\n </div>\n </>\n )\n}\n\nexport default ExperienceBulletInput\n","import React, { useEffect, useContext } from \"react\"\nimport ExperienceBulletInput from \"./experience-bullet-input\"\nimport { ExperienceEditorContext } from \"./ExperienceEditorContext\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faPlusCircle } from \"@fortawesome/free-solid-svg-icons\"\n\nconst ExperienceBulletsInput = ({ label, placeholders }) => {\n const {\n experience,\n dispatchHighlightAction,\n } = useContext(ExperienceEditorContext)\n\n const addExtraField = e => {\n e.preventDefault()\n dispatchHighlightAction(\"CREATE_INPUT_FIELD\")\n }\n\n useEffect(() => {\n dispatchHighlightAction(\"INITIALIZE_EMPTY_FIELDS\")\n }, [])\n\n return (\n <>\n <label>{label}</label>\n {(experience?.highlights || []).map((highlight, index) => (\n <ExperienceBulletInput\n key={index}\n highlight={highlight}\n index={index}\n placeholder={placeholders[index]}\n />\n ))}\n <button onClick={e => addExtraField(e)} style={{backgroundColor: 'white', paddingLeft: '8px'}}>\n <FontAwesomeIcon icon={faPlusCircle} size=\"lg\" color=\"#40777c\" />\n </button>\n </>\n )\n}\n\nexport default ExperienceBulletsInput\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport ExperienceBulletsInput from \"./experience-bullets-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\n/**\n * Component renders experience form inputs.\n *\n */\nconst ExperienceInputWork = ({ type }) => {\n const { formatMessage } = useIntl()\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-form-title-placeholder', defaultMessage: \"Ex. Engineer in Thermophysics Group\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-title\"\n defaultMessage=\"Title\"\n />}\n dataKey=\"title\"\n required={true}\n type={type}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-form-employer-placeholder', defaultMessage: \"Ex. The Boeing Co.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-employer\"\n defaultMessage=\"Employer\"\n />}\n dataKey=\"employer\"\n required={true}\n type={type}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={true}\n isSingle={false}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-form-location-placeholder', defaultMessage: \"Ex. Los Angeles\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-location\"\n defaultMessage=\"Location\"\n />}\n dataKey=\"location\"\n required={true}\n type={type}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-form-description-placeholder', defaultMessage: \"Ex. Designed satellites to make sure they could endure the extreme temperatures in space.\" })}\n\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n type={type}\n />\n <ExperienceBulletsInput\n label={<FormattedMessage\n id=\"resume-experience-form-bullet-points\"\n defaultMessage=\"Bullet Points\"\n />}\n dataKey=\"highlights\"\n type={type}\n placeholders={[\n formatMessage({ id: 'resume-experience-form-highlights-placeholder-1', defaultMessage: \"Ex. Analyzed spacecraft components for conditions in space.\" }),\n formatMessage({ id: 'resume-experience-form-highlights-placeholder-2', defaultMessage: \"Ex. Worked on research and development in thermal transport technology.\" })\n ]}\n />\n </>\n )\n}\n\nexport default ExperienceInputWork\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport ExperienceBulletsInput from \"./experience-bullets-input\"\n\nconst ExperienceInputEducation = ({ type }) => {\n const { formatMessage } = useIntl()\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-education-form-school-placeholder', defaultMessage: \"Ex. Barnard College\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-school\"\n defaultMessage=\"School\"\n />}\n dataKey=\"school\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-education-form-degree-placeholder', defaultMessage: \"Ex. Bachelors\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-degree\"\n defaultMessage=\"Degree\"\n />}\n dataKey=\"degree\"\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-education-form-field-of-study-placeholder', defaultMessage: \"Ex. English, with a concentration in creative writing\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-field-of-study\"\n defaultMessage=\"Field of study\"\n />}\n required={true}\n dataKey=\"field\"\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-education-form-location-placeholder', defaultMessage: \"Ex. New York City\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-location\"\n defaultMessage=\"Location\"\n />}\n dataKey=\"location\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={false}\n isSingle={false}\n allowJustEndDate={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-education-form-description-placeholder', defaultMessage: \"Ex. Enrolled in 5-year, 3-2 program (2 degrees in 5 years, one in the humanities and one in engineering)\" })}\n\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n />\n <ExperienceBulletsInput\n label=\"Activities\"\n dataKey=\"highlights\"\n placeholders={[\n formatMessage({ id: 'resume-experience-education-form-activities-placeholder-1', defaultMessage: \"Ex. President of the student government class.\" }),\n formatMessage({ id: 'resume-experience-education-form-activities-placeholder-2', defaultMessage: \"Ex. Writer for the Columbia Spectator newspaper.\" }),\n ]}\n />\n </>\n )\n}\n\nexport default ExperienceInputEducation\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport ExperienceBulletsInput from \"./experience-bullets-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputVolunteer = ({ type }) => {\n const { formatMessage } = useIntl()\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-volunteer-form-title-placeholder', defaultMessage: \"Ex. Big Sister\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-title\"\n defaultMessage=\"Title\"\n />}\n dataKey=\"title\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-volunteer-form-employer-placeholder', defaultMessage: \"Ex. Big Brothers and Big Sisters\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-employer\"\n defaultMessage=\"Employer\"\n />}\n dataKey=\"employer\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={true}\n isSingle={false}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-form-location-placeholder', defaultMessage: \"Ex. Los Angeles\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-location\"\n defaultMessage=\"Location\"\n />}\n dataKey=\"location\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-volunteer-form-description-placeholder', defaultMessage: \"Ex. Mentored Sadie from 9th-11th grade.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n />\n <ExperienceBulletsInput\n label={<FormattedMessage\n id=\"resume-experience-form-bullet-points\"\n defaultMessage=\"Bullet Points\"\n />}\n dataKey=\"highlights\"\n placeholders={[\n formatMessage({ id: 'resume-experience-volunteer-form-highlights-placeholder-1', defaultMessage: \"Ex. Once a month, took Sadie out to lunch.\" }),\n formatMessage({ id: 'resume-experience-volunteer-form-highlights-placeholder-2', defaultMessage: \"Ex. Helped Sadie get her first job.\" })\n ]}\n />\n </>\n )\n}\n\nexport default ExperienceInputVolunteer\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputLife = ({ type }) => {\n const { formatMessage } = useIntl()\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-life-form-milestone-placeholder', defaultMessage: \"Ex. Moved to a new city\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-milestone\"\n defaultMessage=\"Milestone\"\n />}\n dataKey=\"milestone\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={true}\n isSingle={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-life-form-description-placeholder', defaultMessage: \"Ex. I have always dreamed of returning to New York City so I packed my bags and set out on a new adventure.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n required={true}\n inputType=\"textarea\"\n />\n </>\n )\n}\n\nexport default ExperienceInputLife\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputAward = ({ type }) => {\n const { formatMessage } = useIntl()\n\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-awards-form-title-placeholder', defaultMessage: \"Ex. NSF GK-12 Fellowship\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-title\"\n defaultMessage=\"Title\"\n />}\n dataKey=\"title\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-awards-form-associatedOrg-placeholder', defaultMessage: \"Ex. Brown University\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-associated-with\"\n defaultMessage=\"Associated With\"\n />}\n dataKey=\"associatedOrg\"\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-awards-form-issuer-placeholder', defaultMessage: \"Ex. National Science Foundation\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-Issuer\"\n defaultMessage=\"Issuer\"\n />}\n dataKey=\"issuer\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={true}\n isSingle={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-awards-form-description-placeholder', defaultMessage: \"Ex. This program provided full graduate student funding for two years. In addition to research, I taught 7th-grade science at Nathan Bishop Middle School in Providence, RI.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n />\n </>\n )\n}\n\nexport default ExperienceInputAward\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport ExperienceBulletsInput from \"./experience-bullets-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputLeadership = ({ type }) => {\n const { formatMessage } = useIntl()\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-leadership-form-title-placeholder', defaultMessage: \"Ex. President of Student Government\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-title\"\n defaultMessage=\"Title\"\n />}\n dataKey=\"title\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-leadership-form-affiliation-placeholder', defaultMessage: \"Ex. Hope High School\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-affiliation\"\n defaultMessage=\"Affiliation\"\n />}\n dataKey=\"affiliation\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-time-period\"\n defaultMessage=\"Time Period\"\n />}\n dataKey=\"timePeriod\"\n required={true}\n isSingle={false}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-leadership-form-location-placeholder', defaultMessage: \"Ex. Providence, RI\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-location\"\n defaultMessage=\"Location\"\n />}\n dataKey=\"location\"\n required={true}\n type={type}\n />\n <ExperienceBulletsInput\n label={<FormattedMessage\n id=\"resume-experience-form-bullet-points\"\n defaultMessage=\"Bullet Points\"\n />}\n dataKey=\"highlights\"\n type={type}\n placeholders={[\n formatMessage({ id: 'resume-experience-leadership-form-highlights-placeholder-1', defaultMessage: \"Ex. Addressed concerns projected by the class including the cost of room and board.\" }),\n formatMessage({ id: 'resume-experience-leadership-form-highlights-placeholder-2', defaultMessage: \"Ex. Started a recycling program.\" })\n ]}\n />\n </>\n )\n}\n\nexport default ExperienceInputLeadership\n","import React from \"react\"\nimport ExperienceDatesInput from \"./experience-dates-input\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputCertificate = ({ type }) => {\n const { formatMessage } = useIntl()\n\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-certificate-form-title-placeholder', defaultMessage: \"Ex: CompTIA Security+\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-name\"\n defaultMessage=\"Name\"\n />}\n dataKey=\"title\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-certificate-form-issuer-placeholder', defaultMessage: \"Ex. Computing Technology Industry Association\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-issuing-organization\"\n defaultMessage=\"Issuing Organization\"\n />}\n dataKey=\"issuer\"\n required={true}\n />\n <ExperienceDatesInput\n label={<FormattedMessage\n id=\"resume-experience-form-issue-date\"\n defaultMessage=\"Issue Date\"\n />}\n dataKey=\"timePeriod\"\n isSingle={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-certificate-form-description-placeholder', defaultMessage: \"Ex. Trained to analyze attack vectors, install and configure network and cloud security technologies, and implement public key infrastructure.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n />\n </>\n )\n}\n\nexport default ExperienceInputCertificate\n","import React from \"react\"\nimport ExperienceTextInput from \"./experience-text-input\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\n\nconst ExperienceInputCoursework = ({ type }) => {\n const { formatMessage } = useIntl()\n\n return (\n <>\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-coursework-form-title-placeholder', defaultMessage: \"Ex. Advanced Shielded Metal Arc Welding\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-course-title\"\n defaultMessage=\"Course Title\"\n />}\n dataKey=\"title\"\n required={true}\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-coursework-form-school-placeholder', defaultMessage: \"Ex. New England Institute of Technology\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-associated-organization\"\n defaultMessage=\"Associated Organization\"\n />}\n dataKey=\"school\"\n />\n <ExperienceTextInput\n placeholder={formatMessage({ id: 'resume-experience-coursework-form-description-placeholder', defaultMessage: \"Ex. Performed advanced study of SMAW, focusing on code compliant weldments and 7018 fill and cover passes for 100 percent weld in positions 1G, 2G, 3G and 4G.\" })}\n label={<FormattedMessage\n id=\"resume-experience-form-description\"\n defaultMessage=\"Description\"\n />}\n dataKey=\"description\"\n inputType=\"textarea\"\n />\n </>\n )\n}\n\nexport default ExperienceInputCoursework\n","import React from \"react\"\nimport ExperienceInputWork from \"./experience-input-work\"\nimport ExperienceInputEducation from \"./experience-input-education\"\nimport ExperienceInputVolunteer from \"./experience-input-volunteer\"\nimport ExperienceInputLife from \"./experience-input-life\"\nimport ExperienceInputAward from \"./experience-input-award\"\nimport ExperienceInputLeadership from \"./experience-input-leadership\"\nimport ExperienceInputCertificate from \"./experience-input-certificate\"\nimport ExperienceInputCoursework from \"./experience-input-coursework\"\n\nconst ExperienceInput = ({ type }) => {\n switch (type) {\n case \"work\":\n return <ExperienceInputWork type={type} />\n case \"education\":\n return <ExperienceInputEducation type={type} />\n case \"volunteer\":\n return <ExperienceInputVolunteer type={type} />\n case \"life\":\n return <ExperienceInputLife type={type} />\n case \"leadership\":\n return <ExperienceInputLeadership type={type} />\n case \"award\":\n return <ExperienceInputAward type={type} />\n case \"certificate\":\n return <ExperienceInputCertificate type={type} />\n case \"coursework\":\n return <ExperienceInputCoursework type={type} />\n default:\n return null\n }\n}\n\nexport default ExperienceInput\n","export const allRequiredFields = {\n work: [\n {\n key: \"title\",\n label: \"Title\",\n },\n {\n key: \"employer\",\n label: \"Employer\",\n },\n {\n key: \"location\",\n label: \"Location\",\n },\n {\n key: \"startDateMonth\",\n label: \"Start Month\",\n },\n {\n key: \"startDateYear\",\n label: \"Start Year\",\n },\n {\n key: \"endDateMonth\",\n label: \"End Month\",\n },\n {\n key: \"endDateYear\",\n label: \"End Year\",\n },\n ],\n education: [\n {\n key: \"school\",\n label: \"School\",\n },\n {\n key: \"location\",\n label: \"Location\",\n },\n {\n key: \"field\",\n label: \"Field of Study\",\n },\n ],\n volunteer: [\n {\n key: \"title\",\n label: \"Title\",\n },\n {\n key: \"employer\",\n label: \"Employer\",\n },\n {\n key: \"startDateMonth\",\n label: \"Start Month\",\n },\n {\n key: \"startDateYear\",\n label: \"Start Year\",\n },\n {\n key: \"endDateMonth\",\n label: \"End Month\",\n },\n {\n key: \"endDateYear\",\n label: \"End Year\",\n },\n {\n key: \"location\",\n label: \"Location\",\n },\n ],\n leadership: [\n {\n key: \"title\",\n label: \"Title\",\n },\n {\n key: \"affiliation\",\n label: \"Affiliation\",\n },\n {\n key: \"startDateMonth\",\n label: \"Start Month\",\n },\n {\n key: \"startDateYear\",\n label: \"Start Year\",\n },\n {\n key: \"endDateMonth\",\n label: \"End Month\",\n },\n {\n key: \"endDateYear\",\n label: \"End Year\",\n },\n {\n key: \"location\",\n label: \"Location\",\n },\n ],\n award: [\n {\n key: \"title\",\n label: \"Title\",\n },\n {\n key: \"issuer\",\n label: \"Issuer\",\n },\n {\n key: \"endDateMonth\",\n label: \"End Month\",\n },\n {\n key: \"endDateYear\",\n label: \"End Year\",\n },\n ],\n life: [\n {\n key: \"milestone\",\n label: \"Milestone\",\n },\n {\n key: \"description\",\n label: \"Description\",\n },\n {\n key: \"endDateMonth\",\n label: \"End Month\",\n },\n {\n key: \"endDateYear\",\n label: \"End Year\",\n },\n ],\n certificate: [\n {\n key: \"title\",\n label: \"Name\",\n },\n {\n key: \"issuer\",\n label: \"Issuing Organization\",\n },\n ],\n coursework: [\n {\n key: \"title\",\n label: \"Course Title\",\n },\n ],\n}\n\n/**\n * Checks that an inputted start and end date are properly formatted:\n * - if a start/end date was inputted, it must have both a month and year\n * - years must be 4 digits long\n * - dates must be in the past\n * - if both a start and end date were inputted, the end date must be after the start date\n * @returns {string} an error message if the dates are invalid, or \"\" if the dates are valid\n */\nconst verifyDates = (startMonth, startYear, endMonth, endYear) => {\n if ((startMonth && !startYear) || (!startMonth && startYear)\n || (endMonth && !endYear) || (!endMonth && endYear)) {\n return \"Dates must include both a month and a year\\n\"\n }\n\n for (const year of [startYear, endYear]) {\n if (year && !/^(19|20)\\d{2}$/.test(year)) {\n return \"Years must be formatted (YYYY)\\n\"\n }\n }\n\n let startDate = undefined\n if (startMonth && startYear) {\n startDate = new Date(startYear, startMonth)\n if (Math.sign(startDate - Date.now()) === 1) {\n return \"Start Date must be in the past\\n\"\n }\n } \n\n let endDate = undefined\n if (endMonth && endYear) {\n endDate = new Date(endYear, endMonth)\n if (Math.sign(endDate - Date.now()) === 1) {\n return \"End Date must be in the past\\n\"\n }\n }\n\n if (startDate && endDate && (Math.sign(endDate - startDate) === -1)) {\n return \"End Date must be after Start Date\\n\"\n }\n\n return \"\"\n}\n\nexport const checkRequiredFields = (experience, type) => {\n let errors = []\n let requiredFields = allRequiredFields[type] || []\n\n // required fields for each type of experience\n requiredFields.forEach(({ key, label }) => {\n // users entry from form field\n const userEntry = experience[key]\n\n if (userEntry === undefined || userEntry?.length === 0) {\n errors.push(`${label}\\n`)\n }\n })\n\n // Verify any dates\n const dateError = verifyDates(experience.startDateMonth, experience.startDateYear, experience.endDateMonth, experience.endDateYear)\n if (dateError !== \"\") {\n errors.push(dateError)\n }\n\n if (errors.length > 0) {\n return errors\n } else {\n return false\n }\n}\n","import React, { useContext, useState } from \"react\"\nimport { Dropdown } from \"semantic-ui-react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport \"semantic-ui-css/components/dropdown.min.css\"\nimport \"semantic-ui-css/components/search.min.css\"\nimport \"semantic-ui-css/components/transition.min.css\"\nimport \"semantic-ui-css/components/label.min.css\"\nimport \"semantic-ui-css/components/icon.min.css\"\nimport { FormattedMessage, useIntl } from \"react-intl\"\nimport ResumeList from \"../resume/ResumeList\"\nimport { \n defaultSkillOptions, \n defaultSkillOptionsEs,\n defaultInterestOptions,\n defaultInterestOptionsEs,\n} from \"./utils/skillAndInterestDefaultOptions.js\"\nimport \"./SkillsInterestsEditor.css\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\"\n\n/**\n * Button that can be disabled. Displays a loading spinner while the onClick\n * function is running\n * \n * TODO: this could be updated and made reusable for other components\n */\nconst ConditionalButton = ({isDisabled, onClick, label}) => {\n const [loading, setLoading] = useState(false)\n \n const handleClick = async () => {\n setLoading(true)\n await onClick()\n setLoading(false)\n }\n\n return (\n <button \n className={`conditional-button ${isDisabled ? \"disabled\" : \"enabled\"}`}\n onClick={isDisabled ? () => null : handleClick} \n aria-disabled={isDisabled}\n >\n {loading ? (\n <FontAwesomeIcon icon={faSpinner} spin size=\"lg\" />\n ) : (\n label\n )}\n </button>\n )\n}\n\n/**\n * The body of the skills and interests editor modals\n */\nconst SkillsInterestsEditor = ({currentItems = [], type}) => {\n const maxCharacterCount = 40\n const { locale, formatMessage } = useIntl()\n const { firebase, notifier } = useContext(FirebaseContext)\n const [options, setOptions] = useState(\n (type === \"skills\" && locale === \"en-US\") ? defaultSkillOptions :\n (type === \"skills\" && locale === \"es-ES\") ? defaultSkillOptionsEs :\n (type === \"interests\" && locale === \"en-US\") ? defaultInterestOptions :\n (type === \"interests\" && locale === \"es-ES\") ? defaultInterestOptionsEs :\n []\n )\n const [newItem, setNewItem] = useState(\"\")\n\n const handleKeyDown = e => {\n const regex = new RegExp(\"^[\\\\w\\\\[\\\\] `~!@#$%^?.,&*()={}:;<>+'\\\"-]{1}$\")\n if (e.target.value.length >= maxCharacterCount && regex.test(e.key)) {\n e.preventDefault()\n } else if (regex.test(e.key)) {\n setNewItem(e.target.value + e.key)\n } else if (e.key === \"Backspace\" && e.target.value.length === 1) {\n setNewItem(\"\")\n }\n }\n\n const handleChange = (e, { value }) => {\n setNewItem(value)\n }\n\n const handleAddition = async (e, { value }) => {\n const key = value.toLowerCase().replace(/ /g, \"_\")\n //item needs to be added to the default options for it to stick\n setOptions(options => [...options, { key: key + \"_custom\", value: value, text: value }])\n setNewItem(value)\n }\n\n const handleAddItem = async () => {\n if (newItem === \"\") {\n return;\n }\n\n const newItemString = newItem.trim()\n\n if (!currentItems.includes(newItemString)) {\n await firebase.updateProfile({\n data: {[type]: [...currentItems, newItem]}\n })\n if (type === \"skills\") {\n await notifier.handleSkillSetting()\n } else if (type === \"interests\") {\n await notifier.handleInterestSetting()\n }\n }\n\n setNewItem(\"\")\n }\n\n return (\n <div className=\"resume-editor-skills-interests\">\n <label>\n <FormattedMessage \n id={`skills-interests-modal-add-${type}`} \n defaultMessage={`Add ${type.substring(0, type.length - 1)}`}\n />\n </label>\n <div className=\"skill-interest-add-box\">\n <Dropdown\n className=\"multiple skill-interest-dropdown\"\n options={options}\n value={newItem}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onAddItem={handleAddition}\n placeholder={newItem || formatMessage({\n id: `skills-interests-modal-search-${type}`,\n defaultMessage: `Search ${type}`\n })}\n selectOnBlur={false}\n fluid\n search\n selection\n allowAdditions\n additionLabel=\"\"\n upward={false}\n renderLabel={label => ({\n className: \"custom-portfolio-skills-label\",\n content: label.text,\n })}\n />\n <ConditionalButton\n label={(\n <FormattedMessage \n id={`skills-interests-modal-add-${type}`} \n defaultMessage={`Add ${type.substring(0, type.length - 1)}`}\n />\n )}\n onClick={handleAddItem}\n isDisabled={newItem === \"\"}\n />\n </div>\n {currentItems.length > 0 && (\n <>\n <label>\n <FormattedMessage \n id={`skills-interests-modal-delete-reorder-${type}`} \n defaultMessage={`Delete/Reorder ${type}`}\n />\n </label>\n <div className=\"saved-skills-interests-container\">\n <ResumeList type={type} items={currentItems} isPublicFacing={false}/>\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default SkillsInterestsEditor\n","import Modal from \"react-bootstrap/Modal\"\nimport React, { useContext, useState, useEffect } from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport ExperienceInput from \"./experience-input\"\nimport { ExperienceEditorContext } from \"./ExperienceEditorContext\"\nimport { checkRequiredFields } from \"./utils/CheckRequiredFields\"\nimport { FormattedMessage } from \"react-intl\"\nimport { sendStandardToast } from \"../toasts/standard-toast\"\nimport SubmitButton from \"../portfolio/SubmitButton\"\nimport SkillsInterestsEditor from \"./SkillsInterestsEditor\"\nimport { getExperienceAbbreviatedLabel, getExperienceInstructions, experienceTypes } from \"./utils/experienceTypes\"\n\nconst ResumeExperienceEditorModal = ({ experienceData, isNewExperience, show, closeTimelineModal, type }) => {\n const { firebase, notifier, profile } = useContext(FirebaseContext)\n\n /**\n *\n * State for all form data across every type of resume experience\n *\n */\n const [experience, setExperience] = useState({})\n const [isOptimizerModalOpen, setIsOptimizerModalOpen] = useState(false)\n\n useEffect(() => {\n let updatedExperienceData = {}\n if (experienceData) {\n Object.assign(updatedExperienceData, experienceData)\n }\n if (isNewExperience && type) {\n updatedExperienceData.type = type\n }\n setExperience(experience => ({...experience, ...updatedExperienceData}))\n }, [experienceData, isNewExperience, type])\n\n if (!experienceTypes.includes(type)) {\n return null\n }\n\n const setLocalExperienceKeyValue = (key, value) => {\n setExperience({\n ...experience,\n [key]: value,\n })\n }\n\n const dispatchHighlightAction = (type, payload, index) => {\n let highlightsCopy = experience.highlights ? [...(experience.highlights)] : []\n\n switch (type) {\n case \"INITIALIZE_EMPTY_FIELDS\":\n if (highlightsCopy.length === 0) {\n highlightsCopy = Array(3).fill(\"\")\n }\n break\n case \"UPDATE_INPUT_VALUE\":\n highlightsCopy[index] = payload\n break\n case \"DELETE_INPUT_FIELD\":\n highlightsCopy.splice(index, 1)\n break\n case \"CREATE_INPUT_FIELD\":\n highlightsCopy.push(\"\")\n break\n default:\n break\n }\n setExperience(oldData => ({\n ...oldData,\n highlights: highlightsCopy,\n }))\n }\n\n const toggleExperienceIsCurrent = (status) => {\n if (status) {\n setExperience({\n ...experience,\n endDateMonth: null,\n endDateYear: null,\n })\n } else {\n setExperience({\n ...experience,\n endDateMonth: \"\",\n endDateYear: \"\",\n })\n }\n }\n\n const toggleExperienceOnlyHasEndDate = (status) => {\n if (status) {\n setExperience({\n ...experience,\n startDateMonth: null,\n startDateYear: null,\n })\n } else {\n setExperience({\n ...experience,\n startDateMonth: \"\",\n startDateYear: \"\",\n })\n }\n }\n\n const handleCreateResumeExperience = async (experienceData) => {\n const errors = checkRequiredFields(experience, type)\n if (errors) {\n sendStandardToast({\n message: (\n <>\n {errors.map((error) => (\n <div>{error}</div>\n ))}\n </>\n ),\n heading: <FormattedMessage id=\"resume-experience-editor-modal-submission-required-foll\" defaultMessage=\"Submission requires the following\" />,\n })\n return\n }\n\n try {\n await firebase.createResumeExperience(experienceData)\n } catch (e) {\n console.error(e)\n }\n handleCloseModal()\n await notifier.handleNewResumeExperience(profile)\n }\n\n const handleDeleteResumeExperience = async (experienceData) => {\n try {\n await firebase.deleteResumeExperience(experienceData.id)\n } catch (e) {\n console.error(e)\n }\n handleCloseModal()\n }\n\n const handleUpdateResumeExperience = async (experienceData) => {\n const errors = checkRequiredFields(experience, type)\n if (errors) {\n sendStandardToast({\n message: (\n <>\n {errors.map((error) => (\n <div>{error}</div>\n ))}\n </>\n ),\n heading: <FormattedMessage id=\"resume-experience-editor-modal-submission-required-foll\" defaultMessage=\"Submission requires the following\" />,\n })\n return\n }\n try {\n await firebase.editResumeExperience(experienceData)\n } catch (e) {\n console.error(e)\n }\n handleCloseModal()\n }\n\n const handleCloseModal = () => {\n // might not have callback function avaliable\n if (closeTimelineModal) {\n closeTimelineModal()\n }\n\n setExperience(isNewExperience ? { ...experienceData, type: type } : experienceData)\n }\n\n return (\n <ExperienceEditorContext.Provider\n value={{\n experience,\n setLocalExperienceKeyValue,\n dispatchHighlightAction,\n checkRequiredFields,\n toggleExperienceIsCurrent,\n toggleExperienceOnlyHasEndDate,\n isOptimizerModalOpen,\n setIsOptimizerModalOpen,\n }}\n >\n <Modal className=\"editor-modal\" show={show} onHide={() => handleCloseModal()} size=\"lg\" animation={false}>\n <Modal.Header closeButton>\n <div className=\"eyebrow component-eyebrow\">\n <FormattedMessage\n id={isNewExperience ? \"resume-timeline-add\" : \"resume-experience-editor-modal-edit\"}\n defaultMessage={isNewExperience ? \"Add\" : \"Edit\"}\n />\n {\" \"}\n {getExperienceAbbreviatedLabel(type)}\n {\" \"}\n <FormattedMessage\n id=\"resume-experience-editor-modal-experience\"\n defaultMessage=\"Experience\"\n />\n </div>\n </Modal.Header> \n <Modal.Body>\n {isNewExperience && (\n <p style={{ fontFamily: \"merriweather\", fontSize: \"16px\" }}>\n {getExperienceInstructions(type)}\n </p>\n )}\n {(type === \"skills\" || type === \"interests\") && (\n <SkillsInterestsEditor\n currentItems={profile[type] || []}\n type={type}\n />\n )}\n {type !== \"skills\" && type !== \"interests\" && (\n <div className=\"form career-builder-milestones-form\">\n <ExperienceInput type={type} dispatchHighlightAction={dispatchHighlightAction} />\n </div>\n )}\n </Modal.Body>\n {type !== \"skills\" && type !== \"interests\" && (\n <Modal.Footer>\n {!isNewExperience && (\n <SubmitButton\n label={<FormattedMessage id=\"resume-experience-editor-modal-delete\" defaultMessage=\"Delete\"/>}\n isFilled={false}\n onClick={() => handleDeleteResumeExperience(experience)}\n />\n )}\n <SubmitButton\n label={<FormattedMessage id=\"resume-experience-editor-modal-save\" defaultMessage=\"Save\"/>}\n isFilled={true}\n onClick={isNewExperience ? () => handleCreateResumeExperience(experience) \n : () => handleUpdateResumeExperience(experience)}\n />\n </Modal.Footer>\n )}\n </Modal>\n </ExperienceEditorContext.Provider>\n )\n}\n\nexport default ResumeExperienceEditorModal\n","import React, {useState, useContext, useEffect} from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\"\nimport { rectIntersection, closestCenter } from '@dnd-kit/core';\nimport { combineCollisionAlgorithms } from \"../drag-and-drop/customCollisionDetectionAlgorithms.js\";\nimport useSortableItem from \"../drag-and-drop/useSortableItem.js\";\nimport SortableContainer from \"../drag-and-drop/SortableContainer.js\";\nimport { localizeSkillInterest } from \"./utils/skillAndInterestDefaultOptions.js\";\nimport { useIntl } from \"react-intl\"\nimport \"./ResumeList.css\"\n\n/**\n * A single, draggable item in a ResumeList\n */\nconst ListItem = ({content, onDelete, isPublicFacing}) => {\n const { itemProperties, activeIndex, index, isDragging, isOver} = useSortableItem({id: content, disableDragging: isPublicFacing})\n const { locale } = useIntl()\n const displayedText = localizeSkillInterest(locale, content)\n\n return (\n <div className=\"list-item\" {...itemProperties}>\n <div className=\"label\">{displayedText}</div>\n {!isPublicFacing && (\n <div className=\"delete-button-container\">\n <button className=\"delete-button\" onClick={onDelete}>\n <FontAwesomeIcon icon={faTimes} size=\"xs\"/>\n </button>\n </div>\n )}\n {(isOver && !isDragging) && (\n <div className={`insert-indicator insert-indicator-${(activeIndex < index ? \"right\" : \"left\")}`}/>\n )}\n </div>\n )\n}\n\n/**\n * Section of a public/private resume that is just a list of things, like skills\n * or interests\n */\nconst ResumeList = ({type, items, isPublicFacing}) => {\n const { firebase } = useContext(FirebaseContext)\n const [list, setList] = useState([])\n\n useEffect(() => {\n if (items) {\n setList(items)\n }\n }, [items])\n\n const updateListOrder = (newOrder) => {\n setList(newOrder)\n firebase.updateProfile({\n data: {[type]: newOrder}\n })\n }\n\n return (\n <SortableContainer\n className=\"resume-list-container\"\n setOrder={updateListOrder}\n collisionDetectionAlgorithm={combineCollisionAlgorithms([rectIntersection, closestCenter])}\n sortingStrategy={() => null}\n idList={list}\n indicatorPadding=\"1rem\"\n >\n <div className=\"resume-list-container\">\n {list.map(item => (\n <ListItem \n key={item} \n content={item} \n onDelete={() => updateListOrder(list.filter(i => i !== item))}\n isPublicFacing={isPublicFacing}\n />\n ))}\n </div>\n </SortableContainer>\n )\n}\n\nexport default ResumeList\n","import { useState, useEffect, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase/index.js\"\n\n/**\n * Fetch a user's resume data\n * \n * @param {string} userId - the id of the user whose resume data is being fetched\n * \n * @returns {Object[]} experiences - array of the user's resume experiences\n * @returns {string[]} skills - ordered array of the user's skills\n * @returns {string[]} interests - ordered array of the user's interests\n */\nconst useResumeData = (userId) => {\n const { firebase } = useContext(FirebaseContext)\n const [experiences, setExperiences] = useState([])\n const [skills, setSkills] = useState([])\n const [interests, setInterests] = useState([])\n\n useEffect(() => {\n const updateResumeExperiences = (updatedExperiences) => {\n setExperiences(updatedExperiences.filter(exp => !!exp.id))\n }\n if (firebase && userId) {\n const unsubscribe = firebase.subscribeToResumeExperienceChanges(userId, updateResumeExperiences)\n return () => unsubscribe()\n }\n }, [firebase, userId])\n\n useEffect(() => {\n if (firebase && userId) {\n const unsubscribe = firebase.subscribeToSkillsInterestsChanges(userId, setSkills, setInterests)\n return () => unsubscribe()\n }\n }, [firebase, userId])\n\n return {\n experiences,\n skills,\n interests,\n }\n}\n\nexport default useResumeData\n","import React from \"react\"\nimport { FormattedMessage } from \"react-intl\"\nimport {\n faBriefcase,\n faSchool,\n faHandsHelping,\n faUser,\n faUsers,\n faMedal,\n faBook,\n} from \"@fortawesome/free-solid-svg-icons\"\nimport {\n faStars,\n faHeartCircle,\n faFileCertificate,\n} from \"@fortawesome/pro-solid-svg-icons\"\n\n/* ------------------------- READ ME ------------------------------------------\n * To add/change experience types, you have to modify:\n * - this file\n * - experience-input.js\n * - ResumeTimelineExperience.js\n * - the exported resume templates \n * - checkRequiredFields \n * - the createResumeExperience firebase function\n */\n\n/**\n * @typedef {Object} ExperienceType\n * @property {string} type\n * @property {JSX} icon\n * @property {JSX} label\n * @property {JSX} abbreviatedLabel\n * @property {JSX} instructions\n */\n\n/**\n * @type {ExperienceType[]}\n */\nconst experienceTypeData = [\n {\n type: \"education\",\n icon: faSchool,\n label: (\n <FormattedMessage\n id=\"portfolio-experience-selector-education\"\n defaultMessage=\"Education\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"portfolio-experience-selector-education\"\n defaultMessage=\"Education\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-education-instructions\"\n defaultMessage=\"Don't hold back. Highlight your degrees, activities, and any\n relevant coursework.\"\n />\n ),\n },\n {\n type: \"work\",\n icon: faBriefcase,\n label: (\n <FormattedMessage\n id=\"resume-timeline-work-experience\"\n defaultMessage=\"Work Experience\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"resume-timeline-work\"\n defaultMessage=\"Work\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-work-instructions\"\n defaultMessage=\"List all of your past work experiences to highlight your job\n skills. Include job titles, company names, location, and dates of\n employment.\"\n />\n ),\n },\n {\n type: \"certificate\",\n icon: faFileCertificate,\n label: (\n <FormattedMessage\n id=\"resume-timeline-licenses-and-certifications\"\n defaultMessage=\"Licenses and Certifications\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"resume-timeline-license-or-certification\"\n defaultMessage=\"License/Certification\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-certificate-instructions\"\n defaultMessage=\"Enhance your credibility by listing licenses and certifications that verify your skills and knowledge.\"\n />\n )\n },\n {\n type: \"skills\",\n icon: faStars,\n label: (\n <FormattedMessage\n id=\"profile-skills\"\n defaultMessage=\"Skills\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"profile-skills\"\n defaultMessage=\"Skills\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"portfolio-skills-skills-description\"\n defaultMessage=\"Ask yourself, what am I good at? Sit with yourself and \n see what surfaces. Try to aim for no more than 20 skills.\"\n />\n )\n },\n {\n type: \"volunteer\",\n icon: faHandsHelping,\n label: (\n <FormattedMessage\n id=\"portfolio-experience-selector-volunteer\"\n defaultMessage=\"Volunteer\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"portfolio-experience-selector-volunteer\"\n defaultMessage=\"Volunteer\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-volunteer-instructions\"\n defaultMessage=\"Your volunteer experience speaks volumes about the kind of person\n you are. Include the organization's name, your role, and the dates\n of your involvement.\"\n />\n )\n },\n {\n type: \"leadership\",\n icon: faUsers,\n label: (\n <FormattedMessage\n id=\"portfolio-experience-selector-leadership\"\n defaultMessage=\"Leadership\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"portfolio-experience-selector-leadership\"\n defaultMessage=\"Leadership\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-leadership-instructions\"\n defaultMessage=\" Let the world know you are a natural-born leader by listing your\n previous leadership roles or accomplishments.\"\n />\n )\n },\n {\n type: \"award\",\n icon: faMedal,\n label: (\n <FormattedMessage\n id=\"portfolio-experience-selector-honors-and-awards\"\n defaultMessage=\"Honors and Awards\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"resume-timeline-award\"\n defaultMessage=\"Award\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-award-instructions\"\n defaultMessage=\"Set yourself apart by listing your accomplishments. This includes\n academic awards, professional recognitions, or anything else that\n makes you shine.\"\n />\n )\n },\n {\n type: \"life\",\n icon: faUser,\n label: (\n <FormattedMessage\n id=\"portfolio-experience-selector-life\"\n defaultMessage=\"Life\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"portfolio-experience-selector-life\"\n defaultMessage=\"Life\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-life-instructions\"\n defaultMessage=\"Don't underestimate the value of your life experiences. List any\n non-traditional experiences that demonstrate your skills and\n qualifications. It could be anything from running a business to\n moving to a new city.\"\n />\n )\n },\n {\n type: \"interests\",\n icon: faHeartCircle,\n label: (\n <FormattedMessage\n id=\"profile-interests\"\n defaultMessage=\"Interests\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"profile-interests\"\n defaultMessage=\"Interests\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"portfolio-interests-interest-description\"\n defaultMessage=\"Ask yourself, what do I like? Listen to your inner voice \n and honor it.\"\n />\n )\n },\n {\n type: \"coursework\",\n icon: faBook,\n label: (\n <FormattedMessage\n id=\"resume-timeline-coursework\"\n defaultMessage=\"Coursework\"\n />\n ),\n abbreviatedLabel: (\n <FormattedMessage\n id=\"resume-timeline-coursework\"\n defaultMessage=\"Coursework\"\n />\n ),\n instructions: (\n <FormattedMessage\n id=\"resume-experience-editor-modal-coursework-instructions\"\n defaultMessage=\"Your coursework can showcase experience in areas where \n you have limited professional exposure. Think of courses where \n you worked on interesting projects or learned valuable skills.\"\n />\n )\n },\n]\n\nconst experienceTypes = experienceTypeData.map(e => e.type)\n\nconst defaultResumeColumnOneOrder = [\"education\", \"work\", \"life\", \"volunteer\"]\nconst defaultResumeColumnTwoOrder = [\"skills\", \"certificate\", \"interests\", \"award\", \"leadership\", \"coursework\"]\n\nconst expMap = {}\nexperienceTypeData.forEach(t => expMap[t.type] = t)\n\nconst getExperienceLabel = (experienceType) => expMap[experienceType].label\nconst getExperienceAbbreviatedLabel = (experienceType) => expMap[experienceType].abbreviatedLabel\nconst getExperienceInstructions = (experienceType) => expMap[experienceType].instructions\n\nexport {\n experienceTypeData,\n experienceTypes,\n getExperienceLabel,\n getExperienceAbbreviatedLabel,\n getExperienceInstructions,\n defaultResumeColumnOneOrder,\n defaultResumeColumnTwoOrder,\n}\n","const defaultSkillOptions = [\n {\n header: \"true\",\n key: \"header-interpersonal\",\n text: \"Interpersonal\",\n disabled: true,\n },\n { key: \"communication\", value: \"Communication\", text: \"Communication\" },\n {\n key: \"collaboration\",\n value: \"Collaboration\",\n text: \"Collaboration\",\n },\n {\n key: \"time_management\",\n value: \"Time Management\",\n text: \"Time Management\",\n },\n { key: \"problem_solving\", value: \"Problem-solving\", text: \"Problem-solving\" },\n {\n key: \"attention_to_detail\",\n value: \"Attention to detail\",\n text: \"Attention to detail\",\n },\n { key: \"creativity\", value: \"Creativity\", text: \"Creativity\" },\n {\n key: \"adaptability\",\n value: \"Adaptability\",\n text: \"Adaptability\",\n },\n {\n key: \"leadership\",\n value: \"Leadership\",\n text: \"Leadership\",\n },\n { key: \"teamwork\", value: \"Teamwork\", text: \"Teamwork\" },\n { key: \"public_speaking\", value: \"Public Speaking\", text: \"Public Speaking\" },\n {\n key: \"presentation_skills\",\n value: \"Presentation Skills\",\n text: \"Presentation Skills\",\n },\n { key: \"organization\", value: \"Organization\", text: \"Organization\" },\n {\n key: \"analytical_skills\",\n value: \"Analytical skills\",\n text: \"Analytical skills\",\n },\n { key: \"decision_making\", value: \"Decision-making\", text: \"Decision-making\" },\n {\n key: \"conflict_resolution\",\n value: \"Conflict resolution\",\n text: \"Conflict resolution\",\n },\n {\n key: \"project_management\",\n value: \"Project management\",\n text: \"Project management\",\n },\n {\n key: \"customer_service\",\n value: \"Customer service\",\n text: \"Customer service\",\n },\n {\n key: \"strategic_thinking\",\n value: \"Strategic thinking\",\n text: \"Strategic thinking\",\n },\n { key: \"empathy\", value: \"Empathy\", text: \"Empathy\" },\n {\n key: \"active_listening\",\n value: \"Active listening\",\n text: \"Active listening\",\n },\n { key: \"networking\", value: \"Networking\", text: \"Networking\" },\n { key: \"multitasking\", value: \"Multitasking\", text: \"Multitasking\" },\n {\n key: \"critical_thinking\",\n value: \"Critical thinking\",\n text: \"Critical thinking\",\n },\n { key: \"flexibility\", value: \"Flexibility\", text: \"Flexibility\" },\n { key: \"planning\", value: \"Planning\", text: \"Planning\" },\n { key: \"negotiation\", value: \"Negotiation\", text: \"Negotiation\" },\n { key: \"diplomacy\", value: \"Diplomacy\", text: \"Diplomacy\" },\n { key: \"innovation\", value: \"Innovation\", text: \"Innovation\" },\n\n {\n header: \"true\",\n key: \"header-administrative\",\n text: \"Administrative\",\n disabled: true,\n },\n {\n key: \"microsoft_office\",\n value: \"Microsoft Office\",\n text: \"Microsoft Office\",\n },\n {\n key: \"data_entry\",\n value: \"Data Entry\",\n text: \"Data Entry\",\n },\n {\n key: \"administrative_support\",\n value: \"Administrative Support\",\n text: \"Administrative Support\",\n },\n { key: \"microsoft_excel\", value: \"Microsoft Excel\", text: \"Microsoft Excel\" },\n { key: \"microsoft_word\", value: \"Microsoft Word\", text: \"Microsoft Word\" },\n {\n key: \"microsoft_powerpoint\",\n value: \"Microsoft Powerpoint\",\n text: \"Microsoft Powerpoint\",\n },\n { key: \"typing\", value: \"Typing\", text: \"Typing\" },\n { key: \"filing\", value: \"Filing\", text: \"Filing\" },\n { key: \"scheduling\", value: \"Scheduling\", text: \"Scheduling\" },\n { key: \"spreadsheets\", value: \"Spreadsheets\", text: \"Spreadsheets\" },\n { key: \"invoicing\", value: \"Invoicing\", text: \"Invoicing\" },\n { key: \"accounting\", value: \"Accounting\", text: \"Accounting\" },\n { key: \"receptionist\", value: \"Receptionist\", text: \"Receptionist\" },\n {\n key: \"office_equipment\",\n value: \"Office Equipment\",\n text: \"Office Equipment\",\n },\n { key: \"billing\", value: \"Billing\", text: \"Billing\" },\n { key: \"quick_books\", value: \"QuickBooks\", text: \"QuickBooks\" },\n { key: \"record_keeping\", value: \"Record Keeping\", text: \"Record Keeping\" },\n { key: \"slack\", value: \"Slack\", text: \"Slack\" },\n { key: \"google_drive\", value: \"Google Drive\", text: \"Google Drive\" },\n {\n key: \"microsoft_outlook\",\n value: \"Microsoft Outlook\",\n text: \"Microsoft Outlook\",\n },\n { key: \"payroll\", value: \"Payroll\", text: \"Payroll\" },\n {\n key: \"accounts_payable\",\n value: \"Accounts Payable\",\n text: \"Accounts Payable\",\n },\n\n {\n header: \"true\",\n key: \"header-agriculture\",\n text: \"Agriculture\",\n disabled: true,\n },\n {\n key: \"equipment_maintenance\",\n value: \"Equipment Maintenance\",\n text: \"Equipment Maintenance\",\n },\n {\n key: \"safety_management\",\n value: \"Safety Management\",\n text: \"Safety Management\",\n },\n {\n key: \"equipment_operation\",\n value: \"Equipment Operation\",\n text: \"Equipment Operation\",\n },\n {\n key: \"plant_identification\",\n value: \"Plant Identification\",\n text: \"Plant Identification\",\n },\n { key: \"irrigation\", value: \"Irrigation\", text: \"Irrigation\" },\n {\n key: \"heavy_equipment_operation\",\n value: \"Heavy Equipment Operation\",\n text: \"Heavy Equipment Operation\",\n },\n { key: \"crop_management\", value: \"Crop Management\", text: \"Crop Management\" },\n { key: \"farm_management\", value: \"Farm Management\", text: \"Farm Management\" },\n { key: \"pest_control\", value: \"Pest Control\", text: \"Pest Control\" },\n { key: \"soil_sampling\", value: \"Soil Sampling\", text: \"Soil Sampling\" },\n {\n key: \"livestock_handling\",\n value: \"Livestock Handling\",\n text: \"Livestock Handling\",\n },\n\n {\n header: \"true\",\n key: \"header-arts-and-media\",\n text: \"Arts and Media\",\n disabled: true,\n },\n { key: \"graphic_design\", value: \"Graphic design\", text: \"Graphic design\" },\n { key: \"video_editing\", value: \"Video editing\", text: \"Video editing\" },\n { key: \"photography\", value: \"Photography\", text: \"Photography\" },\n { key: \"web_design\", value: \"Web design\", text: \"Web design\" },\n {\n key: \"social_media_marketing\",\n value: \"Social media marketing\",\n text: \"Social media marketing\",\n },\n {\n key: \"writing_and_editing\",\n value: \"Writing and editing\",\n text: \"Writing and editing\",\n },\n { key: \"audio_editing\", value: \"Audio editing\", text: \"Audio editing\" },\n { key: \"animation\", value: \"Animation\", text: \"Animation\" },\n { key: \"game_design\", value: \"Game design\", text: \"Game design\" },\n { key: \"illustration\", value: \"Illustration\", text: \"Illustration\" },\n { key: \"event_planning\", value: \"Event planning\", text: \"Event planning\" },\n { key: \"scriptwriting\", value: \"Scriptwriting\", text: \"Scriptwriting\" },\n { key: \"acting\", value: \"Acting\", text: \"Acting\" },\n {\n key: \"public_relations\",\n value: \"Public relations\",\n text: \"Public relations\",\n },\n {\n key: \"brand_management\",\n value: \"Brand management\",\n text: \"Brand management\",\n },\n { key: \"interior_design\", value: \"Interior Design\", text: \"Interior Design\" },\n {\n key: \"architectural_design\",\n value: \"Architectural Design\",\n text: \"Architectural Design\",\n },\n {\n key: \"search_engine_optimization_(seo)\",\n value: \"Search engine optimization (SEO)\",\n text: \"Search engine optimization (SEO)\",\n },\n\n { header: \"true\", key: \"header-business\", text: \"Business\", disabled: true },\n\n {\n key: \"financial_analysis\",\n value: \"Financial analysis\",\n text: \"Financial analysis\",\n },\n { key: \"accounting_business\", value: \"Accounting\", text: \"Accounting\" },\n { key: \"budgeting\", value: \"Budgeting\", text: \"Budgeting\" },\n {\n key: \"financial_forecasting\",\n value: \"Financial forecasting\",\n text: \"Financial forecasting\",\n },\n { key: \"data_analysis\", value: \"Data analysis\", text: \"Data analysis\" },\n { key: \"microsoft_excel_financial_analysis\", value: \"Microsoft Excel\", text: \"Microsoft Excel\" },\n {\n key: \"financial_modeling\",\n value: \"Financial modeling\",\n text: \"Financial modeling\",\n },\n {\n key: \"statistical_analysis\",\n value: \"Statistical analysis\",\n text: \"Statistical analysis\",\n },\n { key: \"market_analysis\", value: \"Market analysis\", text: \"Market analysis\" },\n {\n key: \"budgeting_and_financial_analysis\",\n value: \"Budgeting and financial analysis\",\n text: \"Budgeting and financial analysis\",\n },\n {\n key: \"data_analysis_and_reporting\",\n value: \"Data analysis and reporting\",\n text: \"Data analysis and reporting\",\n },\n {\n key: \"operations_management\",\n value: \"Operations management\",\n text: \"Operations management\",\n },\n {\n key: \"sales_and_marketing_management\",\n value: \"Sales and marketing management\",\n text: \"Sales and marketing management\",\n },\n {\n key: \"business_development\",\n value: \"Business development\",\n text: \"Business development\",\n },\n {\n key: \"supply_chain_management\",\n value: \"Supply chain management\",\n text: \"Supply chain management\",\n },\n { key: \"quality_control\", value: \"Quality control\", text: \"Quality control\" },\n {\n key: \"human_resources_management\",\n value: \"Human resources management\",\n text: \"Human resources management\",\n },\n {\n key: \"contract_negotiation\",\n value: \"Contract negotiation\",\n text: \"Contract negotiation\",\n },\n {\n key: \"vendor_management\",\n value: \"Vendor management\",\n text: \"Vendor management\",\n },\n {\n key: \"process_improvement\",\n value: \"Process improvement\",\n text: \"Process improvement\",\n },\n {\n key: \"business_intelligence\",\n value: \"Business intelligence\",\n text: \"Business intelligence\",\n },\n { key: \"lean_management\", value: \"Lean management\", text: \"Lean management\" },\n { key: \"it_management\", value: \"IT management\", text: \"IT management\" },\n {\n key: \"logistics_management\",\n value: \"Logistics management\",\n text: \"Logistics management\",\n },\n {\n key: \"inventory_management\",\n value: \"Inventory management\",\n text: \"Inventory management\",\n },\n { key: \"six_sigma\", value: \"Six Sigma\", text: \"Six Sigma\" },\n\n {\n header: \"true\",\n key: \"header-computer-programming\",\n text: \"Computer Programming\",\n disabled: true,\n },\n { key: \"java\", value: \"Java\", text: \"Java\" },\n { key: \"python\", value: \"Python\", text: \"Python\" },\n { key: \"sql\", value: \"SQL\", text: \"SQL\" },\n { key: \"c++\", value: \"C++\", text: \"C++\" },\n { key: \"javascript\", value: \"JavaScript\", text: \"JavaScript\" },\n { key: \"data_analysis_computer_programming\", value: \"Data Analysis\", text: \"Data Analysis\" },\n { key: \"html\", value: \"HTML\", text: \"HTML\" },\n { key: \"css\", value: \"CSS\", text: \"CSS\" },\n {\n key: \"machine_learning\",\n value: \"Machine Learning\",\n text: \"Machine Learning\",\n },\n {\n key: \"natural_language_processing\",\n value: \"Natural Language Processing\",\n text: \"Natural Language Processing\",\n },\n { key: \"data_science\", value: \"Data Science\", text: \"Data Science\" },\n { key: \"mongodb\", value: \"MongoDB\", text: \"MongoDB\" },\n {\n key: \"spring_framework\",\n value: \"Spring Framework\",\n text: \"Spring Framework\",\n },\n { key: \".net_framework\", value: \".NET Framework\", text: \".NET Framework\" },\n { key: \"node.js\", value: \"Node.js\", text: \"Node.js\" },\n { key: \"react\", value: \"React\", text: \"React\" },\n { key: \"angularjs\", value: \"AngularJS\", text: \"AngularJS\" },\n { key: \"data_mining\", value: \"Data Mining\", text: \"Data Mining\" },\n\n {\n header: \"true\",\n key: \"header-construction\",\n text: \"Construction\",\n disabled: true,\n },\n {\n key: \"air_compressor_and_pneumatic_tool_maintenance\",\n value: \"Air compressor and pneumatic tool maintenance\",\n text: \"Air compressor and pneumatic tool maintenance\",\n },\n {\n key: \"construction_site_management\",\n value: \"Construction site management\",\n text: \"Construction site management\",\n },\n {\n key: \"automotive_repair_and_maintenance\",\n value: \"Automotive repair and maintenance\",\n text: \"Automotive repair and maintenance\",\n },\n {\n key: \"blueprint_analysis\",\n value: \"Blueprint analysis\",\n text: \"Blueprint analysis\",\n },\n {\n key: \"boilers_and_pressure_vessels_inspection_and_maintenance\",\n value: \"Boilers and pressure vessels inspection and maintenance\",\n text: \"Boilers and pressure vessels inspection and maintenance\",\n },\n {\n key: \"building_and_facility_maintenance\",\n value: \"Building and facility maintenance\",\n text: \"Building and facility maintenance\",\n },\n {\n key: \"calibration_and_maintenance_of_analytical_instruments\",\n value: \"Calibration and maintenance of analytical instruments\",\n text: \"Calibration and maintenance of analytical instruments\",\n },\n {\n key: \"calibration_of_scientific_and_medical_instruments\",\n value: \"Calibration of scientific and medical instruments\",\n text: \"Calibration of scientific and medical instruments\",\n },\n {\n key: \"cnc_machine_programming_and_operation\",\n value: \"CNC machine programming and operation\",\n text: \"CNC machine programming and operation\",\n },\n {\n key: \"carpentry_and_woodworking\",\n value: \"Carpentry and woodworking\",\n text: \"Carpentry and woodworking\",\n },\n {\n key: \"blueprint_analysis_\",\n value: \"Blueprint analysis \",\n text: \"Blueprint analysis \",\n },\n {\n key: \"equipment_operation_and_maintenance\",\n value: \"Equipment operation and maintenance\",\n text: \"Equipment operation and maintenance\",\n },\n { key: \"welding\", value: \"Welding\", text: \"Welding\" },\n { key: \"concrete_work\", value: \"Concrete work\", text: \"Concrete work\" },\n {\n key: \"computer-aided_design_and_drafting_(cadd)\",\n value: \"Computer-aided design and drafting (CADD)\",\n text: \"Computer-aided design and drafting (CADD)\",\n },\n { key: \"plumbing\", value: \"Plumbing\", text: \"Plumbing\" },\n {\n key: \"electrical_wiring_and_installation\",\n value: \"Electrical wiring and installation\",\n text: \"Electrical wiring and installation\",\n },\n {\n key: \"heavy_equipment_operation_construction\",\n value: \"Heavy equipment operation\",\n text: \"Heavy equipment operation\",\n },\n { key: \"crane_operation\", value: \"Crane operation\", text: \"Crane operation\" },\n {\n key: \"surveying_and_mapping\",\n value: \"Surveying and mapping\",\n text: \"Surveying and mapping\",\n },\n\n {\n header: \"true\",\n key: \"header-culinary-arts\",\n text: \"Culinary Arts\",\n disabled: true,\n },\n { key: \"food_safety\", value: \"Food Safety\", text: \"Food Safety\" },\n { key: \"sanitation\", value: \"Sanitation\", text: \"Sanitation\" },\n { key: \"recipe_creation\", value: \"Recipe Creation\", text: \"Recipe Creation\" },\n { key: \"knife_skills\", value: \"Knife Skills\", text: \"Knife Skills\" },\n {\n key: \"food_preparation\",\n value: \"Food Preparation\",\n text: \"Food Preparation\",\n },\n {\n key: \"cooking_techniques\",\n value: \"Cooking Techniques\",\n text: \"Cooking Techniques\",\n },\n { key: \"menu_planning\", value: \"Menu Planning\", text: \"Menu Planning\" },\n {\n key: \"recipe_reading_and_execution\",\n value: \"Recipe Reading and Execution\",\n text: \"Recipe Reading and Execution\",\n },\n { key: \"portion_control\", value: \"Portion Control\", text: \"Portion Control\" },\n {\n key: \"inventory_management_culinary_arts\",\n value: \"Inventory Management\",\n text: \"Inventory Management\",\n },\n {\n key: \"baking_and_pastry\",\n value: \"Baking and Pastry\",\n text: \"Baking and Pastry\",\n },\n\n {\n header: \"true\",\n key: \"header-education\",\n text: \"Education\",\n disabled: true,\n },\n {\n key: \"curriculum_development\",\n value: \"Curriculum development\",\n text: \"Curriculum development\",\n },\n { key: \"teaching\", value: \"Teaching\", text: \"Teaching\" },\n {\n key: \"student_assessment_and_evaluation\",\n value: \"Student assessment and evaluation\",\n text: \"Student assessment and evaluation\",\n },\n {\n key: \"instructional_design\",\n value: \"Instructional design\",\n text: \"Instructional design\",\n },\n {\n key: \"educational_technology\",\n value: \"Educational technology\",\n text: \"Educational technology\",\n },\n {\n key: \"research_and_analysis\",\n value: \"Research and analysis\",\n text: \"Research and analysis\",\n },\n {\n key: \"library_management\",\n value: \"Library management\",\n text: \"Library management\",\n },\n {\n key: \"cataloging_and_classification\",\n value: \"Cataloging and classification\",\n text: \"Cataloging and classification\",\n },\n {\n key: \"collection_development\",\n value: \"Collection development\",\n text: \"Collection development\",\n },\n {\n key: \"reference_services\",\n value: \"Reference services\",\n text: \"Reference services\",\n },\n\n {\n header: \"true\",\n key: \"header-engineering\",\n text: \"Engineering\",\n disabled: true,\n },\n { key: \"autocad\", value: \"AutoCAD\", text: \"AutoCAD\" },\n {\n key: \"microsoft_office_engineering\",\n value: \"Microsoft Office\",\n text: \"Microsoft Office\",\n },\n { key: \"revit\", value: \"Revit\", text: \"Revit\" },\n { key: \"solidworks\", value: \"SolidWorks\", text: \"SolidWorks\" },\n { key: \"matlab\", value: \"MATLAB\", text: \"MATLAB\" },\n { key: \"python_engineering\", value: \"Python\", text: \"Python\" },\n { key: \"java_engineering\", value: \"Java\", text: \"Java\" },\n { key: \"c++_engineering\", value: \"C++\", text: \"C++\" },\n {\n key: \"finite_element_analysis\",\n value: \"Finite Element Analysis\",\n text: \"Finite Element Analysis\",\n },\n { key: \"hydraulics\", value: \"Hydraulics\", text: \"Hydraulics\" },\n { key: \"thermodynamics\", value: \"Thermodynamics\", text: \"Thermodynamics\" },\n { key: \"instrumentation\", value: \"Instrumentation\", text: \"Instrumentation\" },\n { key: \"control_systems\", value: \"Control Systems\", text: \"Control Systems\" },\n { key: \"water_resources\", value: \"Water Resources\", text: \"Water Resources\" },\n { key: \"data_analysis_engineering\", value: \"Data Analysis\", text: \"Data Analysis\" },\n {\n key: \"electron_diffraction_machine\",\n value: \"Electron Diffraction Machine\",\n text: \"Electron Diffraction Machine\",\n },\n {\n key: \"scanning_electron_microscope\",\n value: \"Scanning Electron Microscope\",\n text: \"Scanning Electron Microscope\",\n },\n { key: \"cnc_machining\", value: \"CNC Machining\", text: \"CNC Machining\" },\n {\n key: \"mechanical_design\",\n value: \"Mechanical Design\",\n text: \"Mechanical Design\",\n },\n {\n key: \"electrical_design\",\n value: \"Electrical Design\",\n text: \"Electrical Design\",\n },\n { key: \"fluid_mechanics\", value: \"Fluid Mechanics\", text: \"Fluid Mechanics\" },\n { key: \"robotics\", value: \"Robotics\", text: \"Robotics\" },\n\n {\n header: \"true\",\n key: \"header-healthcare\",\n text: \"HealthCare\",\n disabled: true,\n },\n {\n key: \"surgical_procedures_and_techniques\",\n value: \"Surgical procedures and techniques\",\n text: \"Surgical procedures and techniques\",\n },\n {\n key: \"patient_assessment_and_evaluation\",\n value: \"Patient assessment and evaluation\",\n text: \"Patient assessment and evaluation\",\n },\n {\n key: \"clinical_procedures_and_protocols\",\n value: \"Clinical procedures and protocols\",\n text: \"Clinical procedures and protocols\",\n },\n {\n key: \"diagnostic_imaging_technology\",\n value: \"Diagnostic imaging technology\",\n text: \"Diagnostic imaging technology\",\n },\n {\n key: \"pharmacology_and_medication_administration\",\n value: \"Pharmacology and medication administration\",\n text: \"Pharmacology and medication administration\",\n },\n {\n key: \"infection_control_and_prevention\",\n value: \"Infection control and prevention\",\n text: \"Infection control and prevention\",\n },\n {\n key: \"cardiopulmonary_resuscitation_(cpr)\",\n value: \"Cardiopulmonary resuscitation (CPR)\",\n text: \"Cardiopulmonary resuscitation (CPR)\",\n },\n {\n key: \"anatomy_and_physiology\",\n value: \"Anatomy and physiology\",\n text: \"Anatomy and physiology\",\n },\n {\n key: \"nursing_interventions_and_care_planning\",\n value: \"Nursing interventions and care planning\",\n text: \"Nursing interventions and care planning\",\n },\n {\n key: \"radiologic_technology\",\n value: \"Radiologic technology\",\n text: \"Radiologic technology\",\n },\n {\n key: \"laboratory_techniques_and_procedures\",\n value: \"Laboratory techniques and procedures\",\n text: \"Laboratory techniques and procedures\",\n },\n { key: \"patient_care\", value: \"Patient Care\", text: \"Patient Care\" },\n {\n key: \"medical_terminology\",\n value: \"Medical Terminology\",\n text: \"Medical Terminology\",\n },\n {\n key: \"vital_signs_measurement\",\n value: \"Vital Signs Measurement\",\n text: \"Vital Signs Measurement\",\n },\n {\n key: \"medical_records_management\",\n value: \"Medical Records Management\",\n text: \"Medical Records Management\",\n },\n { key: \"medical_coding\", value: \"Medical Coding\", text: \"Medical Coding\" },\n { key: \"first_aid\", value: \"First Aid\", text: \"First Aid\" },\n {\n key: \"infection_control\",\n value: \"Infection Control\",\n text: \"Infection Control\",\n },\n {\n key: \"electronic_health_records_(ehr)\",\n value: \"Electronic Health Records (EHR)\",\n text: \"Electronic Health Records (EHR)\",\n },\n { key: \"phlebotomy\", value: \"Phlebotomy\", text: \"Phlebotomy\" },\n {\n key: \"cardiopulmonary_resuscitation_(cpr)_healthcare\",\n value: \"Cardiopulmonary Resuscitation (CPR)\",\n text: \"Cardiopulmonary Resuscitation (CPR)\",\n },\n { key: \"medical_billing\", value: \"Medical Billing\", text: \"Medical Billing\" },\n\n { header: \"true\", key: \"header-legal\", text: \"Legal\", disabled: true },\n { key: \"legal_research\", value: \"Legal research\", text: \"Legal research\" },\n {\n key: \"writing_legal_documents\",\n value: \"Writing legal documents\",\n text: \"Writing legal documents\",\n },\n {\n key: \"analyzing_legal_documents\",\n value: \"Analyzing legal documents\",\n text: \"Analyzing legal documents\",\n },\n { key: \"litigation\", value: \"Litigation\", text: \"Litigation\" },\n {\n key: \"drafting_legal_documents\",\n value: \"Drafting legal documents\",\n text: \"Drafting legal documents\",\n },\n { key: \"legal_writing\", value: \"Legal writing\", text: \"Legal writing\" },\n {\n key: \"contract_negotiation_legal\",\n value: \"Contract negotiation\",\n text: \"Contract negotiation\",\n },\n {\n key: \"contract_drafting\",\n value: \"Contract drafting\",\n text: \"Contract drafting\",\n },\n { key: \"trial_advocacy\", value: \"Trial advocacy\", text: \"Trial advocacy\" },\n {\n key: \"legal_compliance\",\n value: \"Legal compliance\",\n text: \"Legal compliance\",\n },\n { key: \"legal_analysis\", value: \"Legal analysis\", text: \"Legal analysis\" },\n { key: \"legal_drafting\", value: \"Legal drafting\", text: \"Legal drafting\" },\n { key: \"contract_review\", value: \"Contract review\", text: \"Contract review\" },\n {\n key: \"legal_documentation\",\n value: \"Legal documentation\",\n text: \"Legal documentation\",\n },\n {\n key: \"intellectual_property_law\",\n value: \"Intellectual property law\",\n text: \"Intellectual property law\",\n },\n { key: \"legal_issues\", value: \"Legal issues\", text: \"Legal issues\" },\n\n {\n header: \"true\",\n key: \"header-manufacturing\",\n text: \"Manufacturing\",\n disabled: true,\n },\n {\n key: \"machine_operation\",\n value: \"Machine operation\",\n text: \"Machine operation\",\n },\n {\n key: \"cleanroom_operations\",\n value: \"Cleanroom operations\",\n text: \"Cleanroom operations\",\n },\n {\n key: \"quality_control_and_assurance\",\n value: \"Quality control and assurance\",\n text: \"Quality control and assurance\",\n },\n {\n key: \"manufacturing_processes\",\n value: \"Manufacturing processes\",\n text: \"Manufacturing processes\",\n },\n {\n key: \"production_scheduling\",\n value: \"Production scheduling\",\n text: \"Production scheduling\",\n },\n {\n key: \"equipment_maintenance_and_repair\",\n value: \"Equipment maintenance and repair\",\n text: \"Equipment maintenance and repair\",\n },\n {\n key: \"technical_drawing_and_blueprint_interpretation\",\n value: \"Technical drawing and blueprint interpretation\",\n text: \"Technical drawing and blueprint interpretation\",\n },\n {\n key: \"inventory_management_manufacturing\",\n value: \"Inventory management\",\n text: \"Inventory management\",\n },\n {\n key: \"material_handling\",\n value: \"Material handling\",\n text: \"Material handling\",\n },\n {\n key: \"safety_procedures_and_protocols\",\n value: \"Safety procedures and protocols\",\n text: \"Safety procedures and protocols\",\n },\n {\n key: \"lean_manufacturing_principles\",\n value: \"Lean manufacturing principles\",\n text: \"Lean manufacturing principles\",\n },\n { key: \"welding_manufacturing\", value: \"Welding\", text: \"Welding\" },\n {\n key: \"computer-aided_design_(cad)\",\n value: \"Computer-aided design (CAD)\",\n text: \"Computer-aided design (CAD)\",\n },\n {\n key:\n \"programming_languages_for_industrial_automation_(such_as_ladder_logic,_c++,_or_python)\",\n value:\n \"Programming languages for industrial automation (such as ladder logic, C++, or Python)\",\n text:\n \"Programming languages for industrial automation (such as ladder logic, C++, or Python)\",\n },\n {\n key: \"robotics_and_automation_technology\",\n value: \"Robotics and automation technology\",\n text: \"Robotics and automation technology\",\n },\n {\n key: \"troubleshooting_and_problem-solving\",\n value: \"Troubleshooting and problem-solving\",\n text: \"Troubleshooting and problem-solving\",\n },\n {\n key: \"statistical_process_control\",\n value: \"Statistical process control\",\n text: \"Statistical process control\",\n },\n {\n key: \"data_analysis_and_interpretation\",\n value: \"Data analysis and interpretation\",\n text: \"Data analysis and interpretation\",\n },\n {\n key: \"environmental,_health,_and_safety_regulations\",\n value: \"Environmental, health, and safety regulations\",\n text: \"Environmental, health, and safety regulations\",\n },\n {\n key: \"calibration_of_measurement_instruments\",\n value: \"Calibration of measurement instruments\",\n text: \"Calibration of measurement instruments\",\n },\n {\n key: \"electrical_wiring_and_circuitry\",\n value: \"Electrical wiring and circuitry\",\n text: \"Electrical wiring and circuitry\",\n },\n {\n key: \"pneumatic_and_hydraulic_systems\",\n value: \"Pneumatic and hydraulic systems\",\n text: \"Pneumatic and hydraulic systems\",\n },\n {\n key: \"machining_and_tooling\",\n value: \"Machining and tooling\",\n text: \"Machining and tooling\",\n },\n {\n key: \"injection_molding\",\n value: \"Injection molding\",\n text: \"Injection molding\",\n },\n { key: \"extrusion\", value: \"Extrusion\", text: \"Extrusion\" },\n {\n key: \"metal_fabrication\",\n value: \"Metal fabrication\",\n text: \"Metal fabrication\",\n },\n {\n key: \"assembly_line_operations\",\n value: \"Assembly line operations\",\n text: \"Assembly line operations\",\n },\n {\n key: \"packaging_and_labeling\",\n value: \"Packaging and labeling\",\n text: \"Packaging and labeling\",\n },\n {\n key: \"cnc_programming_and_operation\",\n value: \"CNC programming and operation\",\n text: \"CNC programming and operation\",\n },\n { key: \"composites\", value: \"Composites\", text: \"Composites\" },\n { key: \"vacuum_systems\", value: \"Vacuum systems\", text: \"Vacuum systems\" },\n {\n key: \"process_improvement_methodologies_(such_as_six_sigma_or_kaizen)\",\n value: \"Process improvement methodologies (such as Six Sigma or Kaizen)\",\n text: \"Process improvement methodologies (such as Six Sigma or Kaizen)\",\n },\n\n {\n header: \"true\",\n key: \"header-protective-services\",\n text: \"Protective Services\",\n disabled: true,\n },\n { key: \"first_aid/cpr\", value: \"First Aid/CPR\", text: \"First Aid/CPR\" },\n {\n key: \"emergency_medical_response\",\n value: \"Emergency medical response\",\n text: \"Emergency medical response\",\n },\n {\n key: \"firearms_training\",\n value: \"Firearms training\",\n text: \"Firearms training\",\n },\n { key: \"surveillance\", value: \"Surveillance\", text: \"Surveillance\" },\n { key: \"investigation\", value: \"Investigation\", text: \"Investigation\" },\n { key: \"risk_assessment\", value: \"Risk assessment\", text: \"Risk assessment\" },\n {\n key: \"security_systems\",\n value: \"Security systems\",\n text: \"Security systems\",\n },\n {\n key: \"crisis_management\",\n value: \"Crisis management\",\n text: \"Crisis management\",\n },\n { key: \"crowd_control\", value: \"Crowd control\", text: \"Crowd control\" },\n {\n key: \"crime_scene_investigation\",\n value: \"Crime scene investigation\",\n text: \"Crime scene investigation\",\n },\n { key: \"patrol\", value: \"Patrol\", text: \"Patrol\" },\n { key: \"criminal_law\", value: \"Criminal law\", text: \"Criminal law\" },\n { key: \"traffic_control\", value: \"Traffic control\", text: \"Traffic control\" },\n {\n key: \"criminal_justice\",\n value: \"Criminal justice\",\n text: \"Criminal justice\",\n },\n { key: \"public_safety\", value: \"Public safety\", text: \"Public safety\" },\n {\n key: \"search_and_rescue\",\n value: \"Search and rescue\",\n text: \"Search and rescue\",\n },\n\n { header: \"true\", key: \"header-sales\", text: \"Sales\", disabled: true },\n { key: \"prospecting\", value: \"Prospecting\", text: \"Prospecting\" },\n { key: \"lead_generation\", value: \"Lead generation\", text: \"Lead generation\" },\n {\n key: \"customer_relationship_management_(crm)\",\n value: \"Customer relationship management (CRM)\",\n text: \"Customer relationship management (CRM)\",\n },\n {\n key: \"product_knowledge\",\n value: \"Product knowledge\",\n text: \"Product knowledge\",\n },\n { key: \"sales_closing\", value: \"Sales closing\", text: \"Sales closing\" },\n {\n key: \"contract_management\",\n value: \"Contract management\",\n text: \"Contract management\",\n },\n {\n key: \"pipeline_management\",\n value: \"Pipeline management\",\n text: \"Pipeline management\",\n },\n { key: \"sales_reporting\", value: \"Sales reporting\", text: \"Sales reporting\" },\n { key: \"sales_analytics\", value: \"Sales analytics\", text: \"Sales analytics\" },\n { key: \"market_research\", value: \"Market research\", text: \"Market research\" },\n {\n key: \"competitive_analysis\",\n value: \"Competitive analysis\",\n text: \"Competitive analysis\",\n },\n {\n key: \"forecasting_and_budgeting\",\n value: \"Forecasting and budgeting\",\n text: \"Forecasting and budgeting\",\n },\n { key: \"cold_calling\", value: \"Cold calling\", text: \"Cold calling\" },\n {\n key: \"consultative_selling\",\n value: \"Consultative selling\",\n text: \"Consultative selling\",\n },\n { key: \"sales_training\", value: \"Sales training\", text: \"Sales training\" },\n {\n key: \"account_management\",\n value: \"Account management\",\n text: \"Account management\",\n },\n {\n key: \"pricing_analysis\",\n value: \"Pricing analysis\",\n text: \"Pricing analysis\",\n },\n {\n key: \"territory_management\",\n value: \"Territory management\",\n text: \"Territory management\",\n },\n {\n key: \"business_development_sales\",\n value: \"Business development\",\n text: \"Business development\",\n },\n {\n key: \"sales_operations\",\n value: \"Sales operations\",\n text: \"Sales operations\",\n },\n {\n key: \"marketing_automation\",\n value: \"Marketing automation\",\n text: \"Marketing automation\",\n },\n { key: \"email_marketing\", value: \"Email marketing\", text: \"Email marketing\" },\n {\n key: \"social_media_marketing_sales\",\n value: \"Social media marketing\",\n text: \"Social media marketing\",\n },\n {\n key: \"online_advertising\",\n value: \"Online advertising\",\n text: \"Online advertising\",\n },\n {\n key: \"search_engine_optimization_(seo)_sales\",\n value: \"Search engine optimization (SEO)\",\n text: \"Search engine optimization (SEO)\",\n },\n {\n key: \"search_engine_marketing_(sem)\",\n value: \"Search engine marketing (SEM)\",\n text: \"Search engine marketing (SEM)\",\n },\n {\n key: \"content_marketing\",\n value: \"Content marketing\",\n text: \"Content marketing\",\n },\n\n { header: \"true\", key: \"header-science\", text: \"Science\", disabled: true },\n {\n key: \"artificial_intelligence\",\n value: \"Artificial intelligence\",\n text: \"Artificial intelligence\",\n },\n {\n key: \"r_programming_language\",\n value: \"R programming language\",\n text: \"R programming language\",\n },\n {\n key: \"behavioral_economics\",\n value: \"Behavioral economics\",\n text: \"Behavioral economics\",\n },\n { key: \"bioinformatics\", value: \"Bioinformatics\", text: \"Bioinformatics\" },\n { key: \"calibration\", value: \"Calibration\", text: \"Calibration\" },\n {\n key: \"cellular_biology_techniques\",\n value: \"Cellular biology techniques\",\n text: \"Cellular biology techniques\",\n },\n { key: \"data_analysis_science\", value: \"Data analysis\", text: \"Data analysis\" },\n {\n key: \"data_interpretation\",\n value: \"Data interpretation\",\n text: \"Data interpretation\",\n },\n { key: \"data_management\", value: \"Data management\", text: \"Data management\" },\n { key: \"data_mining_science\", value: \"Data mining\", text: \"Data mining\" },\n {\n key: \"data_visualization\",\n value: \"Data visualization\",\n text: \"Data visualization\",\n },\n {\n key: \"database_management\",\n value: \"Database management\",\n text: \"Database management\",\n },\n {\n key: \"decision_analysis\",\n value: \"Decision analysis\",\n text: \"Decision analysis\",\n },\n {\n key: \"digital_marketing\",\n value: \"Digital marketing\",\n text: \"Digital marketing\",\n },\n {\n key: \"econometric_modeling\",\n value: \"Econometric modeling\",\n text: \"Econometric modeling\",\n },\n {\n key: \"experimental_controls\",\n value: \"Experimental controls\",\n text: \"Experimental controls\",\n },\n {\n key: \"experimental_design\",\n value: \"Experimental design\",\n text: \"Experimental design\",\n },\n {\n key: \"experimental_economics\",\n value: \"Experimental economics\",\n text: \"Experimental economics\",\n },\n\n {\n header: \"true\",\n key: \"header-social-services\",\n text: \"Social Services\",\n disabled: true,\n },\n { key: \"case_management\", value: \"Case management\", text: \"Case management\" },\n { key: \"counseling\", value: \"Counseling\", text: \"Counseling\" },\n {\n key: \"crisis_intervention\",\n value: \"Crisis intervention\",\n text: \"Crisis intervention\",\n },\n {\n key: \"client_assessment\",\n value: \"Client assessment\",\n text: \"Client assessment\",\n },\n { key: \"advocacy\", value: \"Advocacy\", text: \"Advocacy\" },\n {\n key: \"group_facilitation\",\n value: \"Group facilitation\",\n text: \"Group facilitation\",\n },\n { key: \"data_entry_social_services\", value: \"Data entry\", text: \"Data entry\" },\n {\n key: \"research_and_analysis_social_services\",\n value: \"Research and analysis\",\n text: \"Research and analysis\",\n },\n { key: \"grant_writing\", value: \"Grant writing\", text: \"Grant writing\" },\n {\n key: \"program_evaluation\",\n value: \"Program evaluation\",\n text: \"Program evaluation\",\n },\n]\n\nconst defaultSkillOptionsEs = [\n {\n header: \"true\",\n key: \"header-interpersonal\",\n text: \"Interpersonal\",\n disabled: true,\n },\n { key: \"communication\", value: \"Communication\", text: \"Comunicación\" },\n { key: \"collaboration\", value: \"Collaboration\", text: \"Colaboración\" },\n {\n key: \"time_management\",\n value: \"Time Management\",\n text: \"Gestión del tiempo\",\n },\n {\n key: \"problem_solving\",\n value: \"Problem-solving\",\n text: \"Resolución de problemas\",\n },\n {\n key: \"attention_to_detail\",\n value: \"Attention to detail\",\n text: \"Atención al detalle\",\n },\n { key: \"creativity\", value: \"Creativity\", text: \"Creatividad\" },\n { key: \"adaptability\", value: \"Adapabtility\", text: \"Adaptación\" },\n { key: \"leadership\", value: \"Leadership\", text: \"Liderazgo\" },\n { key: \"teamwork\", value: \"Teamwork\", text: \"Trabajo en Equipo\" },\n {\n key: \"public_speaking\",\n value: \"Public Speaking\",\n text: \"Hablar en público\",\n },\n {\n key: \"presentation_skills\",\n value: \"Presentation Skills\",\n text: \"Habilidades de presentación\",\n },\n { key: \"organization\", value: \"Organization\", text: \"Organización\" },\n {\n key: \"analytical_skills\",\n value: \"Analytical skills\",\n text: \"Habilidades analÃticas\",\n },\n {\n key: \"decision_making\",\n value: \"Decision-making\",\n text: \"Toma de decisiones\",\n },\n {\n key: \"conflict_resolution\",\n value: \"Conflict resolution\",\n text: \"Resolución de conflictos\",\n },\n {\n key: \"project_management\",\n value: \"Project management\",\n text: \"Gestión de proyectos\",\n },\n {\n key: \"customer_service\",\n value: \"Customer service\",\n text: \"Servicio al cliente\",\n },\n {\n key: \"strategic_thinking\",\n value: \"Strategic thinking\",\n text: \"Pensamiento estratégico\",\n },\n { key: \"empathy\", value: \"Empathy\", text: \"EmpatÃa\" },\n {\n key: \"active_listening\",\n value: \"Active listening\",\n text: \"Escucha activa\",\n },\n { key: \"networking\", value: \"Networking\", text: \"Gestión de redes\" },\n { key: \"multitasking\", value: \"Multitasking\", text: \"Multitarea\" },\n {\n key: \"critical_thinking\",\n value: \"Critical thinking\",\n text: \"Pensamiento crÃtico\",\n },\n { key: \"flexibility\", value: \"Flexibility\", text: \"Flexibilidad\" },\n { key: \"planning\", value: \"Planning\", text: \"Planificación\" },\n { key: \"negotiation\", value: \"Negotiation\", text: \"Negociación\" },\n { key: \"diplomacy\", value: \"Diplomacy\", text: \"Diplomacia\" },\n { key: \"innovation\", value: \"Innovation\", text: \"Innovación\" },\n {\n header: \"true\",\n key: \"header-administrative\",\n text: \"Administrativo\",\n disabled: true,\n },\n {\n key: \"microsoft_office\",\n value: \"Microsoft Office\",\n text: \"Microsoft Office\",\n },\n { key: \"data_entry\", value: \"Data Entry\", text: \"Entrada de datos\" },\n {\n key: \"administrative_support\",\n value: \"Administrative Support\",\n text: \"Apoyo Administrativo\",\n },\n { key: \"microsoft_excel\", value: \"Microsoft Excel\", text: \"Microsoft Excel\" },\n { key: \"microsoft_word\", value: \"Microsoft Word\", text: \"Microsoft Word\" },\n {\n key: \"microsoft_powerpoint\",\n value: \"Microsoft Powerpoint\",\n text: \"Microsoft Powerpoint\",\n },\n { key: \"typing\", value: \"Typing\", text: \"MecanografÃa\" },\n { key: \"filing\", value: \"Filing\", text: \"Limado\" },\n { key: \"scheduling\", value: \"Scheduling\", text: \"Planificación\" },\n { key: \"spreadsheets\", value: \"Spreadsheets\", text: \"Cálculo\" },\n { key: \"invoicing\", value: \"Invoicing\", text: \"Facturación\" },\n { key: \"accounting\", value: \"Accounting\", text: \"Contabilidad\" },\n { key: \"receptionist\", value: \"Receptionist\", text: \"Recepcionista\" },\n {\n key: \"office_equipment\",\n value: \"Office Equipment\",\n text: \"Equipo de oficina\",\n },\n { key: \"billing\", value: \"Billing\", text: \"Facturación\" },\n { key: \"quick_books\", value: \"QuickBooks\", text: \"QuickBooks\" },\n {\n key: \"record_keeping\",\n value: \"Record Keeping\",\n text: \"Mantenimiento de registros\",\n },\n { key: \"slack\", value: \"Slack\", text: \"Flojo\" },\n { key: \"google_drive\", value: \"Google Drive\", text: \"Google Drive\" },\n {\n key: \"microsoft_outlook\",\n value: \"Microsoft Outlook\",\n text: \"Microsoft Outlook\",\n },\n { key: \"payroll\", value: \"Payroll\", text: \"Nómina\" },\n {\n key: \"accounts_payable\",\n value: \"Accounts Payable\",\n text: \"Cuentas a pagar\",\n },\n {\n header: \"true\",\n key: \"header-agriculture\",\n text: \"Agricultura\",\n disabled: true,\n },\n {\n key: \"equipment_maintenance\",\n value: \"Equipment Maintenance\",\n text: \"Mantenimiento de equipos\",\n },\n {\n key: \"safety_management\",\n value: \"Safety Management\",\n text: \"Gestión de la seguridad\",\n },\n {\n key: \"equipment_operation\",\n value: \"Equipment Operation\",\n text: \"Operación del equipo\",\n },\n {\n key: \"plant_identification\",\n value: \"Plant Identification\",\n text: \"Identificación de plantas\",\n },\n { key: \"irrigation\", value: \"Irrigation\", text: \"Riego\" },\n {\n key: \"heavy_equipment_operation\",\n value: \"Heavy Equipment Operation\",\n text: \"Operación de equipo pesado\",\n },\n {\n key: \"crop_management\",\n value: \"Crop Management\",\n text: \"Manejo de cultivos\",\n },\n {\n key: \"farm_management\",\n value: \"Farm Management\",\n text: \"Gestión de fincas\",\n },\n { key: \"pest_control\", value: \"Pest Control\", text: \"Control de plagas\" },\n { key: \"soil_sampling\", value: \"Soil Sampling\", text: \"Muestreo de suelos\" },\n {\n key: \"livestock_handling\",\n value: \"Livestock Handling\",\n text: \"Manejo de ganado\",\n },\n {\n header: \"true\",\n key: \"header-arts-and-media\",\n text: \"Arte y Medios de Comunicación\",\n disabled: true,\n },\n { key: \"graphic_design\", value: \"Graphic design\", text: \"Diseño gráfico\" },\n { key: \"video_editing\", value: \"Video editing\", text: \"Edición de vÃdeo\" },\n { key: \"photography\", value: \"Photography\", text: \"FotografÃa\" },\n { key: \"web_design\", value: \"Web design\", text: \"Diseño web\" },\n {\n key: \"social_media_marketing\",\n value: \"Social media marketing\",\n text: \"Marketing en redes sociales\",\n },\n {\n key: \"writing_and_editing\",\n value: \"Writing and editing\",\n text: \"Escritura y edición\",\n },\n { key: \"audio_editing\", value: \"Audio editing\", text: \"Edición de audio\" },\n { key: \"animation\", value: \"Animation\", text: \"Animación\" },\n { key: \"game_design\", value: \"Game design\", text: \"Diseño de juegos\" },\n { key: \"illustration\", value: \"Illustration\", text: \"Ilustración\" },\n {\n key: \"event_planning\",\n value: \"Event planning\",\n text: \"Planificación de eventos\",\n },\n { key: \"scriptwriting\", value: \"Scriptwriting\", text: \"Guión\" },\n { key: \"acting\", value: \"Acting\", text: \"Interino\" },\n {\n key: \"public_relations\",\n value: \"Public relations\",\n text: \"Relaciones públicas\",\n },\n {\n key: \"brand_management\",\n value: \"Brand management\",\n text: \"Gestión de marca\",\n },\n {\n key: \"interior_design\",\n value: \"Interior Design\",\n text: \"Diseño de Interiores\",\n },\n {\n key: \"architectural_design\",\n value: \"Architectural Design\",\n text: \"Diseño Arquitectónico\",\n },\n {\n key: \"search_engine_optimization_(seo)\",\n value: \"Search engine optimization (SEO)\",\n text: \"Optimización de motores de búsqueda (SEO)\",\n },\n { header: \"true\", key: \"header-business\", text: \"Negocio\", disabled: true },\n {\n key: \"financial_analysis\",\n value: \"Financial analysis\",\n text: \"Análisis financiero\",\n },\n { key: \"accounting_business\", value: \"Accounting\", text: \"Contabilidad\" },\n { key: \"budgeting\", value: \"Budgeting\", text: \"Presupuestación\" },\n {\n key: \"financial_forecasting\",\n value: \"Financial forecasting\",\n text: \"Previsión financiera\",\n },\n { key: \"data_analysis_business\", value: \"Data analysis\", text: \"Análisis de datos\" },\n { key: \"microsoft_excel_analysis\", value: \"Microsoft Excel\", text: \"Microsoft Excel\" },\n {\n key: \"financial_modeling\",\n value: \"Financial modeling\",\n text: \"Modelización financiera\",\n },\n {\n key: \"statistical_analysis\",\n value: \"Statistical analysis\",\n text: \"Análisis estadÃstico\",\n },\n {\n key: \"market_analysis\",\n value: \"Market analysis\",\n text: \"Análisis de mercado\",\n },\n {\n key: \"budgeting_and_financial_analysis\",\n value: \"Budgeting and financial analysis\",\n text: \"Presupuestación y análisis financiero\",\n },\n {\n key: \"data_analysis_and_reporting\",\n value: \"Data analysis and reporting\",\n text: \"Análisis de datos e informes\",\n },\n {\n key: \"operations_management\",\n value: \"Operations management\",\n text: \"Gestión de operaciones\",\n },\n {\n key: \"sales_and_marketing_management\",\n value: \"Sales and marketing management\",\n text: \"Gestión de ventas y marketing\",\n },\n {\n key: \"business_development\",\n value: \"Business development\",\n text: \"Desarrollo de negocio\",\n },\n {\n key: \"supply_chain_management\",\n value: \"Supply chain management\",\n text: \"Gestión de la cadena de suministro\",\n },\n {\n key: \"quality_control\",\n value: \"Quality control\",\n text: \"Control de calidad\",\n },\n {\n key: \"human_resources_management\",\n value: \"Human resources management\",\n text: \"Gestión de recursos humanos\",\n },\n {\n key: \"contract_negotiation\",\n value: \"Contract negotiation\",\n text: \"Negociación de contratos\",\n },\n {\n key: \"vendor_management\",\n value: \"Vendor management\",\n text: \"Gestión de proveedores\",\n },\n {\n key: \"process_improvement\",\n value: \"Process improvement\",\n text: \"Mejora de procesos\",\n },\n {\n key: \"business_intelligence\",\n value: \"Business intelligence\",\n text: \"Inteligencia de negocios\",\n },\n { key: \"lean_management\", value: \"Lean management\", text: \"Gestión Lean\" },\n { key: \"it_management\", value: \"IT management\", text: \"Gestión de TI\" },\n {\n key: \"logistics_management\",\n value: \"Logistics management\",\n text: \"Gestión logÃstica\",\n },\n {\n key: \"inventory_management\",\n value: \"Inventory management\",\n text: \"Gestión de inventario\",\n },\n { key: \"six_sigma\", value: \"Six Sigma\", text: \"Seis Sigma\" },\n {\n header: \"true\",\n key: \"header-computer-programming\",\n text: \"Programación de Computadoras\",\n disabled: true,\n },\n { key: \"java\", value: \"Java\", text: \"Java\" },\n { key: \"python\", value: \"Python\", text: \"Pitón\" },\n { key: \"sql\", value: \"SQL\", text: \".SQL\" },\n { key: \"c++\", value: \"C++\", text: \"C++\" },\n { key: \"javascript\", value: \"JavaScript\", text: \"JavaScript\" },\n { key: \"data_analysis_computer_programming\", value: \"Data Analysis\", text: \"Análisis de datos\" },\n { key: \"html\", value: \"HTML\", text: \".HTML\" },\n { key: \"css\", value: \"CSS\", text: \".CSS\" },\n {\n key: \"machine_learning\",\n value: \"Machine Learning\",\n text: \"Aprendizaje automático\",\n },\n {\n key: \"natural_language_processing\",\n value: \"Natural Language Processing\",\n text: \"Procesamiento del lenguaje natural\",\n },\n { key: \"data_science\", value: \"Data Science\", text: \"Ciencia de datos\" },\n { key: \"mongodb\", value: \"MongoDB\", text: \"MongoDB\" },\n {\n key: \"spring_framework\",\n value: \"Spring Framework\",\n text: \"Marco de primavera\",\n },\n { key: \".net_framework\", value: \".NET Framework\", text: \".NET Framework\" },\n { key: \"node.js\", value: \"Node.js\", text: \"Nodo.js\" },\n { key: \"react\", value: \"React\", text: \"Reaccionar\" },\n { key: \"angularjs\", value: \"AngularJS\", text: \"AngularJS\" },\n { key: \"data_mining\", value: \"Data Mining\", text: \"MinerÃa de datos\" },\n {\n header: \"true\",\n key: \"header-construction\",\n text: \"Construcción\",\n disabled: true,\n },\n {\n key: \"air_compressor_and_pneumatic_tool_maintenance\",\n value: \"Air compressor and pneumatic tool maintenance\",\n text: \"Mantenimiento de compresores de aire y herramientas neumáticas\",\n },\n {\n key: \"construction_site_management\",\n value: \"Construction site management\",\n text: \"Gestión de obras\",\n },\n {\n key: \"automotive_repair_and_maintenance\",\n value: \"Automotive repair and maintenance\",\n text: \"Reparación y mantenimiento de automóviles\",\n },\n {\n key: \"blueprint_analysis\",\n value: \"Blueprint analysis\",\n text: \"Análisis de planos\",\n },\n {\n key: \"boilers_and_pressure_vessels_inspection_and_maintenance\",\n value: \"Boilers and pressure vessels inspection and maintenance\",\n text: \"Inspección y mantenimiento de calderas y recipientes a presión\",\n },\n {\n key: \"building_and_facility_maintenance\",\n value: \"Building and facility maintenance\",\n text: \"Mantenimiento de edificios e instalaciones\",\n },\n {\n key: \"calibration_and_maintenance_of_analytical_instruments\",\n value: \"Calibration and maintenance of analytical instruments\",\n text: \"Calibración y mantenimiento de instrumentos analÃticos\",\n },\n {\n key: \"calibration_of_scientific_and_medical_instruments\",\n value: \"Calibration of scientific and medical instruments\",\n text: \"Calibración de instrumentos cientÃficos y médicos\",\n },\n {\n key: \"cnc_machine_programming_and_operation\",\n value: \"CNC machine programming and operation\",\n text: \"Programación y operación de máquinas CNC\",\n },\n {\n key: \"carpentry_and_woodworking\",\n value: \"Carpentry and woodworking\",\n text: \"CarpinterÃa y carpinterÃa\",\n },\n {\n key: \"blueprint_analysis_\",\n value: \"Blueprint analysis \",\n text: \"Análisis de planos \",\n },\n {\n key: \"equipment_operation_and_maintenance\",\n value: \"Equipment operation and maintenance\",\n text: \"Operación y mantenimiento de equipos\",\n },\n { key: \"welding\", value: \"Welding\", text: \"Soldadura\" },\n { key: \"concrete_work\", value: \"Concrete work\", text: \"Obra concreta\" },\n {\n key: \"computer-aided_design_and_drafting_(cadd)\",\n value: \"Computer-aided design and drafting (CADD)\",\n text: \"Diseño y dibujo asistido por ordenador (CADD)\",\n },\n { key: \"plumbing\", value: \"Plumbing\", text: \"PlomerÃa\" },\n {\n key: \"electrical_wiring_and_installation\",\n value: \"Electrical wiring and installation\",\n text: \"Cableado eléctrico e instalación\",\n },\n {\n key: \"heavy_equipment_operation_construction\",\n value: \"Heavy equipment operation\",\n text: \"Operación de equipos pesados\",\n },\n {\n key: \"crane_operation\",\n value: \"Crane operation\",\n text: \"Operación de grúa\",\n },\n {\n key: \"surveying_and_mapping\",\n value: \"Surveying and mapping\",\n text: \"TopografÃa y cartografÃa\",\n },\n {\n header: \"true\",\n key: \"header-culinary-arts\",\n text: \"Artes culinarias\",\n disabled: true,\n },\n { key: \"food_safety\", value: \"Food Safety\", text: \"Seguridad alimentaria\" },\n { key: \"sanitation\", value: \"Sanitation\", text: \"Saneamiento\" },\n {\n key: \"recipe_creation\",\n value: \"Recipe Creation\",\n text: \"Creación de recetas\",\n },\n {\n key: \"knife_skills\",\n value: \"Knife Skills\",\n text: \"Habilidades con el cuchillo\",\n },\n {\n key: \"food_preparation\",\n value: \"Food Preparation\",\n text: \"Preparación de alimentos\",\n },\n {\n key: \"cooking_techniques\",\n value: \"Cooking Techniques\",\n text: \"Técnicas de cocción\",\n },\n {\n key: \"menu_planning\",\n value: \"Menu Planning\",\n text: \"Planificación de menús\",\n },\n {\n key: \"recipe_reading_and_execution\",\n value: \"Recipe Reading and Execution\",\n text: \"Lectura y ejecución de recetas\",\n },\n {\n key: \"portion_control\",\n value: \"Portion Control\",\n text: \"Control de porciones\",\n },\n {\n key: \"inventory_management_culinary_arts\",\n value: \"Inventory Management\",\n text: \"Gestión de inventario\",\n },\n {\n key: \"baking_and_pastry\",\n value: \"Baking and Pastry\",\n text: \"PanaderÃa y pastelerÃa\",\n },\n {\n header: \"true\",\n key: \"header-education\",\n text: \"Educación\",\n disabled: true,\n },\n {\n key: \"curriculum_development\",\n value: \"Curriculum development\",\n text: \"Desarrollo curricular\",\n },\n { key: \"teaching\", value: \"Teaching\", text: \"Enseñanza\" },\n {\n key: \"student_assessment_and_evaluation\",\n value: \"Student assessment and evaluation\",\n text: \"Evaluación y evaluación de los estudiantes\",\n },\n {\n key: \"instructional_design\",\n value: \"Instructional design\",\n text: \"Diseño instruccional\",\n },\n {\n key: \"educational_technology\",\n value: \"Educational technology\",\n text: \"TecnologÃa educativa\",\n },\n {\n key: \"research_and_analysis\",\n value: \"Research and analysis\",\n text: \"Investigación y análisis\",\n },\n {\n key: \"library_management\",\n value: \"Library management\",\n text: \"Gestión bibliotecaria\",\n },\n {\n key: \"cataloging_and_classification\",\n value: \"Cataloging and classification\",\n text: \"Catalogación y clasificación\",\n },\n {\n key: \"collection_development\",\n value: \"Collection development\",\n text: \"Desarrollo de colecciones\",\n },\n {\n key: \"reference_services\",\n value: \"Reference services\",\n text: \"Servicios de referencia\",\n },\n {\n header: \"true\",\n key: \"header-engineering\",\n text: \"IngenierÃa\",\n disabled: true,\n },\n { key: \"autocad\", value: \"AutoCAD\", text: \"AutoCAD\" },\n {\n key: \"microsoft_office_engineering\",\n value: \"Microsoft Office\",\n text: \"Microsoft Office\",\n },\n { key: \"revit\", value: \"Revit\", text: \"Revit\" },\n { key: \"solidworks\", value: \"SolidWorks\", text: \"SolidWorks\" },\n { key: \"matlab\", value: \"MATLAB\", text: \"MATLAB\" },\n { key: \"python_engineering\", value: \"Python\", text: \"Pitón\" },\n { key: \"java_engineering\", value: \"Java\", text: \"Java\" },\n { key: \"c++_engineering\", value: \"C++\", text: \"C++\" },\n {\n key: \"finite_element_analysis\",\n value: \"Finite Element Analysis\",\n text: \"Análisis de elementos finitos\",\n },\n { key: \"hydraulics\", value: \"Hydraulics\", text: \"Hidráulica\" },\n { key: \"thermodynamics\", value: \"Thermodynamics\", text: \"Termodinámica\" },\n { key: \"instrumentation\", value: \"Instrumentation\", text: \"Instrumentación\" },\n {\n key: \"control_systems\",\n value: \"Control Systems\",\n text: \"Sistemas de control\",\n },\n {\n key: \"water_resources\",\n value: \"Water Resources\",\n text: \"Recursos hÃdricos\",\n },\n { key: \"data_analysis_engineering\", value: \"Data Analysis\", text: \"Análisis de datos\" },\n {\n key: \"electron_diffraction_machine\",\n value: \"Electron Diffraction Machine\",\n text: \"Máquina de difracción de electrones\",\n },\n {\n key: \"scanning_electron_microscope\",\n value: \"Scanning Electron Microscope\",\n text: \"Microscopio electrónico de barrido\",\n },\n { key: \"cnc_machining\", value: \"CNC Machining\", text: \"Mecanizado CNC\" },\n {\n key: \"mechanical_design\",\n value: \"Mechanical Design\",\n text: \"Diseño mecánico\",\n },\n {\n key: \"electrical_design\",\n value: \"Electrical Design\",\n text: \"Diseño eléctrico\",\n },\n {\n key: \"fluid_mechanics\",\n value: \"Fluid Mechanics\",\n text: \"Mecánica de fluidos\",\n },\n { key: \"robotics\", value: \"Robotics\", text: \"Robótica\" },\n {\n header: \"true\",\n key: \"header-healthcare\",\n text: \"Atención sanitaria\",\n disabled: true,\n },\n {\n key: \"surgical_procedures_and_techniques\",\n value: \"Surgical procedures and techniques\",\n text: \"Procedimientos y técnicas quirúrgicas\",\n },\n {\n key: \"patient_assessment_and_evaluation\",\n value: \"Patient assessment and evaluation\",\n text: \"Evaluación y valoración del paciente\",\n },\n {\n key: \"clinical_procedures_and_protocols\",\n value: \"Clinical procedures and protocols\",\n text: \"Procedimientos y protocolos clÃnicos\",\n },\n {\n key: \"diagnostic_imaging_technology\",\n value: \"Diagnostic imaging technology\",\n text: \"TecnologÃa de diagnóstico por imágenes\",\n },\n {\n key: \"pharmacology_and_medication_administration\",\n value: \"Pharmacology and medication administration\",\n text: \"FarmacologÃa y administración de medicamentos\",\n },\n {\n key: \"infection_control_and_prevention\",\n value: \"Infection control and prevention\",\n text: \"Control y prevención de infecciones\",\n },\n {\n key: \"cardiopulmonary_resuscitation_(cpr)\",\n value: \"Cardiopulmonary resuscitation (CPR)\",\n text: \"Reanimación cardiopulmonar (RCP)\",\n },\n {\n key: \"anatomy_and_physiology\",\n value: \"Anatomy and physiology\",\n text: \"AnatomÃa y fisiologÃa\",\n },\n {\n key: \"nursing_interventions_and_care_planning\",\n value: \"Nursing interventions and care planning\",\n text: \"Intervenciones de enfermerÃa y planificación de la atención\",\n },\n {\n key: \"radiologic_technology\",\n value: \"Radiologic technology\",\n text: \"TecnologÃa radiológica\",\n },\n {\n key: \"laboratory_techniques_and_procedures\",\n value: \"Laboratory techniques and procedures\",\n text: \"Técnicas y procedimientos de laboratorio\",\n },\n { key: \"patient_care\", value: \"Patient Care\", text: \"Atención al paciente\" },\n {\n key: \"medical_terminology\",\n value: \"Medical Terminology\",\n text: \"TerminologÃa médica\",\n },\n {\n key: \"vital_signs_measurement\",\n value: \"Vital Signs Measurement\",\n text: \"Medición de signos vitales\",\n },\n {\n key: \"medical_records_management\",\n value: \"Medical Records Management\",\n text: \"Gestión de registros médicos\",\n },\n {\n key: \"medical_coding\",\n value: \"Medical Coding\",\n text: \"Codificación médica\",\n },\n { key: \"first_aid\", value: \"First Aid\", text: \"Primeros auxilios\" },\n {\n key: \"infection_control\",\n value: \"Infection Control\",\n text: \"Control de infecciones\",\n },\n {\n key: \"electronic_health_records_(ehr)\",\n value: \"Electronic Health Records (EHR)\",\n text: \"Registros electrónicos de salud (EHR)\",\n },\n { key: \"phlebotomy\", value: \"Phlebotomy\", text: \"FlebotomÃa\" },\n {\n key: \"cardiopulmonary_resuscitation_(cpr)__healthcare\",\n value: \"Cardiopulmonary Resuscitation (CPR)\",\n text: \"Reanimación cardiopulmonar (RCP)\",\n },\n {\n key: \"medical_billing\",\n value: \"Medical Billing\",\n text: \"Facturación médica\",\n },\n { header: \"true\", key: \"header-legal\", text: \"Legal\", disabled: true },\n {\n key: \"legal_research\",\n value: \"Legal research\",\n text: \"Investigación jurÃdica\",\n },\n {\n key: \"writing_legal_documents\",\n value: \"Writing legal documents\",\n text: \"Redacción de documentos legales\",\n },\n {\n key: \"analyzing_legal_documents\",\n value: \"Analyzing legal documents\",\n text: \"Análisis de documentos legales\",\n },\n { key: \"litigation\", value: \"Litigation\", text: \"Litigación\" },\n {\n key: \"drafting_legal_documents\",\n value: \"Drafting legal documents\",\n text: \"Redacción de documentos legales\",\n },\n { key: \"legal_writing\", value: \"Legal writing\", text: \"Redacción legal\" },\n {\n key: \"contract_negotiation_legal\",\n value: \"Contract negotiation\",\n text: \"Negociación de contratos\",\n },\n {\n key: \"contract_drafting\",\n value: \"Contract drafting\",\n text: \"Redacción de contratos\",\n },\n {\n key: \"trial_advocacy\",\n value: \"Trial advocacy\",\n text: \"AbogacÃa en juicios\",\n },\n {\n key: \"legal_compliance\",\n value: \"Legal compliance\",\n text: \"Cumplimiento legal\",\n },\n { key: \"legal_analysis\", value: \"Legal analysis\", text: \"Análisis jurÃdico\" },\n {\n key: \"legal_drafting\",\n value: \"Legal drafting\",\n text: \"Redacción jurÃdica\",\n },\n {\n key: \"contract_review\",\n value: \"Contract review\",\n text: \"Revisión de contratos\",\n },\n {\n key: \"legal_documentation\",\n value: \"Legal documentation\",\n text: \"Documentación legal\",\n },\n {\n key: \"intellectual_property_law\",\n value: \"Intellectual property law\",\n text: \"Derecho de la propiedad intelectual\",\n },\n { key: \"legal_issues\", value: \"Legal issues\", text: \"Cuestiones jurÃdicas\" },\n {\n header: \"true\",\n key: \"header-manufacturing\",\n text: \"Fabricación\",\n disabled: true,\n },\n {\n key: \"machine_operation\",\n value: \"Machine operation\",\n text: \"Funcionamiento de la máquina\",\n },\n {\n key: \"cleanroom_operations\",\n value: \"Cleanroom operations\",\n text: \"Operaciones de sala limpia\",\n },\n {\n key: \"quality_control_and_assurance\",\n value: \"Quality control and assurance\",\n text: \"Control y aseguramiento de la calidad\",\n },\n {\n key: \"manufacturing_processes\",\n value: \"Manufacturing processes\",\n text: \"Procesos de fabricación\",\n },\n {\n key: \"production_scheduling\",\n value: \"Production scheduling\",\n text: \"Programación de la producción\",\n },\n {\n key: \"equipment_maintenance_and_repair\",\n value: \"Equipment maintenance and repair\",\n text: \"Mantenimiento y reparación de equipos\",\n },\n {\n key: \"technical_drawing_and_blueprint_interpretation\",\n value: \"Technical drawing and blueprint interpretation\",\n text: \"Dibujo técnico e interpretación de planos\",\n },\n {\n key: \"inventory_management_manufacturing\",\n value: \"Inventory management\",\n text: \"Gestión de inventario\",\n },\n {\n key: \"material_handling\",\n value: \"Material handling\",\n text: \"Manejo de materiales\",\n },\n {\n key: \"safety_procedures_and_protocols\",\n value: \"Safety procedures and protocols\",\n text: \"Procedimientos y protocolos de seguridad\",\n },\n {\n key: \"lean_manufacturing_principles\",\n value: \"Lean manufacturing principles\",\n text: \"Principios de fabricación ajustada\",\n },\n { key: \"welding_manufacturing\", value: \"Welding\", text: \"Soldadura\" },\n {\n key: \"computer-aided_design_(cad)\",\n value: \"Computer-aided design (CAD)\",\n text: \"Diseño asistido por ordenador (CAD)\",\n },\n {\n key: \"programming_languages_for_industrial_automation_(such_as_ladder_logic,_c++,_or_python)\",\n value:\n \"Programming languages for industrial automation (such as ladder logic, C++, or Python)\",\n text: \"Lenguajes de programación para automatización industrial (como lógica de escalera, C ++ o Python)\",\n },\n {\n key: \"robotics_and_automation_technology\",\n value: \"Robotics and automation technology\",\n text: \"Robótica y tecnologÃa de automatización\",\n },\n {\n key: \"troubleshooting_and_problem-solving\",\n value: \"Troubleshooting and problem-solving\",\n text: \"Solución de problemas y resolución de problemas\",\n },\n {\n key: \"statistical_process_control\",\n value: \"Statistical process control\",\n text: \"Control estadÃstico de procesos\",\n },\n {\n key: \"data_analysis_and_interpretation\",\n value: \"Data analysis and interpretation\",\n text: \"Análisis e interpretación de datos\",\n },\n {\n key: \"environmental,_health,_and_safety_regulations\",\n value: \"Environmental, health, and safety regulations\",\n text: \"Regulaciones ambientales, de salud y seguridad\",\n },\n {\n key: \"calibration_of_measurement_instruments\",\n value: \"Calibration of measurement instruments\",\n text: \"Calibración de instrumentos de medición\",\n },\n {\n key: \"electrical_wiring_and_circuitry\",\n value: \"Electrical wiring and circuitry\",\n text: \"Cableado eléctrico y circuitos\",\n },\n {\n key: \"pneumatic_and_hydraulic_systems\",\n value: \"Pneumatic and hydraulic systems\",\n text: \"Sistemas neumáticos e hidráulicos\",\n },\n {\n key: \"machining_and_tooling\",\n value: \"Machining and tooling\",\n text: \"Mecanizado y utillaje\",\n },\n {\n key: \"injection_molding\",\n value: \"Injection molding\",\n text: \"Moldeo por inyección\",\n },\n { key: \"extrusion\", value: \"Extrusion\", text: \"Extrusión\" },\n {\n key: \"metal_fabrication\",\n value: \"Metal fabrication\",\n text: \"Fabricación de metal\",\n },\n {\n key: \"assembly_line_operations\",\n value: \"Assembly line operations\",\n text: \"Operaciones de la lÃnea de montaje\",\n },\n {\n key: \"packaging_and_labeling\",\n value: \"Packaging and labeling\",\n text: \"Envasado y etiquetado\",\n },\n {\n key: \"cnc_programming_and_operation\",\n value: \"CNC programming and operation\",\n text: \"Programación y operación CNC\",\n },\n { key: \"composites\", value: \"Composites\", text: \"Composites\" },\n { key: \"vacuum_systems\", value: \"Vacuum systems\", text: \"Sistemas de vacÃo\" },\n {\n key: \"process_improvement_methodologies_(such_as_six_sigma_or_kaizen)\",\n value: \"Process improvement methodologies (such as Six Sigma or Kaizen)\",\n text: \"MetodologÃas de mejora de procesos (como Six Sigma o Kaizen)\",\n },\n {\n header: \"true\",\n key: \"header-protective-services\",\n text: \"Servicios de protección\",\n disabled: true,\n },\n {\n key: \"first_aid/cpr\",\n value: \"First Aid/CPR\",\n text: \"Primeros auxilios/RCP\",\n },\n {\n key: \"emergency_medical_response\",\n value: \"Emergency medical response\",\n text: \"Respuesta médica de emergencia\",\n },\n {\n key: \"firearms_training\",\n value: \"Firearms training\",\n text: \"Entrenamiento con armas de fuego\",\n },\n { key: \"surveillance\", value: \"Surveillance\", text: \"Vigilancia\" },\n { key: \"investigation\", value: \"Investigation\", text: \"Investigación\" },\n {\n key: \"risk_assessment\",\n value: \"Risk assessment\",\n text: \"Evaluación de riesgos\",\n },\n {\n key: \"security_systems\",\n value: \"Security systems\",\n text: \"Sistemas de seguridad\",\n },\n {\n key: \"crisis_management\",\n value: \"Crisis management\",\n text: \"Gestión de crisis\",\n },\n {\n key: \"crowd_control\",\n value: \"Crowd control\",\n text: \"Control de multitudes\",\n },\n {\n key: \"crime_scene_investigation\",\n value: \"Crime scene investigation\",\n text: \"Investigación de la escena del crimen\",\n },\n { key: \"patrol\", value: \"Patrol\", text: \"Patrulla\" },\n { key: \"criminal_law\", value: \"Criminal law\", text: \"Derecho penal\" },\n {\n key: \"traffic_control\",\n value: \"Traffic control\",\n text: \"Control de tráfico\",\n },\n {\n key: \"criminal_justice\",\n value: \"Criminal justice\",\n text: \"Justicia penal\",\n },\n { key: \"public_safety\", value: \"Public safety\", text: \"Seguridad pública\" },\n {\n key: \"search_and_rescue\",\n value: \"Search and rescue\",\n text: \"Búsqueda y rescate\",\n },\n { header: \"true\", key: \"header-sales\", text: \"Ventas\", disabled: true },\n { key: \"prospecting\", value: \"Prospecting\", text: \"Prospección\" },\n {\n key: \"lead_generation\",\n value: \"Lead generation\",\n text: \"Generación de leads\",\n },\n {\n key: \"customer_relationship_management_(crm)\",\n value: \"Customer relationship management (CRM)\",\n text: \"Gestión de relaciones con los clientes (CRM)\",\n },\n {\n key: \"product_knowledge\",\n value: \"Product knowledge\",\n text: \"Conocimiento del producto\",\n },\n { key: \"sales_closing\", value: \"Sales closing\", text: \"Cierre de ventas\" },\n {\n key: \"contract_management\",\n value: \"Contract management\",\n text: \"Gestión de contratos\",\n },\n {\n key: \"pipeline_management\",\n value: \"Pipeline management\",\n text: \"Gestión de tuberÃas\",\n },\n {\n key: \"sales_reporting\",\n value: \"Sales reporting\",\n text: \"Informes de ventas\",\n },\n {\n key: \"sales_analytics\",\n value: \"Sales analytics\",\n text: \"Análisis de ventas\",\n },\n {\n key: \"market_research\",\n value: \"Market research\",\n text: \"Estudio de mercado\",\n },\n {\n key: \"competitive_analysis\",\n value: \"Competitive analysis\",\n text: \"Análisis competitivo\",\n },\n {\n key: \"forecasting_and_budgeting\",\n value: \"Forecasting and budgeting\",\n text: \"Previsión y presupuestación\",\n },\n { key: \"cold_calling\", value: \"Cold calling\", text: \"Llamadas en frÃo\" },\n {\n key: \"consultative_selling\",\n value: \"Consultative selling\",\n text: \"Venta consultiva\",\n },\n {\n key: \"sales_training\",\n value: \"Sales training\",\n text: \"Formación en ventas\",\n },\n {\n key: \"account_management\",\n value: \"Account management\",\n text: \"Gestión de cuentas\",\n },\n {\n key: \"pricing_analysis\",\n value: \"Pricing analysis\",\n text: \"Análisis de precios\",\n },\n {\n key: \"territory_management\",\n value: \"Territory management\",\n text: \"Gestión del territorio\",\n },\n {\n key: \"business_development_sales\",\n value: \"Business development\",\n text: \"Desarrollo de negocio\",\n },\n {\n key: \"sales_operations\",\n value: \"Sales operations\",\n text: \"Operaciones de venta\",\n },\n {\n key: \"marketing_automation\",\n value: \"Marketing automation\",\n text: \"Automatización de marketing\",\n },\n {\n key: \"email_marketing\",\n value: \"Email marketing\",\n text: \"Marketing por correo electrónico\",\n },\n {\n key: \"social_media_marketing_sales\",\n value: \"Social media marketing\",\n text: \"Marketing en redes sociales\",\n },\n {\n key: \"online_advertising\",\n value: \"Online advertising\",\n text: \"Publicidad online\",\n },\n {\n key: \"search_engine_optimization_(seo)_sales\",\n value: \"Search engine optimization (SEO)\",\n text: \"Optimización de motores de búsqueda (SEO)\",\n },\n {\n key: \"search_engine_marketing_(sem)\",\n value: \"Search engine marketing (SEM)\",\n text: \"Marketing en buscadores (SEM)\",\n },\n {\n key: \"content_marketing\",\n value: \"Content marketing\",\n text: \"Marketing de contenidos\",\n },\n { header: \"true\", key: \"header-science\", text: \"Ciencia\", disabled: true },\n {\n key: \"artificial_intelligence\",\n value: \"Artificial intelligence\",\n text: \"Inteligencia artificial\",\n },\n {\n key: \"r_programming_language\",\n value: \"R programming language\",\n text: \"Lenguaje de programación R\",\n },\n {\n key: \"behavioral_economics\",\n value: \"Behavioral economics\",\n text: \"EconomÃa conductual\",\n },\n { key: \"bioinformatics\", value: \"Bioinformatics\", text: \"Bioinformática\" },\n { key: \"calibration\", value: \"Calibration\", text: \"Calibración\" },\n {\n key: \"cellular_biology_techniques\",\n value: \"Cellular biology techniques\",\n text: \"Técnicas de biologÃa celular\",\n },\n { key: \"data_analysis_science\", value: \"Data analysis\", text: \"Análisis de datos\" },\n {\n key: \"data_interpretation\",\n value: \"Data interpretation\",\n text: \"Interpretación de los datos\",\n },\n {\n key: \"data_management\",\n value: \"Data management\",\n text: \"Gestión de datos\",\n },\n { key: \"data_mining_science\", value: \"Data mining\", text: \"MinerÃa de datos\" },\n {\n key: \"data_visualization\",\n value: \"Data visualization\",\n text: \"Visualización de datos\",\n },\n {\n key: \"database_management\",\n value: \"Database management\",\n text: \"Gestión de bases de datos\",\n },\n {\n key: \"decision_analysis\",\n value: \"Decision analysis\",\n text: \"Análisis de decisiones\",\n },\n {\n key: \"digital_marketing\",\n value: \"Digital marketing\",\n text: \"Marketing digital\",\n },\n {\n key: \"econometric_modeling\",\n value: \"Econometric modeling\",\n text: \"Modelado econométrico\",\n },\n {\n key: \"experimental_controls\",\n value: \"Experimental controls\",\n text: \"Controles experimentales\",\n },\n {\n key: \"experimental_design\",\n value: \"Experimental design\",\n text: \"Diseño experimental\",\n },\n {\n key: \"experimental_economics\",\n value: \"Experimental economics\",\n text: \"EconomÃa experimental\",\n },\n {\n header: \"true\",\n key: \"header-social-services\",\n text: \"Servicios sociales\",\n disabled: true,\n },\n {\n key: \"case_management\",\n value: \"Case management\",\n text: \"Gestión de casos\",\n },\n { key: \"counseling\", value: \"Counseling\", text: \"Asesoramiento\" },\n {\n key: \"crisis_intervention\",\n value: \"Crisis intervention\",\n text: \"Intervención en crisis\",\n },\n {\n key: \"client_assessment\",\n value: \"Client assessment\",\n text: \"Evaluación del cliente\",\n },\n { key: \"advocacy\", value: \"Advocacy\", text: \"AbogacÃa\" },\n {\n key: \"group_facilitation\",\n value: \"Group facilitation\",\n text: \"Facilitación de grupos\",\n },\n { key: \"data_entry_social_services\", value: \"Data entry\", text: \"Entrada de datos\" },\n {\n key: \"research_and_analysis_social_services\",\n value: \"Research and analysis\",\n text: \"Investigación y análisis\",\n },\n {\n key: \"grant_writing\",\n value: \"Grant writing\",\n text: \"Redacción de subvenciones\",\n },\n {\n key: \"program_evaluation\",\n value: \"Program evaluation\",\n text: \"Evaluación del programa\",\n },\n];\n\nconst defaultInterestOptions = [\n {\n header: \"true\",\n key: \"header-arts-and-creativity\",\n text: \"Arts and Creativity\",\n disabled: true,\n },\n { key: \"painting\", value: \"Painting\", text: \"Painting\" },\n { key: \"drawing\", value: \"Drawing\", text: \"Drawing\" },\n { key: \"sculpting\", value: \"Sculpting\", text: \"Sculpting\" },\n { key: \"photography\", value: \"Photography\", text: \"Photography\" },\n { key: \"pottery\", value: \"Pottery\", text: \"Pottery\" },\n {\n key: \"writing_(fiction,_poetry,_etc.)\",\n value: \"Writing (fiction, poetry, etc.)\",\n text: \"Writing (fiction, poetry, etc.)\",\n },\n { key: \"calligraphy\", value: \"Calligraphy\", text: \"Calligraphy\" },\n { key: \"graphic_design\", value: \"Graphic design\", text: \"Graphic design\" },\n { key: \"fashion_design\", value: \"Fashion design\", text: \"Fashion design\" },\n { key: \"acting\", value: \"Acting\", text: \"Acting\" },\n { key: \"dance\", value: \"Dance\", text: \"Dance\" },\n {\n header: \"true\",\n key: \"header-entertainment\",\n text: \"Entertainment\",\n disabled: true,\n },\n {\n key: \"watching_movies_and_tv_shows\",\n value: \"Watching movies and TV shows\",\n text: \"Watching movies and TV shows\",\n },\n {\n key: \"gaming_(video_games,_board_games,_etc.)\",\n value: \"Gaming (video games, board games, etc.)\",\n text: \"Gaming (video games, board games, etc.)\",\n },\n {\n key: \"reading_books_and_literature\",\n value: \"Reading books and literature\",\n text: \"Reading books and literature\",\n },\n {\n key: \"listening_to_music\",\n value: \"Listening to music\",\n text: \"Listening to music\",\n },\n {\n key: \"attending_live_performances_(concerts,_theater,_etc.)\",\n value: \"Attending live performances (concerts, theater, etc.)\",\n text: \"Attending live performances (concerts, theater, etc.)\",\n },\n { key: \"stand-up_comedy\", value: \"Stand-up comedy\", text: \"Stand-up comedy\" },\n { key: \"magic_shows\", value: \"Magic shows\", text: \"Magic shows\" },\n {\n key: \"improv_workshops\",\n value: \"Improv workshops\",\n text: \"Improv workshops\",\n },\n { key: \"karaoke\", value: \"Karaoke\", text: \"Karaoke\" },\n { key: \"escape_rooms\", value: \"Escape rooms\", text: \"Escape rooms\" },\n {\n header: \"true\",\n key: \"header-outdoor-and-nature\",\n text: \"Outdoor and Nature\",\n disabled: true,\n },\n {\n key: \"hiking_and_trekking\",\n value: \"Hiking and trekking\",\n text: \"Hiking and trekking\",\n },\n { key: \"camping\", value: \"Camping\", text: \"Camping\" },\n { key: \"birdwatching\", value: \"Birdwatching\", text: \"Birdwatching\" },\n { key: \"gardening\", value: \"Gardening\", text: \"Gardening\" },\n {\n key: \"nature_photography\",\n value: \"Nature photography\",\n text: \"Nature photography\",\n },\n {\n key: \"wildlife_conservation\",\n value: \"Wildlife conservation\",\n text: \"Wildlife conservation\",\n },\n {\n key: \"kayaking_or_canoeing\",\n value: \"Kayaking or canoeing\",\n text: \"Kayaking or canoeing\",\n },\n { key: \"geocaching\", value: \"Geocaching\", text: \"Geocaching\" },\n { key: \"surfing\", value: \"Surfing\", text: \"Surfing\" },\n {\n key: \"rockhounding_(collecting_rocks_and_minerals)\",\n value: \"Rockhounding (collecting rocks and minerals)\",\n text: \"Rockhounding (collecting rocks and minerals)\",\n },\n {\n header: \"true\",\n key: \"header-sports-and-physical-activities\",\n text: \"Sports and Physical Activities\",\n disabled: true,\n },\n {\n key: \"playing_sports_(soccer,_basketball,_tennis,_etc.)\",\n value: \"Playing sports (soccer, basketball, tennis, etc.)\",\n text: \"Playing sports (soccer, basketball, tennis, etc.)\",\n },\n {\n key: \"yoga_and_meditation\",\n value: \"Yoga and meditation\",\n text: \"Yoga and meditation\",\n },\n {\n key: \"running_and_jogging\",\n value: \"Running and jogging\",\n text: \"Running and jogging\",\n },\n { key: \"swimming\", value: \"Swimming\", text: \"Swimming\" },\n { key: \"cycling\", value: \"Cycling\", text: \"Cycling\" },\n { key: \"rock_climbing\", value: \"Rock climbing\", text: \"Rock climbing\" },\n { key: \"martial_arts\", value: \"Martial arts\", text: \"Martial arts\" },\n { key: \"parkour\", value: \"Parkour\", text: \"Parkour\" },\n {\n key: \"dance_fitness_(e.g.,_zumba)\",\n value: \"Dance fitness (e.g., Zumba)\",\n text: \"Dance fitness (e.g., Zumba)\",\n },\n { key: \"skilling\", value: \"Skilling\", text: \"Skilling\" },\n {\n header: \"true\",\n key: \"header-travel-and-exploration\",\n text: \"Travel and Exploration\",\n disabled: true,\n },\n {\n key: \"traveling_to_new_places\",\n value: \"Traveling to new places\",\n text: \"Traveling to new places\",\n },\n {\n key: \"exploring_different_cultures\",\n value: \"Exploring different cultures\",\n text: \"Exploring different cultures\",\n },\n {\n key: \"trying_local_cuisines\",\n value: \"Trying local cuisines\",\n text: \"Trying local cuisines\",\n },\n { key: \"road_trips\", value: \"Road trips\", text: \"Road trips\" },\n { key: \"backpacking\", value: \"Backpacking\", text: \"Backpacking\" },\n {\n key: \"urban_exploration_(exploring_abandoned_buildings_and_sites)\",\n value: \"Urban exploration (exploring abandoned buildings and sites)\",\n text: \"Urban exploration (exploring abandoned buildings and sites)\",\n },\n { key: \"cruises\", value: \"Cruises\", text: \"Cruises\" },\n {\n key: \"adventure_travel_(e.g.,_safaris,_trekking_expeditions)\",\n value: \"Adventure travel (e.g., safaris, trekking expeditions)\",\n text: \"Adventure travel (e.g., safaris, trekking expeditions)\",\n },\n { key: \"ecotourism\", value: \"Ecotourism\", text: \"Ecotourism\" },\n { key: \"train_journeys\", value: \"Train journeys\", text: \"Train journeys\" },\n {\n header: \"true\",\n key: \"header-food-and-cooking\",\n text: \"Food and Cooking\",\n disabled: true,\n },\n {\n key: \"cooking_and_trying_new_recipes\",\n value: \"Cooking and trying new recipes\",\n text: \"Cooking and trying new recipes\",\n },\n { key: \"baking\", value: \"Baking\", text: \"Baking\" },\n { key: \"gourmet_dining\", value: \"Gourmet dining\", text: \"Gourmet dining\" },\n { key: \"food_blogging\", value: \"Food blogging\", text: \"Food blogging\" },\n {\n key: \"wine_tasting_and_appreciation\",\n value: \"Wine tasting and appreciation\",\n text: \"Wine tasting and appreciation\",\n },\n {\n key: \"food_festivals_and_events\",\n value: \"Food festivals and events\",\n text: \"Food festivals and events\",\n },\n {\n key: \"fermentation_(making_sauerkraut,_kimchi,_etc.)\",\n value: \"Fermentation (making sauerkraut, kimchi, etc.)\",\n text: \"Fermentation (making sauerkraut, kimchi, etc.)\",\n },\n {\n key: \"vegan_or_plant-based_cooking\",\n value: \"Vegan or plant-based cooking\",\n text: \"Vegan or plant-based cooking\",\n },\n {\n key: \"food_photography_and_styling\",\n value: \"Food photography and styling\",\n text: \"Food photography and styling\",\n },\n {\n key: \"molecular_gastronomy\",\n value: \"Molecular gastronomy\",\n text: \"Molecular gastronomy\",\n },\n {\n header: \"true\",\n key: \"header-technology\",\n text: \"Technology\",\n disabled: true,\n },\n {\n key: \"exploring_new_gadgets_and_tech_innovations\",\n value: \"Exploring new gadgets and tech innovations\",\n text: \"Exploring new gadgets and tech innovations\",\n },\n {\n key: \"coding_and_programming\",\n value: \"Coding and programming\",\n text: \"Coding and programming\",\n },\n { key: \"robotics\", value: \"Robotics\", text: \"Robotics\" },\n {\n key: \"virtual_reality_(vr)_experiences\",\n value: \"Virtual reality (VR) experiences\",\n text: \"Virtual reality (VR) experiences\",\n },\n {\n key: \"electronics_tinkering_and_diy_projects\",\n value: \"Electronics tinkering and DIY projects\",\n text: \"Electronics tinkering and DIY projects\",\n },\n {\n key: \"drones_and_aerial_photography\",\n value: \"Drones and aerial photography\",\n text: \"Drones and aerial photography\",\n },\n {\n key: \"smart_home_automation\",\n value: \"Smart home automation\",\n text: \"Smart home automation\",\n },\n { key: \"3d_printing\", value: \"3D printing\", text: \"3D printing\" },\n {\n key: \"internet_of_things_(iot)_projects\",\n value: \"Internet of Things (IoT) projects\",\n text: \"Internet of Things (IoT) projects\",\n },\n {\n key: \"cryptocurrency_and_blockchain_technology\",\n value: \"Cryptocurrency and blockchain technology\",\n text: \"Cryptocurrency and blockchain technology\",\n },\n {\n header: \"true\",\n key: \"header-science-and-knowledge\",\n text: \"Science and Knowledge\",\n disabled: true,\n },\n {\n key: \"astronomy_and_stargazing\",\n value: \"Astronomy and stargazing\",\n text: \"Astronomy and stargazing\",\n },\n {\n key: \"learning_about_scientific_discoveries\",\n value: \"Learning about scientific discoveries\",\n text: \"Learning about scientific discoveries\",\n },\n {\n key: \"philosophy_and_deep_discussions\",\n value: \"Philosophy and deep discussions\",\n text: \"Philosophy and deep discussions\",\n },\n {\n key: \"history_and_historical_research\",\n value: \"History and historical research\",\n text: \"History and historical research\",\n },\n {\n key: \"learning_new_languages\",\n value: \"Learning new languages\",\n text: \"Learning new languages\",\n },\n { key: \"archaeology\", value: \"Archaeology\", text: \"Archaeology\" },\n {\n key: \"particle_physics_and_cosmology\",\n value: \"Particle physics and cosmology\",\n text: \"Particle physics and cosmology\",\n },\n {\n key: \"psychology_and_human_behavior\",\n value: \"Psychology and human behavior\",\n text: \"Psychology and human behavior\",\n },\n {\n key: \"marine_biology_and_oceanography\",\n value: \"Marine biology and oceanography\",\n text: \"Marine biology and oceanography\",\n },\n {\n key: \"meteorology_and_weather_tracking\",\n value: \"Meteorology and weather tracking\",\n text: \"Meteorology and weather tracking\",\n },\n {\n header: \"true\",\n key: \"header-community\",\n text: \"Community\",\n disabled: true,\n },\n {\n key: \"volunteering_and_community_service\",\n value: \"Volunteering and community service\",\n text: \"Volunteering and community service\",\n },\n {\n key: \"social_and_environmental_activism\",\n value: \"Social and environmental activism\",\n text: \"Social and environmental activism\",\n },\n {\n key: \"joining_clubs_or_organizations\",\n value: \"Joining clubs or organizations\",\n text: \"Joining clubs or organizations\",\n },\n {\n key: \"networking_and_social_events\",\n value: \"Networking and social events\",\n text: \"Networking and social events\",\n },\n {\n key: \"mentoring_or_tutoring\",\n value: \"Mentoring or tutoring\",\n text: \"Mentoring or tutoring\",\n },\n {\n key: \"public_speaking_and_toastmasters\",\n value: \"Public speaking and Toastmasters\",\n text: \"Public speaking and Toastmasters\",\n },\n { key: \"debating_clubs\", value: \"Debating clubs\", text: \"Debating clubs\" },\n {\n key: \"support_groups_(e.g.,_mental_health,_recovery)\",\n value: \"Support groups (e.g., mental health, recovery)\",\n text: \"Support groups (e.g., mental health, recovery)\",\n },\n {\n key: \"community_gardening\",\n value: \"Community gardening\",\n text: \"Community gardening\",\n },\n {\n key: \"fundraising_for_charitable_causes\",\n value: \"Fundraising for charitable causes\",\n text: \"Fundraising for charitable causes\",\n },\n\n {\n header: \"true\",\n key: \"header-health-and-wellness\",\n text: \"Health and Wellness\",\n disabled: true,\n },\n {\n key: \"fitness_and_exercise_\",\n value: \"Fitness and exercise \",\n text: \"Fitness and exercise \",\n },\n {\n key: \"healthy_cooking_and_nutrition\",\n value: \"Healthy cooking and nutrition\",\n text: \"Healthy cooking and nutrition\",\n },\n {\n key: \"meditation_and_mindfulness\",\n value: \"Meditation and mindfulness\",\n text: \"Meditation and mindfulness\",\n },\n { key: \"acupuncture\", value: \"Acupuncture\", text: \"Acupuncture\" },\n { key: \"pilates\", value: \"Pilates\", text: \"Pilates\" },\n { key: \"aromatherapy\", value: \"Aromatherapy\", text: \"Aromatherapy\" },\n { key: \"ayurveda\", value: \"Ayurveda\", text: \"Ayurveda\" },\n { key: \"tai_chi\", value: \"Tai Chi\", text: \"Tai Chi\" },\n]\n\nconst defaultInterestOptionsEs = [\n {\n header: \"true\",\n key: \"header-arts-and-creativity\",\n text: \"Arte y Creatividad\",\n disabled: true,\n },\n { key: \"painting\", value: \"Painting\", text: \"Pintura\" },\n { key: \"drawing\", value: \"Drawing\", text: \"Dibujo\" },\n { key: \"sculpting\", value: \"Sculpting\", text: \"Escultura\" },\n { key: \"photography\", value: \"Photography\", text: \"FotografÃa\" },\n { key: \"pottery\", value: \"Pottery\", text: \"Cerámica\" },\n {\n key: \"writing_(fiction,_poetry,_etc.)\",\n value: \"Writing (fiction, poetry, etc.)\",\n text: \"Escritura (ficción, poesÃa, etc.)\",\n },\n { key: \"calligraphy\", value: \"Calligraphy\", text: \"CaligrafÃa\" },\n { key: \"graphic_design\", value: \"Graphic design\", text: \"Diseño gráfico\" },\n { key: \"fashion_design\", value: \"Fashion design\", text: \"Diseño de moda\" },\n { key: \"acting\", value: \"Acting\", text: \"Interino\" },\n { key: \"dance\", value: \"Dance\", text: \"Bailar\" },\n {\n header: \"true\",\n key: \"header-entertainment\",\n text: \"Diversión\",\n disabled: true,\n },\n {\n key: \"watching_movies_and_tv_shows\",\n value: \"Watching movies and TV shows\",\n text: \"Ver pelÃculas y programas de televisión\",\n },\n {\n key: \"gaming_(video_games,_board_games,_etc.)\",\n value: \"Gaming (video games, board games, etc.)\",\n text: \"Juegos (videojuegos, juegos de mesa, etc.)\",\n },\n {\n key: \"reading_books_and_literature\",\n value: \"Reading books and literature\",\n text: \"Lectura de libros y literatura\",\n },\n {\n key: \"listening_to_music\",\n value: \"Listening to music\",\n text: \"Escuchar música\",\n },\n {\n key: \"attending_live_performances_(concerts,_theater,_etc.)\",\n value: \"Attending live performances (concerts, theater, etc.)\",\n text: \"Asistir a actuaciones en vivo (conciertos, teatro, etc.)\",\n },\n {\n key: \"stand-up_comedy\",\n value: \"Stand-up comedy\",\n text: \"Comedia stand-up\",\n },\n { key: \"magic_shows\", value: \"Magic shows\", text: \"Espectáculos de magia\" },\n {\n key: \"improv_workshops\",\n value: \"Improv workshops\",\n text: \"Talleres de improvisación\",\n },\n { key: \"karaoke\", value: \"Karaoke\", text: \"Karaoke\" },\n { key: \"escape_rooms\", value: \"Escape rooms\", text: \"Salas de escape\" },\n {\n header: \"true\",\n key: \"header-outdoor-and-nature\",\n text: \"Exterior y naturaleza\",\n disabled: true,\n },\n {\n key: \"hiking_and_trekking\",\n value: \"Hiking and trekking\",\n text: \"Senderismo y trekking\",\n },\n { key: \"camping\", value: \"Camping\", text: \"Acampada\" },\n { key: \"birdwatching\", value: \"Birdwatching\", text: \"Observación de aves\" },\n { key: \"gardening\", value: \"Gardening\", text: \"JardinerÃa\" },\n {\n key: \"nature_photography\",\n value: \"Nature photography\",\n text: \"FotografÃa de naturaleza\",\n },\n {\n key: \"wildlife_conservation\",\n value: \"Wildlife conservation\",\n text: \"Conservación de la vida silvestre\",\n },\n {\n key: \"kayaking_or_canoeing\",\n value: \"Kayaking or canoeing\",\n text: \"Kayak o piragüismo\",\n },\n { key: \"geocaching\", value: \"Geocaching\", text: \"Geocaching\" },\n { key: \"surfing\", value: \"Surfing\", text: \"Surf\" },\n {\n key: \"rockhounding_(collecting_rocks_and_minerals)\",\n value: \"Rockhounding (collecting rocks and minerals)\",\n text: \"Rockhounding (recolección de rocas y minerales)\",\n },\n {\n header: \"true\",\n key: \"header-sports-and-physical-activities\",\n text: \"Deportes y actividades fÃsicas\",\n disabled: true,\n },\n {\n key: \"playing_sports_(soccer,_basketball,_tennis,_etc.)\",\n value: \"Playing sports (soccer, basketball, tennis, etc.)\",\n text: \"Practicar deportes (fútbol, baloncesto, tenis, etc.)\",\n },\n {\n key: \"yoga_and_meditation\",\n value: \"Yoga and meditation\",\n text: \"Yoga y meditación\",\n },\n {\n key: \"running_and_jogging\",\n value: \"Running and jogging\",\n text: \"Correr y trotar\",\n },\n { key: \"swimming\", value: \"Swimming\", text: \"Natación\" },\n { key: \"cycling\", value: \"Cycling\", text: \"Ciclismo\" },\n { key: \"rock_climbing\", value: \"Rock climbing\", text: \"Escalada\" },\n { key: \"martial_arts\", value: \"Martial arts\", text: \"Artes marciales\" },\n { key: \"parkour\", value: \"Parkour\", text: \"Parkour\" },\n {\n key: \"dance_fitness_(e.g.,_zumba)\",\n value: \"Dance fitness (e.g., Zumba)\",\n text: \"Fitness de baile (por ejemplo, Zumba)\",\n },\n { key: \"skilling\", value: \"Skilling\", text: \"Skilling\" },\n {\n header: \"true\",\n key: \"header-travel-and-exploration\",\n text: \"Viajes y Exploración\",\n disabled: true,\n },\n {\n key: \"traveling_to_new_places\",\n value: \"Traveling to new places\",\n text: \"Viajar a nuevos lugares\",\n },\n {\n key: \"exploring_different_cultures\",\n value: \"Exploring different cultures\",\n text: \"Explorando diferentes culturas\",\n },\n {\n key: \"trying_local_cuisines\",\n value: \"Trying local cuisines\",\n text: \"Probando cocinas locales\",\n },\n { key: \"road_trips\", value: \"Road trips\", text: \"Viajes por carretera\" },\n { key: \"backpacking\", value: \"Backpacking\", text: \"Mochilero\" },\n {\n key: \"urban_exploration_(exploring_abandoned_buildings_and_sites)\",\n value: \"Urban exploration (exploring abandoned buildings and sites)\",\n text: \"Exploración urbana (exploración de edificios y sitios abandonados)\",\n },\n { key: \"cruises\", value: \"Cruises\", text: \"Cruceros\" },\n {\n key: \"adventure_travel_(e.g.,_safaris,_trekking_expeditions)\",\n value: \"Adventure travel (e.g., safaris, trekking expeditions)\",\n text: \"Viajes de aventura (por ejemplo, safaris, expediciones de trekking)\",\n },\n { key: \"ecotourism\", value: \"Ecotourism\", text: \"Ecoturismo\" },\n { key: \"train_journeys\", value: \"Train journeys\", text: \"Viajes en tren\" },\n {\n header: \"true\",\n key: \"header-food-and-cooking\",\n text: \"Comida y cocina\",\n disabled: true,\n },\n {\n key: \"cooking_and_trying_new_recipes\",\n value: \"Cooking and trying new recipes\",\n text: \"Cocinar y probar nuevas recetas\",\n },\n { key: \"baking\", value: \"Baking\", text: \"Hornada\" },\n {\n key: \"gourmet_dining\",\n value: \"Gourmet dining\",\n text: \"GastronomÃa gourmet\",\n },\n { key: \"food_blogging\", value: \"Food blogging\", text: \"Blogs de alimentos\" },\n {\n key: \"wine_tasting_and_appreciation\",\n value: \"Wine tasting and appreciation\",\n text: \"Degustación y apreciación de vinos\",\n },\n {\n key: \"food_festivals_and_events\",\n value: \"Food festivals and events\",\n text: \"Festivales y eventos gastronómicos\",\n },\n {\n key: \"fermentation_(making_sauerkraut,_kimchi,_etc.)\",\n value: \"Fermentation (making sauerkraut, kimchi, etc.)\",\n text: \"Fermentación (hacer chucrut, kimchi, etc.)\",\n },\n {\n key: \"vegan_or_plant-based_cooking\",\n value: \"Vegan or plant-based cooking\",\n text: \"Cocina vegana o basada en plantas\",\n },\n {\n key: \"food_photography_and_styling\",\n value: \"Food photography and styling\",\n text: \"FotografÃa y estilismo de alimentos\",\n },\n {\n key: \"molecular_gastronomy\",\n value: \"Molecular gastronomy\",\n text: \"GastronomÃa molecular\",\n },\n {\n header: \"true\",\n key: \"header-technology\",\n text: \"TecnologÃa\",\n disabled: true,\n },\n {\n key: \"exploring_new_gadgets_and_tech_innovations\",\n value: \"Exploring new gadgets and tech innovations\",\n text: \"Explorando nuevos gadgets e innovaciones tecnológicas\",\n },\n {\n key: \"coding_and_programming\",\n value: \"Coding and programming\",\n text: \"Codificación y programación\",\n },\n { key: \"robotics\", value: \"Robotics\", text: \"Robótica\" },\n {\n key: \"virtual_reality_(vr)_experiences\",\n value: \"Virtual reality (VR) experiences\",\n text: \"Experiencias de realidad virtual (VR)\",\n },\n {\n key: \"electronics_tinkering_and_diy_projects\",\n value: \"Electronics tinkering and DIY projects\",\n text: \"Retoques electrónicos y proyectos de bricolaje\",\n },\n {\n key: \"drones_and_aerial_photography\",\n value: \"Drones and aerial photography\",\n text: \"Drones y fotografÃa aérea\",\n },\n {\n key: \"smart_home_automation\",\n value: \"Smart home automation\",\n text: \"Domótica inteligente\",\n },\n { key: \"3d_printing\", value: \"3D printing\", text: \"Impresión 3D\" },\n {\n key: \"internet_of_things_(iot)_projects\",\n value: \"Internet of Things (IoT) projects\",\n text: \"Proyectos de Internet de las cosas (IoT)\",\n },\n {\n key: \"cryptocurrency_and_blockchain_technology\",\n value: \"Cryptocurrency and blockchain technology\",\n text: \"Criptomoneda y tecnologÃa blockchain\",\n },\n {\n header: \"true\",\n key: \"header-science-and-knowledge\",\n text: \"Ciencia y Conocimiento\",\n disabled: true,\n },\n {\n key: \"astronomy_and_stargazing\",\n value: \"Astronomy and stargazing\",\n text: \"AstronomÃa y observación de estrellas\",\n },\n {\n key: \"learning_about_scientific_discoveries\",\n value: \"Learning about scientific discoveries\",\n text: \"Aprender sobre los descubrimientos cientÃficos\",\n },\n {\n key: \"philosophy_and_deep_discussions\",\n value: \"Philosophy and deep discussions\",\n text: \"FilosofÃa y discusiones profundas\",\n },\n {\n key: \"history_and_historical_research\",\n value: \"History and historical research\",\n text: \"Historia e investigación histórica\",\n },\n {\n key: \"learning_new_languages\",\n value: \"Learning new languages\",\n text: \"Aprender nuevos idiomas\",\n },\n { key: \"archaeology\", value: \"Archaeology\", text: \"ArqueologÃa\" },\n {\n key: \"particle_physics_and_cosmology\",\n value: \"Particle physics and cosmology\",\n text: \"FÃsica de partÃculas y cosmologÃa\",\n },\n {\n key: \"psychology_and_human_behavior\",\n value: \"Psychology and human behavior\",\n text: \"PsicologÃa y comportamiento humano\",\n },\n {\n key: \"marine_biology_and_oceanography\",\n value: \"Marine biology and oceanography\",\n text: \"BiologÃa marina y oceanografÃa\",\n },\n {\n key: \"meteorology_and_weather_tracking\",\n value: \"Meteorology and weather tracking\",\n text: \"MeteorologÃa y seguimiento meteorológico\",\n },\n {\n header: \"true\",\n key: \"header-community\",\n text: \"Comunidad\",\n disabled: true,\n },\n {\n key: \"volunteering_and_community_service\",\n value: \"Volunteering and community service\",\n text: \"Voluntariado y servicio comunitario\",\n },\n {\n key: \"social_and_environmental_activism\",\n value: \"Social and environmental activism\",\n text: \"Activismo social y ambiental\",\n },\n {\n key: \"joining_clubs_or_organizations\",\n value: \"Joining clubs or organizations\",\n text: \"Unirse a clubes u organizaciones\",\n },\n {\n key: \"networking_and_social_events\",\n value: \"Networking and social events\",\n text: \"Networking y eventos sociales\",\n },\n {\n key: \"mentoring_or_tutoring\",\n value: \"Mentoring or tutoring\",\n text: \"TutorÃa o tutorÃa\",\n },\n {\n key: \"public_speaking_and_toastmasters\",\n value: \"Public speaking and Toastmasters\",\n text: \"Hablar en público y Toastmasters\",\n },\n { key: \"debating_clubs\", value: \"Debating clubs\", text: \"Clubes de debate\" },\n {\n key: \"support_groups_(e.g.,_mental_health,_recovery)\",\n value: \"Support groups (e.g., mental health, recovery)\",\n text: \"Grupos de apoyo (p. ej., salud mental, recuperación)\",\n },\n {\n key: \"community_gardening\",\n value: \"Community gardening\",\n text: \"JardinerÃa comunitaria\",\n },\n {\n key: \"fundraising_for_charitable_causes\",\n value: \"Fundraising for charitable causes\",\n text: \"Recaudación de fondos para causas benéficas\",\n },\n {\n header: \"true\",\n key: \"header-health-and-wellness\",\n text: \"Salud y Bienestar\",\n disabled: true,\n },\n {\n key: \"fitness_and_exercise_\",\n value: \"Fitness and exercise \",\n text: \"Fitness y ejercicio \",\n },\n {\n key: \"healthy_cooking_and_nutrition\",\n value: \"Healthy cooking and nutrition\",\n text: \"Cocina y nutrición saludables\",\n },\n {\n key: \"meditation_and_mindfulness\",\n value: \"Meditation and mindfulness\",\n text: \"Meditación y mindfulness\",\n },\n { key: \"acupuncture\", value: \"Acupuncture\", text: \"Acupuntura\" },\n { key: \"pilates\", value: \"Pilates\", text: \"Pilates\" },\n { key: \"aromatherapy\", value: \"Aromatherapy\", text: \"Aromaterapia\" },\n { key: \"ayurveda\", value: \"Ayurveda\", text: \"Ayurveda\" },\n { key: \"tai_chi\", value: \"Tai Chi\", text: \"Tai Chi\" },\n];\n\nconst enToEs = {}\ndefaultSkillOptionsEs.forEach(skill => {\n if (skill.value) {\n enToEs[skill.value] = skill.text\n }\n})\ndefaultInterestOptionsEs.forEach(interest => {\n if (interest.value) {\n enToEs[interest.value] = interest.text\n }\n})\nconst localizeSkillInterest = (locale, str) => {\n if (locale === \"es-ES\" && enToEs[str] !== undefined) {\n return enToEs[str]\n } else {\n return str\n }\n}\n\nexport {\n defaultSkillOptions,\n defaultSkillOptionsEs,\n defaultInterestOptions,\n defaultInterestOptionsEs,\n localizeSkillInterest,\n}\n","export const renderMonthName = (monthNum, locale = 'en-US') => {\n switch (monthNum) {\n case \"01\":\n return locale === 'en-US' ? \"January\" : \"Enero\"\n\n case \"02\":\n return locale === 'en-US' ? \"February\" : \"Febrero\"\n\n case \"03\":\n return locale === 'en-US' ? \"March\" : \"Marzo\"\n\n case \"04\":\n return locale === 'en-US' ? \"April\" : \"Abril\"\n\n case \"05\":\n return locale === 'en-US' ? \"May\" : \"Mayo\"\n\n case \"06\":\n return locale === 'en-US' ? \"June\" : \"Junio\"\n\n case \"07\":\n return locale === 'en-US' ? \"July\" : \"Julio\"\n\n case \"08\":\n return locale === 'en-US' ? \"August\" : \"Agosto\"\n\n case \"09\":\n return locale === 'en-US' ? \"September\" : \"Septiembre\"\n\n case \"10\":\n return locale === 'en-US' ? \"October\" : \"Octubre\"\n\n case \"11\":\n return locale === 'en-US' ? \"November\" : \"Noviembre\"\n\n case \"12\":\n return locale === 'en-US' ? \"December\" : \"Diciembre\"\n default:\n return \"\"\n }\n}\n\nconst isPrecededBySameCompany = (precedingExperience, currentExperience) => {\n if (\n !precedingExperience ||\n !precedingExperience.employer ||\n !currentExperience.employer\n ) {\n return false\n }\n\n // normalize text entry and check for equality\n return (\n precedingExperience?.employer?.replace(/\\s/g, \"\").toLowerCase() ===\n currentExperience.employer?.replace(/\\s/g, \"\").toLowerCase()\n )\n}\n\nconst isSucceededBySameCompany = (succeedeingExperience, currentExperience) => {\n if (\n !succeedeingExperience ||\n !succeedeingExperience.employer ||\n !currentExperience.employer\n ) {\n return false\n }\n\n // normalize text entry and check for equality\n return (\n succeedeingExperience?.employer?.replace(/\\s/g, \"\").toLowerCase() ===\n currentExperience.employer?.replace(/\\s/g, \"\").toLowerCase()\n )\n}\n\nexport const filterExperiencesByType = (experiences, type) => {\n const filteredExperiences = experiences\n .filter(experience => experience.type === type)\n .sort((a, b) => {\n const aDate = new Date(+a.startDateYear, +a.startDateMonth)\n const bDate = new Date(+b.startDateYear, +b.startDateMonth)\n return bDate - aDate\n })\n\n if (type === \"work\") {\n return filteredExperiences.map((experience, index, array) => {\n\n const isPriorPosition = isPrecededBySameCompany(array[index - 1], experience)\n const isHeadPosition = !isPriorPosition && isSucceededBySameCompany(array[index + 1], experience)\n\n return { isPriorPosition: isPriorPosition, isHeadPosition: isHeadPosition, ...experience }\n }\n\n )\n } else {\n return filteredExperiences\n }\n}\n\n/**\n * Combines two date strings into a single duration string\n * \n * @param {string} startDate - the start date of the experience, or \"\" if there\n * is no start date.\n * @param {string} endDate - the end date of the experience, or \"\" if there is\n * no end date.\n * \n * @returns {string} a single duration string, or \"\" if both startDate and \n * endDate are \"\"\n */\nexport const createDurationString = (startDate, endDate) => {\n if (startDate && endDate) {\n return `${startDate} - ${endDate}`\n } else if (!startDate && endDate) {\n return endDate\n } else {\n return \"\"\n }\n}\n","import { getValidMonthDay, allowedMonthsNames } from '../careers/AllowedTypes';\n\n/**\n * Provides a class to handle deadline dates.\n */\nexport default class MonthDayDeadline {\n\n /**\n * Constructor.\n *\n * @param {string} dateData\n * The date in format `M-D`.\n */\n constructor(dateData) {\n const date = getValidMonthDay(dateData);\n if (!date) {\n this._isValid = false;\n this._monthInt = null;\n this._dayInt = null;\n } else {\n this._isValid = true;\n this._monthInt = date.month;\n this._dayInt = date.day;\n }\n }\n\n /**\n * If the date created is valid or not.\n *\n * @return {boolean}\n */\n get isValid() {\n return this._isValid\n }\n\n /**\n * The integer value of the month.\n *\n * @return {number|null}\n */\n get monthInt() {\n return this._monthInt\n }\n\n /**\n * The integer value of the day.\n *\n * @return {number|null}\n */\n get dayInt() {\n return this._dayInt\n }\n\n /**\n * Gets the month name.\n *\n * @return {string|null}\n */\n get monthName() {\n if (this.monthInt) {\n return allowedMonthsNames[this.monthInt - 1];\n } else {\n return null;\n }\n }\n\n}\n","import MonthDayDeadline from \"./MonthDayDeadline\"\n\n/**\n * The application deadline class.\n */\nexport default class ApplicationDeadLine {\n\n /**\n * Constructor.\n *\n * @param {Object} firestoreData\n * The firestore data.\n */\n constructor(firestoreData) {\n this._type = firestoreData?.type;\n this._closingDate = firestoreData?.closingDate ? new MonthDayDeadline(firestoreData?.closingDate) : null;\n this._notificationDate = firestoreData?.notificationDate ? new MonthDayDeadline(firestoreData?.notificationDate) : null;\n this._financialAidDate = firestoreData?.financialAidDate ? new MonthDayDeadline(firestoreData?.financialAidDate) : null;\n this._isRollingAdmission = firestoreData?.isRollingAdmission;\n if (this._closingDate && !this.closingDate.isValid) {\n this._closingDate = null;\n }\n if (this._notificationDate && !this.notificationDate.isValid) {\n this._notificationDate = null;\n }\n }\n\n /**\n * The deadline type.\n *\n * @return {string}\n */\n get type() {\n return this._type;\n }\n\n /**\n * The financial aid deadline date.\n *\n * @return {MonthDayDeadline|null}\n */\n get financialAidDate() {\n return this._financialAidDate;\n }\n\n /**\n * The closing date.\n *\n * @return {MonthDayDeadline|null}\n */\n get closingDate() {\n return this._closingDate;\n }\n\n /**\n * The notification date.\n *\n * @return {MonthDayDeadline|null}\n */\n get notificationDate() {\n return this._notificationDate;\n }\n\n /**\n * If the deadline is a rolling admission.\n *\n * @return {boolean}\n */\n get isRollingAdmission() {\n return this._isRollingAdmission;\n }\n}\n","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nfunction SEO({\n description,\n lang,\n meta,\n title,\n image,\n titleTemplate,\n locationUrl = \"\",\n}) {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n description\n author\n image\n titleTemplate\n }\n }\n }\n `\n )\n\n const metaTitle = title || site.siteMetadata.title\n const metaDescription = description || site.siteMetadata.description\n const metaImage = image || site.siteMetadata.image\n const url = locationUrl\n\n return (\n <Helmet\n htmlAttributes={{\n lang,\n }}\n title={title}\n titleTemplate={`%s - ${site.siteMetadata.title}`}\n meta={[\n {\n name: `description`,\n content: metaDescription,\n },\n {\n property: `og:title`,\n content: `${title} - ${site.siteMetadata.title}`,\n },\n {\n property: `og:description`,\n content: metaDescription,\n },\n {\n property: `og:type`,\n content: `website`,\n },\n {\n property: `og:image`,\n content: metaImage,\n },\n {\n property: `og:url`,\n content: url,\n },\n {\n name: `twitter:card`,\n content: `summary`,\n },\n {\n name: `twitter:creator`,\n content: site.siteMetadata.author,\n },\n {\n name: `twitter:title`,\n content: `${title} - ${site.siteMetadata.title}`,\n },\n {\n name: `twitter:description`,\n content: metaDescription,\n },\n ].concat(meta)}\n />\n )\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n description: ``,\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faArrowToBottom } from '@fortawesome/pro-solid-svg-icons';\nimport { FormattedMessage } from \"react-intl\";\nimport \"./FileDownloadLink.css\"\n\n/**\n * Link for downloading a user-uploaded file\n * @param {userFile} file \n */\nconst FileDownloadLink = ({file}) => {\n if (!file || !file.fileURL) {\n return null\n }\n\n return (\n <a \n className=\"file-download-link\"\n href={file.fileURL} \n download \n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <FontAwesomeIcon icon={faArrowToBottom} size=\"lg\" color=\"#54757A\" />\n <FormattedMessage id=\"download-file\" defaultMessage=\"Download File\"/>\n </a>\n )\n}\n\nexport default FileDownloadLink\n","import React, { useState } from \"react\"\nimport Modal from \"react-bootstrap/Modal\"\nimport FileDisplayer from \"../../user-files/FileDisplayer\"\nimport FileDownloadLink from \"../../user-files/FileDownloadLink\"\nimport \"./PublicPanelModal.css\"\n\n/**\n * Modal when a user clicks on a file thumbnail from a public storyboard\n * @prop {userFile[]} files - all files from this storyboard panel\n * @prop {number} openedFileIndex - index of the file that was clicked when opening this modal\n */\nconst PublicPanelModal = ({isOpen, handleClose, title, description, files, openedFileIndex}) => {\n const [selectedFileIndex, setSelectedFileIndex] = useState(null)\n \n const onClose = () => {\n handleClose()\n setSelectedFileIndex(null)\n }\n\n const displayIndex = (selectedFileIndex !== null) ? selectedFileIndex : openedFileIndex\n\n return (\n <Modal\n show={isOpen}\n onHide={onClose}\n centered\n animation={false}\n size=\"xl\"\n className=\"public-panel-modal\"\n >\n <Modal.Header closeButton>\n <div className=\"heading\">\n {title && <div className=\"title\">{title}</div>}\n {description && <div className=\"description\">{description}</div>}\n </div>\n </Modal.Header>\n\n <Modal.Body>\n {files.length !== 0 &&\n <div className=\"interactive-file\">\n <FileDisplayer file={files[displayIndex]}/>\n </div>\n } \n </Modal.Body>\n\n <Modal.Footer>\n <div className=\"thumbnail-selection\">\n {files.map((f, index) => (\n <button \n key={f.fileId}\n className={`file-selector ${(displayIndex === index) ? \"\" : \"unselected\"}`} \n onClick={() => setSelectedFileIndex(index)}\n >\n <FileDisplayer file={f} isThumbnail={true}/>\n </button>\n ))}\n </div>\n <FileDownloadLink file={files[displayIndex]}/>\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport default PublicPanelModal\n","import React, { useState } from \"react\"\nimport FileDisplayer from \"../../user-files/FileDisplayer\"\nimport PublicPanelModal from \"./PublicPanelModal\"\nimport useStoryboardPanel from \"../useStoryboardPanel\"\nimport useUserFiles from \"../../user-files/useUserFiles\"\nimport { FormattedMessage } from \"react-intl\"\nimport \"./PublicStoryboardPanel.css\"\n\n/**\n * Displays a single panel in the public view of a storyboard\n */\nconst PublicStoryboardPanel = ({userId, panelId}) => {\n const [selectedFileIndex, setSelectedFileIndex] = useState(null)\n const { title, description, dateString, fileIds } = useStoryboardPanel(userId, panelId)\n const { filesList } = useUserFiles(userId, \"storyboard\", fileIds)\n\n const thumbnailWidth = \"14.125rem\"\n const spaceBetweenThumbnails = \"1.5rem\"\n const horizontalPadding = \"1.5rem\"\n\n return (\n <div \n className=\"public-storyboard-panel\" \n style={{\n // tries to distribute space based on the number of thumbnails in the panel\n flexGrow: filesList.length,\n flexShrink: `calc(1 / ${filesList.length})`,\n flexBasis: `calc((${filesList.length} * ${thumbnailWidth}) + (2 * ${horizontalPadding}) + (${filesList.length - 1} * ${spaceBetweenThumbnails}))`,\n }}\n >\n <div className=\"panel-heading\">\n <div className=\"panel-title\">{title}</div>\n {dateString && <div className=\"panel-date\">{dateString}</div>}\n </div>\n <div className=\"panel-description\">{description}</div>\n <div className=\"file-thumbnails-container\">\n {filesList.map((f, index) => (\n <button \n key={f.fileId} \n className=\"thumbnail\" \n onClick={() => setSelectedFileIndex(index)}\n >\n <FileDisplayer file={f} isThumbnail={true}/>\n </button>\n ))}\n </div>\n <div className=\"instructions\">\n <FormattedMessage \n id=\"storyboard-click-on-thumbnail-to-view\"\n defaultMessage=\"Click on a thumbnail to view\"\n />\n </div>\n <PublicPanelModal\n isOpen={selectedFileIndex !== null}\n handleClose={() => setSelectedFileIndex(null)}\n title={title}\n description={description}\n openedFileIndex={selectedFileIndex}\n files={filesList}\n />\n </div>\n )\n}\n\nexport default PublicStoryboardPanel\n","import React from \"react\"\nimport PublicStoryboardPanel from \"./PublicStoryboardPanel\"\nimport useStoryboardPanelsOrder from \"../useStoryboardPanelsOrder\"\nimport \"./PublicStoryboard.css\"\n\n/**\n * Public view of a storyboard\n */\nconst PublicStoryboard = ({userId}) => {\n const { panelIds } = useStoryboardPanelsOrder(userId)\n\n if (!panelIds || !panelIds.length) {\n return null\n }\n\n return (\n <div className=\"public-storyboard\">\n {panelIds.map(panelId => (\n <PublicStoryboardPanel\n key={panelId} \n userId={userId} \n panelId={panelId} \n />\n ))}\n </div>\n )\n}\n\nexport default PublicStoryboard\n","import { useEffect, useState, useContext } from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\nimport { renderMonthName } from \"../resume/utils/utils\"\nimport { useIntl } from \"react-intl\"\n\n/**\n * Fetch the data for a single storyboard panel\n * \n * @param {string} userId \n * @param {string} panelId \n * \n * @returns {string} title\n * @returns {string} description\n * @returns {string} month - the month, formatted as a two character numeric string (for example, \"01\" for January)\n * @returns {string} year\n * @returns {string} dateString - a localized date string of the form \"Month Year\"\n * @returns {string[]} fileIds - ordered array of all file ids for this panel\n */\nconst useStoryboardPanel = (userId, panelId) => {\n const { firebase } = useContext(FirebaseContext)\n const [title, setTitle] = useState(\"\")\n const [description, setDescription] = useState(\"\")\n const [fileIds, setFileIds] = useState([])\n const [month, setMonth] = useState(\"\")\n const [year, setYear] = useState(\"\")\n const { locale } = useIntl()\n\n useEffect(() => {\n if (firebase && panelId) {\n const unsubscribeFunction = firebase.subscribeToPanelChanges(userId, panelId, setTitle, setDescription, setMonth, setYear, setFileIds)\n return () => unsubscribeFunction()\n }\n }, [firebase, panelId, userId])\n\n const dateString = (month && year) ? `${renderMonthName(month, locale)} ${year}` : \"\"\n\n return {\n title,\n description,\n month,\n year,\n dateString,\n fileIds,\n }\n}\n\nexport default useStoryboardPanel\n","import { useEffect, useState, useContext} from \"react\"\nimport { FirebaseContext } from \"../Firebase\"\n\n/**\n * Fetch the order of the panels in a user's storyboard \n * @param {string} userId\n * @returns {string[]} panelIds - ordered array of all the user's storyboard panel ids\n * @returns {function} updatePanelsOrder - change the order of the user's storyboard panels to match a new array of panel ids\n */\nconst useStoryboardPanelsOrder = (userId) => {\n const { firebase } = useContext(FirebaseContext)\n const [panelIds, setPanelIds] = useState([])\n\n useEffect(() => {\n if (firebase) {\n const unsubscribeFunction = firebase.subscribeToStoryboardChanges(userId, setPanelIds)\n return () => unsubscribeFunction()\n }\n }, [firebase, userId])\n\n const updatePanelIdsOrder = async (newPanelsOrder) => {\n setPanelIds(newPanelsOrder)\n await firebase.updatePanelsOrder(undefined, false, newPanelsOrder)\n }\n\n return {\n panelIds,\n updatePanelIdsOrder,\n }\n}\n\nexport default useStoryboardPanelsOrder\n","import { toast } from \"sonner\"\nimport React, { useState } from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faExclamationCircle, faCheckCircle } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faReadme as fabReadme } from \"@fortawesome/free-brands-svg-icons\"\nimport { useIntl } from \"react-intl\"\nimport \"./toasts.css\"\n\n/**\n * used for error messages and generic toast notifications that arent part of the users notification drawer\n * @param { JSX } content - the content of the toast, can be JSX for custom content\n * @param { string } message - the message to display in the toast\n * @param { string } heading - the heading to display in the toast\n * */\nexport const sendStandardToast = ({ message, heading, type = 'warning' }) => {\n toast(<StandardToast heading={heading} message={message} type={type} />, {\n position: \"top-right\",\n closeButton: true,\n duration: 120000,\n style: {\n marginTop: \"4rem\",\n padding: \"0\",\n },\n })\n}\n\nconst StandardToast = ({ message, heading, type = \"warning\" }) => {\n const icons = {\n warning: <FontAwesomeIcon icon={faExclamationCircle} color=\"#E89544\" size=\"3x\" />,\n success: <FontAwesomeIcon icon={faCheckCircle} color=\"#3DCC91\" size=\"3x\" />,\n }\n\n return (\n <div className=\"notifications-toast-item\">\n <div className={`notifications-toast-item-icon ${type}`}>\n <div>{icons[type]}</div>\n </div>\n <div className=\"notifications-toast-item-message\">\n <label>{heading}</label>\n <span>\n {message}\n </span>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\"\nimport { faFileExclamation } from \"@fortawesome/pro-regular-svg-icons\"\nimport { faVideo } from \"@fortawesome/pro-solid-svg-icons\"\nimport WordThumbnail from \"../../../static/assets/images/microsoft-word-icon.svg\"\nimport ExcelThumbnail from \"../../../static/assets/images/microsoft-excel-icon.svg\"\nimport useCheckIfMobile from \"../hooks/useCheckIfMobile\"\nimport \"./FileDisplayer.css\"\n\n/**\n * Displays a user-uploaded file\n * @param {userFile} file\n * @param {boolean} isThumbnail\n */\nconst FileDisplayer = ({file, isThumbnail}) => {\n const { isMobile } = useCheckIfMobile()\n\n const fileURL = file.fileURL\n const fileType = file.fileType\n const thumbnailURL = file.thumbnailURL\n const c = isThumbnail ? \"-thumbnail\" : \"\"\n\n let fileDisplayElement = <FontAwesomeIcon className=\"loading-spinner\" icon={faSpinner} spin size=\"lg\" />\n\n if (file.errorMessage) {\n fileDisplayElement = (\n <>\n <FontAwesomeIcon icon={faFileExclamation} color=\"#8B0000\" size=\"4x\"/>\n <div className=\"error-message\">\n ERROR\n </div>\n </>\n )\n } else if ([\"image/jpg\", \"image/jpeg\", \"image/png\"].includes(fileType)) {\n fileDisplayElement = <img className={`image${c}`} src={fileURL} alt=\"user uploaded content\"/>\n } else if (fileType === \"video/mp4\" && fileURL && isThumbnail && isMobile) {\n // many mobile browsers won't render video thumbnails\n fileDisplayElement = <FontAwesomeIcon icon={faVideo} size=\"4x\"/>\n } else if (fileType === \"video/mp4\" && fileURL){\n fileDisplayElement = <video className={`video${c}`} src={fileURL} {...(isThumbnail ? {} : {controls: true})}/>\n } else if (fileType === \"application/pdf\" && isThumbnail && thumbnailURL) {\n fileDisplayElement = <img className=\"image-thumbnail\" src={file.thumbnailURL} alt=\"user uploaded content\"/>\n } else if (fileType === \"application/pdf\" && !isThumbnail && fileURL) {\n // on mobile browsers that can't display pdfs, just display the thumbnail\n fileDisplayElement = (\n <object className=\"pdf\" data={fileURL} width=\"60%\" height=\"100%\">\n <img className=\"image-thumbnail\" src={file.thumbnailURL} alt=\"user uploaded content\"/>\n </object>\n )\n } else if ([\"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"].includes(fileType)) {\n fileDisplayElement = <img className={`word-icon`} src={WordThumbnail} alt=\"user uploaded word document\"/> \n } else if ([\"application/vnd.ms-excel\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"].includes(fileType)) {\n fileDisplayElement = <img className={`excel-icon`} src={ExcelThumbnail} alt=\"user uploaded excel spreadsheet\"/> \n }\n\n return (\n <div className=\"file-displayer\">\n {fileDisplayElement}\n </div>\n )\n}\n\nexport default FileDisplayer\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFsKCTwhRU5USVRZIG5zX2V4dGVuZCAiaHR0cDovL25zLmFkb2JlLmNvbS9FeHRlbnNpYmlsaXR5LzEuMC8iPgoJPCFFTlRJVFkgbnNfYWkgImh0dHA6Ly9ucy5hZG9iZS5jb20vQWRvYmVJbGx1c3RyYXRvci8xMC4wLyI+Cgk8IUVOVElUWSBuc19ncmFwaHMgImh0dHA6Ly9ucy5hZG9iZS5jb20vR3JhcGhzLzEuMC8iPgoJPCFFTlRJVFkgbnNfdmFycyAiaHR0cDovL25zLmFkb2JlLmNvbS9WYXJpYWJsZXMvMS4wLyI+Cgk8IUVOVElUWSBuc19pbXJlcCAiaHR0cDovL25zLmFkb2JlLmNvbS9JbWFnZVJlcGxhY2VtZW50LzEuMC8iPgoJPCFFTlRJVFkgbnNfc2Z3ICJodHRwOi8vbnMuYWRvYmUuY29tL1NhdmVGb3JXZWIvMS4wLyI+Cgk8IUVOVElUWSBuc19jdXN0b20gImh0dHA6Ly9ucy5hZG9iZS5jb20vR2VuZXJpY0N1c3RvbU5hbWVzcGFjZS8xLjAvIj4KCTwhRU5USVRZIG5zX2Fkb2JlX3hwYXRoICJodHRwOi8vbnMuYWRvYmUuY29tL1hQYXRoLzEuMC8iPgpdPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxpdmVsbG9fMSIgeG1sbnM6eD0iJm5zX2V4dGVuZDsiIHhtbG5zOmk9IiZuc19haTsiIHhtbG5zOmdyYXBoPSImbnNfZ3JhcGhzOyIKCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE4ODEuMjUgMTc1MCIKCSBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxODgxLjI1IDE3NTAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8bWV0YWRhdGE+Cgk8c2Z3ICB4bWxucz0iJm5zX3NmdzsiPgoJCTxzbGljZXM+PC9zbGljZXM+CgkJPHNsaWNlU291cmNlQm91bmRzICBib3R0b21MZWZ0T3JpZ2luPSJ0cnVlIiBoZWlnaHQ9IjE3NTAiIHdpZHRoPSIxODgxLjI1IiB4PSItOTM4LjUiIHk9Ii04NTEiPjwvc2xpY2VTb3VyY2VCb3VuZHM+Cgk8L3Nmdz4KPC9tZXRhZGF0YT4KPHBhdGggZmlsbD0iIzQxQTVFRSIgZD0iTTE4MDEuMDU2LDBINTE3LjY5NEM0NzMuNDA0LDAsNDM3LjUsMzUuOTA0LDQzNy41LDgwLjE5NGMwLDAsMCwwLDAsMFY0MzcuNWw3NDMuNzUsMjE4Ljc1bDcwMC0yMTguNzUKCVY4MC4xOTRDMTg4MS4yNSwzNS45MDQsMTg0NS4zNDYsMCwxODAxLjA1NiwwTDE4MDEuMDU2LDB6Ii8+CjxwYXRoIGZpbGw9IiMyQjdDRDMiIGQ9Ik0xODgxLjI1LDQzNy41SDQzNy41Vjg3NWw3NDMuNzUsMTMxLjI1bDcwMC0xMzEuMjVWNDM3LjV6Ii8+CjxwYXRoIGZpbGw9IiMxODVBQkQiIGQ9Ik00MzcuNSw4NzV2NDM3LjVsNzAwLDg3LjVsNzQzLjc1LTg3LjVWODc1SDQzNy41eiIvPgo8cGF0aCBmaWxsPSIjMTAzRjkxIiBkPSJNNTE3LjY5NCwxNzUwaDEyODMuMzYzYzQ0LjI5LDAsODAuMTk0LTM1LjkwNCw4MC4xOTQtODAuMTk0bDAsMFYxMzEyLjVINDM3LjV2MzU3LjMwNgoJQzQzNy41LDE3MTQuMDk2LDQ3My40MDQsMTc1MCw1MTcuNjk0LDE3NTBMNTE3LjY5NCwxNzUweiIvPgo8cGF0aCBvcGFjaXR5PSIwLjEiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgICAgIiBkPSJNOTY5LjgwNiwzNTBINDM3LjV2MTA5My43NWg1MzIuMzA2YzQ0LjIzLTAuMTQ0LDgwLjA1LTM1Ljk2NCw4MC4xOTQtODAuMTk0CglWNDMwLjE5NEMxMDQ5Ljg1NiwzODUuOTY0LDEwMTQuMDM2LDM1MC4xNDQsOTY5LjgwNiwzNTB6Ii8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiIGQ9Ik05MjYuMDU2LDM5My43NUg0MzcuNVYxNDg3LjVoNDg4LjU1NmM0NC4yMy0wLjE0NCw4MC4wNS0zNS45NjQsODAuMTk0LTgwLjE5NAoJVjQ3My45NDRDMTAwNi4xMDYsNDI5LjcxNCw5NzAuMjg2LDM5My44OTQsOTI2LjA1NiwzOTMuNzV6Ii8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiIGQ9Ik05MjYuMDU2LDM5My43NUg0MzcuNVYxNDAwaDQ4OC41NTZjNDQuMjMtMC4xNDQsODAuMDUtMzUuOTY0LDgwLjE5NC04MC4xOTQKCVY0NzMuOTQ0QzEwMDYuMTA2LDQyOS43MTQsOTcwLjI4NiwzOTMuODk0LDkyNi4wNTYsMzkzLjc1eiIvPgo8cGF0aCBvcGFjaXR5PSIwLjIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgICAgIiBkPSJNODgyLjMwNiwzOTMuNzVINDM3LjVWMTQwMGg0NDQuODA2YzQ0LjIzLTAuMTQ0LDgwLjA1LTM1Ljk2NCw4MC4xOTQtODAuMTk0CglWNDczLjk0NEM5NjIuMzU2LDQyOS43MTQsOTI2LjUzNiwzOTMuODk0LDg4Mi4zMDYsMzkzLjc1eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE2Ny4yMDU3IiB5MT0iMTQyMC45MTE3IiB4Mj0iNzk1LjI5NDMiIHkyPSIzMzMuMDg4MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDE3NTIpIj4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMyMzY4QzQiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNSIgc3R5bGU9InN0b3AtY29sb3I6IzFBNURCRSIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzExNDZBQyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBmaWxsPSJ1cmwoI1NWR0lEXzFfKSIgZD0iTTgwLjE5NCwzOTMuNzVoODAyLjExMmM0NC4yOSwwLDgwLjE5NCwzNS45MDQsODAuMTk0LDgwLjE5NHY4MDIuMTEzCgljMCw0NC4yOS0zNS45MDQsODAuMTk0LTgwLjE5NCw4MC4xOTRIODAuMTk0Yy00NC4yOSwwLTgwLjE5NC0zNS45MDQtODAuMTk0LTgwLjE5NFY0NzMuOTQ0QzAsNDI5LjY1NCwzNS45MDQsMzkzLjc1LDgwLjE5NCwzOTMuNzV6CgkiLz4KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTMyOS4wODgsMTAwOC43ODhjMS41NzUsMTIuMzgxLDIuNjI1LDIzLjE0NCwzLjEwNiwzMi4zNzVoMS44MzdjMC43LTguNzUsMi4xNTgtMTkuMjk0LDQuMzc1LTMxLjYzMQoJYzIuMjE3LTEyLjMzOCw0LjIxNS0yMi43NjUsNS45OTQtMzEuMjgxbDg0LjM1LTM2My45MTNoMTA5LjA2OWw4Ny41LDM1OC40NDRjNS4wODQsMjIuMjg4LDguNzIzLDQ0Ljg4MSwxMC44OTQsNjcuNjM3aDEuNDQ0CgljMS42MzEtMjIuMDQ3LDQuNjcxLTQzLjk2Niw5LjEtNjUuNjI1bDY5Ljc4MS0zNjAuNjMxaDk5LjI2OWwtMTIyLjU4OCw1MjEuNUg1NzcuMjM4TDQ5NC4xMTMsNzkwLjMKCWMtMi40MDYtOS45MzEtNS4xNjItMjIuOTI1LTguMTgxLTM4Ljg5NGMtMy4wMTktMTUuOTY5LTQuOS0yNy42NS01LjY0NC0zNWgtMS40NDRjLTAuOTYyLDguNDg3LTIuODQ0LDIxLjA4OC01LjY0NCwzNy44CgljLTIuOCwxNi43MTMtNS4wNDYsMjkuMDc5LTYuNzM4LDM3LjFsLTc4LjEzOCwzNDQuMjY5aC0xMTcuOTVMMTQ3LjEzMSw2MTQuMzM3aDEwMS4wNjJsNzUuOTk0LDM2NC42NTYKCUMzMjUuODk0LDk4Ni40NzUsMzI3LjUxMyw5OTYuNDUsMzI5LjA4OCwxMDA4Ljc4OHoiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFsKCTwhRU5USVRZIG5zX2V4dGVuZCAiaHR0cDovL25zLmFkb2JlLmNvbS9FeHRlbnNpYmlsaXR5LzEuMC8iPgoJPCFFTlRJVFkgbnNfYWkgImh0dHA6Ly9ucy5hZG9iZS5jb20vQWRvYmVJbGx1c3RyYXRvci8xMC4wLyI+Cgk8IUVOVElUWSBuc19ncmFwaHMgImh0dHA6Ly9ucy5hZG9iZS5jb20vR3JhcGhzLzEuMC8iPgoJPCFFTlRJVFkgbnNfdmFycyAiaHR0cDovL25zLmFkb2JlLmNvbS9WYXJpYWJsZXMvMS4wLyI+Cgk8IUVOVElUWSBuc19pbXJlcCAiaHR0cDovL25zLmFkb2JlLmNvbS9JbWFnZVJlcGxhY2VtZW50LzEuMC8iPgoJPCFFTlRJVFkgbnNfc2Z3ICJodHRwOi8vbnMuYWRvYmUuY29tL1NhdmVGb3JXZWIvMS4wLyI+Cgk8IUVOVElUWSBuc19jdXN0b20gImh0dHA6Ly9ucy5hZG9iZS5jb20vR2VuZXJpY0N1c3RvbU5hbWVzcGFjZS8xLjAvIj4KCTwhRU5USVRZIG5zX2Fkb2JlX3hwYXRoICJodHRwOi8vbnMuYWRvYmUuY29tL1hQYXRoLzEuMC8iPgpdPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxpdmVsbG9fMSIgeG1sbnM6eD0iJm5zX2V4dGVuZDsiIHhtbG5zOmk9IiZuc19haTsiIHhtbG5zOmdyYXBoPSImbnNfZ3JhcGhzOyIKCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDIyODkuNzUgMjEzMCIKCSBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyMjg5Ljc1IDIxMzAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8bWV0YWRhdGE+Cgk8c2Z3ICB4bWxucz0iJm5zX3NmdzsiPgoJCTxzbGljZXM+PC9zbGljZXM+CgkJPHNsaWNlU291cmNlQm91bmRzICBib3R0b21MZWZ0T3JpZ2luPSJ0cnVlIiBoZWlnaHQ9IjIxMzAiIHdpZHRoPSIyMjg5Ljc1IiB4PSItMTE0Ny41IiB5PSItMTA0MSI+PC9zbGljZVNvdXJjZUJvdW5kcz4KCTwvc2Z3Pgo8L21ldGFkYXRhPgo8cGF0aCBmaWxsPSIjMTg1QzM3IiBkPSJNMTQzNy43NSwxMDExLjc1TDUzMi41LDg1MnYxMTgwLjM5M2MwLDUzLjkwNyw0My43LDk3LjYwNyw5Ny42MDcsOTcuNjA3bDAsMGgxNTYyLjAzNgoJYzUzLjkwNywwLDk3LjYwNy00My43LDk3LjYwNy05Ny42MDdsMCwwVjE1OTcuNUwxNDM3Ljc1LDEwMTEuNzV6Ii8+CjxwYXRoIGZpbGw9IiMyMUEzNjYiIGQ9Ik0xNDM3Ljc1LDBINjMwLjEwN0M1NzYuMiwwLDUzMi41LDQzLjcsNTMyLjUsOTcuNjA3YzAsMCwwLDAsMCwwVjUzMi41bDkwNS4yNSw1MzIuNUwxOTE3LDEyMjQuNzUKCUwyMjg5Ljc1LDEwNjVWNTMyLjVMMTQzNy43NSwweiIvPgo8cGF0aCBmaWxsPSIjMTA3QzQxIiBkPSJNNTMyLjUsNTMyLjVoOTA1LjI1VjEwNjVINTMyLjVWNTMyLjV6Ii8+CjxwYXRoIG9wYWNpdHk9IjAuMSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiIGQ9Ik0xMTgwLjM5Myw0MjZINTMyLjV2MTMzMS4yNWg2NDcuODkzYzUzLjgzNC0wLjE3NSw5Ny40MzItNDMuNzczLDk3LjYwNy05Ny42MDcKCVY1MjMuNjA3QzEyNzcuODI1LDQ2OS43NzMsMTIzNC4yMjcsNDI2LjE3NSwxMTgwLjM5Myw0MjZ6Ii8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiIGQ9Ik0xMTI3LjE0Myw0NzkuMjVINTMyLjVWMTgxMC41aDU5NC42NDMKCWM1My44MzQtMC4xNzUsOTcuNDMyLTQzLjc3Myw5Ny42MDctOTcuNjA3VjU3Ni44NTdDMTIyNC41NzUsNTIzLjAyMywxMTgwLjk3Nyw0NzkuNDI1LDExMjcuMTQzLDQ3OS4yNXoiLz4KPHBhdGggb3BhY2l0eT0iMC4yIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIgZD0iTTExMjcuMTQzLDQ3OS4yNUg1MzIuNVYxNzA0aDU5NC42NDNjNTMuODM0LTAuMTc1LDk3LjQzMi00My43NzMsOTcuNjA3LTk3LjYwNwoJVjU3Ni44NTdDMTIyNC41NzUsNTIzLjAyMywxMTgwLjk3Nyw0NzkuNDI1LDExMjcuMTQzLDQ3OS4yNXoiLz4KPHBhdGggb3BhY2l0eT0iMC4yIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIgZD0iTTEwNzMuODkzLDQ3OS4yNUg1MzIuNVYxNzA0aDU0MS4zOTNjNTMuODM0LTAuMTc1LDk3LjQzMi00My43NzMsOTcuNjA3LTk3LjYwNwoJVjU3Ni44NTdDMTE3MS4zMjUsNTIzLjAyMywxMTI3LjcyNyw0NzkuNDI1LDEwNzMuODkzLDQ3OS4yNXoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyMDMuNTEzMiIgeTE9IjE3MjkuMDE4MyIgeDI9Ijk2Ny45ODY4IiB5Mj0iNDA0Ljk4MTciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAyMTMyKSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTg4ODRGIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjUiIHN0eWxlPSJzdG9wLWNvbG9yOiMxMTdFNDMiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjY2MzEiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggZmlsbD0idXJsKCNTVkdJRF8xXykiIGQ9Ik05Ny42MDcsNDc5LjI1aDk3Ni4yODVjNTMuOTA3LDAsOTcuNjA3LDQzLjcsOTcuNjA3LDk3LjYwN3Y5NzYuMjg1CgljMCw1My45MDctNDMuNyw5Ny42MDctOTcuNjA3LDk3LjYwN0g5Ny42MDdDNDMuNywxNjUwLjc1LDAsMTYwNy4wNSwwLDE1NTMuMTQzVjU3Ni44NTdDMCw1MjIuOTUsNDMuNyw0NzkuMjUsOTcuNjA3LDQ3OS4yNXoiLz4KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTMwMi4zLDEzODIuMjY0bDIwNS4zMzItMzE4LjE2OUwzMTkuNSw3NDcuNjgzaDE1MS4zMzZsMTAyLjY2NiwyMDIuMzUKCWM5LjQ3OSwxOS4yMjMsMTUuOTc1LDMzLjQ5NCwxOS40OSw0Mi45MTloMS4zMzFjNi43NDUtMTUuMzM2LDEzLjg0NS0zMC4yMjgsMjEuMy00NC42NzdMNzI1LjM3MSw3NDcuNzloMTM4LjkyOWwtMTkyLjkyNSwzMTQuNTQ4CglMODY5LjIsMTM4Mi4yNjNINzIxLjM3OEw2MDIuNzksMTE2MC4xNThjLTUuNTg2LTkuNDUtMTAuMzI2LTE5LjM3Ni0xNC4xNjQtMjkuNjZoLTEuNzU3Yy0zLjQ3NCwxMC4wNzUtOC4wODMsMTkuNzIyLTEzLjczOSwyOC43NTUKCWwtMTIyLjEwMiwyMjMuMDExSDMwMi4zeiIvPgo8cGF0aCBmaWxsPSIjMzNDNDgxIiBkPSJNMjE5Mi4xNDMsMEgxNDM3Ljc1djUzMi41aDg1MlY5Ny42MDdDMjI4OS43NSw0My43LDIyNDYuMDUsMCwyMTkyLjE0MywwTDIxOTIuMTQzLDB6Ii8+CjxwYXRoIGZpbGw9IiMxMDdDNDEiIGQ9Ik0xNDM3Ljc1LDEwNjVoODUydjUzMi41aC04NTJWMTA2NXoiLz4KPC9zdmc+Cg==\"","import { useState, useContext } from \"react\"\nimport { v4 } from \"uuid\"\nimport { FirebaseContext } from \"../Firebase\"\n\n/**\n * @typedef {Object} userFile\n * @property {string} fileId\n * @property {string} fileType\n * @property {boolean} isSaved\n * @property {boolean} isLoading\n * @property {URL} fileURL\n * @property {URL} thumbnailURL\n * @property {File} fileData\n * @property {File} thumbnailData\n * @property {string} errorMessage\n */\n\n/**\n * Interface for working with user-uploaded files on the front-end\n * \n * @param {string} userId - defaults to the current user's id if undefined\n * @param {string} purpose - Ex: \"storyboard\"\n * @param {string[]} fileIds - ids of all files to be downloaded\n * \n * @returns {userFile[]} filesList - fileObjects corresponding to fileIds\n * @returns {function} addFile - converts a Javascript File object to a userFile \n * object. returns a new fileId corresponding to the new userFile object \n */\nconst useUserFiles = (userId, purpose, fileIds) => {\n const { firebase } = useContext(FirebaseContext)\n const [filesData, setFilesData] = useState({})\n\n const fetchFile = async (fileId) => {\n const fileType = await firebase.getUserFileType(userId, purpose, fileId)\n const fileURL = await firebase.getUserFileURL(userId, purpose, fileId)\n const fetchedFile = {\n fileId: fileId,\n fileType: fileType,\n isSaved: true,\n fileURL: fileURL,\n }\n if (fileType === \"application/pdf\") {\n fetchedFile.thumbnailURL = await firebase.getUserFileThumbnailURL(userId, purpose, fileId)\n }\n if (!fileType || !fileURL || (fileType === \"application/pdf\" && !fetchedFile.thumbnailURL)) {\n fetchedFile.errorMessage = \"Error when attempting to download file from server\"\n }\n \n setFilesData(prevData => ({...prevData, [fileId]: fetchedFile}))\n }\n\n const convertFileToBase64 = async (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = (event) => {\n resolve(event.target.result)\n }\n reader.readAsDataURL(file)\n })\n }\n\n const convertBase64ToFile = (stringData) => {\n const str = atob(stringData)\n const arr = new Uint8Array(str.length)\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n const blob = new Blob([arr], { type: \"image/png\" })\n const file = new File([blob], \"thumbnail\", { type: \"image/png\" })\n return file\n }\n\n const generatePdfThumbnail = async (file, fileId) => {\n const pdfString = await convertFileToBase64(file)\n const modifiedString = pdfString.substring(20)\n\n const convertToThumbnail = firebase.functions.httpsCallable(\"generateThumbnail\")\n let thumbnailFile = undefined\n try {\n const result = await convertToThumbnail({pdfData: modifiedString})\n const thumbnailData = result.data.thumbnailData\n thumbnailFile = convertBase64ToFile(thumbnailData)\n } catch (e) {\n console.log(e)\n }\n\n const updatedFile = {\n fileId: fileId,\n fileType: file.type,\n isSaved: false,\n isLoading: false,\n fileURL: URL.createObjectURL(file),\n fileData: file,\n thumbnailURL: thumbnailFile && URL.createObjectURL(thumbnailFile),\n thumbnailData: thumbnailFile,\n }\n if (!thumbnailFile) {\n updatedFile.errorMessage = \"error when generating thumbnail\"\n }\n setFilesData(prevData => ({...prevData, [fileId]: updatedFile}))\n }\n\n const addFile = (file) => {\n const newId = v4()\n const newFile = {\n fileId: newId,\n fileType: file.type,\n isSaved: false,\n isLoading: file.type === \"application/pdf\",\n fileURL: URL.createObjectURL(file),\n fileData: file,\n }\n setFilesData(prevData => ({...prevData, [newId]: newFile}))\n if (file.type === \"application/pdf\") {\n generatePdfThumbnail(file, newId)\n }\n return newId\n }\n\n const filesList = fileIds.map(id => {\n if (filesData[id]) {\n return filesData[id]\n } else {\n const placeholderFile = {fileId: id}\n setFilesData(prevData => ({...prevData, [id]: placeholderFile}))\n fetchFile(id)\n return placeholderFile\n }\n })\n\n return {\n filesList,\n addFile,\n }\n}\n\nexport default useUserFiles\n","/**\n * The expiration statuses for a user.\n *\n * @type {{ACTIVE: string, INACTIVE: string, NEVER: string}}\n */\nexport const expirationType = {\n ACTIVE: 'active',\n INACTIVE: 'inactive',\n NEVER: 'never'\n}\n\n/**\n * The expiration statuses array.\n *\n * @type {string[]}\n */\nexport const expirationTypes = Object.values(expirationType)\n\n/**\n * The user types that belong to a school entity.\n *\n * @type {{EDUCATOR: string, STUDENT: string}}\n */\nexport const schoolUserType = {\n STUDENT: 'student',\n EDUCATOR: 'educator',\n}\n\n/**\n * The user types that belong to a school entity as list of values.\n *\n * @type {string[]}\n */\nexport const schoolUserTypes = Object.values(schoolUserType)\n\n/**\n * The user types that belong to an organization entity.\n *\n * @type {{ORGANIZATION: string}}\n */\nexport const organizationUserType = {\n ORGANIZATION: 'organization',\n}\n\n/**\n * The user types that belong to an organization entity as a list of values.\n *\n * @type {string[]}\n */\nexport const organizationUserTypes = Object.values(organizationUserType)\n\n/**\n * The user type for individuals.\n *\n * @type {{INDIVIDUAL: string}}\n */\nexport const individualUserType = {\n INDIVIDUAL: 'individual'\n}\n\n/**\n * The list of user types for individuals.\n *\n * @type {string[]}\n */\nexport const individualUserTypes = Object.values(individualUserType)\n\n/**\n * The possible user types.\n *\n * @type {{EDUCATOR: string, ORGANIZATION: string, STUDENT: string, INDIVIDUAL: string}}\n */\nconst userType = {\n ...schoolUserType,\n ...organizationUserType,\n ...individualUserType\n}\n\n/**\n * List of all user type values.\n *\n * @type {string[]}\n */\nexport const userTypes = Object.values(userType)\n\nexport default userType;\n\n","import { useStaticQuery, graphql } from \"gatsby\"\n\nexport const useActivities = locale => {\n const { allCosmicjsActivities } = useStaticQuery(graphql`\n query {\n allCosmicjsActivities {\n edges {\n node {\n slug\n id\n title\n locale\n metadata {\n activity_category {\n value\n }\n activity_view_url\n activity_download_file {\n url\n }\n activity_image {\n url\n }\n activity_image_alt\n }\n }\n }\n }\n }\n `)\n return allCosmicjsActivities.edges\n .filter(career => career.node.locale === locale)\n .map((career, index) => ({\n key: index,\n title: career.node.title,\n slug: career.node.slug,\n id: career.node.id,\n category: career.node.metadata.activity_category.value,\n viewUrl: career.node.metadata.activity_view_url,\n downloadFile: career.node.metadata.activity_download_file?.url,\n image: career.node.metadata.activity_image?.url,\n imageAlt: career.node.metadata.activity_image_alt,\n }))\n}\n","const languages = process.env.GATSBY_ENABLE_LOCALIZATION === \"true\" ? [\"en-US\", \"es-ES\"] : [\"en-US\"]\n// const languages = [\"en-US\", \"es-ES\"]\n\nconst defaultLanguage = \"en-US\"\nconst languageNames = {\n \"en-US\": \"English\",\n \"es-ES\": \"Spanish\",\n}\nconst language = {\n english: \"en-US\",\n spanish: \"es-ES\",\n}\n\nexports.defaultLanguage = defaultLanguage\nexports.languages = languages\nexports.languageNames = languageNames\nexports.language = language\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link as GatsbyLink, navigate as gatsbyNavigate } from \"gatsby\"\nimport { Location } from \"@reach/router\"\nimport { getCurrentPageLanguage, getTranslatedPath } from \"./linkUtils\"\nimport { defaultLanguage } from \"./i18n\"\n\nconst Link = React.forwardRef(\n ({ to, language, children, onClick, ...rest }, ref) => (\n <Location>\n {locationProps => {\n const { pathname = \"\" } = locationProps.location\n const languageLink = getCurrentPageLanguage(pathname)\n const link = getTranslatedPath(pathname, to)\n\n const handleClick = e => {\n if (languageLink) {\n localStorage.setItem(\"gatsby-intl-language\", languageLink)\n }\n if (onClick) {\n onClick(e)\n }\n }\n\n return (\n <GatsbyLink {...rest} to={link} onClick={handleClick} ref={ref}>\n {children}\n </GatsbyLink>\n )\n }}\n </Location>\n )\n)\n\nLink.propTypes = {\n children: PropTypes.node.isRequired,\n to: PropTypes.string,\n language: PropTypes.string,\n}\n\nLink.defaultProps = {\n to: \"\",\n}\n\nexport default Link\n\nexport const navigate = (to, options) => {\n if (typeof window === \"undefined\") {\n return\n }\n\n const { language, routed } = window.___gatsbyIntl\n const link = routed ? `/${language}${to}` : `${to}`\n gatsbyNavigate(link, options)\n}\n\nexport const changeLocale = (language, to) => {\n if (typeof window === \"undefined\") {\n return\n }\n const removePrefix = pathname => {\n const base =\n typeof __BASE_PATH__ !== `undefined` ? __BASE_PATH__ : __PATH_PREFIX__\n if (base && pathname.indexOf(base) === 0) {\n pathname = pathname.slice(base.length)\n }\n return pathname\n }\n\n const removeLocalePart = pathname => {\n const routed = getCurrentPageLanguage(pathname) !== defaultLanguage\n if (!routed) {\n return pathname\n }\n const i = pathname.indexOf(`/`, 1)\n return pathname.substring(i)\n }\n\n const pathname =\n to || removeLocalePart(removePrefix(window.location.pathname))\n\n const link =\n language == defaultLanguage\n ? `${pathname}${window.location.search}`\n : `/${language}${pathname}${window.location.search}`\n localStorage.setItem(\"gatsby-intl-language\", language)\n gatsbyNavigate(link)\n}\n","import { defaultLanguage, languages, language } from \"./i18n\"\n\nconst getTranslatedPath = (pathname, to) => {\n const currentPageLanguage = getCurrentPageLanguage(pathname)\n\n let languagePath = \"\"\n const isDefaultLanguage = defaultLanguage === currentPageLanguage\n if (!isDefaultLanguage) {\n languagePath = \"/\" + currentPageLanguage\n }\n\n let outputPath\n if (to === 'https://www.wingspans.com' && currentPageLanguage === language.spanish) {\n outputPath = `${to}${languagePath}`\n } else {\n outputPath = `${languagePath}${to}`\n }\n\n const hasTrailingSlash = outputPath.endsWith(\"/\")\n if (!hasTrailingSlash) {\n outputPath += \"/\"\n }\n\n return outputPath\n}\n\nconst getCurrentPageLanguage = pathname => {\n const pathElements = pathname.split(\"/\")\n for (let element of pathElements) {\n for (let language of languages) {\n if (element === language) {\n return language\n }\n }\n }\n return defaultLanguage\n}\n\nexport { getTranslatedPath, getCurrentPageLanguage }\n","import React, { useEffect, useState, useContext } from \"react\"\nimport { FirebaseContext } from \"../components/Firebase\"\nimport LoadingSpinner from \"../components/loading/LoadingSpinner.js\"\nimport PortfolioContent from \"../components/portfolio/PortfolioContent.js\"\nimport { navigate } from \"gatsby\"\n\nconst ProfilePage = props => {\n const profileId = props[\"*\"]\n const { firebase } = useContext(FirebaseContext)\n const [profile, setProfile] = useState(null)\n const [loadingPlans, setLoadingPlans] = useState(true)\n\n const [error, setError] = useState(null)\n\n useEffect(() => {\n if (firebase && profileId) {\n // attempt to load requested profile\n try {\n const fetchData = async () => {\n const publicProfile = await firebase.loadPublicProfile(profileId)\n if (publicProfile) {\n setProfile(publicProfile)\n } else {\n setError(true)\n }\n }\n fetchData().catch(e => {\n setError(true)\n })\n } catch (e) {\n console.error(\"error!\", e)\n }\n }\n }, [firebase, profileId])\n\n const isPublicSection = section =>\n profile?.profilePublicSections?.[section] !== false\n\n if (error) {\n // return <>Bad request</>\n navigate('/403')\n }\n\n if (!profile && isPublicSection(\"career_plans\") && loadingPlans) {\n return (\n <>\n <LoadingSpinner />\n </>\n )\n }\n\n return (\n <PortfolioContent\n isPublicFacing={true}\n userId={profileId}\n profile={profile}\n />\n )\n}\n\nexport default ProfilePage\n","/*\n Utilities to replace carriage returns to <br>.\n Use this utils to format some data that was pushed to Cosmic via apis and if it contains line breaks.\n*/\n\nconst convertNewLineToBR = str => str.replace(/(?:\\r\\n|\\r|\\n)/g, \"<br>\")\n\nconst formatText = str => `<p>${convertNewLineToBR(str)}</p>`\n\nconst storyReadingOptions = {\n standard: {\n text: \"Standard\",\n value: \"standard\",\n textEs: \"Estándar\",\n },\n simplified: {\n text: \"Quick Read\",\n value: \"simplified\",\n textEs: \"Lectura rápida\",\n },\n}\nconst demandTranslations = {\n 'Stable Demand': {\n 'en-US': 'Stable Demand',\n 'es-ES': 'Demanda estable'\n },\n 'Increasing Demand': {\n 'en-US': 'Increasing Demand',\n 'es-ES': 'Aumento de la demanda'\n },\n 'Declining Demand': {\n 'en-US': 'Declining Demand',\n 'es-ES': 'Demanda en declive'\n },\n 'High Demand': {\n 'en-US': 'High Demand',\n 'es-ES': 'Alta demanda'\n },\n 'Low Demand': {\n 'en-US': 'Low Demand',\n 'es-ES': 'Baja demanda'\n }\n};\nexport { convertNewLineToBR, formatText, storyReadingOptions, demandTranslations }\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __rest, __spreadArray } from \"tslib\";\nimport { parse, } from '@formatjs/icu-messageformat-parser';\nimport { memoize, strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nexport var IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n var _this = this;\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () {\n var _a;\n return ({\n locale: ((_a = _this.resolvedLocale) === null || _a === void 0 ? void 0 : _a.toString()) ||\n Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n });\n };\n this.getAst = function () { return _this.ast; };\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n var _a = opts || {}, formatters = _a.formatters, parseOpts = __rest(_a, [\"formatters\"]);\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, __assign(__assign({}, parseOpts), { locale: this.resolvedLocale }));\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.resolveLocale = function (locales) {\n if (typeof Intl.Locale === 'undefined') {\n return;\n }\n var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n if (supportedLocales.length > 0) {\n return new Intl.Locale(supportedLocales[0]);\n }\n return new Intl.Locale(typeof locales === 'string' ? locales : locales[0]);\n };\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : formats.time.medium;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","// @generated from time-data-gen.ts\n// prettier-ignore \nexport var timeData = {\n \"001\": [\n \"H\",\n \"h\"\n ],\n \"AC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AD\": [\n \"H\",\n \"hB\"\n ],\n \"AE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"AF\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"AG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AL\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"AM\": [\n \"H\",\n \"hB\"\n ],\n \"AO\": [\n \"H\",\n \"hB\"\n ],\n \"AR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"AS\": [\n \"h\",\n \"H\"\n ],\n \"AT\": [\n \"H\",\n \"hB\"\n ],\n \"AU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AW\": [\n \"H\",\n \"hB\"\n ],\n \"AX\": [\n \"H\"\n ],\n \"AZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BD\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"BE\": [\n \"H\",\n \"hB\"\n ],\n \"BF\": [\n \"H\",\n \"hB\"\n ],\n \"BG\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"BJ\": [\n \"H\",\n \"hB\"\n ],\n \"BL\": [\n \"H\",\n \"hB\"\n ],\n \"BM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BN\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"BO\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"BQ\": [\n \"H\"\n ],\n \"BR\": [\n \"H\",\n \"hB\"\n ],\n \"BS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BT\": [\n \"h\",\n \"H\"\n ],\n \"BW\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BZ\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CA\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"CC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CD\": [\n \"hB\",\n \"H\"\n ],\n \"CF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CG\": [\n \"H\",\n \"hB\"\n ],\n \"CH\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"CI\": [\n \"H\",\n \"hB\"\n ],\n \"CK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CL\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CN\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"CO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"CP\": [\n \"H\"\n ],\n \"CR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CU\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CV\": [\n \"H\",\n \"hB\"\n ],\n \"CX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CY\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"CZ\": [\n \"H\"\n ],\n \"DE\": [\n \"H\",\n \"hB\"\n ],\n \"DG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"DJ\": [\n \"h\",\n \"H\"\n ],\n \"DK\": [\n \"H\"\n ],\n \"DM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"DO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"DZ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"EC\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"EE\": [\n \"H\",\n \"hB\"\n ],\n \"EG\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ER\": [\n \"h\",\n \"H\"\n ],\n \"ES\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"ET\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"FI\": [\n \"H\"\n ],\n \"FJ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"FM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FR\": [\n \"H\",\n \"hB\"\n ],\n \"GA\": [\n \"H\",\n \"hB\"\n ],\n \"GB\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GD\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GE\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"GF\": [\n \"H\",\n \"hB\"\n ],\n \"GG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GH\": [\n \"h\",\n \"H\"\n ],\n \"GI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GN\": [\n \"H\",\n \"hB\"\n ],\n \"GP\": [\n \"H\",\n \"hB\"\n ],\n \"GQ\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"GR\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"GT\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"GU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GW\": [\n \"H\",\n \"hB\"\n ],\n \"GY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"HK\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"HN\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"HR\": [\n \"H\",\n \"hB\"\n ],\n \"IC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"ID\": [\n \"H\"\n ],\n \"IE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IL\": [\n \"H\",\n \"hB\"\n ],\n \"IM\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IN\": [\n \"h\",\n \"H\"\n ],\n \"IO\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IQ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"IR\": [\n \"hB\",\n \"H\"\n ],\n \"IS\": [\n \"H\"\n ],\n \"IT\": [\n \"H\",\n \"hB\"\n ],\n \"JE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"JM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"JO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"JP\": [\n \"H\",\n \"h\",\n \"K\"\n ],\n \"KE\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"KG\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KH\": [\n \"hB\",\n \"h\",\n \"H\",\n \"hb\"\n ],\n \"KI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KM\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KN\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KP\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KW\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"KY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KZ\": [\n \"H\",\n \"hB\"\n ],\n \"LA\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"LB\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LI\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"LK\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"LR\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LS\": [\n \"h\",\n \"H\"\n ],\n \"LT\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"LU\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"LV\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"LY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MC\": [\n \"H\",\n \"hB\"\n ],\n \"MD\": [\n \"H\",\n \"hB\"\n ],\n \"ME\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"MF\": [\n \"H\",\n \"hB\"\n ],\n \"MH\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ML\": [\n \"H\"\n ],\n \"MM\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"MN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MP\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MQ\": [\n \"H\",\n \"hB\"\n ],\n \"MR\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MS\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MW\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MX\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MY\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"MZ\": [\n \"H\",\n \"hB\"\n ],\n \"NA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"NC\": [\n \"H\",\n \"hB\"\n ],\n \"NE\": [\n \"H\"\n ],\n \"NF\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NI\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"NL\": [\n \"H\",\n \"hB\"\n ],\n \"NP\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"NR\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NU\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"OM\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PE\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"PF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"PG\": [\n \"h\",\n \"H\"\n ],\n \"PH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PK\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"PM\": [\n \"H\",\n \"hB\"\n ],\n \"PN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"PR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PS\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PT\": [\n \"H\",\n \"hB\"\n ],\n \"PW\": [\n \"h\",\n \"H\"\n ],\n \"PY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"QA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"RE\": [\n \"H\",\n \"hB\"\n ],\n \"RO\": [\n \"H\",\n \"hB\"\n ],\n \"RS\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"RU\": [\n \"H\"\n ],\n \"SA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SC\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SD\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SE\": [\n \"H\"\n ],\n \"SG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SH\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SI\": [\n \"H\",\n \"hB\"\n ],\n \"SJ\": [\n \"H\"\n ],\n \"SK\": [\n \"H\"\n ],\n \"SL\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SN\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SO\": [\n \"h\",\n \"H\"\n ],\n \"SR\": [\n \"H\",\n \"hB\"\n ],\n \"SS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"ST\": [\n \"H\",\n \"hB\"\n ],\n \"SV\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"SX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"TC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TD\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"TF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"TG\": [\n \"H\",\n \"hB\"\n ],\n \"TL\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"TN\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"TO\": [\n \"h\",\n \"H\"\n ],\n \"TR\": [\n \"H\",\n \"hB\"\n ],\n \"TT\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TW\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"TZ\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UG\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"US\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"UY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"UZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"VA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"VC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VE\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"VG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VU\": [\n \"h\",\n \"H\"\n ],\n \"WF\": [\n \"H\",\n \"hB\"\n ],\n \"WS\": [\n \"h\",\n \"H\"\n ],\n \"XK\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"YE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"YT\": [\n \"H\",\n \"hB\"\n ],\n \"ZA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ZM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"af-ZA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"ar-001\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ca-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"en-001\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"es-BO\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-EC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-ES\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-GQ\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-PE\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"fr-CA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gl-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gu-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"hi-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"it-CH\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-IT\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"kn-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ml-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"mr-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"pa-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"ta-IN\": [\n \"hB\",\n \"h\",\n \"hb\",\n \"H\"\n ],\n \"te-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"zu-ZA\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ]\n};\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith && '_a'.startsWith('a', 1);\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.locale = options.locale;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('</')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n if (tagName !== closingTagName) {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (!this.bumpIf('>')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var dateTimePattern = skeleton;\n // Get \"best match\" pattern only if locale is passed, if not, let it\n // pass as-is where `parseDateTimeSkeleton()` will throw an error\n // for unsupported patterns.\n if (this.locale) {\n dateTimePattern = getBestPattern(skeleton, this.locale);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: dateTimePattern,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(dateTimePattern)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n var skeletonCopy = '';\n for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n var patternChar = skeleton.charAt(patternPos);\n if (patternChar === 'j') {\n var extraLength = 0;\n while (patternPos + 1 < skeleton.length &&\n skeleton.charAt(patternPos + 1) === patternChar) {\n extraLength++;\n patternPos++;\n }\n var hourLen = 1 + (extraLength & 1);\n var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n var dayPeriodChar = 'a';\n var hourChar = getDefaultHourSymbolFromLocale(locale);\n if (hourChar == 'H' || hourChar == 'k') {\n dayPeriodLen = 0;\n }\n while (dayPeriodLen-- > 0) {\n skeletonCopy += dayPeriodChar;\n }\n while (hourLen-- > 0) {\n skeletonCopy = hourChar + skeletonCopy;\n }\n }\n else if (patternChar === 'J') {\n skeletonCopy += 'H';\n }\n else {\n skeletonCopy += patternChar;\n }\n }\n return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n var hourCycle = locale.hourCycle;\n if (hourCycle === undefined &&\n // @ts-ignore hourCycle(s) is not identified yet\n locale.hourCycles &&\n // @ts-ignore\n locale.hourCycles.length) {\n // @ts-ignore\n hourCycle = locale.hourCycles[0];\n }\n if (hourCycle) {\n switch (hourCycle) {\n case 'h24':\n return 'k';\n case 'h23':\n return 'H';\n case 'h12':\n return 'h';\n case 'h11':\n return 'K';\n default:\n throw new Error('Invalid hourCycle');\n }\n }\n // TODO: Once hourCycle is fully supported remove the following with data generation\n var languageTag = locale.language;\n var regionTag;\n if (languageTag !== 'root') {\n regionTag = locale.maximize().region;\n }\n var hourCycles = timeData[regionTag || ''] ||\n timeData[languageTag || ''] ||\n timeData[\"\".concat(languageTag, \"-001\")] ||\n timeData['001'];\n return hourCycles[0];\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n// only for testing\nexport var _Parser = Parser;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict'\n\nvar isObject = function isObject(val) {\n return val !== null && !Array.isArray(val) && typeof val === 'object'\n}\n\nvar codes = {\n // ----------------------------------------\n // By Code\n // ----------------------------------------\n 3: 'Cancel',\n 6: 'Help',\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 28: 'Convert',\n 29: 'NonConvert',\n 30: 'Accept',\n 31: 'ModeChange',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 41: 'Select',\n 42: 'Print',\n 43: 'Execute',\n 44: 'PrintScreen',\n 45: 'Insert',\n 46: 'Delete',\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n 91: 'OS',\n 93: 'ContextMenu',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 181: 'VolumeMute',\n 182: 'VolumeDown',\n 183: 'VolumeUp',\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: [\"'\", '\"'],\n 224: 'Meta',\n 225: 'AltGraph',\n 246: 'Attn',\n 247: 'CrSel',\n 248: 'ExSel',\n 249: 'EraseEof',\n 250: 'Play',\n 251: 'ZoomOut',\n}\n\n// Function Keys (F1-24)\nfor (var i = 0; i < 24; i += 1) {\n codes[112 + i] = 'F' + (i + 1)\n}\n\n// Alphabet (a-Z)\nfor (var j = 0; j < 26; j += 1) {\n var n = j + 65\n codes[n] = [String.fromCharCode(n + 32), String.fromCharCode(n)]\n}\n\nvar keyboardKey = {\n codes: codes,\n\n /**\n * Get the `keyCode` or `which` value from a keyboard event or `key` name.\n * @param {string|object} eventOrKey A keyboard event-like object or `key` name.\n * @param {string} [eventOrKey.key] If object, it must have one of these keys.\n * @param {number} [eventOrKey.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrKey.which] If object, it must have one of these keys.\n * @returns {number|undefined}\n */\n getCode: function getCode(eventOrKey) {\n if (isObject(eventOrKey)) {\n return eventOrKey.keyCode || eventOrKey.which || this[eventOrKey.key]\n }\n return this[eventOrKey]\n },\n\n /**\n * Get the key name from a keyboard event, `keyCode`, or `which` value.\n * @param {number|object} eventOrCode A keyboard event-like object or key code.\n * @param {string} [eventOrCode.key] If object with a `key` name, it will be returned.\n * @param {number} [eventOrCode.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrCode.which] If object, it must have one of these keys.\n * @param {boolean} [eventOrCode.shiftKey] If object, it must have one of these keys.\n * @returns {string|undefined}\n */\n getKey: function getKey(eventOrCode) {\n var isEvent = isObject(eventOrCode)\n\n // handle events with a `key` already defined\n if (isEvent && eventOrCode.key) {\n return eventOrCode.key\n }\n\n var name = codes[isEvent ? eventOrCode.keyCode || eventOrCode.which : eventOrCode]\n\n if (Array.isArray(name)) {\n if (isEvent) {\n name = name[eventOrCode.shiftKey ? 1 : 0]\n } else {\n name = name[0]\n }\n }\n\n return name\n },\n\n // ----------------------------------------\n // By Name\n // ----------------------------------------\n // declare these manually for static analysis\n Cancel: 3,\n Help: 6,\n Backspace: 8,\n Tab: 9,\n Clear: 12,\n Enter: 13,\n Shift: 16,\n Control: 17,\n Alt: 18,\n Pause: 19,\n CapsLock: 20,\n Escape: 27,\n Convert: 28,\n NonConvert: 29,\n Accept: 30,\n ModeChange: 31,\n ' ': 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n Select: 41,\n Print: 42,\n Execute: 43,\n PrintScreen: 44,\n Insert: 45,\n Delete: 46,\n 0: 48,\n ')': 48,\n 1: 49,\n '!': 49,\n 2: 50,\n '@': 50,\n 3: 51,\n '#': 51,\n 4: 52,\n $: 52,\n 5: 53,\n '%': 53,\n 6: 54,\n '^': 54,\n 7: 55,\n '&': 55,\n 8: 56,\n '*': 56,\n 9: 57,\n '(': 57,\n a: 65,\n A: 65,\n b: 66,\n B: 66,\n c: 67,\n C: 67,\n d: 68,\n D: 68,\n e: 69,\n E: 69,\n f: 70,\n F: 70,\n g: 71,\n G: 71,\n h: 72,\n H: 72,\n i: 73,\n I: 73,\n j: 74,\n J: 74,\n k: 75,\n K: 75,\n l: 76,\n L: 76,\n m: 77,\n M: 77,\n n: 78,\n N: 78,\n o: 79,\n O: 79,\n p: 80,\n P: 80,\n q: 81,\n Q: 81,\n r: 82,\n R: 82,\n s: 83,\n S: 83,\n t: 84,\n T: 84,\n u: 85,\n U: 85,\n v: 86,\n V: 86,\n w: 87,\n W: 87,\n x: 88,\n X: 88,\n y: 89,\n Y: 89,\n z: 90,\n Z: 90,\n OS: 91,\n ContextMenu: 93,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123,\n F13: 124,\n F14: 125,\n F15: 126,\n F16: 127,\n F17: 128,\n F18: 129,\n F19: 130,\n F20: 131,\n F21: 132,\n F22: 133,\n F23: 134,\n F24: 135,\n NumLock: 144,\n ScrollLock: 145,\n VolumeMute: 181,\n VolumeDown: 182,\n VolumeUp: 183,\n ';': 186,\n ':': 186,\n '=': 187,\n '+': 187,\n ',': 188,\n '<': 188,\n '-': 189,\n _: 189,\n '.': 190,\n '>': 190,\n '/': 191,\n '?': 191,\n '`': 192,\n '~': 192,\n '[': 219,\n '{': 219,\n '\\\\': 220,\n '|': 220,\n ']': 221,\n '}': 221,\n \"'\": 222,\n '\"': 222,\n Meta: 224,\n AltGraph: 225,\n Attn: 246,\n CrSel: 247,\n ExSel: 248,\n EraseEof: 249,\n Play: 250,\n ZoomOut: 251,\n}\n\n// ----------------------------------------\n// By Alias\n// ----------------------------------------\n// provide dot-notation accessible keys for all key names\nkeyboardKey.Spacebar = keyboardKey[' ']\nkeyboardKey.Digit0 = keyboardKey['0']\nkeyboardKey.Digit1 = keyboardKey['1']\nkeyboardKey.Digit2 = keyboardKey['2']\nkeyboardKey.Digit3 = keyboardKey['3']\nkeyboardKey.Digit4 = keyboardKey['4']\nkeyboardKey.Digit5 = keyboardKey['5']\nkeyboardKey.Digit6 = keyboardKey['6']\nkeyboardKey.Digit7 = keyboardKey['7']\nkeyboardKey.Digit8 = keyboardKey['8']\nkeyboardKey.Digit9 = keyboardKey['9']\nkeyboardKey.Tilde = keyboardKey['~']\nkeyboardKey.GraveAccent = keyboardKey['`']\nkeyboardKey.ExclamationPoint = keyboardKey['!']\nkeyboardKey.AtSign = keyboardKey['@']\nkeyboardKey.PoundSign = keyboardKey['#']\nkeyboardKey.PercentSign = keyboardKey['%']\nkeyboardKey.Caret = keyboardKey['^']\nkeyboardKey.Ampersand = keyboardKey['&']\nkeyboardKey.PlusSign = keyboardKey['+']\nkeyboardKey.MinusSign = keyboardKey['-']\nkeyboardKey.EqualsSign = keyboardKey['=']\nkeyboardKey.DivisionSign = keyboardKey['/']\nkeyboardKey.MultiplicationSign = keyboardKey['*']\nkeyboardKey.Comma = keyboardKey[',']\nkeyboardKey.Decimal = keyboardKey['.']\nkeyboardKey.Colon = keyboardKey[':']\nkeyboardKey.Semicolon = keyboardKey[';']\nkeyboardKey.Pipe = keyboardKey['|']\nkeyboardKey.BackSlash = keyboardKey['\\\\']\nkeyboardKey.QuestionMark = keyboardKey['?']\nkeyboardKey.SingleQuote = keyboardKey[\"'\"]\nkeyboardKey.DoubleQuote = keyboardKey['\"']\nkeyboardKey.LeftCurlyBrace = keyboardKey['{']\nkeyboardKey.RightCurlyBrace = keyboardKey['}']\nkeyboardKey.LeftParenthesis = keyboardKey['(']\nkeyboardKey.RightParenthesis = keyboardKey[')']\nkeyboardKey.LeftAngleBracket = keyboardKey['<']\nkeyboardKey.RightAngleBracket = keyboardKey['>']\nkeyboardKey.LeftSquareBracket = keyboardKey['[']\nkeyboardKey.RightSquareBracket = keyboardKey[']']\n\nmodule.exports = keyboardKey\n","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = orderBy;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\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 * http://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 */\n\n(function() {\n 'use strict';\n\n /**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialButton'] = MaterialButton;\n\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialButton.prototype.Constant_ = {\n // None for now.\n };\n\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n };\n\n /**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialButton.prototype.blurHandler_ = function(event) {\n if (event) {\n this.element_.blur();\n }\n };\n\n // Public methods.\n\n /**\n * Disable button.\n *\n * @public\n */\n MaterialButton.prototype.disable = function() {\n this.element_.disabled = true;\n };\n MaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n\n /**\n * Enable button.\n *\n * @public\n */\n MaterialButton.prototype.enable = function() {\n this.element_.disabled = false;\n };\n MaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n\n /**\n * Initialize element.\n */\n MaterialButton.prototype.init = function() {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n componentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n });\n})();\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\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 * http://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 */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\nvar componentHandler = {\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n upgradeDom: function(optJsClass, optCssClass) {},\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n upgradeElement: function(element, optJsClass) {},\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n upgradeElements: function(elements) {},\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n upgradeAllRegistered: function() {},\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n registerUpgradedCallback: function(jsClass, callback) {},\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n */\n register: function(config) {},\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array<!Node>|!NodeList} nodes\n */\n downgradeElements: function(nodes) {}\n};\n\ncomponentHandler = (function() {\n 'use strict';\n\n /** @type {!Array<componentHandler.ComponentConfig>} */\n var registeredComponents_ = [];\n\n /** @type {!Array<componentHandler.Component>} */\n var createdComponents_ = [];\n\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {string} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (typeof optReplace !== 'undefined') {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!Element} element The element to fetch data from.\n * @return {!Array<string>}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!Element} element The element we want to check.\n * @param {string} jsClass The class to check for.\n * @returns {boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Create an event object.\n *\n * @param {string} eventType The type name of the event.\n * @param {boolean} bubbles Whether the event should bubble up the DOM.\n * @param {boolean} cancelable Whether the event can be canceled.\n * @returns {!Event}\n */\n function createEvent_(eventType, bubbles, cancelable) {\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n return new CustomEvent(eventType, {\n bubbles: bubbles,\n cancelable: cancelable\n });\n } else {\n var ev = document.createEvent('Events');\n ev.initEvent(eventType, bubbles, cancelable);\n return ev;\n }\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (typeof optJsClass === 'undefined' &&\n typeof optCssClass === 'undefined') {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {string} */ (optJsClass);\n if (typeof optCssClass === 'undefined') {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n // Allow upgrade to be canceled by canceling emitted event.\n var upgradingEv = createEvent_('mdl-componentupgrading', true, true);\n element.dispatchEvent(upgradingEv);\n if (upgradingEv.defaultPrevented) {\n return;\n }\n\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var upgradedEv = createEvent_('mdl-componentupgraded', true, false);\n element.dispatchEvent(upgradedEv);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (elements instanceof Element) {\n elements = [elements];\n } else {\n elements = Array.prototype.slice.call(elements);\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n upgradeElementInternal(element);\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config\n */\n function registerInternal(config) {\n // In order to support both Closure-compiled and uncompiled code accessing\n // this method, we need to allow for both the dot and array syntax for\n // property access. You'll therefore see the `foo.bar || foo['bar']`\n // pattern repeated across this method.\n var widgetMissing = (typeof config.widget === 'undefined' &&\n typeof config['widget'] === 'undefined');\n var widget = true;\n\n if (!widgetMissing) {\n widget = config.widget || config['widget'];\n }\n\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n classConstructor: config.constructor || config['constructor'],\n className: config.classAsString || config['classAsString'],\n cssClass: config.cssClass || config['cssClass'],\n widget: widget,\n callbacks: []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {?componentHandler.Component} component\n */\n function deconstructComponentInternal(component) {\n if (component) {\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = createEvent_('mdl-componentdowngraded', true, false);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array<!Node>|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n /**\n * Auxiliary function to downgrade a single node.\n * @param {!Node} node the node to be downgraded\n */\n var downgradeNode = function(node) {\n createdComponents_.filter(function(item) {\n return item.element_ === node;\n }).forEach(deconstructComponentInternal);\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: Function,\n * classAsString: string,\n * cssClass: string,\n * widget: (string|boolean|undefined)\n * }}\n */\ncomponentHandler.ComponentConfigPublic; // jshint ignore:line\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: string,\n * cssClass: string,\n * widget: (string|boolean),\n * callbacks: !Array<function(!HTMLElement)>\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: string,\n * classAsString: string,\n * cssClass: string,\n * widget: string\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\ncomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\ncomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\ncomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\ncomponentHandler['upgradeAllRegistered'] =\n componentHandler.upgradeAllRegistered;\ncomponentHandler['registerUpgradedCallback'] =\n componentHandler.registerUpgradedCallback;\ncomponentHandler['register'] = componentHandler.register;\ncomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\nwindow.componentHandler = componentHandler;\nwindow['componentHandler'] = componentHandler;\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the <html> element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.upgradeElement = function() {};\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.register = function() {};\n }\n});\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\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 * http://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 */\n\n(function() {\n 'use strict';\n\n /**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialProgress'] = MaterialProgress;\n\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialProgress.prototype.Constant_ = {\n };\n\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialProgress.prototype.CssClasses_ = {\n INDETERMINATE_CLASS: 'mdl-progress__indeterminate'\n };\n\n /**\n * Set the current progress of the progressbar.\n *\n * @param {number} p Percentage of the progress (0-100)\n * @public\n */\n MaterialProgress.prototype.setProgress = function(p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n\n this.progressbar_.style.width = p + '%';\n };\n MaterialProgress.prototype['setProgress'] =\n MaterialProgress.prototype.setProgress;\n\n /**\n * Set the current progress of the buffer.\n *\n * @param {number} p Percentage of the buffer (0-100)\n * @public\n */\n MaterialProgress.prototype.setBuffer = function(p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = (100 - p) + '%';\n };\n MaterialProgress.prototype['setBuffer'] =\n MaterialProgress.prototype.setBuffer;\n\n /**\n * Initialize element.\n */\n MaterialProgress.prototype.init = function() {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n\n this.element_.classList.add('is-upgraded');\n }\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n componentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n });\n})();\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\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 * http://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 */\n\n(function() {\n 'use strict';\n\n /**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\n var MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n\n // Initialize instance.\n this.init();\n };\n window['MaterialSpinner'] = MaterialSpinner;\n\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialSpinner.prototype.Constant_ = {\n MDL_SPINNER_LAYER_COUNT: 4\n };\n\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n };\n\n /**\n * Auxiliary method to create a spinner layer.\n *\n * @param {number} index Index of the layer to be created.\n * @public\n */\n MaterialSpinner.prototype.createLayer = function(index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n\n var circleOwners = [leftClipper, gapPatch, rightClipper];\n\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n\n this.element_.appendChild(layer);\n };\n MaterialSpinner.prototype['createLayer'] =\n MaterialSpinner.prototype.createLayer;\n\n /**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\n MaterialSpinner.prototype.stop = function() {\n this.element_.classList.remove('is-active');\n };\n MaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n\n /**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\n MaterialSpinner.prototype.start = function() {\n this.element_.classList.add('is-active');\n };\n MaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n\n /**\n * Initialize element.\n */\n MaterialSpinner.prototype.init = function() {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n\n this.element_.classList.add('is-upgraded');\n }\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n componentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n });\n})();\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\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 * http://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 */\n\n(function() {\n 'use strict';\n\n /**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n };\n window['MaterialTextfield'] = MaterialTextfield;\n\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n };\n\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n HAS_PLACEHOLDER: 'has-placeholder'\n };\n\n /**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onKeyDown_ = function(event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n };\n\n /**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onFocus_ = function(event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n\n /**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onBlur_ = function(event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n\n /**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onReset_ = function(event) {\n this.updateClasses_();\n };\n\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialTextfield.prototype.updateClasses_ = function() {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n };\n\n // Public methods.\n\n /**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkDisabled = function() {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialTextfield.prototype['checkDisabled'] =\n MaterialTextfield.prototype.checkDisabled;\n\n /**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkFocus = function() {\n if (Boolean(this.element_.querySelector(':focus'))) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }\n };\n MaterialTextfield.prototype['checkFocus'] =\n MaterialTextfield.prototype.checkFocus;\n\n /**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkValidity = function() {\n if (this.input_.validity) {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n };\n MaterialTextfield.prototype['checkValidity'] =\n MaterialTextfield.prototype.checkValidity;\n\n /**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkDirty = function() {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n };\n MaterialTextfield.prototype['checkDirty'] =\n MaterialTextfield.prototype.checkDirty;\n\n /**\n * Disable text field.\n *\n * @public\n */\n MaterialTextfield.prototype.disable = function() {\n this.input_.disabled = true;\n this.updateClasses_();\n };\n MaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n\n /**\n * Enable text field.\n *\n * @public\n */\n MaterialTextfield.prototype.enable = function() {\n this.input_.disabled = false;\n this.updateClasses_();\n };\n MaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n\n /**\n * Update text field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\n MaterialTextfield.prototype.change = function(value) {\n\n this.input_.value = value || '';\n this.updateClasses_();\n };\n MaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n\n /**\n * Initialize element.\n */\n MaterialTextfield.prototype.init = function() {\n\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\n if (this.input_) {\n if (this.input_.hasAttribute(\n /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE))) {\n this.maxRows = parseInt(this.input_.getAttribute(\n /** @type {string} */ (this.Constant_.MAX_ROWS_ATTRIBUTE)), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n\n if (this.input_.hasAttribute('placeholder')) {\n this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n }\n\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.boundResetHandler = this.onReset_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n this.input_.addEventListener('reset', this.boundResetHandler);\n\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n var invalid = this.element_.classList\n .contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n if (this.input_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n };\n\n // The component registers itself. It can assume componentHandler is available\n // in the global scope.\n componentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n });\n})();\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar RequireObjectCoercible = require('es-abstract/2023/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function values(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar vals = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(vals, obj[key]);\n\t\t}\n\t}\n\treturn vals;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.values === 'function' ? Object.values : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimValues() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { values: polyfill }, {\n\t\tvalues: function testValues() {\n\t\t\treturn Object.values !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","module.exports = Paginator;\n\n// Paginator constructor\n//\n// `per_page` is the number of results per page, `length` is the number of\n// pages to display. They default to `25` and `10` respectively.\nfunction Paginator(per_page, length) {\n // You really should be calling this with `new Paginator`, but WHATEVER.\n if (!(this instanceof Paginator)) {\n return new Paginator(per_page, length);\n }\n\n // Woo, defaults!\n this.per_page = per_page || 25;\n this.length = length || 10;\n}\n\n// Build an object with all the necessary information for outputting pagination\n// controls.\n//\n// (new Paginator(paginator.build(100, 2)\nPaginator.prototype.build = function(total_results, current_page) {\n // We want the number of pages, rounded up to the nearest page.\n var total_pages = Math.ceil(total_results / this.per_page);\n\n // Ensure both total_results and current_page are treated as Numbers\n total_results = parseInt(total_results, 10);\n current_page = parseInt(current_page, 10) || 1;\n\n // Obviously we can't be on a negative or 0 page.\n if (current_page < 1) { current_page = 1; }\n // If the user has done something like /page/99999 we want to clamp that back\n // down.\n if (current_page > total_pages) { current_page = total_pages; }\n\n // This is the first page to be displayed as a numbered link.\n var first_page = Math.max(1, current_page - Math.floor(this.length / 2));\n\n // And here's the last page to be displayed specifically.\n var last_page = Math.min(total_pages, current_page + Math.floor(this.length / 2));\n\n // This is triggered if we're at or near one of the extremes; we won't have\n // enough page links. We need to adjust our bounds accordingly.\n if (last_page - first_page + 1 < this.length) {\n if (current_page < (total_pages / 2)) {\n last_page = Math.min(total_pages, last_page + (this.length - (last_page - first_page)));\n } else {\n first_page = Math.max(1, first_page - (this.length - (last_page - first_page)));\n }\n }\n\n // This can be triggered if the user wants an odd number of pages.\n if (last_page - first_page + 1 > this.length) {\n // We want to move towards whatever extreme we're closest to at the time.\n if (current_page > (total_pages / 2)) {\n first_page++;\n } else {\n last_page--;\n }\n }\n\n // First result on the page. This, along with the field below, can be used to\n // do \"showing x to y of z results\" style things.\n var first_result = this.per_page * (current_page - 1);\n if (first_result < 0) { first_result = 0; }\n\n // Last result on the page.\n var last_result = (this.per_page * current_page) - 1;\n if (last_result < 0) { last_result = 0; }\n if (last_result > Math.max(total_results - 1, 0)) { last_result = Math.max(total_results - 1, 0); }\n\n // GIMME THAT OBJECT\n return {\n total_pages: total_pages,\n pages: Math.min(last_page - first_page + 1, total_pages),\n current_page: current_page,\n first_page: first_page,\n last_page: last_page,\n previous_page: current_page - 1,\n next_page: current_page + 1,\n has_previous_page: current_page > 1,\n has_next_page: current_page < total_pages,\n total_results: total_results,\n results: Math.min(last_result - first_result + 1, total_results),\n first_result: first_result,\n last_result: last_result,\n };\n};\n","'use client';\nimport { ObjectUtils } from 'primereact/utils';\nimport React, { useState } from 'react';\n\nvar FilterMatchMode = Object.freeze({\n STARTS_WITH: 'startsWith',\n CONTAINS: 'contains',\n NOT_CONTAINS: 'notContains',\n ENDS_WITH: 'endsWith',\n EQUALS: 'equals',\n NOT_EQUALS: 'notEquals',\n IN: 'in',\n LESS_THAN: 'lt',\n LESS_THAN_OR_EQUAL_TO: 'lte',\n GREATER_THAN: 'gt',\n GREATER_THAN_OR_EQUAL_TO: 'gte',\n BETWEEN: 'between',\n DATE_IS: 'dateIs',\n DATE_IS_NOT: 'dateIsNot',\n DATE_BEFORE: 'dateBefore',\n DATE_AFTER: 'dateAfter',\n CUSTOM: 'custom'\n});\n\nvar FilterOperator = Object.freeze({\n AND: 'and',\n OR: 'or'\n});\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar FilterService = {\n filter: function filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n var filteredItems = [];\n if (!value) {\n return filteredItems;\n }\n var _iterator = _createForOfIteratorHelper(value),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n if (typeof item === 'string') {\n if (this.filters[filterMatchMode](item, filterValue, filterLocale)) {\n filteredItems.push(item);\n continue;\n }\n } else {\n var _iterator2 = _createForOfIteratorHelper(fields),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var field = _step2.value;\n var fieldValue = ObjectUtils.resolveFieldData(item, field);\n if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n filteredItems.push(item);\n break;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return filteredItems;\n },\n filters: {\n startsWith: function startsWith(value, filter, filterLocale) {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n var filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n var stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.slice(0, filterValue.length) === filterValue;\n },\n contains: function contains(value, filter, filterLocale) {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n var filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n var stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) !== -1;\n },\n notContains: function notContains(value, filter, filterLocale) {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n var filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n var stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) === -1;\n },\n endsWith: function endsWith(value, filter, filterLocale) {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n var filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n var stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: function equals(value, filter, filterLocale) {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() === filter.getTime();\n }\n return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) === ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n notEquals: function notEquals(value, filter, filterLocale) {\n if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return true;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() !== filter.getTime();\n }\n return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) !== ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n \"in\": function _in(value, filter) {\n if (filter === undefined || filter === null || filter.length === 0) {\n return true;\n }\n for (var i = 0; i < filter.length; i++) {\n if (ObjectUtils.equals(value, filter[i])) {\n return true;\n }\n }\n return false;\n },\n notIn: function notIn(value, filter) {\n if (filter === undefined || filter === null || filter.length === 0) {\n return true;\n }\n for (var i = 0; i < filter.length; i++) {\n if (ObjectUtils.equals(value, filter[i])) {\n return false;\n }\n }\n return true;\n },\n between: function between(value, filter) {\n if (filter == null || filter[0] == null || filter[1] == null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime) {\n return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n }\n return filter[0] <= value && value <= filter[1];\n },\n lt: function lt(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() < filter.getTime();\n }\n return value < filter;\n },\n lte: function lte(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() <= filter.getTime();\n }\n return value <= filter;\n },\n gt: function gt(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() > filter.getTime();\n }\n return value > filter;\n },\n gte: function gte(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime) {\n return value.getTime() >= filter.getTime();\n }\n return value >= filter;\n },\n dateIs: function dateIs(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() === filter.toDateString();\n },\n dateIsNot: function dateIsNot(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() !== filter.toDateString();\n },\n dateBefore: function dateBefore(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() < filter.getTime();\n },\n dateAfter: function dateAfter(value, filter) {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() > filter.getTime();\n }\n },\n register: function register(rule, fn) {\n this.filters[rule] = fn;\n }\n};\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * @deprecated please use PrimeReactContext\n */\nvar PrimeReact$1 = /*#__PURE__*/_createClass(function PrimeReact() {\n _classCallCheck(this, PrimeReact);\n});\n_defineProperty(PrimeReact$1, \"ripple\", false);\n_defineProperty(PrimeReact$1, \"inputStyle\", 'outlined');\n_defineProperty(PrimeReact$1, \"locale\", 'en');\n_defineProperty(PrimeReact$1, \"appendTo\", null);\n_defineProperty(PrimeReact$1, \"cssTransition\", true);\n_defineProperty(PrimeReact$1, \"autoZIndex\", true);\n_defineProperty(PrimeReact$1, \"hideOverlaysOnDocumentScrolling\", false);\n_defineProperty(PrimeReact$1, \"nonce\", null);\n_defineProperty(PrimeReact$1, \"nullSortOrder\", 1);\n_defineProperty(PrimeReact$1, \"zIndex\", {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100,\n toast: 1200\n});\n_defineProperty(PrimeReact$1, \"pt\", undefined);\n_defineProperty(PrimeReact$1, \"filterMatchModeOptions\", {\n text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n});\n_defineProperty(PrimeReact$1, \"changeTheme\", function (currentTheme, newTheme, linkElementId, callback) {\n var _linkElement$parentNo;\n var linkElement = document.getElementById(linkElementId);\n if (!linkElement) {\n throw Error(\"Element with id \".concat(linkElementId, \" not found.\"));\n }\n var newThemeUrl = linkElement.getAttribute('href').replace(currentTheme, newTheme);\n var newLinkElement = document.createElement('link');\n newLinkElement.setAttribute('rel', 'stylesheet');\n newLinkElement.setAttribute('id', linkElementId);\n newLinkElement.setAttribute('href', newThemeUrl);\n newLinkElement.addEventListener('load', function () {\n if (callback) {\n callback();\n }\n });\n (_linkElement$parentNo = linkElement.parentNode) === null || _linkElement$parentNo === void 0 || _linkElement$parentNo.replaceChild(newLinkElement, linkElement);\n});\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar locales = {\n en: {\n accept: 'Yes',\n addRule: 'Add Rule',\n am: 'AM',\n apply: 'Apply',\n cancel: 'Cancel',\n choose: 'Choose',\n chooseDate: 'Choose Date',\n chooseMonth: 'Choose Month',\n chooseYear: 'Choose Year',\n clear: 'Clear',\n completed: 'Completed',\n contains: 'Contains',\n custom: 'Custom',\n dateAfter: 'Date is after',\n dateBefore: 'Date is before',\n dateFormat: 'mm/dd/yy',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n emptyFilterMessage: 'No results found',\n emptyMessage: 'No available options',\n emptySearchMessage: 'No results found',\n emptySelectionMessage: 'No selected item',\n endsWith: 'Ends with',\n equals: 'Equals',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n filter: 'Filter',\n firstDayOfWeek: 0,\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n lt: 'Less than',\n lte: 'Less than or equal to',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n medium: 'Medium',\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n nextDecade: 'Next Decade',\n nextHour: 'Next Hour',\n nextMinute: 'Next Minute',\n nextMonth: 'Next Month',\n nextSecond: 'Next Second',\n nextYear: 'Next Year',\n noFilter: 'No Filter',\n notContains: 'Not contains',\n notEquals: 'Not equals',\n now: 'Now',\n passwordPrompt: 'Enter a password',\n pending: 'Pending',\n pm: 'PM',\n prevDecade: 'Previous Decade',\n prevHour: 'Previous Hour',\n prevMinute: 'Previous Minute',\n prevMonth: 'Previous Month',\n prevSecond: 'Previous Second',\n prevYear: 'Previous Year',\n reject: 'No',\n removeRule: 'Remove Rule',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n showMonthAfterYear: false,\n startsWith: 'Starts with',\n strong: 'Strong',\n today: 'Today',\n upload: 'Upload',\n weak: 'Weak',\n weekHeader: 'Wk',\n aria: {\n cancelEdit: 'Cancel Edit',\n close: 'Close',\n collapseRow: 'Row Collapsed',\n editRow: 'Edit Row',\n expandRow: 'Row Expanded',\n falseLabel: 'False',\n filterConstraint: 'Filter Constraint',\n filterOperator: 'Filter Operator',\n firstPageLabel: 'First Page',\n gridView: 'Grid View',\n hideFilterMenu: 'Hide Filter Menu',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n lastPageLabel: 'Last Page',\n listView: 'List View',\n moveAllToSource: 'Move All to Source',\n moveAllToTarget: 'Move All to Target',\n moveBottom: 'Move Bottom',\n moveDown: 'Move Down',\n moveToSource: 'Move to Source',\n moveToTarget: 'Move to Target',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n navigation: 'Navigation',\n next: 'Next',\n nextPageLabel: 'Next Page',\n nullLabel: 'Not Selected',\n pageLabel: 'Page {page}',\n otpLabel: 'Please enter one time password character {0}',\n passwordHide: 'Hide Password',\n passwordShow: 'Show Password',\n previous: 'Previous',\n previousPageLabel: 'Previous Page',\n rotateLeft: 'Rotate Left',\n rotateRight: 'Rotate Right',\n rowsPerPageLabel: 'Rows per page',\n saveEdit: 'Save Edit',\n scrollTop: 'Scroll Top',\n selectAll: 'All items selected',\n selectRow: 'Row Selected',\n showFilterMenu: 'Show Filter Menu',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n star: '1 star',\n stars: '{star} stars',\n trueLabel: 'True',\n unselectAll: 'All items unselected',\n unselectRow: 'Row Unselected',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out'\n }\n }\n};\nfunction locale(locale) {\n locale && (PrimeReact$1.locale = locale);\n return {\n locale: PrimeReact$1.locale,\n options: locales[PrimeReact$1.locale]\n };\n}\nfunction addLocale(locale, options) {\n if (locale.includes('__proto__') || locale.includes('prototype')) {\n throw new Error('Unsafe locale detected');\n }\n locales[locale] = _objectSpread(_objectSpread({}, locales.en), options);\n}\nfunction updateLocaleOption(key, value, locale) {\n if (key.includes('__proto__') || key.includes('prototype')) {\n throw new Error('Unsafe key detected');\n }\n localeOptions(locale)[key] = value;\n}\nfunction updateLocaleOptions(options, locale) {\n if (locale.includes('__proto__') || locale.includes('prototype')) {\n throw new Error('Unsafe locale detected');\n }\n var _locale = locale || PrimeReact$1.locale;\n locales[_locale] = _objectSpread(_objectSpread({}, locales[_locale]), options);\n}\nfunction localeOption(key, locale) {\n if (key.includes('__proto__') || key.includes('prototype')) {\n throw new Error('Unsafe key detected');\n }\n var _locale = locale || PrimeReact$1.locale;\n try {\n return localeOptions(_locale)[key];\n } catch (error) {\n throw new Error(\"The \".concat(key, \" option is not found in the current locale('\").concat(_locale, \"').\"));\n }\n}\n\n/**\n * Find an ARIA label in the locale by key. If options are passed it will replace all options:\n * ```ts\n * const ariaValue = \"Page {page}, User {user}, Role {role}\";\n * const options = { page: 2, user: \"John\", role: \"Admin\" };\n * const result = ariaLabel('yourLabel', { page: 2, user: \"John\", role: \"Admin\" })\n * console.log(result); // Output: Page 2, User John, Role Admin\n * ```\n * @param {string} ariaKey key of the ARIA label to look up in locale.\n * @param {any} options JSON options like { page: 2, user: \"John\", role: \"Admin\" }\n * @returns the ARIA label with replaced values\n */\nfunction ariaLabel(ariaKey, options) {\n if (ariaKey.includes('__proto__') || ariaKey.includes('prototype')) {\n throw new Error('Unsafe ariaKey detected');\n }\n var _locale = PrimeReact$1.locale;\n try {\n var _ariaLabel = localeOptions(_locale).aria[ariaKey];\n if (_ariaLabel) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n _ariaLabel = _ariaLabel.replace(\"{\".concat(key, \"}\"), options[key]);\n }\n }\n }\n return _ariaLabel;\n } catch (error) {\n throw new Error(\"The \".concat(ariaKey, \" option is not found in the current locale('\").concat(_locale, \"').\"));\n }\n}\nfunction localeOptions(locale) {\n var _locale = locale || PrimeReact$1.locale;\n if (_locale.includes('__proto__') || _locale.includes('prototype')) {\n throw new Error('Unsafe locale detected');\n }\n return locales[_locale];\n}\n\nvar MessageSeverity = Object.freeze({\n SUCCESS: 'success',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n SECONDARY: 'secondary',\n CONTRAST: 'contrast'\n});\n\nvar PrimeIcons = Object.freeze({\n ADDRESS_BOOK: 'pi pi-address-book',\n ALIGN_CENTER: 'pi pi-align-center',\n ALIGN_JUSTIFY: 'pi pi-align-justify',\n ALIGN_LEFT: 'pi pi-align-left',\n ALIGN_RIGHT: 'pi pi-align-right',\n AMAZON: 'pi pi-amazon',\n ANDROID: 'pi pi-android',\n ANGLE_DOUBLE_DOWN: 'pi pi-angle-double-down',\n ANGLE_DOUBLE_LEFT: 'pi pi-angle-double-left',\n ANGLE_DOUBLE_RIGHT: 'pi pi-angle-double-right',\n ANGLE_DOUBLE_UP: 'pi pi-angle-double-up',\n ANGLE_DOWN: 'pi pi-angle-down',\n ANGLE_LEFT: 'pi pi-angle-left',\n ANGLE_RIGHT: 'pi pi-angle-right',\n ANGLE_UP: 'pi pi-angle-up',\n APPLE: 'pi pi-apple',\n ARROW_CIRCLE_DOWN: 'pi pi-arrow-circle-down',\n ARROW_CIRCLE_LEFT: 'pi pi-arrow-circle-left',\n ARROW_CIRCLE_RIGHT: 'pi pi-arrow-circle-right',\n ARROW_CIRCLE_UP: 'pi pi-arrow-circle-up',\n ARROW_DOWN_LEFT_AND_ARROW_UP_RIGHT_TO_CENTER: 'pi pi-arrow-down-left-and-arrow-up-right-to-center',\n ARROW_DOWN_LEFT: 'pi pi-arrow-down-left',\n ARROW_DOWN_RIGHT: 'pi pi-arrow-down-right',\n ARROW_DOWN: 'pi pi-arrow-down',\n ARROW_LEFT: 'pi pi-arrow-left',\n ARROW_RIGHT_ARROW_LEFT: 'pi pi-arrow-right-arrow-left',\n ARROW_RIGHT: 'pi pi-arrow-right',\n ARROW_UP_LEFT: 'pi pi-arrow-up-left',\n ARROW_UP_RIGHT_AND_ARROW_DOWN_LEFT_FROM_CENTER: 'pi pi-arrow-up-right-and-arrow-down-left-from-center',\n ARROW_UP_RIGHT: 'pi pi-arrow-up-right',\n ARROW_UP: 'pi pi-arrow-up',\n ARROWS_ALT: 'pi pi-arrows-alt',\n ARROWS_H: 'pi pi-arrows-h',\n ARROWS_V: 'pi pi-arrows-v',\n ASTERISK: 'pi pi-asterisk',\n AT: 'pi pi-at',\n BACKWARD: 'pi pi-backward',\n BAN: 'pi pi-ban',\n BARCODE: 'pi pi-barcode',\n BARS: 'pi pi-bars',\n BELL_SLASH: 'pi pi-bell-slash',\n BELL: 'pi pi-bell',\n BITCOIN: 'pi pi-bitcoin',\n BOLT: 'pi pi-bolt',\n BOOK: 'pi pi-book',\n BOOKMARK_FILL: 'pi pi-bookmark-fill',\n BOOKMARK: 'pi pi-bookmark',\n BOX: 'pi pi-box',\n BRIEFCASE: 'pi pi-briefcase',\n BUILDING_COLUMNS: 'pi pi-building-columns',\n BUILDING: 'pi pi-building',\n BULLSEYE: 'pi pi-bullseye',\n CALCULATOR: 'pi pi-calculator',\n CALENDAR_CLOCK: 'pi pi-calendar-clock',\n CALENDAR_MINUS: 'pi pi-calendar-minus',\n CALENDAR_PLUS: 'pi pi-calendar-plus',\n CALENDAR_TIMES: 'pi pi-calendar-times',\n CALENDAR: 'pi pi-calendar',\n CAMERA: 'pi pi-camera',\n CAR: 'pi pi-car',\n CARET_DOWN: 'pi pi-caret-down',\n CARET_LEFT: 'pi pi-caret-left',\n CARET_RIGHT: 'pi pi-caret-right',\n CARET_UP: 'pi pi-caret-up',\n CART_ARROW_DOWN: 'pi pi-cart-arrow-down',\n CART_MINUS: 'pi pi-cart-minus',\n CART_PLUS: 'pi pi-cart-plus',\n CHART_BAR: 'pi pi-chart-bar',\n CHART_LINE: 'pi pi-chart-line',\n CHART_PIE: 'pi pi-chart-pie',\n CHART_SCATTER: 'pi pi-chart-scatter',\n CHECK_CIRCLE: 'pi pi-check-circle',\n CHECK_SQUARE: 'pi pi-check-square',\n CHECK: 'pi pi-check',\n CHEVRON_CIRCLE_DOWN: 'pi pi-chevron-circle-down',\n CHEVRON_CIRCLE_LEFT: 'pi pi-chevron-circle-left',\n CHEVRON_CIRCLE_RIGHT: 'pi pi-chevron-circle-right',\n CHEVRON_CIRCLE_UP: 'pi pi-chevron-circle-up',\n CHEVRON_DOWN: 'pi pi-chevron-down',\n CHEVRON_LEFT: 'pi pi-chevron-left',\n CHEVRON_RIGHT: 'pi pi-chevron-right',\n CHEVRON_UP: 'pi pi-chevron-up',\n CIRCLE_FILL: 'pi pi-circle-fill',\n CIRCLE_OFF: 'pi pi-circle-off',\n CIRCLE_ON: 'pi pi-circle-on',\n CIRCLE: 'pi pi-circle',\n CLIPBOARD: 'pi pi-clipboard',\n CLOCK: 'pi pi-clock',\n CLONE: 'pi pi-clone',\n CLOUD_DOWNLOAD: 'pi pi-cloud-download',\n CLOUD_UPLOAD: 'pi pi-cloud-upload',\n CLOUD: 'pi pi-cloud',\n CODE: 'pi pi-code',\n COG: 'pi pi-cog',\n COMMENT: 'pi pi-comment',\n COMMENTS: 'pi pi-comments',\n COMPASS: 'pi pi-compass',\n COPY: 'pi pi-copy',\n CREDIT_CARD: 'pi pi-credit-card',\n CROWN: 'pi pi-crown',\n DATABASE: 'pi pi-database',\n DELETE_LEFT: 'pi pi-delete-left',\n DESKTOP: 'pi pi-desktop',\n DIRECTIONS_ALT: 'pi pi-directions-alt',\n DIRECTIONS: 'pi pi-directions',\n DISCORD: 'pi pi-discord',\n DOLLAR: 'pi pi-dollar',\n DOWNLOAD: 'pi pi-download',\n EJECT: 'pi pi-eject',\n ELLIPSIS_H: 'pi pi-ellipsis-h',\n ELLIPSIS_V: 'pi pi-ellipsis-v',\n ENVELOPE: 'pi pi-envelope',\n EQUALS: 'pi pi-equals',\n ERASER: 'pi pi-eraser',\n ETHEREUM: 'pi pi-ethereum',\n EURO: 'pi pi-euro',\n EXCLAMATION_CIRCLE: 'pi pi-exclamation-circle',\n EXCLAMATION_TRIANGLE: 'pi pi-exclamation-triangle',\n EXPAND: 'pi pi-expand',\n EXTERNAL_LINK: 'pi pi-external-link',\n EYE_SLASH: 'pi pi-eye-slash',\n EYE: 'pi pi-eye',\n FACE_SMILE: 'pi pi-face-smile',\n FACEBOOK: 'pi pi-facebook',\n FAST_BACKWARD: 'pi pi-fast-backward',\n FAST_FORWARD: 'pi pi-fast-forward',\n FILE_ARROW_UP: 'pi pi-file-arrow-up',\n FILE_CHECK: 'pi pi-file-check',\n FILE_EDIT: 'pi pi-file-edit',\n FILE_EXCEL: 'pi pi-file-excel',\n FILE_EXPORT: 'pi pi-file-export',\n FILE_IMPORT: 'pi pi-file-import',\n FILE_O: 'pi pi-file-o',\n FILE_PDF: 'pi pi-file-pdf',\n FILE_PLUS: 'pi pi-file-plus',\n FILE_WORD: 'pi pi-file-word',\n FILE: 'pi pi-file',\n FILTER_FILL: 'pi pi-filter-fill',\n FILTER_SLASH: 'pi pi-filter-slash',\n FILTER: 'pi pi-filter',\n FLAG_FILL: 'pi pi-flag-fill',\n FLAG: 'pi pi-flag',\n FOLDER_OPEN: 'pi pi-folder-open',\n FOLDER_PLUS: 'pi pi-folder-plus',\n FOLDER: 'pi pi-folder',\n FORWARD: 'pi pi-forward',\n GAUGE: 'pi pi-gauge',\n GIFT: 'pi pi-gift',\n GITHUB: 'pi pi-github',\n GLOBE: 'pi pi-globe',\n GOOGLE: 'pi pi-google',\n GRADUATION_CAP: 'pi pi-graduation-cap',\n HAMMER: 'pi pi-hammer',\n HASHTAG: 'pi pi-hashtag',\n HEADPHONES: 'pi pi-headphones',\n HEART_FILL: 'pi pi-heart-fill',\n HEART: 'pi pi-heart',\n HISTORY: 'pi pi-history',\n HOME: 'pi pi-home',\n HOURGLASS: 'pi pi-hourglass',\n ID_CARD: 'pi pi-id-card',\n IMAGE: 'pi pi-image',\n IMAGES: 'pi pi-images',\n INBOX: 'pi pi-inbox',\n INDIAN_RUPEE: 'pi pi-indian-rupee',\n INFO_CIRCLE: 'pi pi-info-circle',\n INFO: 'pi pi-info',\n INSTAGRAM: 'pi pi-instagram',\n KEY: 'pi pi-key',\n LANGUAGE: 'pi pi-language',\n LIGHTBULB: 'pi pi-lightbulb',\n LINK: 'pi pi-link',\n LINKEDIN: 'pi pi-linkedin',\n LIST_CHECK: 'pi pi-list-check',\n LIST: 'pi pi-list',\n LOCK_OPEN: 'pi pi-lock-open',\n LOCK: 'pi pi-lock',\n MAP_MARKER: 'pi pi-map-marker',\n MAP: 'pi pi-map',\n MARS: 'pi pi-mars',\n MEGAPHONE: 'pi pi-megaphone',\n MICROCHIP_AI: 'pi pi-microchip-ai',\n MICROCHIP: 'pi pi-microchip',\n MICROPHONE: 'pi pi-microphone',\n MICROSOFT: 'pi pi-microsoft',\n MINUS_CIRCLE: 'pi pi-minus-circle',\n MINUS: 'pi pi-minus',\n MOBILE: 'pi pi-mobile',\n MONEY_BILL: 'pi pi-money-bill',\n MOON: 'pi pi-moon',\n OBJECTS_COLUMN: 'pi pi-objects-column',\n PALETTE: 'pi pi-palette',\n PAPERCLIP: 'pi pi-paperclip',\n PAUSE_CIRCLE: 'pi pi-pause-circle',\n PAUSE: 'pi pi-pause',\n PAYPAL: 'pi pi-paypal',\n PEN_TO_SQUARE: 'pi pi-pen-to-square',\n PENCIL: 'pi pi-pencil',\n PERCENTAGE: 'pi pi-percentage',\n PHONE: 'pi pi-phone',\n PINTEREST: 'pi pi-pinterest',\n PLAY_CIRCLE: 'pi pi-play-circle',\n PLAY: 'pi pi-play',\n PLUS_CIRCLE: 'pi pi-plus-circle',\n PLUS: 'pi pi-plus',\n POUND: 'pi pi-pound',\n POWER_OFF: 'pi pi-power-off',\n PRIME: 'pi pi-prime',\n PRINT: 'pi pi-print',\n QRCODE: 'pi pi-qrcode',\n QUESTION_CIRCLE: 'pi pi-question-circle',\n QUESTION: 'pi pi-question',\n RECEIPT: 'pi pi-receipt',\n REDDIT: 'pi pi-reddit',\n REFRESH: 'pi pi-refresh',\n REPLAY: 'pi pi-replay',\n REPLY: 'pi pi-reply',\n SAVE: 'pi pi-save',\n SEARCH_MINUS: 'pi pi-search-minus',\n SEARCH_PLUS: 'pi pi-search-plus',\n SEARCH: 'pi pi-search',\n SEND: 'pi pi-send',\n SERVER: 'pi pi-server',\n SHARE_ALT: 'pi pi-share-alt',\n SHIELD: 'pi pi-shield',\n SHOP: 'pi pi-shop',\n SHOPPING_BAG: 'pi pi-shopping-bag',\n SHOPPING_CART: 'pi pi-shopping-cart',\n SIGN_IN: 'pi pi-sign-in',\n SIGN_OUT: 'pi pi-sign-out',\n SITEMAP: 'pi pi-sitemap',\n SLACK: 'pi pi-slack',\n SLIDERS_H: 'pi pi-sliders-h',\n SLIDERS_V: 'pi pi-sliders-v',\n SORT_ALPHA_DOWN_ALT: 'pi pi-sort-alpha-down-alt',\n SORT_ALPHA_DOWN: 'pi pi-sort-alpha-down',\n SORT_ALPHA_UP_ALT: 'pi pi-sort-alpha-up-alt',\n SORT_ALPHA_UP: 'pi pi-sort-alpha-up',\n SORT_ALT_SLASH: 'pi pi-sort-alt-slash',\n SORT_ALT: 'pi pi-sort-alt',\n SORT_AMOUNT_DOWN_ALT: 'pi pi-sort-amount-down-alt',\n SORT_AMOUNT_DOWN: 'pi pi-sort-amount-down',\n SORT_AMOUNT_UP_ALT: 'pi pi-sort-amount-up-alt',\n SORT_AMOUNT_UP: 'pi pi-sort-amount-up',\n SORT_DOWN_FILL: 'pi pi-sort-down-fill',\n SORT_DOWN: 'pi pi-sort-down',\n SORT_NUMERIC_DOWN_ALT: 'pi pi-sort-numeric-down-alt',\n SORT_NUMERIC_DOWN: 'pi pi-sort-numeric-down',\n SORT_NUMERIC_UP_ALT: 'pi pi-sort-numeric-up-alt',\n SORT_NUMERIC_UP: 'pi pi-sort-numeric-up',\n SORT_UP_FILL: 'pi pi-sort-up-fill',\n SORT_UP: 'pi pi-sort-up',\n SORT: 'pi pi-sort',\n SPARKLES: 'pi pi-sparkles',\n SPINNER_DOTTED: 'pi pi-spinner-dotted',\n SPINNER: 'pi pi-spinner',\n STAR_FILL: 'pi pi-star-fill',\n STAR_HALF_FILL: 'pi pi-star-half-fill',\n STAR_HALF: 'pi pi-star-half',\n STAR: 'pi pi-star',\n STEP_BACKWARD_ALT: 'pi pi-step-backward-alt',\n STEP_BACKWARD: 'pi pi-step-backward',\n STEP_FORWARD_ALT: 'pi pi-step-forward-alt',\n STEP_FORWARD: 'pi pi-step-forward',\n STOP_CIRCLE: 'pi pi-stop-circle',\n STOP: 'pi pi-stop',\n STOPWATCH: 'pi pi-stopwatch',\n SUN: 'pi pi-sun',\n SYNC: 'pi pi-sync',\n TABLE: 'pi pi-table',\n TABLET: 'pi pi-tablet',\n TAG: 'pi pi-tag',\n TAGS: 'pi pi-tags',\n TELEGRAM: 'pi pi-telegram',\n TH_LARGE: 'pi pi-th-large',\n THUMBS_DOWN_FILL: 'pi pi-thumbs-down-fill',\n THUMBS_DOWN: 'pi pi-thumbs-down',\n THUMBS_UP_FILL: 'pi pi-thumbs-up-fill',\n THUMBS_UP: 'pi pi-thumbs-up',\n THUMBTACK: 'pi pi-thumbtack',\n TICKET: 'pi pi-ticket',\n TIKTOK: 'pi pi-tiktok',\n TIMES_CIRCLE: 'pi pi-times-circle',\n TIMES: 'pi pi-times',\n TRASH: 'pi pi-trash',\n TROPHY: 'pi pi-trophy',\n TRUCK: 'pi pi-truck',\n TURKISH_LIRA: 'pi pi-turkish-lira',\n TWITCH: 'pi pi-twitch',\n TWITTER: 'pi pi-twitter',\n UNDO: 'pi pi-undo',\n UNLOCK: 'pi pi-unlock',\n UPLOAD: 'pi pi-upload',\n USER_EDIT: 'pi pi-user-edit',\n USER_MINUS: 'pi pi-user-minus',\n USER_PLUS: 'pi pi-user-plus',\n USER: 'pi pi-user',\n USERS: 'pi pi-users',\n VENUS: 'pi pi-venus',\n VERIFIED: 'pi pi-verified',\n VIDEO: 'pi pi-video',\n VIMEO: 'pi pi-vimeo',\n VOLUME_DOWN: 'pi pi-volume-down',\n VOLUME_OFF: 'pi pi-volume-off',\n VOLUME_UP: 'pi pi-volume-up',\n WALLET: 'pi pi-wallet',\n WAREHOUSE: 'pi pi-warehouse',\n WAVE_PULSE: 'pi pi-wave-pulse',\n WHATSAPP: 'pi pi-whatsapp',\n WIFI: 'pi pi-wifi',\n WINDOW_MAXIMIZE: 'pi pi-window-maximize',\n WINDOW_MINIMIZE: 'pi pi-window-minimize',\n WRENCH: 'pi pi-wrench',\n YOUTUBE: 'pi pi-youtube'\n});\n\nvar SortOrder = Object.freeze({\n DESC: -1,\n UNSORTED: 0,\n ASC: 1\n});\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar PrimeReactContext = /*#__PURE__*/React.createContext();\nvar PrimeReactProvider = function PrimeReactProvider(props) {\n var propsValue = props.value || {};\n var _useState = useState(propsValue.ripple || false),\n _useState2 = _slicedToArray(_useState, 2),\n ripple = _useState2[0],\n setRipple = _useState2[1];\n var _useState3 = useState(propsValue.inputStyle || 'outlined'),\n _useState4 = _slicedToArray(_useState3, 2),\n inputStyle = _useState4[0],\n setInputStyle = _useState4[1];\n var _useState5 = useState(propsValue.locale || 'en'),\n _useState6 = _slicedToArray(_useState5, 2),\n locale = _useState6[0],\n setLocale = _useState6[1];\n var _useState7 = useState(propsValue.appendTo || null),\n _useState8 = _slicedToArray(_useState7, 2),\n appendTo = _useState8[0],\n setAppendTo = _useState8[1];\n var _useState9 = useState(propsValue.styleContainer || null),\n _useState10 = _slicedToArray(_useState9, 2),\n styleContainer = _useState10[0],\n setStyleContainer = _useState10[1];\n var _useState11 = useState(propsValue.cssTransition || true),\n _useState12 = _slicedToArray(_useState11, 2),\n cssTransition = _useState12[0],\n setCssTransition = _useState12[1];\n var _useState13 = useState(propsValue.autoZIndex || true),\n _useState14 = _slicedToArray(_useState13, 2),\n autoZIndex = _useState14[0],\n setAutoZIndex = _useState14[1];\n var _useState15 = useState(propsValue.hideOverlaysOnDocumentScrolling || false),\n _useState16 = _slicedToArray(_useState15, 2),\n hideOverlaysOnDocumentScrolling = _useState16[0],\n setHideOverlaysOnDocumentScrolling = _useState16[1];\n var _useState17 = useState(propsValue.nonce || null),\n _useState18 = _slicedToArray(_useState17, 2),\n nonce = _useState18[0],\n setNonce = _useState18[1];\n var _useState19 = useState(propsValue.nullSortOrder || 1),\n _useState20 = _slicedToArray(_useState19, 2),\n nullSortOrder = _useState20[0],\n setNullSortOrder = _useState20[1];\n var _useState21 = useState(propsValue.zIndex || {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100,\n toast: 1200\n }),\n _useState22 = _slicedToArray(_useState21, 2),\n zIndex = _useState22[0],\n setZIndex = _useState22[1];\n var _useState23 = useState(propsValue.ptOptions || {\n mergeSections: true,\n mergeProps: true\n }),\n _useState24 = _slicedToArray(_useState23, 2),\n ptOptions = _useState24[0],\n setPtOptions = _useState24[1];\n var _useState25 = useState(propsValue.pt || undefined),\n _useState26 = _slicedToArray(_useState25, 2),\n pt = _useState26[0],\n setPt = _useState26[1];\n var _useState27 = useState(propsValue.unstyled || false),\n _useState28 = _slicedToArray(_useState27, 2),\n unstyled = _useState28[0],\n setUnstyled = _useState28[1];\n var _useState29 = useState(propsValue.filterMatchModeOptions || {\n text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n }),\n _useState30 = _slicedToArray(_useState29, 2),\n filterMatchModeOptions = _useState30[0],\n setFilterMatchModeOptions = _useState30[1];\n var changeTheme = function changeTheme(currentTheme, newTheme, linkElementId, callback) {\n var _linkElement$parentNo;\n var linkElement = document.getElementById(linkElementId);\n if (!linkElement) {\n throw Error(\"Element with id \".concat(linkElementId, \" not found.\"));\n }\n var newThemeUrl = linkElement.getAttribute('href').replace(currentTheme, newTheme);\n var newLinkElement = document.createElement('link');\n newLinkElement.setAttribute('rel', 'stylesheet');\n newLinkElement.setAttribute('id', linkElementId);\n newLinkElement.setAttribute('href', newThemeUrl);\n newLinkElement.addEventListener('load', function () {\n if (callback) {\n callback();\n }\n });\n (_linkElement$parentNo = linkElement.parentNode) === null || _linkElement$parentNo === void 0 || _linkElement$parentNo.replaceChild(newLinkElement, linkElement);\n };\n\n /**\n * @deprecated\n */\n React.useEffect(function () {\n PrimeReact$1.ripple = ripple;\n }, [ripple]);\n\n /**\n * @deprecated\n */\n React.useEffect(function () {\n PrimeReact$1.inputStyle = inputStyle;\n }, [inputStyle]);\n\n /**\n * @deprecated\n */\n React.useEffect(function () {\n PrimeReact$1.locale = locale;\n }, [locale]);\n var value = {\n changeTheme: changeTheme,\n ripple: ripple,\n setRipple: setRipple,\n inputStyle: inputStyle,\n setInputStyle: setInputStyle,\n locale: locale,\n setLocale: setLocale,\n appendTo: appendTo,\n setAppendTo: setAppendTo,\n styleContainer: styleContainer,\n setStyleContainer: setStyleContainer,\n cssTransition: cssTransition,\n setCssTransition: setCssTransition,\n autoZIndex: autoZIndex,\n setAutoZIndex: setAutoZIndex,\n hideOverlaysOnDocumentScrolling: hideOverlaysOnDocumentScrolling,\n setHideOverlaysOnDocumentScrolling: setHideOverlaysOnDocumentScrolling,\n nonce: nonce,\n setNonce: setNonce,\n nullSortOrder: nullSortOrder,\n setNullSortOrder: setNullSortOrder,\n zIndex: zIndex,\n setZIndex: setZIndex,\n ptOptions: ptOptions,\n setPtOptions: setPtOptions,\n pt: pt,\n setPt: setPt,\n filterMatchModeOptions: filterMatchModeOptions,\n setFilterMatchModeOptions: setFilterMatchModeOptions,\n unstyled: unstyled,\n setUnstyled: setUnstyled\n };\n return /*#__PURE__*/React.createElement(PrimeReactContext.Provider, {\n value: value\n }, props.children);\n};\n\nvar PrimeReact = PrimeReact$1;\n\nexport { FilterMatchMode, FilterOperator, FilterService, MessageSeverity, PrimeIcons, PrimeReactContext, PrimeReactProvider, SortOrder, addLocale, ariaLabel, PrimeReact as default, locale, localeOption, localeOptions, updateLocaleOption, updateLocaleOptions };\n","'use client';\nimport PrimeReact from 'primereact/api';\nimport { useStyle, useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks';\nimport { ObjectUtils, mergeProps, classNames } from 'primereact/utils';\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar baseStyle = \"\\n.p-hidden-accessible {\\n border: 0;\\n padding: 0;\\n margin: -1px;\\n position: absolute;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n clip-path: inset(50%);\\n white-space: nowrap;\\n}\\n\\n.p-hidden-accessible input,\\n.p-hidden-accessible select {\\n transform: scale(0);\\n}\\n\\n.p-overflow-hidden {\\n overflow: hidden;\\n padding-right: var(--scrollbar-width);\\n}\\n\";\nvar buttonStyles = \"\\n.p-button {\\n margin: 0;\\n display: inline-flex;\\n cursor: pointer;\\n user-select: none;\\n align-items: center;\\n vertical-align: bottom;\\n text-align: center;\\n overflow: hidden;\\n position: relative;\\n}\\n\\n.p-button-label {\\n flex: 1 1 auto;\\n}\\n\\n.p-button-icon-right {\\n order: 1;\\n}\\n\\n.p-button:disabled {\\n cursor: default;\\n}\\n\\n.p-button-icon-only {\\n justify-content: center;\\n}\\n\\n.p-button-icon-only .p-button-label {\\n visibility: hidden;\\n width: 0;\\n flex: 0 0 auto;\\n}\\n\\n.p-button-vertical {\\n flex-direction: column;\\n}\\n\\n.p-button-icon-bottom {\\n order: 2;\\n}\\n\\n.p-button-group .p-button {\\n margin: 0;\\n}\\n\\n.p-button-group .p-button:not(:last-child) {\\n border-right: 0 none;\\n}\\n\\n.p-button-group .p-button:not(:first-of-type):not(:last-of-type) {\\n border-radius: 0;\\n}\\n\\n.p-button-group .p-button:first-of-type {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.p-button-group .p-button:last-of-type {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n\\n.p-button-group .p-button:focus {\\n position: relative;\\n z-index: 1;\\n}\\n\";\nvar inputTextStyles = \"\\n.p-inputtext {\\n margin: 0;\\n}\\n\\n.p-fluid .p-inputtext {\\n width: 100%;\\n}\\n\\n/* InputGroup */\\n.p-inputgroup {\\n display: flex;\\n align-items: stretch;\\n width: 100%;\\n}\\n\\n.p-inputgroup-addon {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.p-inputgroup .p-float-label {\\n display: flex;\\n align-items: stretch;\\n width: 100%;\\n}\\n\\n.p-inputgroup .p-inputtext,\\n.p-fluid .p-inputgroup .p-inputtext,\\n.p-inputgroup .p-inputwrapper,\\n.p-fluid .p-inputgroup .p-input {\\n flex: 1 1 auto;\\n width: 1%;\\n}\\n\\n/* Floating Label */\\n.p-float-label {\\n display: block;\\n position: relative;\\n}\\n\\n.p-float-label label {\\n position: absolute;\\n pointer-events: none;\\n top: 50%;\\n margin-top: -0.5rem;\\n transition-property: all;\\n transition-timing-function: ease;\\n line-height: 1;\\n}\\n\\n.p-float-label textarea ~ label,\\n.p-float-label .p-mention ~ label {\\n top: 1rem;\\n}\\n\\n.p-float-label input:focus ~ label,\\n.p-float-label input:-webkit-autofill ~ label,\\n.p-float-label input.p-filled ~ label,\\n.p-float-label textarea:focus ~ label,\\n.p-float-label textarea.p-filled ~ label,\\n.p-float-label .p-inputwrapper-focus ~ label,\\n.p-float-label .p-inputwrapper-filled ~ label,\\n.p-float-label .p-tooltip-target-wrapper ~ label {\\n top: -0.75rem;\\n font-size: 12px;\\n}\\n\\n.p-float-label .p-placeholder,\\n.p-float-label input::placeholder,\\n.p-float-label .p-inputtext::placeholder {\\n opacity: 0;\\n transition-property: all;\\n transition-timing-function: ease;\\n}\\n\\n.p-float-label .p-focus .p-placeholder,\\n.p-float-label input:focus::placeholder,\\n.p-float-label .p-inputtext:focus::placeholder {\\n opacity: 1;\\n transition-property: all;\\n transition-timing-function: ease;\\n}\\n\\n.p-input-icon-left,\\n.p-input-icon-right {\\n position: relative;\\n display: inline-block;\\n}\\n\\n.p-input-icon-left > i,\\n.p-input-icon-right > i,\\n.p-input-icon-left > svg,\\n.p-input-icon-right > svg,\\n.p-input-icon-left > .p-input-prefix,\\n.p-input-icon-right > .p-input-suffix {\\n position: absolute;\\n top: 50%;\\n margin-top: -0.5rem;\\n}\\n\\n.p-fluid .p-input-icon-left,\\n.p-fluid .p-input-icon-right {\\n display: block;\\n width: 100%;\\n}\\n\";\nvar iconStyles = \"\\n.p-icon {\\n display: inline-block;\\n}\\n\\n.p-icon-spin {\\n -webkit-animation: p-icon-spin 2s infinite linear;\\n animation: p-icon-spin 2s infinite linear;\\n}\\n\\nsvg.p-icon {\\n pointer-events: auto;\\n}\\n\\nsvg.p-icon g,\\n.p-disabled svg.p-icon {\\n pointer-events: none;\\n}\\n\\n@-webkit-keyframes p-icon-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n\\n@keyframes p-icon-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(359deg);\\n transform: rotate(359deg);\\n }\\n}\\n\";\nvar commonStyle = \"\\n@layer primereact {\\n .p-component, .p-component * {\\n box-sizing: border-box;\\n }\\n\\n .p-hidden {\\n display: none;\\n }\\n\\n .p-hidden-space {\\n visibility: hidden;\\n }\\n\\n .p-reset {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n outline: 0;\\n text-decoration: none;\\n font-size: 100%;\\n list-style: none;\\n }\\n\\n .p-disabled, .p-disabled * {\\n cursor: default;\\n pointer-events: none;\\n user-select: none;\\n }\\n\\n .p-component-overlay {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n }\\n\\n .p-unselectable-text {\\n user-select: none;\\n }\\n\\n .p-scrollbar-measure {\\n width: 100px;\\n height: 100px;\\n overflow: scroll;\\n position: absolute;\\n top: -9999px;\\n }\\n\\n @-webkit-keyframes p-fadein {\\n 0% { opacity: 0; }\\n 100% { opacity: 1; }\\n }\\n @keyframes p-fadein {\\n 0% { opacity: 0; }\\n 100% { opacity: 1; }\\n }\\n\\n .p-link {\\n text-align: left;\\n background-color: transparent;\\n margin: 0;\\n padding: 0;\\n border: none;\\n cursor: pointer;\\n user-select: none;\\n }\\n\\n .p-link:disabled {\\n cursor: default;\\n }\\n\\n /* Non react overlay animations */\\n .p-connected-overlay {\\n opacity: 0;\\n transform: scaleY(0.8);\\n transition: transform .12s cubic-bezier(0, 0, 0.2, 1), opacity .12s cubic-bezier(0, 0, 0.2, 1);\\n }\\n\\n .p-connected-overlay-visible {\\n opacity: 1;\\n transform: scaleY(1);\\n }\\n\\n .p-connected-overlay-hidden {\\n opacity: 0;\\n transform: scaleY(1);\\n transition: opacity .1s linear;\\n }\\n\\n /* React based overlay animations */\\n .p-connected-overlay-enter {\\n opacity: 0;\\n transform: scaleY(0.8);\\n }\\n\\n .p-connected-overlay-enter-active {\\n opacity: 1;\\n transform: scaleY(1);\\n transition: transform .12s cubic-bezier(0, 0, 0.2, 1), opacity .12s cubic-bezier(0, 0, 0.2, 1);\\n }\\n\\n .p-connected-overlay-enter-done {\\n transform: none;\\n }\\n\\n .p-connected-overlay-exit {\\n opacity: 1;\\n }\\n\\n .p-connected-overlay-exit-active {\\n opacity: 0;\\n transition: opacity .1s linear;\\n }\\n\\n /* Toggleable Content */\\n .p-toggleable-content-enter {\\n max-height: 0;\\n }\\n\\n .p-toggleable-content-enter-active {\\n overflow: hidden;\\n max-height: 1000px;\\n transition: max-height 1s ease-in-out;\\n }\\n\\n .p-toggleable-content-enter-done {\\n transform: none;\\n }\\n\\n .p-toggleable-content-exit {\\n max-height: 1000px;\\n }\\n\\n .p-toggleable-content-exit-active {\\n overflow: hidden;\\n max-height: 0;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n .p-sr-only {\\n border: 0;\\n clip: rect(1px, 1px, 1px, 1px);\\n clip-path: inset(50%);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n word-wrap: normal;\\n }\\n\\n /* @todo Refactor */\\n .p-menu .p-menuitem-link {\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n text-decoration: none;\\n overflow: hidden;\\n position: relative;\\n }\\n\\n \".concat(buttonStyles, \"\\n \").concat(inputTextStyles, \"\\n \").concat(iconStyles, \"\\n}\\n\");\nvar ComponentBase = {\n cProps: undefined,\n cParams: undefined,\n cName: undefined,\n defaultProps: {\n pt: undefined,\n ptOptions: undefined,\n unstyled: false\n },\n context: {},\n globalCSS: undefined,\n classes: {},\n styles: '',\n extend: function extend() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var css = props.css;\n var defaultProps = _objectSpread(_objectSpread({}, props.defaultProps), ComponentBase.defaultProps);\n var inlineStyles = {};\n var getProps = function getProps(props) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ComponentBase.context = context;\n ComponentBase.cProps = props;\n return ObjectUtils.getMergedProps(props, defaultProps);\n };\n var getOtherProps = function getOtherProps(props) {\n return ObjectUtils.getDiffProps(props, defaultProps);\n };\n var getPTValue = function getPTValue() {\n var _ComponentBase$contex;\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var searchInDefaultPT = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n // obj either is the passthrough options or has a .pt property.\n if (obj.hasOwnProperty('pt') && obj.pt !== undefined) {\n obj = obj.pt;\n }\n var originalkey = key;\n var isNestedParam = /./g.test(originalkey) && !!params[originalkey.split('.')[0]];\n var fkey = isNestedParam ? ObjectUtils.toFlatCase(originalkey.split('.')[1]) : ObjectUtils.toFlatCase(originalkey);\n var hostName = params.hostName && ObjectUtils.toFlatCase(params.hostName);\n var componentName = hostName || params.props && params.props.__TYPE && ObjectUtils.toFlatCase(params.props.__TYPE) || '';\n var isTransition = fkey === 'transition';\n var datasetPrefix = 'data-pc-';\n var getHostInstance = function getHostInstance(params) {\n return params !== null && params !== void 0 && params.props ? params.hostName ? params.props.__TYPE === params.hostName ? params.props : getHostInstance(params.parent) : params.parent : undefined;\n };\n var getPropValue = function getPropValue(name) {\n var _params$props, _getHostInstance;\n return ((_params$props = params.props) === null || _params$props === void 0 ? void 0 : _params$props[name]) || ((_getHostInstance = getHostInstance(params)) === null || _getHostInstance === void 0 ? void 0 : _getHostInstance[name]);\n };\n ComponentBase.cParams = params;\n ComponentBase.cName = componentName;\n var _ref = getPropValue('ptOptions') || ComponentBase.context.ptOptions || {},\n _ref$mergeSections = _ref.mergeSections,\n mergeSections = _ref$mergeSections === void 0 ? true : _ref$mergeSections,\n _ref$mergeProps = _ref.mergeProps,\n useMergeProps = _ref$mergeProps === void 0 ? false : _ref$mergeProps;\n var getPTClassValue = function getPTClassValue() {\n var value = getOptionValue.apply(void 0, arguments);\n if (Array.isArray(value)) {\n return {\n className: classNames.apply(void 0, _toConsumableArray(value))\n };\n }\n if (ObjectUtils.isString(value)) {\n return {\n className: value\n };\n }\n if (value !== null && value !== void 0 && value.hasOwnProperty('className') && Array.isArray(value.className)) {\n return {\n className: classNames.apply(void 0, _toConsumableArray(value.className))\n };\n }\n return value;\n };\n var globalPT = searchInDefaultPT ? isNestedParam ? _useGlobalPT(getPTClassValue, originalkey, params) : _useDefaultPT(getPTClassValue, originalkey, params) : undefined;\n var self = isNestedParam ? undefined : _usePT(_getPT(obj, componentName), getPTClassValue, originalkey, params);\n var datasetProps = !isTransition && _objectSpread(_objectSpread({}, fkey === 'root' && _defineProperty({}, \"\".concat(datasetPrefix, \"name\"), params.props && params.props.__parentMetadata ? ObjectUtils.toFlatCase(params.props.__TYPE) : componentName)), {}, _defineProperty({}, \"\".concat(datasetPrefix, \"section\"), fkey));\n return mergeSections || !mergeSections && self ? useMergeProps ? mergeProps([globalPT, self, Object.keys(datasetProps).length ? datasetProps : {}], {\n classNameMergeFunction: (_ComponentBase$contex = ComponentBase.context.ptOptions) === null || _ComponentBase$contex === void 0 ? void 0 : _ComponentBase$contex.classNameMergeFunction\n }) : _objectSpread(_objectSpread(_objectSpread({}, globalPT), self), Object.keys(datasetProps).length ? datasetProps : {}) : _objectSpread(_objectSpread({}, self), Object.keys(datasetProps).length ? datasetProps : {});\n };\n var setMetaData = function setMetaData() {\n var metadata = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var props = metadata.props,\n state = metadata.state;\n var ptm = function ptm() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return getPTValue((props || {}).pt, key, _objectSpread(_objectSpread({}, metadata), params));\n };\n var ptmo = function ptmo() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return getPTValue(obj, key, params, false);\n };\n var isUnstyled = function isUnstyled() {\n return ComponentBase.context.unstyled || PrimeReact.unstyled || props.unstyled;\n };\n var cx = function cx() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return !isUnstyled() ? getOptionValue(css && css.classes, key, _objectSpread({\n props: props,\n state: state\n }, params)) : undefined;\n };\n var sx = function sx() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var when = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (when) {\n var _ComponentBase$contex2;\n var self = getOptionValue(css && css.inlineStyles, key, _objectSpread({\n props: props,\n state: state\n }, params));\n var base = getOptionValue(inlineStyles, key, _objectSpread({\n props: props,\n state: state\n }, params));\n return mergeProps([base, self], {\n classNameMergeFunction: (_ComponentBase$contex2 = ComponentBase.context.ptOptions) === null || _ComponentBase$contex2 === void 0 ? void 0 : _ComponentBase$contex2.classNameMergeFunction\n });\n }\n return undefined;\n };\n return {\n ptm: ptm,\n ptmo: ptmo,\n sx: sx,\n cx: cx,\n isUnstyled: isUnstyled\n };\n };\n return _objectSpread(_objectSpread({\n getProps: getProps,\n getOtherProps: getOtherProps,\n setMetaData: setMetaData\n }, props), {}, {\n defaultProps: defaultProps\n });\n }\n};\nvar getOptionValue = function getOptionValue(obj) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var fKeys = String(ObjectUtils.toFlatCase(key)).split('.');\n var fKey = fKeys.shift();\n var matchedPTOption = ObjectUtils.isNotEmpty(obj) ? Object.keys(obj).find(function (k) {\n return ObjectUtils.toFlatCase(k) === fKey;\n }) : '';\n return fKey ? ObjectUtils.isObject(obj) ? getOptionValue(ObjectUtils.getItemValue(obj[matchedPTOption], params), fKeys.join('.'), params) : undefined : ObjectUtils.getItemValue(obj, params);\n};\nvar _getPT = function _getPT(pt) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n var _usept = pt === null || pt === void 0 ? void 0 : pt._usept;\n var getValue = function getValue(value) {\n var _ref3;\n var checkSameKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _value = callback ? callback(value) : value;\n var _key = ObjectUtils.toFlatCase(key);\n return (_ref3 = checkSameKey ? _key !== ComponentBase.cName ? _value === null || _value === void 0 ? void 0 : _value[_key] : undefined : _value === null || _value === void 0 ? void 0 : _value[_key]) !== null && _ref3 !== void 0 ? _ref3 : _value;\n };\n return ObjectUtils.isNotEmpty(_usept) ? {\n _usept: _usept,\n originalValue: getValue(pt.originalValue),\n value: getValue(pt.value)\n } : getValue(pt, true);\n};\nvar _usePT = function _usePT(pt, callback, key, params) {\n var fn = function fn(value) {\n return callback(value, key, params);\n };\n if (pt !== null && pt !== void 0 && pt.hasOwnProperty('_usept')) {\n var _ref4 = pt._usept || ComponentBase.context.ptOptions || {},\n _ref4$mergeSections = _ref4.mergeSections,\n mergeSections = _ref4$mergeSections === void 0 ? true : _ref4$mergeSections,\n _ref4$mergeProps = _ref4.mergeProps,\n useMergeProps = _ref4$mergeProps === void 0 ? false : _ref4$mergeProps,\n classNameMergeFunction = _ref4.classNameMergeFunction;\n var originalValue = fn(pt.originalValue);\n var value = fn(pt.value);\n if (originalValue === undefined && value === undefined) {\n return undefined;\n } else if (ObjectUtils.isString(value)) {\n return value;\n } else if (ObjectUtils.isString(originalValue)) {\n return originalValue;\n }\n return mergeSections || !mergeSections && value ? useMergeProps ? mergeProps([originalValue, value], {\n classNameMergeFunction: classNameMergeFunction\n }) : _objectSpread(_objectSpread({}, originalValue), value) : value;\n }\n return fn(pt);\n};\nvar getGlobalPT = function getGlobalPT() {\n return _getPT(ComponentBase.context.pt || PrimeReact.pt, undefined, function (value) {\n return ObjectUtils.getItemValue(value, ComponentBase.cParams);\n });\n};\nvar getDefaultPT = function getDefaultPT() {\n return _getPT(ComponentBase.context.pt || PrimeReact.pt, undefined, function (value) {\n return getOptionValue(value, ComponentBase.cName, ComponentBase.cParams) || ObjectUtils.getItemValue(value, ComponentBase.cParams);\n });\n};\nvar _useGlobalPT = function _useGlobalPT(callback, key, params) {\n return _usePT(getGlobalPT(), callback, key, params);\n};\nvar _useDefaultPT = function _useDefaultPT(callback, key, params) {\n return _usePT(getDefaultPT(), callback, key, params);\n};\nvar useHandleStyle = function useHandleStyle(styles) {\n var config = arguments.length > 2 ? arguments[2] : undefined;\n var name = config.name,\n _config$styled = config.styled,\n styled = _config$styled === void 0 ? false : _config$styled,\n _config$hostName = config.hostName,\n hostName = _config$hostName === void 0 ? '' : _config$hostName;\n var globalCSS = _useGlobalPT(getOptionValue, 'global.css', ComponentBase.cParams);\n var componentName = ObjectUtils.toFlatCase(name);\n var _useStyle = useStyle(baseStyle, {\n name: 'base',\n manual: true\n }),\n loadBaseStyle = _useStyle.load;\n var _useStyle2 = useStyle(commonStyle, {\n name: 'common',\n manual: true\n }),\n loadCommonStyle = _useStyle2.load;\n var _useStyle3 = useStyle(globalCSS, {\n name: 'global',\n manual: true\n }),\n loadGlobalStyle = _useStyle3.load;\n var _useStyle4 = useStyle(styles, {\n name: name,\n manual: true\n }),\n load = _useStyle4.load;\n var hook = function hook(hookName) {\n if (!hostName) {\n var selfHook = _usePT(_getPT((ComponentBase.cProps || {}).pt, componentName), getOptionValue, \"hooks.\".concat(hookName));\n var defaultHook = _useDefaultPT(getOptionValue, \"hooks.\".concat(hookName));\n selfHook === null || selfHook === void 0 || selfHook();\n defaultHook === null || defaultHook === void 0 || defaultHook();\n }\n };\n hook('useMountEffect');\n useMountEffect(function () {\n loadBaseStyle();\n loadGlobalStyle();\n loadCommonStyle();\n if (!styled) {\n load();\n }\n });\n useUpdateEffect(function () {\n hook('useUpdateEffect');\n });\n useUnmountEffect(function () {\n hook('useUnmountEffect');\n });\n};\n\nexport { ComponentBase, useHandleStyle };\n","'use client';\nimport * as React from 'react';\nimport { useEffect, useContext, useState, useRef } from 'react';\nimport { DomHandler, ObjectUtils, UniqueComponentId, mergeProps } from 'primereact/utils';\nimport PrimeReact, { PrimeReactContext } from 'primereact/api';\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar usePrevious = function usePrevious(newValue) {\n var ref = React.useRef(null);\n React.useEffect(function () {\n ref.current = newValue;\n return function () {\n ref.current = null;\n };\n }, [newValue]);\n return ref.current;\n};\n\n/* eslint-disable */\nvar useUnmountEffect = function useUnmountEffect(fn) {\n return React.useEffect(function () {\n return fn;\n }, []);\n};\n/* eslint-enable */\n\nvar useEventListener = function useEventListener(_ref) {\n var _ref$target = _ref.target,\n target = _ref$target === void 0 ? 'document' : _ref$target,\n type = _ref.type,\n listener = _ref.listener,\n options = _ref.options,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n var targetRef = React.useRef(null);\n var listenerRef = React.useRef(null);\n var prevListener = usePrevious(listener);\n var prevOptions = usePrevious(options);\n var bind = function bind() {\n var bindOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var bindTarget = bindOptions.target;\n if (ObjectUtils.isNotEmpty(bindTarget)) {\n unbind();\n (bindOptions.when || when) && (targetRef.current = DomHandler.getTargetElement(bindTarget));\n }\n if (!listenerRef.current && targetRef.current) {\n listenerRef.current = function (event) {\n return listener && listener(event);\n };\n targetRef.current.addEventListener(type, listenerRef.current, options);\n }\n };\n var unbind = function unbind() {\n if (listenerRef.current) {\n targetRef.current.removeEventListener(type, listenerRef.current, options);\n listenerRef.current = null;\n }\n };\n var dispose = function dispose() {\n unbind();\n // Prevent memory leak by releasing\n prevListener = null;\n prevOptions = null;\n };\n var updateTarget = React.useCallback(function () {\n if (when) {\n targetRef.current = DomHandler.getTargetElement(target);\n } else {\n unbind();\n targetRef.current = null;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, when]);\n React.useEffect(function () {\n updateTarget();\n }, [updateTarget]);\n React.useEffect(function () {\n var listenerChanged = \"\".concat(prevListener) !== \"\".concat(listener);\n var optionsChanged = prevOptions !== options;\n var listenerExists = listenerRef.current;\n if (listenerExists && (listenerChanged || optionsChanged)) {\n unbind();\n when && bind();\n } else if (!listenerExists) {\n dispose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [listener, options, when]);\n useUnmountEffect(function () {\n dispose();\n });\n return [bind, unbind];\n};\n\nvar useClickOutside = function useClickOutside(ref, callback) {\n var isOutsideClicked = function isOutsideClicked(event) {\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n callback(event);\n };\n var _useEventListener = useEventListener({\n type: 'mousedown',\n listener: isOutsideClicked\n }),\n _useEventListener2 = _slicedToArray(_useEventListener, 2),\n bindMouseDownListener = _useEventListener2[0],\n unbindMouseDownListener = _useEventListener2[1];\n var _useEventListener3 = useEventListener({\n type: 'touchstart',\n listener: isOutsideClicked\n }),\n _useEventListener4 = _slicedToArray(_useEventListener3, 2),\n bindTouchStartListener = _useEventListener4[0],\n unbindTouchStartListener = _useEventListener4[1];\n React.useEffect(function () {\n if (!ref.current) {\n return;\n }\n bindMouseDownListener();\n bindTouchStartListener();\n return function () {\n unbindMouseDownListener();\n unbindTouchStartListener();\n };\n });\n return [ref, callback];\n};\n\nvar useCounter = function useCounter() {\n var initialValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n step: 1\n };\n var _React$useState = React.useState(initialValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n count = _React$useState2[0],\n setCount = _React$useState2[1];\n var increment = function increment() {\n if (options.max && count >= options.max) {\n return;\n }\n setCount(count + options.step);\n };\n var decrement = function decrement() {\n if (options.min || options.min === 0 && count <= options.min) {\n return null;\n }\n setCount(count - options.step);\n };\n var reset = function reset() {\n setCount(0);\n };\n return {\n count: count,\n increment: increment,\n decrement: decrement,\n reset: reset\n };\n};\n\nvar useDebounce = function useDebounce(initialValue, delay) {\n var _React$useState = React.useState(initialValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputValue = _React$useState2[0],\n setInputValue = _React$useState2[1];\n var _React$useState3 = React.useState(initialValue),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n debouncedValue = _React$useState4[0],\n setDebouncedValue = _React$useState4[1];\n var mountedRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n var cancelTimer = function cancelTimer() {\n return window.clearTimeout(timeoutRef.current);\n };\n useMountEffect(function () {\n mountedRef.current = true;\n });\n useUnmountEffect(function () {\n cancelTimer();\n });\n React.useEffect(function () {\n if (!mountedRef.current) {\n return;\n }\n cancelTimer();\n timeoutRef.current = window.setTimeout(function () {\n setDebouncedValue(inputValue);\n }, delay);\n }, [inputValue, delay]);\n return [inputValue, debouncedValue, setInputValue];\n};\n\nvar groupToDisplayedElements = {};\nvar useDisplayOrder = function useDisplayOrder(group) {\n var isVisible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var _React$useState = React.useState(function () {\n return UniqueComponentId();\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n uid = _React$useState2[0];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n displayOrder = _React$useState4[0],\n setDisplayOrder = _React$useState4[1];\n React.useEffect(function () {\n if (isVisible) {\n if (!groupToDisplayedElements[group]) {\n groupToDisplayedElements[group] = [];\n }\n var newDisplayOrder = groupToDisplayedElements[group].push(uid);\n setDisplayOrder(newDisplayOrder);\n return function () {\n delete groupToDisplayedElements[group][newDisplayOrder - 1];\n\n // Reduce array length, by removing undefined elements at the end of array:\n var lastIndex = groupToDisplayedElements[group].length - 1;\n var lastOrder = ObjectUtils.findLastIndex(groupToDisplayedElements[group], function (el) {\n return el !== undefined;\n });\n if (lastOrder !== lastIndex) {\n groupToDisplayedElements[group].splice(lastOrder + 1);\n }\n setDisplayOrder(undefined);\n };\n }\n }, [group, uid, isVisible]);\n return displayOrder;\n};\n\nvar TYPE_MAP = {\n ico: 'image/x-icon',\n png: 'image/png',\n svg: 'image/svg+xml',\n gif: 'image/gif'\n};\nvar useFavicon = function useFavicon() {\n var newIcon = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var rel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'shortcut icon';\n React.useLayoutEffect(function () {\n if (newIcon) {\n var linkElements = document.querySelectorAll(\"link[rel*='icon']\");\n linkElements.forEach(function (linkEl) {\n document.head.removeChild(linkEl);\n });\n var link = document.createElement('link');\n link.setAttribute('type', TYPE_MAP[newIcon.split('.').pop()]);\n link.setAttribute('rel', rel);\n link.setAttribute('href', newIcon);\n document.head.appendChild(link);\n }\n }, [newIcon, rel]);\n};\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\n/**\n * Priorities of different components (bigger number handled first)\n */\nvar ESC_KEY_HANDLING_PRIORITIES = {\n SIDEBAR: 100,\n SLIDE_MENU: 200,\n DIALOG: 300,\n IMAGE: 400,\n MENU: 500,\n OVERLAY_PANEL: 600,\n PASSWORD: 700,\n CASCADE_SELECT: 800,\n SPLIT_BUTTON: 900,\n SPEED_DIAL: 1000,\n TOOLTIP: 1200\n};\n\n/**\n * Object, that manages global escape key handling logic\n */\nvar globalEscKeyHandlingLogic = {\n /**\n * Mapping from ESC_KEY_HANDLING_PRIORITY to array of related listeners, grouped by priority\n * @example\n * Map<{\n * [ESC_KEY_HANDLING_PRIORITIES.SIDEBAR]: Map<{\n * 1: () => {...},\n * 2: () => {...}\n * }>,\n * [ESC_KEY_HANDLING_PRIORITIES.DIALOG]: Map<{\n * 1: () => {...},\n * 2: () => {...}\n * }>\n * }>;\n */\n escKeyListeners: new Map(),\n /**\n * Keydown handler (attached to any keydown)\n */\n onGlobalKeyDown: function onGlobalKeyDown(event) {\n // Do nothing if not an \"esc\" key is pressed:\n if (event.code !== 'Escape') {\n return;\n }\n var escKeyListeners = globalEscKeyHandlingLogic.escKeyListeners;\n var maxPrimaryPriority = Math.max.apply(Math, _toConsumableArray(escKeyListeners.keys()));\n var theMostImportantEscHandlersSet = escKeyListeners.get(maxPrimaryPriority);\n var maxSecondaryPriority = Math.max.apply(Math, _toConsumableArray(theMostImportantEscHandlersSet.keys()));\n var theMostImportantEscHandler = theMostImportantEscHandlersSet.get(maxSecondaryPriority);\n theMostImportantEscHandler(event);\n },\n /**\n * Attach global keydown listener if there are any \"esc\" key handlers assigned,\n * otherwise detach.\n */\n refreshGlobalKeyDownListener: function refreshGlobalKeyDownListener() {\n var document = DomHandler.getTargetElement('document');\n if (this.escKeyListeners.size > 0) {\n document.addEventListener('keydown', this.onGlobalKeyDown);\n } else {\n document.removeEventListener('keydown', this.onGlobalKeyDown);\n }\n },\n /**\n * Add \"Esc\" key handler\n */\n addListener: function addListener(callback, _ref) {\n var _this = this;\n var _ref2 = _slicedToArray(_ref, 2),\n primaryPriority = _ref2[0],\n secondaryPriority = _ref2[1];\n var escKeyListeners = this.escKeyListeners;\n if (!escKeyListeners.has(primaryPriority)) {\n escKeyListeners.set(primaryPriority, new Map());\n }\n var primaryPriorityListeners = escKeyListeners.get(primaryPriority);\n\n // To prevent unexpected override of callback:\n if (primaryPriorityListeners.has(secondaryPriority)) {\n throw new Error(\"Unexpected: global esc key listener with priority [\".concat(primaryPriority, \", \").concat(secondaryPriority, \"] already exists.\"));\n }\n primaryPriorityListeners.set(secondaryPriority, callback);\n this.refreshGlobalKeyDownListener();\n return function () {\n primaryPriorityListeners[\"delete\"](secondaryPriority);\n if (primaryPriorityListeners.size === 0) {\n escKeyListeners[\"delete\"](primaryPriority);\n }\n _this.refreshGlobalKeyDownListener();\n };\n }\n};\nvar useGlobalOnEscapeKey = function useGlobalOnEscapeKey(_ref3) {\n var callback = _ref3.callback,\n when = _ref3.when,\n priority = _ref3.priority;\n useEffect(function () {\n if (!when) {\n return;\n }\n return globalEscKeyHandlingLogic.addListener(callback, priority);\n }, [callback, when, priority]);\n};\n\nvar useIntersectionObserver = function useIntersectionObserver(ref) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isElementVisible = _React$useState2[0],\n setIsElementVisible = _React$useState2[1];\n React.useEffect(function () {\n if (!ref.current) {\n return;\n }\n var observer = new IntersectionObserver(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n entry = _ref2[0];\n setIsElementVisible(entry.isIntersecting);\n }, options);\n observer.observe(ref.current);\n return function () {\n observer.disconnect();\n };\n }, [options, ref]);\n return isElementVisible;\n};\n\n/* eslint-disable */\nvar useInterval = function useInterval(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var when = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var timeout = React.useRef(null);\n var savedCallback = React.useRef(null);\n var clear = React.useCallback(function () {\n return clearInterval(timeout.current);\n }, [timeout.current]);\n React.useEffect(function () {\n savedCallback.current = fn;\n });\n React.useEffect(function () {\n function callback() {\n savedCallback.current();\n }\n if (when) {\n timeout.current = setInterval(callback, delay);\n return clear;\n } else {\n clear();\n }\n }, [delay, when]);\n useUnmountEffect(function () {\n clear();\n });\n return [clear];\n};\n/* eslint-enable */\n\nvar useMatchMedia = function useMatchMedia(query) {\n var when = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n matches = _React$useState2[0],\n setMatches = _React$useState2[1];\n var matchMedia = React.useRef(null);\n var handleChange = function handleChange(e) {\n return setMatches(e.matches);\n };\n var bind = function bind() {\n return matchMedia.current && matchMedia.current.addEventListener('change', handleChange);\n };\n var unbind = function unbind() {\n return matchMedia.current && matchMedia.current.removeEventListener('change', handleChange) && (matchMedia.current = null);\n };\n React.useEffect(function () {\n if (when) {\n matchMedia.current = window.matchMedia(query);\n setMatches(matchMedia.current.matches);\n bind();\n }\n return unbind;\n }, [query, when]);\n return matches;\n};\n/* eslint-enable */\n\n/**\n * Hook to merge properties including custom merge function for things like Tailwind merge.\n */\nvar useMergeProps = function useMergeProps() {\n var context = useContext(PrimeReactContext);\n return function () {\n for (var _len = arguments.length, props = new Array(_len), _key = 0; _key < _len; _key++) {\n props[_key] = arguments[_key];\n }\n return mergeProps(props, context === null || context === void 0 ? void 0 : context.ptOptions);\n };\n};\n\n/* eslint-disable */\n\n/**\n * Custom hook to run a mount effect only once.\n * @param {*} fn the callback function\n * @returns the hook\n */\nvar useMountEffect = function useMountEffect(fn) {\n var mounted = React.useRef(false);\n return React.useEffect(function () {\n if (!mounted.current) {\n mounted.current = true;\n return fn && fn();\n }\n }, []);\n};\n/* eslint-enable */\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar useMouse = function useMouse() {\n var _React$useState = React.useState({\n x: 0,\n y: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n position = _React$useState2[0],\n setPosition = _React$useState2[1];\n var ref = React.useRef(null);\n var handleMouseMove = React.useCallback(function (event) {\n var x;\n var y;\n if (ref.current) {\n var rect = event.currentTarget.getBoundingClientRect();\n x = event.pageX - rect.left - (window.pageXOffset || window.scrollX);\n y = event.pageY - rect.top - (window.pageYOffset || window.scrollY);\n } else {\n x = event.clientX;\n y = event.clientY;\n }\n setPosition({\n x: Math.max(0, Math.round(x)),\n y: Math.max(0, Math.round(y))\n });\n }, []);\n var _useEventListener = useEventListener({\n target: ref,\n type: 'mousemove',\n listener: handleMouseMove\n }),\n _useEventListener2 = _slicedToArray(_useEventListener, 2),\n bindMouseMoveEventListener = _useEventListener2[0],\n unbindMouseMoveEventListener = _useEventListener2[1];\n var _useEventListener3 = useEventListener({\n type: 'mousemove',\n listener: handleMouseMove\n }),\n _useEventListener4 = _slicedToArray(_useEventListener3, 2),\n bindDocumentMoveEventListener = _useEventListener4[0],\n unbindDocumentMoveEventListener = _useEventListener4[1];\n var reset = function reset() {\n return setPosition({\n x: 0,\n y: 0\n });\n };\n React.useEffect(function () {\n bindMouseMoveEventListener();\n if (!ref.current) {\n bindDocumentMoveEventListener();\n }\n return function () {\n unbindMouseMoveEventListener();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (!ref.current) {\n unbindDocumentMoveEventListener();\n }\n };\n }, [bindDocumentMoveEventListener, bindMouseMoveEventListener, unbindDocumentMoveEventListener, unbindMouseMoveEventListener]);\n return _objectSpread$1(_objectSpread$1({\n ref: ref\n }, position), {}, {\n reset: reset\n });\n};\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction useMove(_ref) {\n var _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'both' : _ref$mode,\n _ref$initialValue = _ref.initialValue,\n initialValue = _ref$initialValue === void 0 ? {\n x: 0,\n y: 0\n } : _ref$initialValue;\n var _React$useState = React.useState(initialValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n positions = _React$useState2[0],\n setPositions = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n active = _React$useState4[0],\n setActive = _React$useState4[1];\n var isMounted = React.useRef(false);\n var isSliding = React.useRef(false);\n var ref = React.useRef(null);\n var onMouseMove = function onMouseMove(event) {\n return updateMousePosition({\n x: event.clientX,\n y: event.clientY\n });\n };\n var handlePositionChange = function handlePositionChange(_ref2) {\n var clampedX = _ref2.clampedX,\n clampedY = _ref2.clampedY;\n if (mode === 'vertical') {\n setPositions({\n y: 1 - clampedY\n });\n } else if (mode === 'horizontal') {\n setPositions({\n x: clampedX\n });\n } else if (mode === 'both') {\n setPositions({\n x: clampedX,\n y: clampedY\n });\n }\n };\n var onMouseDown = function onMouseDown(event) {\n startScrubbing();\n event.preventDefault();\n onMouseMove(event);\n };\n var stopScrubbing = function stopScrubbing() {\n if (isSliding.current && isMounted.current) {\n isSliding.current = false;\n setActive(false);\n unbindListeners();\n }\n };\n var onTouchMove = function onTouchMove(event) {\n if (event.cancelable) {\n event.preventDefault();\n }\n updateMousePosition({\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY\n });\n };\n var onTouchStart = function onTouchStart(event) {\n if (event.cancelable) {\n event.preventDefault();\n }\n startScrubbing();\n onTouchMove(event);\n };\n var _useEventListener = useEventListener({\n type: 'mousemove',\n listener: onMouseMove\n }),\n _useEventListener2 = _slicedToArray(_useEventListener, 2),\n bindDocumentMouseMoveListener = _useEventListener2[0],\n unbindDocumentMouseMoveListener = _useEventListener2[1];\n var _useEventListener3 = useEventListener({\n type: 'mouseup',\n listener: stopScrubbing\n }),\n _useEventListener4 = _slicedToArray(_useEventListener3, 2),\n bindDocumentMouseUpListener = _useEventListener4[0],\n unbindDocumentMouseUpListener = _useEventListener4[1];\n var _useEventListener5 = useEventListener({\n type: 'touchmove',\n listener: onTouchMove\n }),\n _useEventListener6 = _slicedToArray(_useEventListener5, 2),\n bindDocumentTouchMoveListener = _useEventListener6[0],\n unbindDocumentTouchMoveListener = _useEventListener6[1];\n var _useEventListener7 = useEventListener({\n type: 'touchend',\n listener: stopScrubbing\n }),\n _useEventListener8 = _slicedToArray(_useEventListener7, 2),\n bindDocumentTouchEndListener = _useEventListener8[0],\n unbindDocumentTouchEndListener = _useEventListener8[1];\n var _useEventListener9 = useEventListener({\n target: ref,\n type: 'mousedown',\n listener: onMouseDown\n }),\n _useEventListener10 = _slicedToArray(_useEventListener9, 2),\n bindMouseDownListener = _useEventListener10[0],\n unbindMouseDownListener = _useEventListener10[1];\n var _useEventListener11 = useEventListener({\n target: ref,\n type: 'touchstart',\n listener: onTouchStart,\n options: {\n passive: false\n }\n }),\n _useEventListener12 = _slicedToArray(_useEventListener11, 2),\n bindTouchStartListener = _useEventListener12[0],\n unbindTouchStartListener = _useEventListener12[1];\n var clamp = function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n };\n var clampPositions = function clampPositions(_ref3) {\n var x = _ref3.x,\n y = _ref3.y;\n return {\n clampedX: clamp(x, 0, 1),\n clampedY: clamp(y, 0, 1)\n };\n };\n var bindListeners = function bindListeners() {\n bindDocumentMouseMoveListener();\n bindDocumentMouseUpListener();\n bindDocumentTouchMoveListener();\n bindDocumentTouchEndListener();\n };\n var unbindListeners = function unbindListeners() {\n unbindDocumentMouseMoveListener();\n unbindDocumentMouseUpListener();\n unbindDocumentTouchMoveListener();\n unbindDocumentTouchEndListener();\n };\n var reset = function reset() {\n setPositions(initialValue);\n };\n React.useEffect(function () {\n isMounted.current = true;\n }, []);\n var startScrubbing = function startScrubbing() {\n if (!isSliding.current && isMounted.current) {\n isSliding.current = true;\n setActive(true);\n bindListeners();\n }\n };\n var updateMousePosition = function updateMousePosition(_ref4) {\n var x = _ref4.x,\n y = _ref4.y;\n if (isSliding.current) {\n var rect = ref.current.getBoundingClientRect();\n var _clampPositions = clampPositions({\n x: (x - rect.left) / rect.width,\n y: (y - rect.top) / rect.height\n }),\n clampedX = _clampPositions.clampedX,\n clampedY = _clampPositions.clampedY;\n handlePositionChange({\n clampedX: clampedX,\n clampedY: clampedY\n });\n }\n };\n React.useEffect(function () {\n if (ref.current) {\n bindMouseDownListener();\n bindTouchStartListener();\n }\n return function () {\n if (ref.current) {\n unbindMouseDownListener();\n unbindTouchStartListener();\n }\n };\n }, [bindMouseDownListener, bindTouchStartListener, positions, unbindMouseDownListener, unbindTouchStartListener]);\n return _objectSpread(_objectSpread({\n ref: ref\n }, positions), {}, {\n active: active,\n reset: reset\n });\n}\n\nvar useOverlayScrollListener = function useOverlayScrollListener(_ref) {\n var target = _ref.target,\n listener = _ref.listener,\n options = _ref.options,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n var context = React.useContext(PrimeReactContext);\n var targetRef = React.useRef(null);\n var listenerRef = React.useRef(null);\n var scrollableParentsRef = React.useRef([]);\n var prevListener = usePrevious(listener);\n var prevOptions = usePrevious(options);\n var bind = function bind() {\n var bindOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (ObjectUtils.isNotEmpty(bindOptions.target)) {\n unbind();\n (bindOptions.when || when) && (targetRef.current = DomHandler.getTargetElement(bindOptions.target));\n }\n if (!listenerRef.current && targetRef.current) {\n var hideOnScroll = context ? context.hideOverlaysOnDocumentScrolling : PrimeReact.hideOverlaysOnDocumentScrolling;\n var nodes = scrollableParentsRef.current = DomHandler.getScrollableParents(targetRef.current, hideOnScroll);\n listenerRef.current = function (event) {\n return listener && listener(event);\n };\n nodes.forEach(function (node) {\n return node.addEventListener('scroll', listenerRef.current, options);\n });\n }\n };\n var unbind = function unbind() {\n if (listenerRef.current) {\n var nodes = scrollableParentsRef.current;\n nodes.forEach(function (node) {\n return node.removeEventListener('scroll', listenerRef.current, options);\n });\n listenerRef.current = null;\n }\n };\n var dispose = function dispose() {\n unbind();\n // #5927 prevent memory leak by releasing\n scrollableParentsRef.current = null;\n prevListener = null;\n prevOptions = null;\n };\n var updateTarget = React.useCallback(function () {\n if (when) {\n targetRef.current = DomHandler.getTargetElement(target);\n } else {\n unbind();\n targetRef.current = null;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, when]);\n React.useEffect(function () {\n updateTarget();\n }, [updateTarget]);\n React.useEffect(function () {\n var listenerChanged = \"\".concat(prevListener) !== \"\".concat(listener);\n var optionsChanged = prevOptions !== options;\n var listenerExists = listenerRef.current;\n if (listenerExists && (listenerChanged || optionsChanged)) {\n unbind();\n when && bind();\n } else if (!listenerExists) {\n dispose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [listener, options, when]);\n useUnmountEffect(function () {\n dispose();\n });\n return [bind, unbind];\n};\n\nvar useResizeListener = function useResizeListener(_ref) {\n var listener = _ref.listener,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return useEventListener({\n target: 'window',\n type: 'resize',\n listener: listener,\n when: when\n });\n};\n\nvar useOverlayListener = function useOverlayListener(_ref) {\n var target = _ref.target,\n overlay = _ref.overlay,\n _listener = _ref.listener,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'click' : _ref$type;\n var targetRef = React.useRef(null);\n var overlayRef = React.useRef(null);\n\n /**\n * The parameters of the 'listener' method in the following event handlers;\n * @param {Event} event A click event of the document.\n * @param {string} options.type The custom type to detect event.\n * @param {boolean} options.valid It is controlled by PrimeReact. It is determined whether it is valid or not according to some custom validation.\n */\n var _useEventListener = useEventListener({\n target: 'window',\n type: type,\n listener: function listener(event) {\n _listener && _listener(event, {\n type: 'outside',\n valid: event.which !== 3 && isOutsideClicked(event)\n });\n }\n }),\n _useEventListener2 = _slicedToArray(_useEventListener, 2),\n bindDocumentClickListener = _useEventListener2[0],\n unbindDocumentClickListener = _useEventListener2[1];\n var _useResizeListener = useResizeListener({\n target: 'window',\n listener: function listener(event) {\n _listener && _listener(event, {\n type: 'resize',\n valid: !DomHandler.isTouchDevice()\n });\n }\n }),\n _useResizeListener2 = _slicedToArray(_useResizeListener, 2),\n bindWindowResizeListener = _useResizeListener2[0],\n unbindWindowResizeListener = _useResizeListener2[1];\n var _useEventListener3 = useEventListener({\n target: 'window',\n type: 'orientationchange',\n listener: function listener(event) {\n _listener && _listener(event, {\n type: 'orientationchange',\n valid: true\n });\n }\n }),\n _useEventListener4 = _slicedToArray(_useEventListener3, 2),\n bindWindowOrientationChangeListener = _useEventListener4[0],\n unbindWindowOrientationChangeListener = _useEventListener4[1];\n var _useOverlayScrollList = useOverlayScrollListener({\n target: target,\n listener: function listener(event) {\n _listener && _listener(event, {\n type: 'scroll',\n valid: true\n });\n }\n }),\n _useOverlayScrollList2 = _slicedToArray(_useOverlayScrollList, 2),\n bindOverlayScrollListener = _useOverlayScrollList2[0],\n unbindOverlayScrollListener = _useOverlayScrollList2[1];\n var isOutsideClicked = function isOutsideClicked(event) {\n return targetRef.current && !(targetRef.current.isSameNode(event.target) || targetRef.current.contains(event.target) || overlayRef.current && overlayRef.current.contains(event.target));\n };\n var bind = function bind() {\n bindDocumentClickListener();\n bindWindowResizeListener();\n bindWindowOrientationChangeListener();\n bindOverlayScrollListener();\n };\n var unbind = function unbind() {\n unbindDocumentClickListener();\n unbindWindowResizeListener();\n unbindWindowOrientationChangeListener();\n unbindOverlayScrollListener();\n };\n React.useEffect(function () {\n if (when) {\n targetRef.current = DomHandler.getTargetElement(target);\n overlayRef.current = DomHandler.getTargetElement(overlay);\n } else {\n unbind();\n targetRef.current = overlayRef.current = null;\n }\n }, [target, overlay, when]);\n React.useEffect(function () {\n unbind();\n }, [when]);\n useUnmountEffect(function () {\n unbind();\n });\n return [bind, unbind];\n};\n/* eslint-enable */\n\n/**\n * Hook to wrap around useState that stores the value in the browser local/session storage.\n *\n * @param {any} initialValue the initial value to store\n * @param {string} key the key to store the value in local/session storage\n * @param {string} storage either 'local' or 'session' for what type of storage\n * @returns a stateful value, and a function to update it.\n */\nvar useStorage = function useStorage(initialValue, key) {\n var storage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'local';\n // Since the local storage API isn't available in server-rendering environments,\n // we check that typeof window !== 'undefined' to make SSR and SSG work properly.\n var storageAvailable = typeof window !== 'undefined';\n\n // subscribe to window storage event so changes in one tab to a stored value\n // are properly reflected in all tabs\n var _useEventListener = useEventListener({\n target: 'window',\n type: 'storage',\n listener: function listener(event) {\n var area = storage === 'local' ? window.localStorage : window.sessionStorage;\n if (event.storageArea === area && event.key === key) {\n var newValue = event.newValue ? JSON.parse(event.newValue) : undefined;\n setStoredValue(newValue);\n }\n }\n }),\n _useEventListener2 = _slicedToArray(_useEventListener, 2),\n bindWindowStorageListener = _useEventListener2[0],\n unbindWindowStorageListener = _useEventListener2[1];\n var _React$useState = React.useState(initialValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n storedValue = _React$useState2[0],\n setStoredValue = _React$useState2[1];\n var setValue = function setValue(value) {\n try {\n // Allow value to be a function so we have same API as useState\n var valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n if (storageAvailable) {\n var serializedValue = JSON.stringify(valueToStore);\n storage === 'local' ? window.localStorage.setItem(key, serializedValue) : window.sessionStorage.setItem(key, serializedValue);\n }\n } catch (error) {\n throw new Error(\"PrimeReact useStorage: Failed to serialize the value at key: \".concat(key));\n }\n };\n React.useEffect(function () {\n if (!storageAvailable) {\n setStoredValue(initialValue);\n }\n try {\n var item = storage === 'local' ? window.localStorage.getItem(key) : window.sessionStorage.getItem(key);\n setStoredValue(item ? JSON.parse(item) : initialValue);\n } catch (error) {\n // If error also return initialValue\n setStoredValue(initialValue);\n }\n bindWindowStorageListener();\n return function () {\n return unbindWindowStorageListener();\n };\n }, []);\n return [storedValue, setValue];\n};\n\n/**\n * Hook to wrap around useState that stores the value in the browser local storage.\n *\n * @param {any} initialValue the initial value to store\n * @param {string} key the key to store the value in local storage\n * @returns a stateful value, and a function to update it.\n */\nvar useLocalStorage = function useLocalStorage(initialValue, key) {\n return useStorage(initialValue, key, 'local');\n};\n\n/**\n * Hook to wrap around useState that stores the value in the browser session storage.\n *\n * @param {any} initialValue the initial value to store\n * @param {string} key the key to store the value in session storage\n * @returns a stateful value, and a function to update it.\n */\nvar useSessionStorage = function useSessionStorage(initialValue, key) {\n return useStorage(initialValue, key, 'session');\n};\n/* eslint-enable */\n\nvar _id = 0;\nvar useStyle = function useStyle(css) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isLoaded = _useState2[0],\n setIsLoaded = _useState2[1];\n var styleRef = useRef(null);\n var context = useContext(PrimeReactContext);\n var defaultDocument = DomHandler.isClient() ? window.document : undefined;\n var _options$document = options.document,\n document = _options$document === void 0 ? defaultDocument : _options$document,\n _options$manual = options.manual,\n manual = _options$manual === void 0 ? false : _options$manual,\n _options$name = options.name,\n name = _options$name === void 0 ? \"style_\".concat(++_id) : _options$name,\n _options$id = options.id,\n id = _options$id === void 0 ? undefined : _options$id,\n _options$media = options.media,\n media = _options$media === void 0 ? undefined : _options$media;\n var getCurrentStyleRef = function getCurrentStyleRef(styleContainer) {\n var existingStyle = styleContainer.querySelector(\"style[data-primereact-style-id=\\\"\".concat(name, \"\\\"]\"));\n if (existingStyle) {\n return existingStyle;\n }\n if (id !== undefined) {\n var existingElement = document.getElementById(id);\n if (existingElement) {\n return existingElement;\n }\n }\n\n // finally if not found create the new style\n return document.createElement('style');\n };\n var update = function update(newCSS) {\n isLoaded && css !== newCSS && (styleRef.current.textContent = newCSS);\n };\n var load = function load() {\n if (!document || isLoaded) {\n return;\n }\n var styleContainer = (context === null || context === void 0 ? void 0 : context.styleContainer) || document.head;\n styleRef.current = getCurrentStyleRef(styleContainer);\n if (!styleRef.current.isConnected) {\n styleRef.current.type = 'text/css';\n if (id) {\n styleRef.current.id = id;\n }\n if (media) {\n styleRef.current.media = media;\n }\n DomHandler.addNonce(styleRef.current, context && context.nonce || PrimeReact.nonce);\n styleContainer.appendChild(styleRef.current);\n if (name) {\n styleRef.current.setAttribute('data-primereact-style-id', name);\n }\n }\n styleRef.current.textContent = css;\n setIsLoaded(true);\n };\n var unload = function unload() {\n if (!document || !styleRef.current) {\n return;\n }\n DomHandler.removeInlineStyle(styleRef.current);\n setIsLoaded(false);\n };\n useEffect(function () {\n if (!manual) {\n load();\n }\n\n // return () => {if (!manual) unload()}; /* @todo */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [manual]);\n return {\n id: id,\n name: name,\n update: update,\n unload: unload,\n load: load,\n isLoaded: isLoaded\n };\n};\n\n/* eslint-disable */\nvar useTimeout = function useTimeout(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var when = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var timeout = React.useRef(null);\n var savedCallback = React.useRef(null);\n var clear = React.useCallback(function () {\n return clearTimeout(timeout.current);\n }, [timeout.current]);\n React.useEffect(function () {\n savedCallback.current = fn;\n });\n React.useEffect(function () {\n function callback() {\n savedCallback.current();\n }\n if (when) {\n timeout.current = setTimeout(callback, delay);\n return clear;\n } else {\n clear();\n }\n }, [delay, when]);\n useUnmountEffect(function () {\n clear();\n });\n return [clear];\n};\n/* eslint-enable */\n\n/* eslint-disable */\nvar useUpdateEffect = function useUpdateEffect(fn, deps) {\n var mounted = React.useRef(false);\n return React.useEffect(function () {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n return fn && fn();\n }, deps);\n};\n/* eslint-enable */\n\nexport { ESC_KEY_HANDLING_PRIORITIES, useClickOutside, useCounter, useDebounce, useDisplayOrder, useEventListener, useFavicon, useGlobalOnEscapeKey, useIntersectionObserver, useInterval, useLocalStorage, useMatchMedia, useMergeProps, useMountEffect, useMouse, useMove, useOverlayListener, useOverlayScrollListener, usePrevious, useResizeListener, useSessionStorage, useStorage, useStyle, useTimeout, useUnmountEffect, useUpdateEffect };\n","'use client';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport PrimeReact, { PrimeReactContext } from 'primereact/api';\nimport { useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks';\nimport { ObjectUtils, DomHandler } from 'primereact/utils';\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar PortalBase = {\n defaultProps: {\n __TYPE: 'Portal',\n element: null,\n appendTo: null,\n visible: false,\n onMounted: null,\n onUnmounted: null,\n children: undefined\n },\n getProps: function getProps(props) {\n return ObjectUtils.getMergedProps(props, PortalBase.defaultProps);\n },\n getOtherProps: function getOtherProps(props) {\n return ObjectUtils.getDiffProps(props, PortalBase.defaultProps);\n }\n};\n\nvar Portal = /*#__PURE__*/React.memo(function (inProps) {\n var props = PortalBase.getProps(inProps);\n var context = React.useContext(PrimeReactContext);\n var _React$useState = React.useState(props.visible && DomHandler.isClient()),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mountedState = _React$useState2[0],\n setMountedState = _React$useState2[1];\n useMountEffect(function () {\n if (DomHandler.isClient() && !mountedState) {\n setMountedState(true);\n props.onMounted && props.onMounted();\n }\n });\n useUpdateEffect(function () {\n props.onMounted && props.onMounted();\n }, [mountedState]);\n useUnmountEffect(function () {\n props.onUnmounted && props.onUnmounted();\n });\n var element = props.element || props.children;\n if (element && mountedState) {\n var appendTo = props.appendTo || context && context.appendTo || PrimeReact.appendTo;\n if (ObjectUtils.isFunction(appendTo)) {\n appendTo = appendTo();\n }\n if (!appendTo) {\n appendTo = document.body;\n }\n return appendTo === 'self' ? element : /*#__PURE__*/ReactDOM.createPortal(element, appendTo);\n }\n return null;\n});\nPortal.displayName = 'Portal';\n\nexport { Portal };\n","'use client';\nimport * as React from 'react';\nimport PrimeReact, { PrimeReactContext } from 'primereact/api';\nimport { useMergeProps, useStyle, useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks';\nimport { ObjectUtils, classNames, DomHandler } from 'primereact/utils';\nimport { ComponentBase } from 'primereact/componentbase';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar styles = \"\\n@layer primereact {\\n .p-ripple {\\n overflow: hidden;\\n position: relative;\\n }\\n \\n .p-ink {\\n display: block;\\n position: absolute;\\n background: rgba(255, 255, 255, 0.5);\\n border-radius: 100%;\\n transform: scale(0);\\n }\\n \\n .p-ink-active {\\n animation: ripple 0.4s linear;\\n }\\n \\n .p-ripple-disabled .p-ink {\\n display: none;\\n }\\n}\\n\\n@keyframes ripple {\\n 100% {\\n opacity: 0;\\n transform: scale(2.5);\\n }\\n}\\n\\n\";\nvar classes = {\n root: 'p-ink'\n};\nvar RippleBase = ComponentBase.extend({\n defaultProps: {\n __TYPE: 'Ripple',\n children: undefined\n },\n css: {\n styles: styles,\n classes: classes\n },\n getProps: function getProps(props) {\n return ObjectUtils.getMergedProps(props, RippleBase.defaultProps);\n },\n getOtherProps: function getOtherProps(props) {\n return ObjectUtils.getDiffProps(props, RippleBase.defaultProps);\n }\n});\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Ripple = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (inProps, ref) {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isMounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n var inkRef = React.useRef(null);\n var targetRef = React.useRef(null);\n var mergeProps = useMergeProps();\n var context = React.useContext(PrimeReactContext);\n var props = RippleBase.getProps(inProps, context);\n var isRippleActive = context && context.ripple || PrimeReact.ripple;\n var metaData = {\n props: props\n };\n useStyle(RippleBase.css.styles, {\n name: 'ripple',\n manual: !isRippleActive\n });\n var _RippleBase$setMetaDa = RippleBase.setMetaData(_objectSpread({}, metaData)),\n ptm = _RippleBase$setMetaDa.ptm,\n cx = _RippleBase$setMetaDa.cx;\n var getTarget = function getTarget() {\n return inkRef.current && inkRef.current.parentElement;\n };\n var bindEvents = function bindEvents() {\n if (targetRef.current) {\n targetRef.current.addEventListener('pointerdown', onPointerDown);\n }\n };\n var unbindEvents = function unbindEvents() {\n if (targetRef.current) {\n targetRef.current.removeEventListener('pointerdown', onPointerDown);\n }\n };\n var onPointerDown = function onPointerDown(event) {\n var offset = DomHandler.getOffset(targetRef.current);\n var offsetX = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(inkRef.current) / 2;\n var offsetY = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(inkRef.current) / 2;\n activateRipple(offsetX, offsetY);\n };\n var activateRipple = function activateRipple(offsetX, offsetY) {\n if (!inkRef.current || getComputedStyle(inkRef.current, null).display === 'none') {\n return;\n }\n DomHandler.removeClass(inkRef.current, 'p-ink-active');\n setDimensions();\n inkRef.current.style.top = offsetY + 'px';\n inkRef.current.style.left = offsetX + 'px';\n DomHandler.addClass(inkRef.current, 'p-ink-active');\n };\n var onAnimationEnd = function onAnimationEnd(event) {\n DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n };\n var setDimensions = function setDimensions() {\n if (inkRef.current && !DomHandler.getHeight(inkRef.current) && !DomHandler.getWidth(inkRef.current)) {\n var d = Math.max(DomHandler.getOuterWidth(targetRef.current), DomHandler.getOuterHeight(targetRef.current));\n inkRef.current.style.height = d + 'px';\n inkRef.current.style.width = d + 'px';\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n props: props,\n getInk: function getInk() {\n return inkRef.current;\n },\n getTarget: function getTarget() {\n return targetRef.current;\n }\n };\n });\n useMountEffect(function () {\n // for App Router in Next.js ^14\n setMounted(true);\n });\n useUpdateEffect(function () {\n if (isMounted && inkRef.current) {\n targetRef.current = getTarget();\n setDimensions();\n bindEvents();\n }\n }, [isMounted]);\n useUpdateEffect(function () {\n if (inkRef.current && !targetRef.current) {\n targetRef.current = getTarget();\n setDimensions();\n bindEvents();\n }\n });\n useUnmountEffect(function () {\n if (inkRef.current) {\n targetRef.current = null;\n unbindEvents();\n }\n });\n if (!isRippleActive) {\n return null;\n }\n var rootProps = mergeProps({\n 'aria-hidden': true,\n className: classNames(cx('root'))\n }, RippleBase.getOtherProps(props), ptm('root'));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n role: \"presentation\",\n ref: inkRef\n }, rootProps, {\n onAnimationEnd: onAnimationEnd\n }));\n}));\nRipple.displayName = 'Ripple';\n\nexport { Ripple };\n","'use client';\nimport * as React from 'react';\nimport { PrimeReactContext } from 'primereact/api';\nimport { ComponentBase, useHandleStyle } from 'primereact/componentbase';\nimport { useMergeProps } from 'primereact/hooks';\nimport { Tooltip } from 'primereact/tooltip';\nimport { classNames, ObjectUtils, DomHandler } from 'primereact/utils';\nimport { Ripple } from 'primereact/ripple';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar classes = {\n root: function root(_ref) {\n var props = _ref.props;\n return classNames('p-selectbutton p-button-group p-component', {\n 'p-invalid': props.invalid\n });\n },\n button: function button(_ref2) {\n var props = _ref2.itemProps,\n focusedState = _ref2.focusedState;\n return classNames('p-button p-component', {\n 'p-highlight': props.selected,\n 'p-disabled': props.disabled,\n 'p-focus': focusedState\n });\n },\n label: 'p-button-label p-c'\n};\nvar SelectButtonBase = ComponentBase.extend({\n defaultProps: {\n __TYPE: 'SelectButton',\n id: null,\n value: null,\n options: null,\n optionLabel: null,\n optionValue: null,\n optionDisabled: null,\n tabIndex: null,\n multiple: false,\n invalid: false,\n unselectable: true,\n allowEmpty: true,\n disabled: false,\n style: null,\n className: null,\n dataKey: null,\n tooltip: null,\n tooltipOptions: null,\n itemTemplate: null,\n onChange: null,\n children: undefined\n },\n css: {\n classes: classes\n }\n});\n\nvar SelectButtonItem = /*#__PURE__*/React.memo(function (props) {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n focusedState = _React$useState2[0],\n setFocusedState = _React$useState2[1];\n var mergeProps = useMergeProps();\n var ptm = props.ptm,\n cx = props.cx;\n var getPTOptions = function getPTOptions(key) {\n return ptm(key, {\n hostName: props.hostName,\n context: {\n selected: props.selected,\n disabled: props.disabled,\n option: props.option\n }\n });\n };\n var _onClick = function onClick(event, index) {\n props.setFocusedIndex(index);\n if (props.onClick) {\n props.onClick({\n originalEvent: event,\n option: props.option\n });\n }\n };\n var onFocus = function onFocus() {\n setFocusedState(true);\n };\n var onBlur = function onBlur() {\n setFocusedState(false);\n };\n var _onKeyDown = function onKeyDown(event, index) {\n switch (event.code) {\n case 'Space':\n {\n _onClick(event, index);\n event.preventDefault();\n break;\n }\n case 'ArrowDown':\n case 'ArrowRight':\n {\n changeTabIndexes(event, 'next');\n event.preventDefault();\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft':\n {\n changeTabIndexes(event, 'prev');\n event.preventDefault();\n break;\n }\n }\n };\n var changeTabIndexes = function changeTabIndexes(event, direction) {\n var firstTabableChild;\n var index;\n for (var i = 0; i <= props.elementRef.current.children.length - 1; i++) {\n if (props.elementRef.current.children[i].getAttribute('tabindex') === '0') {\n firstTabableChild = {\n elem: props.elementRef.current.children[i],\n index: i\n };\n }\n }\n if (direction === 'prev') {\n if (firstTabableChild.index === 0) {\n index = props.elementRef.current.children.length - 1;\n } else {\n index = firstTabableChild.index - 1;\n }\n } else if (firstTabableChild.index === props.elementRef.current.children.length - 1) {\n index = 0;\n } else {\n index = firstTabableChild.index + 1;\n }\n props.setFocusedIndex(index);\n props.elementRef.current.children[index].focus();\n };\n var createContent = function createContent() {\n var labelProps = mergeProps({\n className: cx('label')\n }, getPTOptions('label'));\n return props.template ? ObjectUtils.getJSXElement(props.template, props.option) : /*#__PURE__*/React.createElement(\"span\", labelProps, props.label);\n };\n var content = createContent();\n var buttonProps = mergeProps({\n className: classNames(props.className, cx('button', {\n itemProps: props,\n focusedState: focusedState\n })),\n role: 'button',\n 'aria-label': props.label,\n 'aria-pressed': props.selected,\n onClick: function onClick(event) {\n return _onClick(event, props.index);\n },\n onKeyDown: function onKeyDown(event) {\n return _onKeyDown(event, props.index);\n },\n tabIndex: props.tabIndex,\n 'aria-disabled': props.disabled,\n onFocus: onFocus,\n onBlur: onBlur\n }, getPTOptions('button'));\n return /*#__PURE__*/React.createElement(\"div\", buttonProps, content, !props.disabled && /*#__PURE__*/React.createElement(Ripple, null));\n});\nSelectButtonItem.displayName = 'SelectButtonItem';\n\nvar SelectButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (inProps, ref) {\n var mergeProps = useMergeProps();\n var context = React.useContext(PrimeReactContext);\n var props = SelectButtonBase.getProps(inProps, context);\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n focusedIndex = _React$useState2[0],\n setFocusedIndex = _React$useState2[1];\n var elementRef = React.useRef(null);\n var _SelectButtonBase$set = SelectButtonBase.setMetaData({\n props: props\n }),\n ptm = _SelectButtonBase$set.ptm,\n cx = _SelectButtonBase$set.cx,\n isUnstyled = _SelectButtonBase$set.isUnstyled;\n useHandleStyle(SelectButtonBase.css.styles, isUnstyled, {\n name: 'selectbutton',\n styled: true\n });\n var onOptionClick = function onOptionClick(event) {\n if (props.disabled || isOptionDisabled(event.option)) {\n return;\n }\n var selected = isSelected(event.option);\n if (selected && !(props.unselectable && props.allowEmpty)) {\n return;\n }\n var optionValue = getOptionValue(event.option);\n var newValue;\n if (props.multiple) {\n var currentValue = props.value ? _toConsumableArray(props.value) : [];\n newValue = selected ? currentValue.filter(function (val) {\n return !ObjectUtils.equals(val, optionValue, props.dataKey);\n }) : [].concat(_toConsumableArray(currentValue), [optionValue]);\n } else {\n newValue = selected ? null : optionValue;\n }\n if (props.onChange) {\n props.onChange({\n originalEvent: event.originalEvent,\n value: newValue,\n stopPropagation: function stopPropagation() {\n event.originalEvent.stopPropagation();\n },\n preventDefault: function preventDefault() {\n event.originalEvent.preventDefault();\n },\n target: {\n name: props.name,\n id: props.id,\n value: newValue\n }\n });\n }\n };\n var getOptionLabel = function getOptionLabel(option) {\n return props.optionLabel ? ObjectUtils.resolveFieldData(option, props.optionLabel) : option && option.label !== undefined ? option.label : option;\n };\n var getOptionValue = function getOptionValue(option) {\n return props.optionValue ? ObjectUtils.resolveFieldData(option, props.optionValue) : option && option.value !== undefined ? option.value : option;\n };\n var isOptionDisabled = function isOptionDisabled(option) {\n if (props.optionDisabled) {\n return ObjectUtils.isFunction(props.optionDisabled) ? props.optionDisabled(option) : ObjectUtils.resolveFieldData(option, props.optionDisabled);\n }\n return option && option.disabled !== undefined ? option.disabled : false;\n };\n var isSelected = function isSelected(option) {\n var optionValue = getOptionValue(option);\n if (props.multiple) {\n if (props.value && props.value.length) {\n return props.value.some(function (val) {\n return ObjectUtils.equals(val, optionValue, props.dataKey);\n });\n }\n } else {\n return ObjectUtils.equals(props.value, optionValue, props.dataKey);\n }\n return false;\n };\n var createItems = function createItems() {\n if (props.options && props.options.length) {\n return props.options.map(function (option, index) {\n var isDisabled = props.disabled || isOptionDisabled(option);\n var optionLabel = getOptionLabel(option);\n var tabIndex = props.disabled || index !== focusedIndex ? '-1' : '0';\n var selected = isSelected(option);\n var key = optionLabel + '_' + index;\n return /*#__PURE__*/React.createElement(SelectButtonItem, {\n hostName: \"SelectButton\",\n key: key,\n label: optionLabel,\n className: option.className,\n option: option,\n setFocusedIndex: setFocusedIndex,\n onClick: onOptionClick,\n template: props.itemTemplate,\n selected: selected,\n tabIndex: tabIndex,\n index: index,\n disabled: isDisabled,\n ptm: ptm,\n cx: cx,\n elementRef: elementRef\n });\n });\n }\n return null;\n };\n React.useImperativeHandle(ref, function () {\n return {\n props: props,\n focus: function focus() {\n return DomHandler.focusFirstElement(elementRef.current);\n },\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n });\n var hasTooltip = ObjectUtils.isNotEmpty(props.tooltip);\n var items = createItems();\n var rootProps = mergeProps({\n ref: elementRef,\n id: props.id,\n className: classNames(props.className, cx('root')),\n style: props.style,\n role: 'group'\n }, SelectButtonBase.getOtherProps(props), ptm('root'));\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", rootProps, items, props.children), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({\n target: elementRef,\n content: props.tooltip,\n pt: ptm('tooltip')\n }, props.tooltipOptions)));\n}));\nSelectButton.displayName = 'SelectButton';\n\nexport { SelectButton };\n","'use client';\nimport * as React from 'react';\nimport PrimeReact, { PrimeReactContext } from 'primereact/api';\nimport { ComponentBase, useHandleStyle } from 'primereact/componentbase';\nimport { useMergeProps, useGlobalOnEscapeKey, ESC_KEY_HANDLING_PRIORITIES, useResizeListener, useOverlayScrollListener, useMountEffect, useUpdateEffect, useUnmountEffect } from 'primereact/hooks';\nimport { Portal } from 'primereact/portal';\nimport { classNames, DomHandler, ZIndexUtils, ObjectUtils } from 'primereact/utils';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nvar classes = {\n root: function root(_ref) {\n var positionState = _ref.positionState,\n classNameState = _ref.classNameState;\n return classNames('p-tooltip p-component', _defineProperty({}, \"p-tooltip-\".concat(positionState), true), classNameState);\n },\n arrow: 'p-tooltip-arrow',\n text: 'p-tooltip-text'\n};\nvar inlineStyles = {\n arrow: function arrow(_ref2) {\n var context = _ref2.context;\n return {\n top: context.bottom ? '0' : context.right || context.left || !context.right && !context.left && !context.top && !context.bottom ? '50%' : null,\n bottom: context.top ? '0' : null,\n left: context.right || !context.right && !context.left && !context.top && !context.bottom ? '0' : context.top || context.bottom ? '50%' : null,\n right: context.left ? '0' : null\n };\n }\n};\nvar styles = \"\\n@layer primereact {\\n .p-tooltip {\\n position: absolute;\\n padding: .25em .5rem;\\n /* #3687: Tooltip prevent scrollbar flickering */\\n top: -9999px;\\n left: -9999px;\\n }\\n \\n .p-tooltip.p-tooltip-right,\\n .p-tooltip.p-tooltip-left {\\n padding: 0 .25rem;\\n }\\n \\n .p-tooltip.p-tooltip-top,\\n .p-tooltip.p-tooltip-bottom {\\n padding:.25em 0;\\n }\\n \\n .p-tooltip .p-tooltip-text {\\n white-space: pre-line;\\n word-break: break-word;\\n }\\n \\n .p-tooltip-arrow {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-color: transparent;\\n border-style: solid;\\n }\\n \\n .p-tooltip-right .p-tooltip-arrow {\\n top: 50%;\\n left: 0;\\n margin-top: -.25rem;\\n border-width: .25em .25em .25em 0;\\n }\\n \\n .p-tooltip-left .p-tooltip-arrow {\\n top: 50%;\\n right: 0;\\n margin-top: -.25rem;\\n border-width: .25em 0 .25em .25rem;\\n }\\n \\n .p-tooltip.p-tooltip-top {\\n padding: .25em 0;\\n }\\n \\n .p-tooltip-top .p-tooltip-arrow {\\n bottom: 0;\\n left: 50%;\\n margin-left: -.25rem;\\n border-width: .25em .25em 0;\\n }\\n \\n .p-tooltip-bottom .p-tooltip-arrow {\\n top: 0;\\n left: 50%;\\n margin-left: -.25rem;\\n border-width: 0 .25em .25rem;\\n }\\n\\n .p-tooltip-target-wrapper {\\n display: inline-flex;\\n }\\n}\\n\";\nvar TooltipBase = ComponentBase.extend({\n defaultProps: {\n __TYPE: 'Tooltip',\n appendTo: null,\n at: null,\n autoHide: true,\n autoZIndex: true,\n baseZIndex: 0,\n className: null,\n closeOnEscape: false,\n content: null,\n disabled: false,\n event: null,\n hideDelay: 0,\n hideEvent: 'mouseleave',\n id: null,\n mouseTrack: false,\n mouseTrackLeft: 5,\n mouseTrackTop: 5,\n my: null,\n onBeforeHide: null,\n onBeforeShow: null,\n onHide: null,\n onShow: null,\n position: 'right',\n showDelay: 0,\n showEvent: 'mouseenter',\n showOnDisabled: false,\n style: null,\n target: null,\n updateDelay: 0,\n children: undefined\n },\n css: {\n classes: classes,\n styles: styles,\n inlineStyles: inlineStyles\n }\n});\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Tooltip = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (inProps, ref) {\n var mergeProps = useMergeProps();\n var context = React.useContext(PrimeReactContext);\n var props = TooltipBase.getProps(inProps, context);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visibleState = _React$useState2[0],\n setVisibleState = _React$useState2[1];\n var _React$useState3 = React.useState(props.position || 'right'),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n positionState = _React$useState4[0],\n setPositionState = _React$useState4[1];\n var _React$useState5 = React.useState(''),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n classNameState = _React$useState6[0],\n setClassNameState = _React$useState6[1];\n var metaData = {\n props: props,\n state: {\n visible: visibleState,\n position: positionState,\n className: classNameState\n },\n context: {\n right: positionState === 'right',\n left: positionState === 'left',\n top: positionState === 'top',\n bottom: positionState === 'bottom'\n }\n };\n var _TooltipBase$setMetaD = TooltipBase.setMetaData(metaData),\n ptm = _TooltipBase$setMetaD.ptm,\n cx = _TooltipBase$setMetaD.cx,\n sx = _TooltipBase$setMetaD.sx,\n isUnstyled = _TooltipBase$setMetaD.isUnstyled;\n useHandleStyle(TooltipBase.css.styles, isUnstyled, {\n name: 'tooltip'\n });\n useGlobalOnEscapeKey({\n callback: function callback() {\n hide();\n },\n when: props.closeOnEscape,\n priority: [ESC_KEY_HANDLING_PRIORITIES.TOOLTIP, 0]\n });\n var elementRef = React.useRef(null);\n var textRef = React.useRef(null);\n var currentTargetRef = React.useRef(null);\n var containerSize = React.useRef(null);\n var allowHide = React.useRef(true);\n var timeouts = React.useRef({});\n var currentMouseEvent = React.useRef(null);\n var _useResizeListener = useResizeListener({\n listener: function listener(event) {\n !DomHandler.isTouchDevice() && hide(event);\n }\n }),\n _useResizeListener2 = _slicedToArray(_useResizeListener, 2),\n bindWindowResizeListener = _useResizeListener2[0],\n unbindWindowResizeListener = _useResizeListener2[1];\n var _useOverlayScrollList = useOverlayScrollListener({\n target: currentTargetRef.current,\n listener: function listener(event) {\n hide(event);\n },\n when: visibleState\n }),\n _useOverlayScrollList2 = _slicedToArray(_useOverlayScrollList, 2),\n bindOverlayScrollListener = _useOverlayScrollList2[0],\n unbindOverlayScrollListener = _useOverlayScrollList2[1];\n var isTargetContentEmpty = function isTargetContentEmpty(target) {\n return !(props.content || getTargetOption(target, 'tooltip'));\n };\n var isContentEmpty = function isContentEmpty(target) {\n return !(props.content || getTargetOption(target, 'tooltip') || props.children);\n };\n var isMouseTrack = function isMouseTrack(target) {\n return getTargetOption(target, 'mousetrack') || props.mouseTrack;\n };\n var isDisabled = function isDisabled(target) {\n return getTargetOption(target, 'disabled') === 'true' || hasTargetOption(target, 'disabled') || props.disabled;\n };\n var isShowOnDisabled = function isShowOnDisabled(target) {\n return getTargetOption(target, 'showondisabled') || props.showOnDisabled;\n };\n var isAutoHide = function isAutoHide() {\n return getTargetOption(currentTargetRef.current, 'autohide') || props.autoHide;\n };\n var getTargetOption = function getTargetOption(target, option) {\n return hasTargetOption(target, \"data-pr-\".concat(option)) ? target.getAttribute(\"data-pr-\".concat(option)) : null;\n };\n var hasTargetOption = function hasTargetOption(target, option) {\n return target && target.hasAttribute(option);\n };\n var getEvents = function getEvents(target) {\n var showEvents = [getTargetOption(target, 'showevent') || props.showEvent];\n var hideEvents = [getTargetOption(target, 'hideevent') || props.hideEvent];\n if (isMouseTrack(target)) {\n showEvents = ['mousemove'];\n hideEvents = ['mouseleave'];\n } else {\n var event = getTargetOption(target, 'event') || props.event;\n if (event === 'focus') {\n showEvents = ['focus'];\n hideEvents = ['blur'];\n }\n if (event === 'both') {\n showEvents = ['focus', 'mouseenter'];\n hideEvents = ['blur', 'mouseleave'];\n }\n }\n return {\n showEvents: showEvents,\n hideEvents: hideEvents\n };\n };\n var getPosition = function getPosition(target) {\n return getTargetOption(target, 'position') || positionState;\n };\n var getMouseTrackPosition = function getMouseTrackPosition(target) {\n var top = getTargetOption(target, 'mousetracktop') || props.mouseTrackTop;\n var left = getTargetOption(target, 'mousetrackleft') || props.mouseTrackLeft;\n return {\n top: top,\n left: left\n };\n };\n var updateText = function updateText(target, callback) {\n if (textRef.current) {\n var content = getTargetOption(target, 'tooltip') || props.content;\n if (content) {\n textRef.current.innerHTML = ''; // remove children\n textRef.current.appendChild(document.createTextNode(content));\n callback();\n } else if (props.children) {\n callback();\n }\n }\n };\n var updateTooltipState = function updateTooltipState(position) {\n updateText(currentTargetRef.current, function () {\n var _currentMouseEvent$cu = currentMouseEvent.current,\n x = _currentMouseEvent$cu.pageX,\n y = _currentMouseEvent$cu.pageY;\n if (props.autoZIndex && !ZIndexUtils.get(elementRef.current)) {\n ZIndexUtils.set('tooltip', elementRef.current, context && context.autoZIndex || PrimeReact.autoZIndex, props.baseZIndex || context && context.zIndex.tooltip || PrimeReact.zIndex.tooltip);\n }\n elementRef.current.style.left = '';\n elementRef.current.style.top = '';\n\n // GitHub #2695 disable pointer events when autohiding\n if (isAutoHide()) {\n elementRef.current.style.pointerEvents = 'none';\n }\n var mouseTrackCheck = isMouseTrack(currentTargetRef.current) || position === 'mouse';\n if (mouseTrackCheck && !containerSize.current || mouseTrackCheck) {\n containerSize.current = {\n width: DomHandler.getOuterWidth(elementRef.current),\n height: DomHandler.getOuterHeight(elementRef.current)\n };\n }\n align(currentTargetRef.current, {\n x: x,\n y: y\n }, position);\n });\n };\n var show = function show(e) {\n currentTargetRef.current = e.currentTarget;\n var disabled = isDisabled(currentTargetRef.current);\n var empty = isContentEmpty(isShowOnDisabled(currentTargetRef.current) && disabled ? currentTargetRef.current.firstChild : currentTargetRef.current);\n if (empty || disabled) {\n return;\n }\n currentMouseEvent.current = e;\n if (visibleState) {\n applyDelay('updateDelay', updateTooltipState);\n } else {\n // #2653 give the callback a chance to return false and not continue with display\n var success = sendCallback(props.onBeforeShow, {\n originalEvent: e,\n target: currentTargetRef.current\n });\n if (success) {\n applyDelay('showDelay', function () {\n setVisibleState(true);\n sendCallback(props.onShow, {\n originalEvent: e,\n target: currentTargetRef.current\n });\n });\n }\n }\n };\n var hide = function hide(e) {\n clearTimeouts();\n if (visibleState) {\n var success = sendCallback(props.onBeforeHide, {\n originalEvent: e,\n target: currentTargetRef.current\n });\n if (success) {\n applyDelay('hideDelay', function () {\n if (!isAutoHide() && allowHide.current === false) {\n return;\n }\n ZIndexUtils.clear(elementRef.current);\n DomHandler.removeClass(elementRef.current, 'p-tooltip-active');\n setVisibleState(false);\n sendCallback(props.onHide, {\n originalEvent: e,\n target: currentTargetRef.current\n });\n });\n }\n }\n };\n var align = function align(target, coordinate, position) {\n var left = 0;\n var top = 0;\n var currentPosition = position || positionState;\n if ((isMouseTrack(target) || currentPosition == 'mouse') && coordinate) {\n var _containerSize = {\n width: DomHandler.getOuterWidth(elementRef.current),\n height: DomHandler.getOuterHeight(elementRef.current)\n };\n left = coordinate.x;\n top = coordinate.y;\n var _getMouseTrackPositio = getMouseTrackPosition(target),\n mouseTrackTop = _getMouseTrackPositio.top,\n mouseTrackLeft = _getMouseTrackPositio.left;\n switch (currentPosition) {\n case 'left':\n left = left - (_containerSize.width + mouseTrackLeft);\n top = top - (_containerSize.height / 2 - mouseTrackTop);\n break;\n case 'right':\n case 'mouse':\n left = left + mouseTrackLeft;\n top = top - (_containerSize.height / 2 - mouseTrackTop);\n break;\n case 'top':\n left = left - (_containerSize.width / 2 - mouseTrackLeft);\n top = top - (_containerSize.height + mouseTrackTop);\n break;\n case 'bottom':\n left = left - (_containerSize.width / 2 - mouseTrackLeft);\n top = top + mouseTrackTop;\n break;\n }\n if (left <= 0 || containerSize.current.width > _containerSize.width) {\n elementRef.current.style.left = '0px';\n elementRef.current.style.right = window.innerWidth - _containerSize.width - left + 'px';\n } else {\n elementRef.current.style.right = '';\n elementRef.current.style.left = left + 'px';\n }\n elementRef.current.style.top = top + 'px';\n DomHandler.addClass(elementRef.current, 'p-tooltip-active');\n } else {\n var pos = DomHandler.findCollisionPosition(currentPosition);\n var my = getTargetOption(target, 'my') || props.my || pos.my;\n var at = getTargetOption(target, 'at') || props.at || pos.at;\n elementRef.current.style.padding = '0px';\n DomHandler.flipfitCollision(elementRef.current, target, my, at, function (calculatedPosition) {\n var _calculatedPosition$a = calculatedPosition.at,\n atX = _calculatedPosition$a.x,\n atY = _calculatedPosition$a.y;\n var myX = calculatedPosition.my.x;\n var newPosition = props.at ? atX !== 'center' && atX !== myX ? atX : atY : calculatedPosition.at[\"\".concat(pos.axis)];\n elementRef.current.style.padding = '';\n setPositionState(newPosition);\n updateContainerPosition(newPosition);\n DomHandler.addClass(elementRef.current, 'p-tooltip-active');\n });\n }\n };\n var updateContainerPosition = function updateContainerPosition(position) {\n if (elementRef.current) {\n var style = getComputedStyle(elementRef.current);\n if (position === 'left') {\n elementRef.current.style.left = parseFloat(style.left) - parseFloat(style.paddingLeft) * 2 + 'px';\n } else if (position === 'top') {\n elementRef.current.style.top = parseFloat(style.top) - parseFloat(style.paddingTop) * 2 + 'px';\n }\n }\n };\n var _onMouseEnter = function onMouseEnter() {\n if (!isAutoHide()) {\n allowHide.current = false;\n }\n };\n var _onMouseLeave = function onMouseLeave(e) {\n if (!isAutoHide()) {\n allowHide.current = true;\n hide(e);\n }\n };\n var bindTargetEvent = function bindTargetEvent(target) {\n if (target) {\n var _getEvents = getEvents(target),\n showEvents = _getEvents.showEvents,\n hideEvents = _getEvents.hideEvents;\n var currentTarget = getTarget(target);\n showEvents.forEach(function (event) {\n return currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.addEventListener(event, show);\n });\n hideEvents.forEach(function (event) {\n return currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.addEventListener(event, hide);\n });\n }\n };\n var unbindTargetEvent = function unbindTargetEvent(target) {\n if (target) {\n var _getEvents2 = getEvents(target),\n showEvents = _getEvents2.showEvents,\n hideEvents = _getEvents2.hideEvents;\n var currentTarget = getTarget(target);\n showEvents.forEach(function (event) {\n return currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.removeEventListener(event, show);\n });\n hideEvents.forEach(function (event) {\n return currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget.removeEventListener(event, hide);\n });\n }\n };\n var applyDelay = function applyDelay(delayProp, callback) {\n clearTimeouts();\n var delay = getTargetOption(currentTargetRef.current, delayProp.toLowerCase()) || props[delayProp];\n delay ? timeouts.current[\"\".concat(delayProp)] = setTimeout(function () {\n return callback();\n }, delay) : callback();\n };\n var sendCallback = function sendCallback(callback) {\n if (callback) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n var result = callback.apply(void 0, params);\n if (result === undefined) {\n result = true;\n }\n return result;\n }\n return true;\n };\n var clearTimeouts = function clearTimeouts() {\n Object.values(timeouts.current).forEach(function (t) {\n return clearTimeout(t);\n });\n };\n var getTarget = function getTarget(target) {\n if (target) {\n if (isShowOnDisabled(target)) {\n if (!target.hasWrapper) {\n var wrapper = document.createElement('div');\n var isInputElement = target.nodeName === 'INPUT';\n if (isInputElement) {\n DomHandler.addMultipleClasses(wrapper, 'p-tooltip-target-wrapper p-inputwrapper');\n } else {\n DomHandler.addClass(wrapper, 'p-tooltip-target-wrapper');\n }\n target.parentNode.insertBefore(wrapper, target);\n wrapper.appendChild(target);\n target.hasWrapper = true;\n return wrapper;\n }\n return target.parentElement;\n } else if (target.hasWrapper) {\n var _target$parentElement;\n (_target$parentElement = target.parentElement).replaceWith.apply(_target$parentElement, _toConsumableArray(target.parentElement.childNodes));\n delete target.hasWrapper;\n }\n return target;\n }\n return null;\n };\n var updateTargetEvents = function updateTargetEvents(target) {\n unloadTargetEvents(target);\n loadTargetEvents(target);\n };\n var loadTargetEvents = function loadTargetEvents(target) {\n setTargetEventOperations(target || props.target, bindTargetEvent);\n };\n var unloadTargetEvents = function unloadTargetEvents(target) {\n setTargetEventOperations(target || props.target, unbindTargetEvent);\n };\n var setTargetEventOperations = function setTargetEventOperations(target, operation) {\n target = ObjectUtils.getRefElement(target);\n if (target) {\n if (DomHandler.isElement(target)) {\n operation(target);\n } else {\n var setEvent = function setEvent(target) {\n var element = DomHandler.find(document, target);\n element.forEach(function (el) {\n operation(el);\n });\n };\n if (target instanceof Array) {\n target.forEach(function (t) {\n setEvent(t);\n });\n } else {\n setEvent(target);\n }\n }\n }\n };\n useMountEffect(function () {\n if (visibleState && currentTargetRef.current && isDisabled(currentTargetRef.current)) {\n hide();\n }\n });\n useUpdateEffect(function () {\n loadTargetEvents();\n return function () {\n unloadTargetEvents();\n };\n }, [show, hide, props.target]);\n useUpdateEffect(function () {\n if (visibleState) {\n var position = getPosition(currentTargetRef.current);\n var classname = getTargetOption(currentTargetRef.current, 'classname');\n setPositionState(position);\n setClassNameState(classname);\n updateTooltipState(position);\n bindWindowResizeListener();\n bindOverlayScrollListener();\n } else {\n setPositionState(props.position || 'right');\n setClassNameState('');\n currentTargetRef.current = null;\n containerSize.current = null;\n allowHide.current = true;\n }\n return function () {\n unbindWindowResizeListener();\n unbindOverlayScrollListener();\n };\n }, [visibleState]);\n useUpdateEffect(function () {\n var position = getPosition(currentTargetRef.current);\n if (visibleState && position !== 'mouse') {\n applyDelay('updateDelay', function () {\n updateText(currentTargetRef.current, function () {\n align(currentTargetRef.current);\n });\n });\n }\n }, [props.content]);\n useUnmountEffect(function () {\n hide();\n ZIndexUtils.clear(elementRef.current);\n });\n React.useImperativeHandle(ref, function () {\n return {\n props: props,\n updateTargetEvents: updateTargetEvents,\n loadTargetEvents: loadTargetEvents,\n unloadTargetEvents: unloadTargetEvents,\n show: show,\n hide: hide,\n getElement: function getElement() {\n return elementRef.current;\n },\n getTarget: function getTarget() {\n return currentTargetRef.current;\n }\n };\n });\n var createElement = function createElement() {\n var empty = isTargetContentEmpty(currentTargetRef.current);\n var rootProps = mergeProps({\n id: props.id,\n className: classNames(props.className, cx('root', {\n positionState: positionState,\n classNameState: classNameState\n })),\n style: props.style,\n role: 'tooltip',\n 'aria-hidden': visibleState,\n onMouseEnter: function onMouseEnter(e) {\n return _onMouseEnter();\n },\n onMouseLeave: function onMouseLeave(e) {\n return _onMouseLeave(e);\n }\n }, TooltipBase.getOtherProps(props), ptm('root'));\n var arrowProps = mergeProps({\n className: cx('arrow'),\n style: sx('arrow', _objectSpread({}, metaData))\n }, ptm('arrow'));\n var textProps = mergeProps({\n className: cx('text')\n }, ptm('text'));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elementRef\n }, rootProps), /*#__PURE__*/React.createElement(\"div\", arrowProps), /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: textRef\n }, textProps), empty && props.children));\n };\n if (visibleState) {\n var element = createElement();\n return /*#__PURE__*/React.createElement(Portal, {\n element: element,\n appendTo: props.appendTo,\n visible: true\n });\n }\n return null;\n}));\nTooltip.displayName = 'Tooltip';\n\nexport { Tooltip };\n","'use client';\nimport * as React from 'react';\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray$2(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupportedIterableToArray$2(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen);\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$2(arr, i) || _nonIterableRest();\n}\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction classNames() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args) {\n var classes = [];\n for (var i = 0; i < args.length; i++) {\n var className = args[i];\n if (!className) {\n continue;\n }\n var type = _typeof(className);\n if (type === 'string' || type === 'number') {\n classes.push(className);\n } else if (type === 'object') {\n var _classes = Array.isArray(className) ? className : Object.entries(className).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return value ? key : null;\n });\n classes = _classes.length ? classes.concat(_classes.filter(function (c) {\n return !!c;\n })) : classes;\n }\n }\n return classes.join(' ').trim();\n }\n return undefined;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray$2(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$2(arr) || _nonIterableSpread();\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n}\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar DomHandler = /*#__PURE__*/function () {\n function DomHandler() {\n _classCallCheck(this, DomHandler);\n }\n return _createClass(DomHandler, null, [{\n key: \"innerWidth\",\n value: function innerWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width = width + (parseFloat(style.paddingLeft) + parseFloat(style.paddingRight));\n return width;\n }\n return 0;\n }\n }, {\n key: \"width\",\n value: function width(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width = width - (parseFloat(style.paddingLeft) + parseFloat(style.paddingRight));\n return width;\n }\n return 0;\n }\n }, {\n key: \"getBrowserLanguage\",\n value: function getBrowserLanguage() {\n return navigator.userLanguage || navigator.languages && navigator.languages.length && navigator.languages[0] || navigator.language || navigator.browserLanguage || navigator.systemLanguage || 'en';\n }\n }, {\n key: \"getWindowScrollTop\",\n value: function getWindowScrollTop() {\n var doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n }, {\n key: \"getWindowScrollLeft\",\n value: function getWindowScrollLeft() {\n var doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n }, {\n key: \"getOuterWidth\",\n value: function getOuterWidth(el, margin) {\n if (el) {\n var width = el.getBoundingClientRect().width || el.offsetWidth;\n if (margin) {\n var style = getComputedStyle(el);\n width = width + (parseFloat(style.marginLeft) + parseFloat(style.marginRight));\n }\n return width;\n }\n return 0;\n }\n }, {\n key: \"getOuterHeight\",\n value: function getOuterHeight(el, margin) {\n if (el) {\n var height = el.getBoundingClientRect().height || el.offsetHeight;\n if (margin) {\n var style = getComputedStyle(el);\n height = height + (parseFloat(style.marginTop) + parseFloat(style.marginBottom));\n }\n return height;\n }\n return 0;\n }\n }, {\n key: \"getClientHeight\",\n value: function getClientHeight(el, margin) {\n if (el) {\n var height = el.clientHeight;\n if (margin) {\n var style = getComputedStyle(el);\n height = height + (parseFloat(style.marginTop) + parseFloat(style.marginBottom));\n }\n return height;\n }\n return 0;\n }\n }, {\n key: \"getClientWidth\",\n value: function getClientWidth(el, margin) {\n if (el) {\n var width = el.clientWidth;\n if (margin) {\n var style = getComputedStyle(el);\n width = width + (parseFloat(style.marginLeft) + parseFloat(style.marginRight));\n }\n return width;\n }\n return 0;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n var win = window;\n var d = document;\n var e = d.documentElement;\n var g = d.getElementsByTagName('body')[0];\n var w = win.innerWidth || e.clientWidth || g.clientWidth;\n var h = win.innerHeight || e.clientHeight || g.clientHeight;\n return {\n width: w,\n height: h\n };\n }\n }, {\n key: \"getOffset\",\n value: function getOffset(el) {\n if (el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"index\",\n value: function index(element) {\n if (element) {\n var children = element.parentNode.childNodes;\n var num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === element) {\n return num;\n }\n if (children[i].nodeType === 1) {\n num++;\n }\n }\n }\n return -1;\n }\n }, {\n key: \"addMultipleClasses\",\n value: function addMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n for (var i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n var _styles = className.split(' ');\n for (var _i = 0; _i < _styles.length; _i++) {\n element.className = element.className + (' ' + _styles[_i]);\n }\n }\n }\n }\n }, {\n key: \"removeMultipleClasses\",\n value: function removeMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n for (var i = 0; i < styles.length; i++) {\n element.classList.remove(styles[i]);\n }\n } else {\n var _styles2 = className.split(' ');\n for (var _i2 = 0; _i2 < _styles2.length; _i2++) {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + _styles2[_i2].split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }\n }\n }, {\n key: \"addClass\",\n value: function addClass(element, className) {\n if (element && className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className = element.className + (' ' + className);\n }\n }\n }\n }, {\n key: \"removeClass\",\n value: function removeClass(element, className) {\n if (element && className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }\n }, {\n key: \"hasClass\",\n value: function hasClass(element, className) {\n if (element) {\n if (element.classList) {\n return element.classList.contains(className);\n }\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n return false;\n }\n }, {\n key: \"addStyles\",\n value: function addStyles(element) {\n var styles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (element) {\n Object.entries(styles).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return element.style[key] = value;\n });\n }\n }\n }, {\n key: \"find\",\n value: function find(element, selector) {\n return element ? Array.from(element.querySelectorAll(selector)) : [];\n }\n }, {\n key: \"findSingle\",\n value: function findSingle(element, selector) {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(element) {\n var _this = this;\n var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (element) {\n var computedStyles = function computedStyles(rule, value) {\n var _element$$attrs, _element$$attrs2;\n var styles = element !== null && element !== void 0 && (_element$$attrs = element.$attrs) !== null && _element$$attrs !== void 0 && _element$$attrs[rule] ? [element === null || element === void 0 || (_element$$attrs2 = element.$attrs) === null || _element$$attrs2 === void 0 ? void 0 : _element$$attrs2[rule]] : [];\n return [value].flat().reduce(function (cv, v) {\n if (v !== null && v !== undefined) {\n var type = _typeof(v);\n if (type === 'string' || type === 'number') {\n cv.push(v);\n } else if (type === 'object') {\n var _cv = Array.isArray(v) ? computedStyles(rule, v) : Object.entries(v).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n _k = _ref4[0],\n _v = _ref4[1];\n return rule === 'style' && (!!_v || _v === 0) ? \"\".concat(_k.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(), \":\").concat(_v) : _v ? _k : undefined;\n });\n cv = _cv.length ? cv.concat(_cv.filter(function (c) {\n return !!c;\n })) : cv;\n }\n }\n return cv;\n }, styles);\n };\n Object.entries(attributes).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n key = _ref6[0],\n value = _ref6[1];\n if (value !== undefined && value !== null) {\n var matchedEvent = key.match(/^on(.+)/);\n if (matchedEvent) {\n element.addEventListener(matchedEvent[1].toLowerCase(), value);\n } else if (key === 'p-bind') {\n _this.setAttributes(element, value);\n } else {\n value = key === 'class' ? _toConsumableArray(new Set(computedStyles('class', value))).join(' ').trim() : key === 'style' ? computedStyles('style', value).join(';').trim() : value;\n (element.$attrs = element.$attrs || {}) && (element.$attrs[key] = value);\n element.setAttribute(key, value);\n }\n }\n });\n }\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(element, name) {\n if (element) {\n var value = element.getAttribute(name);\n if (!isNaN(value)) {\n return +value;\n }\n if (value === 'true' || value === 'false') {\n return value === 'true';\n }\n return value;\n }\n return undefined;\n }\n }, {\n key: \"isAttributeEquals\",\n value: function isAttributeEquals(element, name, value) {\n return element ? this.getAttribute(element, name) === value : false;\n }\n }, {\n key: \"isAttributeNotEquals\",\n value: function isAttributeNotEquals(element, name, value) {\n return !this.isAttributeEquals(element, name, value);\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(el) {\n if (el) {\n var height = el.offsetHeight;\n var style = getComputedStyle(el);\n height = height - (parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth));\n return height;\n }\n return 0;\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width = width - (parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth));\n return width;\n }\n return 0;\n }\n }, {\n key: \"alignOverlay\",\n value: function alignOverlay(overlay, target, appendTo) {\n var calculateMinWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if (overlay && target) {\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n calculateMinWidth && (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px');\n this.absolutePosition(overlay, target);\n }\n }\n }\n }, {\n key: \"absolutePosition\",\n value: function absolutePosition(element, target) {\n var align = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';\n if (element && target) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var elementOuterHeight = elementDimensions.height;\n var elementOuterWidth = elementDimensions.width;\n var targetOuterHeight = target.offsetHeight;\n var targetOuterWidth = target.offsetWidth;\n var targetOffset = target.getBoundingClientRect();\n var windowScrollTop = this.getWindowScrollTop();\n var windowScrollLeft = this.getWindowScrollLeft();\n var viewport = this.getViewport();\n var top;\n var left;\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n if (top < 0) {\n top = windowScrollTop;\n }\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n var targetOffsetPx = targetOffset.left;\n var alignOffset = align === 'left' ? 0 : elementOuterWidth - targetOuterWidth;\n if (targetOffsetPx + targetOuterWidth + elementOuterWidth > viewport.width) {\n left = Math.max(0, targetOffsetPx + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n } else {\n left = targetOffsetPx - alignOffset + windowScrollLeft;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"relativePosition\",\n value: function relativePosition(element, target) {\n if (element && target) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var targetHeight = target.offsetHeight;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var top;\n var left;\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = -1 * elementDimensions.height;\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = targetOffset.left * -1;\n } else if (targetOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = 0;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"flipfitCollision\",\n value: function flipfitCollision(element, target) {\n var _this2 = this;\n var my = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left top';\n var at = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'left bottom';\n var callback = arguments.length > 4 ? arguments[4] : undefined;\n if (element && target) {\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var myArr = my.split(' ');\n var atArr = at.split(' ');\n var getPositionValue = function getPositionValue(arr, isOffset) {\n return isOffset ? +arr.substring(arr.search(/(\\+|-)/g)) || 0 : arr.substring(0, arr.search(/(\\+|-)/g)) || arr;\n };\n var position = {\n my: {\n x: getPositionValue(myArr[0]),\n y: getPositionValue(myArr[1] || myArr[0]),\n offsetX: getPositionValue(myArr[0], true),\n offsetY: getPositionValue(myArr[1] || myArr[0], true)\n },\n at: {\n x: getPositionValue(atArr[0]),\n y: getPositionValue(atArr[1] || atArr[0]),\n offsetX: getPositionValue(atArr[0], true),\n offsetY: getPositionValue(atArr[1] || atArr[0], true)\n }\n };\n var myOffset = {\n left: function left() {\n var totalOffset = position.my.offsetX + position.at.offsetX;\n return totalOffset + targetOffset.left + (position.my.x === 'left' ? 0 : -1 * (position.my.x === 'center' ? _this2.getOuterWidth(element) / 2 : _this2.getOuterWidth(element)));\n },\n top: function top() {\n var totalOffset = position.my.offsetY + position.at.offsetY;\n return totalOffset + targetOffset.top + (position.my.y === 'top' ? 0 : -1 * (position.my.y === 'center' ? _this2.getOuterHeight(element) / 2 : _this2.getOuterHeight(element)));\n }\n };\n var alignWithAt = {\n count: {\n x: 0,\n y: 0\n },\n left: function left() {\n var left = myOffset.left();\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n if (this.count.x === 2) {\n element.style.left = scrollLeft + 'px';\n this.count.x = 0;\n } else if (left < 0) {\n this.count.x++;\n position.my.x = 'left';\n position.at.x = 'right';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.right();\n }\n },\n right: function right() {\n var left = myOffset.left() + DomHandler.getOuterWidth(target);\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n if (this.count.x === 2) {\n element.style.left = viewport.width - DomHandler.getOuterWidth(element) + scrollLeft + 'px';\n this.count.x = 0;\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.count.x++;\n position.my.x = 'right';\n position.at.x = 'left';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.left();\n }\n },\n top: function top() {\n var top = myOffset.top();\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n if (this.count.y === 2) {\n element.style.left = scrollTop + 'px';\n this.count.y = 0;\n } else if (top < 0) {\n this.count.y++;\n position.my.y = 'top';\n position.at.y = 'bottom';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.bottom();\n }\n },\n bottom: function bottom() {\n var top = myOffset.top() + DomHandler.getOuterHeight(target);\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n if (this.count.y === 2) {\n element.style.left = viewport.height - DomHandler.getOuterHeight(element) + scrollTop + 'px';\n this.count.y = 0;\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.count.y++;\n position.my.y = 'bottom';\n position.at.y = 'top';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.top();\n }\n },\n center: function center(axis) {\n if (axis === 'y') {\n var top = myOffset.top() + DomHandler.getOuterHeight(target) / 2;\n element.style.top = top + DomHandler.getWindowScrollTop() + 'px';\n if (top < 0) {\n this.bottom();\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.top();\n }\n } else {\n var left = myOffset.left() + DomHandler.getOuterWidth(target) / 2;\n element.style.left = left + DomHandler.getWindowScrollLeft() + 'px';\n if (left < 0) {\n this.left();\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.right();\n }\n }\n }\n };\n alignWithAt[position.at.x]('x');\n alignWithAt[position.at.y]('y');\n if (this.isFunction(callback)) {\n callback(position);\n }\n }\n }\n }, {\n key: \"findCollisionPosition\",\n value: function findCollisionPosition(position) {\n if (position) {\n var isAxisY = position === 'top' || position === 'bottom';\n var myXPosition = position === 'left' ? 'right' : 'left';\n var myYPosition = position === 'top' ? 'bottom' : 'top';\n if (isAxisY) {\n return {\n axis: 'y',\n my: \"center \".concat(myYPosition),\n at: \"center \".concat(position)\n };\n }\n return {\n axis: 'x',\n my: \"\".concat(myXPosition, \" center\"),\n at: \"\".concat(position, \" center\")\n };\n }\n }\n }, {\n key: \"getParents\",\n value: function getParents(element) {\n var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return element.parentNode === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n }, {\n key: \"getScrollableParents\",\n value: function getScrollableParents(element) {\n var hideOverlaysOnDocumentScrolling = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var scrollableParents = [];\n if (element) {\n var parents = this.getParents(element);\n var overflowRegex = /(auto|scroll)/;\n var overflowCheck = function overflowCheck(node) {\n var styleDeclaration = node ? getComputedStyle(node) : null;\n return styleDeclaration && (overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflow-x')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflow-y')));\n };\n var addScrollableParent = function addScrollableParent(node) {\n if (hideOverlaysOnDocumentScrolling) {\n // nodeType 9 is for document element\n scrollableParents.push(node.nodeName === 'BODY' || node.nodeName === 'HTML' || node.nodeType === 9 ? window : node);\n } else {\n scrollableParents.push(node);\n }\n };\n var _iterator = _createForOfIteratorHelper$1(parents),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var parent = _step.value;\n var scrollSelectors = parent.nodeType === 1 && parent.dataset.scrollselectors;\n if (scrollSelectors) {\n var selectors = scrollSelectors.split(',');\n var _iterator2 = _createForOfIteratorHelper$1(selectors),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selector = _step2.value;\n var el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n addScrollableParent(el);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n // BODY\n if (parent.nodeType === 1 && overflowCheck(parent)) {\n addScrollableParent(parent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n // we should always at least have the body or window\n if (!scrollableParents.some(function (node) {\n return node === document.body || node === window;\n })) {\n scrollableParents.push(window);\n }\n return scrollableParents;\n }\n }, {\n key: \"getHiddenElementOuterHeight\",\n value: function getHiddenElementOuterHeight(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n return 0;\n }\n }, {\n key: \"getHiddenElementOuterWidth\",\n value: function getHiddenElementOuterWidth(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n return 0;\n }\n }, {\n key: \"getHiddenElementDimensions\",\n value: function getHiddenElementDimensions(element) {\n var dimensions = {};\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n }\n return dimensions;\n }\n }, {\n key: \"fadeIn\",\n value: function fadeIn(element, duration) {\n if (element) {\n element.style.opacity = 0;\n var last = +new Date();\n var opacity = 0;\n var tick = function tick() {\n opacity = +element.style.opacity + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n window.requestAnimationFrame && requestAnimationFrame(tick) || setTimeout(tick, 16);\n }\n };\n tick();\n }\n }\n }, {\n key: \"fadeOut\",\n value: function fadeOut(element, duration) {\n if (element) {\n var opacity = 1;\n var interval = 50;\n var gap = interval / duration;\n var fading = setInterval(function () {\n opacity = opacity - gap;\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n element.style.opacity = opacity;\n }, interval);\n }\n }\n }, {\n key: \"getUserAgent\",\n value: function getUserAgent() {\n return navigator.userAgent;\n }\n }, {\n key: \"isIOS\",\n value: function isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n }\n }, {\n key: \"isAndroid\",\n value: function isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n }, {\n key: \"isChrome\",\n value: function isChrome() {\n return /(chrome)/i.test(navigator.userAgent);\n }\n }, {\n key: \"isClient\",\n value: function isClient() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n }\n }, {\n key: \"isTouchDevice\",\n value: function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n }, {\n key: \"isFunction\",\n value: function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n }, {\n key: \"appendChild\",\n value: function appendChild(element, target) {\n if (this.isElement(target)) {\n target.appendChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.appendChild(element);\n } else {\n throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }\n }, {\n key: \"removeChild\",\n value: function removeChild(element, target) {\n if (this.isElement(target)) {\n target.removeChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.removeChild(element);\n } else {\n throw new Error('Cannot remove ' + element + ' from ' + target);\n }\n }\n }, {\n key: \"isElement\",\n value: function isElement(obj) {\n return (typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === 'object' ? obj instanceof HTMLElement : obj && _typeof(obj) === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n }, {\n key: \"scrollInView\",\n value: function scrollInView(container, item) {\n var borderTopValue = getComputedStyle(container).getPropertyValue('border-top-width');\n var borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n var paddingTopValue = getComputedStyle(container).getPropertyValue('padding-top');\n var paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n var containerRect = container.getBoundingClientRect();\n var itemRect = item.getBoundingClientRect();\n var offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n var scroll = container.scrollTop;\n var elementHeight = container.clientHeight;\n var itemHeight = this.getOuterHeight(item);\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document.selection && document.selection.empty) {\n try {\n document.selection.empty();\n } catch (error) {\n //ignore IE bug\n }\n }\n }\n }, {\n key: \"calculateScrollbarWidth\",\n value: function calculateScrollbarWidth(el) {\n if (el) {\n var style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n }\n if (this.calculatedScrollbarWidth != null) {\n return this.calculatedScrollbarWidth;\n }\n var scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }, {\n key: \"calculateBodyScrollbarWidth\",\n value: function calculateBodyScrollbarWidth() {\n return window.innerWidth - document.documentElement.offsetWidth;\n }\n }, {\n key: \"getBrowser\",\n value: function getBrowser() {\n if (!this.browser) {\n var matched = this.resolveUserAgent();\n this.browser = {};\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser.version = matched.version;\n }\n if (this.browser.chrome) {\n this.browser.webkit = true;\n } else if (this.browser.webkit) {\n this.browser.safari = true;\n }\n }\n return this.browser;\n }\n }, {\n key: \"resolveUserAgent\",\n value: function resolveUserAgent() {\n var ua = navigator.userAgent.toLowerCase();\n var match = /(chrome)[ ]([\\w.]+)/.exec(ua) || /(webkit)[ ]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) || [];\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n }, {\n key: \"blockBodyScroll\",\n value: function blockBodyScroll() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'p-overflow-hidden';\n /* PR Ref: https://github.com/primefaces/primereact/pull/4976\n * @todo This method is called several times after this PR. Refactors will be made to prevent this in future releases.\n */\n var hasScrollbarWidth = !!document.body.style.getPropertyValue('--scrollbar-width');\n !hasScrollbarWidth && document.body.style.setProperty('--scrollbar-width', this.calculateBodyScrollbarWidth() + 'px');\n this.addClass(document.body, className);\n }\n }, {\n key: \"unblockBodyScroll\",\n value: function unblockBodyScroll() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'p-overflow-hidden';\n document.body.style.removeProperty('--scrollbar-width');\n this.removeClass(document.body, className);\n }\n }, {\n key: \"isVisible\",\n value: function isVisible(element) {\n // https://stackoverflow.com/a/59096915/502366 (in future use IntersectionObserver)\n return element && (element.clientHeight !== 0 || element.getClientRects().length !== 0 || getComputedStyle(element).display !== 'none');\n }\n }, {\n key: \"isExist\",\n value: function isExist(element) {\n return !!(element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode);\n }\n }, {\n key: \"getFocusableElements\",\n value: function getFocusableElements(element) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var focusableElements = DomHandler.find(element, \"button:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\".concat(selector, \",\\n [href][clientHeight][clientWidth]:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n input:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n select:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n textarea:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [tabIndex]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [contenteditable]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector));\n var visibleFocusableElements = [];\n var _iterator3 = _createForOfIteratorHelper$1(focusableElements),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var focusableElement = _step3.value;\n if (getComputedStyle(focusableElement).display !== 'none' && getComputedStyle(focusableElement).visibility !== 'hidden') {\n visibleFocusableElements.push(focusableElement);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return visibleFocusableElements;\n }\n }, {\n key: \"getFirstFocusableElement\",\n value: function getFirstFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n }, {\n key: \"getLastFocusableElement\",\n value: function getLastFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n }\n\n /**\n * Focus an input element if it does not already have focus.\n *\n * @param {HTMLElement} el a HTML element\n * @param {boolean} scrollTo flag to control whether to scroll to the element, false by default\n */\n }, {\n key: \"focus\",\n value: function focus(el, scrollTo) {\n var preventScroll = scrollTo === undefined ? true : !scrollTo;\n el && document.activeElement !== el && el.focus({\n preventScroll: preventScroll\n });\n }\n\n /**\n * Focus the first focusable element if it does not already have focus.\n *\n * @param {HTMLElement} el a HTML element\n * @param {boolean} scrollTo flag to control whether to scroll to the element, false by default\n * @return {HTMLElement | undefined} the first focusable HTML element found\n */\n }, {\n key: \"focusFirstElement\",\n value: function focusFirstElement(el, scrollTo) {\n if (!el) {\n return;\n }\n var firstFocusableElement = DomHandler.getFirstFocusableElement(el);\n firstFocusableElement && DomHandler.focus(firstFocusableElement, scrollTo);\n return firstFocusableElement;\n }\n }, {\n key: \"getCursorOffset\",\n value: function getCursorOffset(el, prevText, nextText, currentText) {\n if (el) {\n var style = getComputedStyle(el);\n var ghostDiv = document.createElement('div');\n ghostDiv.style.position = 'absolute';\n ghostDiv.style.top = '0px';\n ghostDiv.style.left = '0px';\n ghostDiv.style.visibility = 'hidden';\n ghostDiv.style.pointerEvents = 'none';\n ghostDiv.style.overflow = style.overflow;\n ghostDiv.style.width = style.width;\n ghostDiv.style.height = style.height;\n ghostDiv.style.padding = style.padding;\n ghostDiv.style.border = style.border;\n ghostDiv.style.overflowWrap = style.overflowWrap;\n ghostDiv.style.whiteSpace = style.whiteSpace;\n ghostDiv.style.lineHeight = style.lineHeight;\n ghostDiv.innerHTML = prevText.replace(/\\r\\n|\\r|\\n/g, '<br />');\n var ghostSpan = document.createElement('span');\n ghostSpan.textContent = currentText;\n ghostDiv.appendChild(ghostSpan);\n var text = document.createTextNode(nextText);\n ghostDiv.appendChild(text);\n document.body.appendChild(ghostDiv);\n var offsetLeft = ghostSpan.offsetLeft,\n offsetTop = ghostSpan.offsetTop,\n clientHeight = ghostSpan.clientHeight;\n document.body.removeChild(ghostDiv);\n return {\n left: Math.abs(offsetLeft - el.scrollLeft),\n top: Math.abs(offsetTop - el.scrollTop) + clientHeight\n };\n }\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"invokeElementMethod\",\n value: function invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n }, {\n key: \"isClickable\",\n value: function isClickable(element) {\n var targetNode = element.nodeName;\n var parentNode = element.parentElement && element.parentElement.nodeName;\n return targetNode === 'INPUT' || targetNode === 'TEXTAREA' || targetNode === 'BUTTON' || targetNode === 'A' || parentNode === 'INPUT' || parentNode === 'TEXTAREA' || parentNode === 'BUTTON' || parentNode === 'A' || this.hasClass(element, 'p-button') || this.hasClass(element.parentElement, 'p-button') || this.hasClass(element.parentElement, 'p-checkbox') || this.hasClass(element.parentElement, 'p-radiobutton');\n }\n }, {\n key: \"applyStyle\",\n value: function applyStyle(element, style) {\n if (typeof style === 'string') {\n element.style.cssText = this.style;\n } else {\n for (var prop in this.style) {\n element.style[prop] = style[prop];\n }\n }\n }\n }, {\n key: \"exportCSV\",\n value: function exportCSV(csv, filename) {\n var blob = new Blob([csv], {\n type: 'application/csv;charset=utf-8;'\n });\n if (window.navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(blob, filename + '.csv');\n } else {\n var isDownloaded = DomHandler.saveAs({\n name: filename + '.csv',\n src: URL.createObjectURL(blob)\n });\n if (!isDownloaded) {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n }\n }\n }, {\n key: \"saveAs\",\n value: function saveAs(file) {\n if (file) {\n var link = document.createElement('a');\n if (link.download !== undefined) {\n var name = file.name,\n src = file.src;\n link.setAttribute('href', src);\n link.setAttribute('download', name);\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n return true;\n }\n }\n return false;\n }\n }, {\n key: \"createInlineStyle\",\n value: function createInlineStyle(nonce, styleContainer) {\n var styleElement = document.createElement('style');\n DomHandler.addNonce(styleElement, nonce);\n if (!styleContainer) {\n styleContainer = document.head;\n }\n styleContainer.appendChild(styleElement);\n return styleElement;\n }\n }, {\n key: \"removeInlineStyle\",\n value: function removeInlineStyle(styleElement) {\n if (this.isExist(styleElement)) {\n try {\n styleElement.parentNode.removeChild(styleElement);\n } catch (error) {\n // style element may have already been removed in a fast refresh\n }\n styleElement = null;\n }\n return styleElement;\n }\n }, {\n key: \"addNonce\",\n value: function addNonce(styleElement, nonce) {\n try {\n if (!nonce) {\n nonce = process.env.REACT_APP_CSS_NONCE;\n }\n } catch (error) {\n // NOOP\n }\n nonce && styleElement.setAttribute('nonce', nonce);\n }\n }, {\n key: \"getTargetElement\",\n value: function getTargetElement(target) {\n if (!target) {\n return null;\n }\n if (target === 'document') {\n return document;\n } else if (target === 'window') {\n return window;\n } else if (_typeof(target) === 'object' && target.hasOwnProperty('current')) {\n return this.isExist(target.current) ? target.current : null;\n }\n var isFunction = function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n };\n var element = isFunction(target) ? target() : target;\n return element && element.nodeType === 9 || this.isExist(element) ? element : null;\n }\n\n /**\n * Get the attribute names for an element and sorts them alpha for comparison\n */\n }, {\n key: \"getAttributeNames\",\n value: function getAttributeNames(node) {\n var index;\n var rv;\n var attrs;\n rv = [];\n attrs = node.attributes;\n for (index = 0; index < attrs.length; ++index) {\n rv.push(attrs[index].nodeName);\n }\n rv.sort();\n return rv;\n }\n\n /**\n * Compare two elements for equality. Even will compare if the style element\n * is out of order for example:\n *\n * elem1 = style=\"color: red; font-size: 28px\"\n * elem2 = style=\"font-size: 28px; color: red\"\n */\n }, {\n key: \"isEqualElement\",\n value: function isEqualElement(elm1, elm2) {\n var attrs1;\n var attrs2;\n var name;\n var node1;\n var node2;\n\n // Compare attributes without order sensitivity\n attrs1 = DomHandler.getAttributeNames(elm1);\n attrs2 = DomHandler.getAttributeNames(elm2);\n if (attrs1.join(',') !== attrs2.join(',')) {\n // console.log(\"Found nodes with different sets of attributes; not equiv\");\n return false;\n }\n\n // ...and values\n // unless you want to compare DOM0 event handlers\n // (onclick=\"...\")\n for (var index = 0; index < attrs1.length; ++index) {\n name = attrs1[index];\n if (name === 'style') {\n var astyle = elm1.style;\n var bstyle = elm2.style;\n var rexDigitsOnly = /^\\d+$/;\n for (var _i3 = 0, _Object$keys = Object.keys(astyle); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n if (!rexDigitsOnly.test(key) && astyle[key] !== bstyle[key]) {\n // Not equivalent, stop\n //console.log(\"Found nodes with mis-matched values for attribute '\" + name + \"'; not equiv\");\n return false;\n }\n }\n } else if (elm1.getAttribute(name) !== elm2.getAttribute(name)) {\n // console.log(\"Found nodes with mis-matched values for attribute '\" + name + \"'; not equiv\");\n return false;\n }\n }\n\n // Walk the children\n for (node1 = elm1.firstChild, node2 = elm2.firstChild; node1 && node2; node1 = node1.nextSibling, node2 = node2.nextSibling) {\n if (node1.nodeType !== node2.nodeType) {\n // display(\"Found nodes of different types; not equiv\");\n return false;\n }\n if (node1.nodeType === 1) {\n // Element\n if (!DomHandler.isEqualElement(node1, node2)) {\n return false;\n }\n } else if (node1.nodeValue !== node2.nodeValue) {\n // console.log(\"Found nodes with mis-matched nodeValues; not equiv\");\n return false;\n }\n }\n if (node1 || node2) {\n // One of the elements had more nodes than the other\n // console.log(\"Found more children of one element than the other; not equivalent\");\n return false;\n }\n\n // Seem the same\n return true;\n }\n }, {\n key: \"hasCSSAnimation\",\n value: function hasCSSAnimation(element) {\n if (element) {\n var style = getComputedStyle(element);\n var animationDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');\n return animationDuration > 0;\n }\n return false;\n }\n }, {\n key: \"hasCSSTransition\",\n value: function hasCSSTransition(element) {\n if (element) {\n var style = getComputedStyle(element);\n var transitionDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');\n return transitionDuration > 0;\n }\n return false;\n }\n }]);\n}();\n/**\n * All data- properties like data-test-id\n */\n_defineProperty(DomHandler, \"DATA_PROPS\", ['data-']);\n/**\n * All ARIA properties like aria-label and focus-target for https://www.npmjs.com/package/@q42/floating-focus-a11y\n */\n_defineProperty(DomHandler, \"ARIA_PROPS\", ['aria', 'focus-target']);\n\nfunction EventBus() {\n var allHandlers = new Map();\n return {\n on: function on(type, handler) {\n var handlers = allHandlers.get(type);\n if (!handlers) {\n handlers = [handler];\n } else {\n handlers.push(handler);\n }\n allHandlers.set(type, handlers);\n },\n off: function off(type, handler) {\n var handlers = allHandlers.get(type);\n handlers && handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n },\n emit: function emit(type, evt) {\n var handlers = allHandlers.get(type);\n handlers && handlers.slice().forEach(function (handler) {\n return handler(evt);\n });\n }\n };\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar ObjectUtils = /*#__PURE__*/function () {\n function ObjectUtils() {\n _classCallCheck(this, ObjectUtils);\n }\n return _createClass(ObjectUtils, null, [{\n key: \"equals\",\n value: function equals(obj1, obj2, field) {\n if (field && obj1 && _typeof(obj1) === 'object' && obj2 && _typeof(obj2) === 'object') {\n return this.deepEquals(this.resolveFieldData(obj1, field), this.resolveFieldData(obj2, field));\n }\n return this.deepEquals(obj1, obj2);\n }\n\n /**\n * Compares two JSON objects for deep equality recursively comparing both objects.\n * @param {*} a the first JSON object\n * @param {*} b the second JSON object\n * @returns true if equals, false it not\n */\n }, {\n key: \"deepEquals\",\n value: function deepEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var arrA = Array.isArray(a);\n var arrB = Array.isArray(b);\n var i;\n var length;\n var key;\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!this.deepEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (arrA !== arrB) {\n return false;\n }\n var dateA = a instanceof Date;\n var dateB = b instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n if (dateA && dateB) {\n return a.getTime() === b.getTime();\n }\n var regexpA = a instanceof RegExp;\n var regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n if (regexpA && regexpB) {\n return a.toString() === b.toString();\n }\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.deepEquals(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n /*eslint no-self-compare: \"off\"*/\n return a !== a && b !== b;\n }\n }, {\n key: \"resolveFieldData\",\n value: function resolveFieldData(data, field) {\n if (!data || !field) {\n // short circuit if there is nothing to resolve\n return null;\n }\n try {\n var value = data[field];\n if (this.isNotEmpty(value)) {\n return value;\n }\n } catch (_unused) {\n // Performance optimization: https://github.com/primefaces/primereact/issues/4797\n // do nothing and continue to other methods to resolve field data\n }\n if (Object.keys(data).length) {\n if (this.isFunction(field)) {\n return field(data);\n } else if (this.isNotEmpty(data[field])) {\n return data[field];\n } else if (field.indexOf('.') === -1) {\n return data[field];\n }\n var fields = field.split('.');\n var _value = data;\n for (var i = 0, len = fields.length; i < len; ++i) {\n if (_value == null) {\n return null;\n }\n _value = _value[fields[i]];\n }\n return _value;\n }\n return null;\n }\n }, {\n key: \"findDiffKeys\",\n value: function findDiffKeys(obj1, obj2) {\n if (!obj1 || !obj2) {\n return {};\n }\n return Object.keys(obj1).filter(function (key) {\n return !obj2.hasOwnProperty(key);\n }).reduce(function (result, current) {\n result[current] = obj1[current];\n return result;\n }, {});\n }\n\n /**\n * Removes keys from a JSON object that start with a string such as \"data\" to get all \"data-id\" type properties.\n *\n * @param {any} obj the JSON object to reduce\n * @param {string[]} startsWiths the string(s) to check if the property starts with this key\n * @returns the JSON object containing only the key/values that match the startsWith string\n */\n }, {\n key: \"reduceKeys\",\n value: function reduceKeys(obj, startsWiths) {\n var result = {};\n if (!obj || !startsWiths || startsWiths.length === 0) {\n return result;\n }\n Object.keys(obj).filter(function (key) {\n return startsWiths.some(function (value) {\n return key.startsWith(value);\n });\n }).forEach(function (key) {\n result[key] = obj[key];\n delete obj[key];\n });\n return result;\n }\n }, {\n key: \"reorderArray\",\n value: function reorderArray(value, from, to) {\n if (value && from !== to) {\n if (to >= value.length) {\n to = to % value.length;\n from = from % value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n }, {\n key: \"findIndexInList\",\n value: function findIndexInList(value, list, dataKey) {\n var _this = this;\n if (list) {\n return dataKey ? list.findIndex(function (item) {\n return _this.equals(item, value, dataKey);\n }) : list.findIndex(function (item) {\n return item === value;\n });\n }\n return -1;\n }\n }, {\n key: \"getJSXElement\",\n value: function getJSXElement(obj) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return this.isFunction(obj) ? obj.apply(void 0, params) : obj;\n }\n }, {\n key: \"getItemValue\",\n value: function getItemValue(obj) {\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return this.isFunction(obj) ? obj.apply(void 0, params) : obj;\n }\n }, {\n key: \"getProp\",\n value: function getProp(props) {\n var prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var value = props ? props[prop] : undefined;\n return value === undefined ? defaultProps[prop] : value;\n }\n }, {\n key: \"getPropCaseInsensitive\",\n value: function getPropCaseInsensitive(props, prop) {\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var fkey = this.toFlatCase(prop);\n for (var key in props) {\n if (props.hasOwnProperty(key) && this.toFlatCase(key) === fkey) {\n return props[key];\n }\n }\n for (var _key3 in defaultProps) {\n if (defaultProps.hasOwnProperty(_key3) && this.toFlatCase(_key3) === fkey) {\n return defaultProps[_key3];\n }\n }\n return undefined; // Property not found\n }\n }, {\n key: \"getMergedProps\",\n value: function getMergedProps(props, defaultProps) {\n return Object.assign({}, defaultProps, props);\n }\n }, {\n key: \"getDiffProps\",\n value: function getDiffProps(props, defaultProps) {\n return this.findDiffKeys(props, defaultProps);\n }\n }, {\n key: \"getPropValue\",\n value: function getPropValue(obj) {\n for (var _len3 = arguments.length, params = new Array(_len3 > 1 ? _len3 - 1 : 0), _key4 = 1; _key4 < _len3; _key4++) {\n params[_key4 - 1] = arguments[_key4];\n }\n return this.isFunction(obj) ? obj.apply(void 0, params) : obj;\n }\n }, {\n key: \"getComponentProp\",\n value: function getComponentProp(component) {\n var prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.isNotEmpty(component) ? this.getProp(component.props, prop, defaultProps) : undefined;\n }\n }, {\n key: \"getComponentProps\",\n value: function getComponentProps(component, defaultProps) {\n return this.isNotEmpty(component) ? this.getMergedProps(component.props, defaultProps) : undefined;\n }\n }, {\n key: \"getComponentDiffProps\",\n value: function getComponentDiffProps(component, defaultProps) {\n return this.isNotEmpty(component) ? this.getDiffProps(component.props, defaultProps) : undefined;\n }\n }, {\n key: \"isValidChild\",\n value: function isValidChild(child, type, validTypes) {\n /* eslint-disable */\n if (child) {\n var _child$type;\n var childType = this.getComponentProp(child, '__TYPE') || (child.type ? child.type.displayName : undefined);\n\n // for App Router in Next.js ^14,\n if (!childType && child !== null && child !== void 0 && (_child$type = child.type) !== null && _child$type !== void 0 && (_child$type = _child$type._payload) !== null && _child$type !== void 0 && _child$type.value) {\n childType = child.type._payload.value.find(function (v) {\n return v === type;\n });\n }\n var isValid = childType === type;\n try {\n var messageTypes; if (\"production\" !== 'production' && !isValid) ;\n } catch (error) {\n // NOOP\n }\n return isValid;\n }\n return false;\n /* eslint-enable */\n }\n }, {\n key: \"getRefElement\",\n value: function getRefElement(ref) {\n if (ref) {\n return _typeof(ref) === 'object' && ref.hasOwnProperty('current') ? ref.current : ref;\n }\n return null;\n }\n }, {\n key: \"combinedRefs\",\n value: function combinedRefs(innerRef, forwardRef) {\n if (innerRef && forwardRef) {\n if (typeof forwardRef === 'function') {\n forwardRef(innerRef.current);\n } else {\n forwardRef.current = innerRef.current;\n }\n }\n }\n }, {\n key: \"removeAccents\",\n value: function removeAccents(str) {\n if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str.replace(/[\\xC0-\\xC5]/g, 'A').replace(/[\\xC6]/g, 'AE').replace(/[\\xC7]/g, 'C').replace(/[\\xC8-\\xCB]/g, 'E').replace(/[\\xCC-\\xCF]/g, 'I').replace(/[\\xD0]/g, 'D').replace(/[\\xD1]/g, 'N').replace(/[\\xD2-\\xD6\\xD8]/g, 'O').replace(/[\\xD9-\\xDC]/g, 'U').replace(/[\\xDD]/g, 'Y').replace(/[\\xDE]/g, 'P').replace(/[\\xE0-\\xE5]/g, 'a').replace(/[\\xE6]/g, 'ae').replace(/[\\xE7]/g, 'c').replace(/[\\xE8-\\xEB]/g, 'e').replace(/[\\xEC-\\xEF]/g, 'i').replace(/[\\xF1]/g, 'n').replace(/[\\xF2-\\xF6\\xF8]/g, 'o').replace(/[\\xF9-\\xFC]/g, 'u').replace(/[\\xFE]/g, 'p').replace(/[\\xFD\\xFF]/g, 'y');\n }\n return str;\n }\n }, {\n key: \"toFlatCase\",\n value: function toFlatCase(str) {\n // convert snake, kebab, camel and pascal cases to flat case\n return this.isNotEmpty(str) && this.isString(str) ? str.replace(/(-|_)/g, '').toLowerCase() : str;\n }\n }, {\n key: \"toCapitalCase\",\n value: function toCapitalCase(str) {\n return this.isNotEmpty(str) && this.isString(str) ? str[0].toUpperCase() + str.slice(1) : str;\n }\n }, {\n key: \"trim\",\n value: function trim(value) {\n // trim only if the value is actually a string\n return this.isNotEmpty(value) && this.isString(value) ? value.trim() : value;\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty(value) {\n return value === null || value === undefined || value === '' || Array.isArray(value) && value.length === 0 || !(value instanceof Date) && _typeof(value) === 'object' && Object.keys(value).length === 0;\n }\n }, {\n key: \"isNotEmpty\",\n value: function isNotEmpty(value) {\n return !this.isEmpty(value);\n }\n }, {\n key: \"isFunction\",\n value: function isFunction(value) {\n return !!(value && value.constructor && value.call && value.apply);\n }\n }, {\n key: \"isObject\",\n value: function isObject(value) {\n return value !== null && value instanceof Object && value.constructor === Object;\n }\n }, {\n key: \"isDate\",\n value: function isDate(value) {\n return value !== null && value instanceof Date && value.constructor === Date;\n }\n }, {\n key: \"isArray\",\n value: function isArray(value) {\n return value !== null && Array.isArray(value);\n }\n }, {\n key: \"isString\",\n value: function isString(value) {\n return value !== null && typeof value === 'string';\n }\n }, {\n key: \"isPrintableCharacter\",\n value: function isPrintableCharacter() {\n var _char = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return this.isNotEmpty(_char) && _char.length === 1 && _char.match(/\\S| /);\n }\n }, {\n key: \"isLetter\",\n value: function isLetter(_char2) {\n return /^[a-zA-Z\\u00C0-\\u017F]$/.test(_char2);\n }\n }, {\n key: \"isScalar\",\n value: function isScalar(value) {\n return value != null && (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint' || typeof value === 'boolean');\n }\n\n /**\n * Firefox-v103 does not currently support the \"findLast\" method. It is stated that this method will be supported with Firefox-v104.\n * https://caniuse.com/mdn-javascript_builtins_array_findlast\n */\n }, {\n key: \"findLast\",\n value: function findLast(arr, callback) {\n var item;\n if (this.isNotEmpty(arr)) {\n try {\n item = arr.findLast(callback);\n } catch (_unused2) {\n item = _toConsumableArray(arr).reverse().find(callback);\n }\n }\n return item;\n }\n\n /**\n * Firefox-v103 does not currently support the \"findLastIndex\" method. It is stated that this method will be supported with Firefox-v104.\n * https://caniuse.com/mdn-javascript_builtins_array_findlastindex\n */\n }, {\n key: \"findLastIndex\",\n value: function findLastIndex(arr, callback) {\n var index = -1;\n if (this.isNotEmpty(arr)) {\n try {\n index = arr.findLastIndex(callback);\n } catch (_unused3) {\n index = arr.lastIndexOf(_toConsumableArray(arr).reverse().find(callback));\n }\n }\n return index;\n }\n }, {\n key: \"sort\",\n value: function sort(value1, value2) {\n var order = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var comparator = arguments.length > 3 ? arguments[3] : undefined;\n var nullSortOrder = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var result = this.compare(value1, value2, comparator, order);\n var finalSortOrder = order;\n\n // nullSortOrder == 1 means Excel like sort nulls at bottom\n if (this.isEmpty(value1) || this.isEmpty(value2)) {\n finalSortOrder = nullSortOrder === 1 ? order : nullSortOrder;\n }\n return finalSortOrder * result;\n }\n }, {\n key: \"compare\",\n value: function compare(value1, value2, comparator) {\n var order = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var result = -1;\n var emptyValue1 = this.isEmpty(value1);\n var emptyValue2 = this.isEmpty(value2);\n if (emptyValue1 && emptyValue2) {\n result = 0;\n } else if (emptyValue1) {\n result = order;\n } else if (emptyValue2) {\n result = -order;\n } else if (typeof value1 === 'string' && typeof value2 === 'string') {\n result = comparator(value1, value2);\n } else {\n result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n }\n return result;\n }\n }, {\n key: \"localeComparator\",\n value: function localeComparator(locale) {\n //performance gain using Int.Collator. It is not recommended to use localeCompare against large arrays.\n return new Intl.Collator(locale, {\n numeric: true\n }).compare;\n }\n }, {\n key: \"findChildrenByKey\",\n value: function findChildrenByKey(data, key) {\n var _iterator = _createForOfIteratorHelper(data),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n if (item.key === key) {\n return item.children || [];\n } else if (item.children) {\n var result = this.findChildrenByKey(item.children, key);\n if (result.length > 0) {\n return result;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return [];\n }\n\n /**\n * This function takes mutates and object with a new value given\n * a specific field. This will handle deeply nested fields that\n * need to be modified or created.\n *\n * e.g:\n * data = {\n * nested: {\n * foo: \"bar\"\n * }\n * }\n *\n * field = \"nested.foo\"\n * value = \"baz\"\n *\n * The function will mutate data to be\n * e.g:\n * data = {\n * nested: {\n * foo: \"baz\"\n * }\n * }\n *\n * @param {object} data the object to be modified\n * @param {string} field the field in the object to replace\n * @param {any} value the value to have replaced in the field\n */\n }, {\n key: \"mutateFieldData\",\n value: function mutateFieldData(data, field, value) {\n if (_typeof(data) !== 'object' || typeof field !== 'string') {\n // short circuit if there is nothing to resolve\n return;\n }\n var fields = field.split('.');\n var obj = data;\n for (var i = 0, len = fields.length; i < len; ++i) {\n // Check if we are on the last field\n if (i + 1 - len === 0) {\n obj[fields[i]] = value;\n break;\n }\n if (!obj[fields[i]]) {\n obj[fields[i]] = {};\n }\n obj = obj[fields[i]];\n }\n }\n }]);\n}();\n\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar IconUtils = /*#__PURE__*/function () {\n function IconUtils() {\n _classCallCheck(this, IconUtils);\n }\n return _createClass(IconUtils, null, [{\n key: \"getJSXIcon\",\n value: function getJSXIcon(icon) {\n var iconProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = null;\n if (icon !== null) {\n var iconType = _typeof(icon);\n var className = classNames(iconProps.className, iconType === 'string' && icon);\n content = /*#__PURE__*/React.createElement(\"span\", _extends({}, iconProps, {\n className: className\n }));\n if (iconType !== 'string') {\n var defaultContentOptions = _objectSpread$2({\n iconProps: iconProps,\n element: content\n }, options);\n return ObjectUtils.getJSXElement(icon, defaultContentOptions);\n }\n }\n return content;\n }\n }]);\n}();\n\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction mask(el, options) {\n var defaultOptions = {\n mask: null,\n slotChar: '_',\n autoClear: true,\n unmask: false,\n readOnly: false,\n onComplete: null,\n onChange: null,\n onFocus: null,\n onBlur: null\n };\n options = _objectSpread$1(_objectSpread$1({}, defaultOptions), options);\n var tests;\n var partialPosition;\n var len;\n var firstNonMaskPos;\n var defs;\n var androidChrome;\n var lastRequiredNonMaskPos;\n var oldVal;\n var focusText;\n var caretTimeoutId;\n var buffer;\n var defaultBuffer;\n var caret = function caret(first, last) {\n var range;\n var begin;\n var end;\n if (!el.offsetParent || el !== document.activeElement) {\n return;\n }\n if (typeof first === 'number') {\n begin = first;\n end = typeof last === 'number' ? last : begin;\n if (el.setSelectionRange) {\n el.setSelectionRange(begin, end);\n } else if (el.createTextRange) {\n range = el.createTextRange();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n } else {\n if (el.setSelectionRange) {\n begin = el.selectionStart;\n end = el.selectionEnd;\n } else if (document.selection && document.selection.createRange) {\n range = document.selection.createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n return {\n begin: begin,\n end: end\n };\n }\n };\n var isCompleted = function isCompleted() {\n for (var i = firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) {\n if (tests[i] && buffer[i] === getPlaceholder(i)) {\n return false;\n }\n }\n return true;\n };\n var getPlaceholder = function getPlaceholder(i) {\n if (i < options.slotChar.length) {\n return options.slotChar.charAt(i);\n }\n return options.slotChar.charAt(0);\n };\n var getValue = function getValue() {\n return options.unmask ? getUnmaskedValue() : el && el.value;\n };\n var seekNext = function seekNext(pos) {\n while (++pos < len && !tests[pos]) {}\n return pos;\n };\n var seekPrev = function seekPrev(pos) {\n while (--pos >= 0 && !tests[pos]) {}\n return pos;\n };\n var shiftL = function shiftL(begin, end) {\n var i;\n var j;\n if (begin < 0) {\n return;\n }\n for (i = begin, j = seekNext(end); i < len; i++) {\n if (tests[i]) {\n if (j < len && tests[i].test(buffer[j])) {\n buffer[i] = buffer[j];\n buffer[j] = getPlaceholder(j);\n } else {\n break;\n }\n j = seekNext(j);\n }\n }\n writeBuffer();\n caret(Math.max(firstNonMaskPos, begin));\n };\n var shiftR = function shiftR(pos) {\n var i;\n var c;\n var j;\n var t;\n for (i = pos, c = getPlaceholder(pos); i < len; i++) {\n if (tests[i]) {\n j = seekNext(i);\n t = buffer[i];\n buffer[i] = c;\n if (j < len && tests[j].test(t)) {\n c = t;\n } else {\n break;\n }\n }\n }\n };\n var handleAndroidInput = function handleAndroidInput(e) {\n var curVal = el.value;\n var pos = caret();\n if (oldVal && oldVal.length && oldVal.length > curVal.length) {\n // a deletion or backspace happened\n checkVal(true);\n while (pos.begin > 0 && !tests[pos.begin - 1]) {\n pos.begin--;\n }\n if (pos.begin === 0) {\n while (pos.begin < firstNonMaskPos && !tests[pos.begin]) {\n pos.begin++;\n }\n }\n caret(pos.begin, pos.begin);\n } else {\n checkVal(true);\n while (pos.begin < len && !tests[pos.begin]) {\n pos.begin++;\n }\n caret(pos.begin, pos.begin);\n }\n if (options.onComplete && isCompleted()) {\n options.onComplete({\n originalEvent: e,\n value: getValue()\n });\n }\n };\n var onBlur = function onBlur(e) {\n checkVal();\n options.onBlur && options.onBlur(e);\n updateModel(e);\n if (el.value !== focusText) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent('change', true, false);\n el.dispatchEvent(event);\n }\n };\n var onKeyDown = function onKeyDown(e) {\n if (options.readOnly) {\n return;\n }\n var k = e.which || e.keyCode;\n var pos;\n var begin;\n var end;\n oldVal = el.value;\n\n //backspace, delete, and escape get special treatment\n if (k === 8 || k === 46 || DomHandler.isIOS() && k === 127) {\n pos = caret();\n begin = pos.begin;\n end = pos.end;\n if (end - begin === 0) {\n begin = k !== 46 ? seekPrev(begin) : end = seekNext(begin - 1);\n end = k === 46 ? seekNext(end) : end;\n }\n clearBuffer(begin, end);\n shiftL(begin, end - 1);\n updateModel(e);\n e.preventDefault();\n } else if (k === 13) {\n // enter\n onBlur(e);\n updateModel(e);\n } else if (k === 27) {\n // escape\n el.value = focusText;\n caret(0, checkVal());\n updateModel(e);\n e.preventDefault();\n }\n };\n var onKeyPress = function onKeyPress(e) {\n if (options.readOnly) {\n return;\n }\n var k = e.which || e.keyCode;\n var pos = caret();\n var p;\n var c;\n var next;\n var completed;\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {\n //Ignore\n return;\n } else if (k && k !== 13) {\n if (pos.end - pos.begin !== 0) {\n clearBuffer(pos.begin, pos.end);\n shiftL(pos.begin, pos.end - 1);\n }\n p = seekNext(pos.begin - 1);\n if (p < len) {\n c = String.fromCharCode(k);\n if (tests[p].test(c)) {\n shiftR(p);\n buffer[p] = c;\n writeBuffer();\n next = seekNext(p);\n if (DomHandler.isAndroid()) {\n //Path for CSP Violation on FireFox OS 1.1\n var proxy = function proxy() {\n caret(next);\n };\n setTimeout(proxy, 0);\n } else {\n caret(next);\n }\n if (pos.begin <= lastRequiredNonMaskPos) {\n completed = isCompleted();\n }\n }\n }\n e.preventDefault();\n }\n updateModel(e);\n if (options.onComplete && completed) {\n options.onComplete({\n originalEvent: e,\n value: getValue()\n });\n }\n };\n var clearBuffer = function clearBuffer(start, end) {\n var i;\n for (i = start; i < end && i < len; i++) {\n if (tests[i]) {\n buffer[i] = getPlaceholder(i);\n }\n }\n };\n var writeBuffer = function writeBuffer() {\n el.value = buffer.join('');\n };\n var checkVal = function checkVal(allow) {\n //try to place characters where they belong\n var test = el.value;\n var lastMatch = -1;\n var i;\n var c;\n var pos;\n for (i = 0, pos = 0; i < len; i++) {\n if (tests[i]) {\n buffer[i] = getPlaceholder(i);\n while (pos++ < test.length) {\n c = test.charAt(pos - 1);\n if (tests[i].test(c)) {\n buffer[i] = c;\n lastMatch = i;\n break;\n }\n }\n if (pos > test.length) {\n clearBuffer(i + 1, len);\n break;\n }\n } else {\n if (buffer[i] === test.charAt(pos)) {\n pos++;\n }\n if (i < partialPosition) {\n lastMatch = i;\n }\n }\n }\n if (allow) {\n writeBuffer();\n } else if (lastMatch + 1 < partialPosition) {\n if (options.autoClear || buffer.join('') === defaultBuffer) {\n // Invalid value. Remove it and replace it with the\n // mask, which is the default behavior.\n if (el.value) {\n el.value = '';\n }\n clearBuffer(0, len);\n } else {\n // Invalid value, but we opt to show the value to the\n // user and allow them to correct their mistake.\n writeBuffer();\n }\n } else {\n writeBuffer();\n el.value = el.value.substring(0, lastMatch + 1);\n }\n return partialPosition ? i : firstNonMaskPos;\n };\n var onFocus = function onFocus(e) {\n if (options.readOnly) {\n return;\n }\n clearTimeout(caretTimeoutId);\n var pos;\n focusText = el.value;\n pos = checkVal();\n caretTimeoutId = setTimeout(function () {\n if (el !== document.activeElement) {\n return;\n }\n writeBuffer();\n if (pos === options.mask.replace('?', '').length) {\n caret(0, pos);\n } else {\n caret(pos);\n }\n }, 100);\n if (options.onFocus) {\n options.onFocus(e);\n }\n };\n var onInput = function onInput(event) {\n if (androidChrome) {\n handleAndroidInput(event);\n } else {\n handleInputChange(event);\n }\n };\n var handleInputChange = function handleInputChange(e) {\n if (options.readOnly) {\n return;\n }\n var pos = checkVal(true);\n caret(pos);\n updateModel(e);\n if (options.onComplete && isCompleted()) {\n options.onComplete({\n originalEvent: e,\n value: getValue()\n });\n }\n };\n var getUnmaskedValue = function getUnmaskedValue() {\n var unmaskedBuffer = [];\n for (var i = 0; i < buffer.length; i++) {\n var c = buffer[i];\n if (tests[i] && c !== getPlaceholder(i)) {\n unmaskedBuffer.push(c);\n }\n }\n return unmaskedBuffer.join('');\n };\n var updateModel = function updateModel(e) {\n if (options.onChange) {\n var val = getValue();\n options.onChange({\n originalEvent: e,\n value: defaultBuffer !== val ? val : '',\n stopPropagation: function stopPropagation() {\n e.stopPropagation();\n },\n preventDefault: function preventDefault() {\n e.preventDefault();\n },\n target: {\n value: defaultBuffer !== val ? val : ''\n }\n });\n }\n };\n var bindEvents = function bindEvents() {\n el.addEventListener('focus', onFocus);\n el.addEventListener('blur', onBlur);\n el.addEventListener('keydown', onKeyDown);\n el.addEventListener('keypress', onKeyPress);\n el.addEventListener('input', onInput);\n el.addEventListener('paste', handleInputChange);\n };\n var unbindEvents = function unbindEvents() {\n el.removeEventListener('focus', onFocus);\n el.removeEventListener('blur', onBlur);\n el.removeEventListener('keydown', onKeyDown);\n el.removeEventListener('keypress', onKeyPress);\n el.removeEventListener('input', onInput);\n el.removeEventListener('paste', handleInputChange);\n };\n var init = function init() {\n tests = [];\n partialPosition = options.mask.length;\n len = options.mask.length;\n firstNonMaskPos = null;\n defs = {\n 9: '[0-9]',\n a: '[A-Za-z]',\n '*': '[A-Za-z0-9]'\n };\n androidChrome = DomHandler.isChrome() && DomHandler.isAndroid();\n var maskTokens = options.mask.split('');\n for (var i = 0; i < maskTokens.length; i++) {\n var c = maskTokens[i];\n if (c === '?') {\n len--;\n partialPosition = i;\n } else if (defs[c]) {\n tests.push(new RegExp(defs[c]));\n if (firstNonMaskPos === null) {\n firstNonMaskPos = tests.length - 1;\n }\n if (i < partialPosition) {\n lastRequiredNonMaskPos = tests.length - 1;\n }\n } else {\n tests.push(null);\n }\n }\n buffer = [];\n for (var _i = 0; _i < maskTokens.length; _i++) {\n var _c = maskTokens[_i];\n if (_c !== '?') {\n if (defs[_c]) {\n buffer.push(getPlaceholder(_i));\n } else {\n buffer.push(_c);\n }\n }\n }\n defaultBuffer = buffer.join('');\n };\n if (el && options.mask) {\n init();\n bindEvents();\n }\n return {\n init: init,\n bindEvents: bindEvents,\n unbindEvents: unbindEvents,\n updateModel: updateModel,\n getValue: getValue\n };\n}\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * Merges properties together taking an Array of props and merging into one single set of\n * properties. The options can contain a \"classNameMergeFunction\" which can be something\n * like Tailwind Merge for properly merging Tailwind classes.\n *\n * @param {object[]} props the array of object properties to merge\n * @param {*} options either empty or could contain a custom merge function like TailwindMerge\n * @returns the single properties value after merging\n */\nfunction mergeProps(props) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!props) {\n return undefined;\n }\n var isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n };\n var classNameMergeFunction = options.classNameMergeFunction;\n var hasMergeFunction = isFunction(classNameMergeFunction);\n return props.reduce(function (merged, ps) {\n if (!ps) {\n return merged;\n }\n var _loop = function _loop() {\n var value = ps[key];\n if (key === 'style') {\n merged.style = _objectSpread(_objectSpread({}, merged.style), ps.style);\n } else if (key === 'className') {\n var newClassName = '';\n if (hasMergeFunction) {\n newClassName = classNameMergeFunction(merged.className, ps.className);\n } else {\n newClassName = [merged.className, ps.className].join(' ').trim();\n }\n merged.className = newClassName || undefined;\n } else if (isFunction(value)) {\n var existingFn = merged[key];\n merged[key] = existingFn ? function () {\n existingFn.apply(void 0, arguments);\n value.apply(void 0, arguments);\n } : value;\n } else {\n merged[key] = value;\n }\n };\n for (var key in ps) {\n _loop();\n }\n return merged;\n }, {});\n}\n\nvar lastId = 0;\nfunction UniqueComponentId() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'pr_id_';\n lastId++;\n return \"\".concat(prefix).concat(lastId);\n}\n\nfunction handler() {\n var zIndexes = [];\n var generateZIndex = function generateZIndex(key, autoZIndex) {\n var baseZIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 999;\n var lastZIndex = getLastZIndex(key, autoZIndex, baseZIndex);\n var newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n zIndexes.push({\n key: key,\n value: newZIndex\n });\n return newZIndex;\n };\n var revertZIndex = function revertZIndex(zIndex) {\n zIndexes = zIndexes.filter(function (obj) {\n return obj.value !== zIndex;\n });\n };\n var getCurrentZIndex = function getCurrentZIndex(key, autoZIndex) {\n return getLastZIndex(key, autoZIndex).value;\n };\n var getLastZIndex = function getLastZIndex(key, autoZIndex) {\n var baseZIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return _toConsumableArray(zIndexes).reverse().find(function (obj) {\n return autoZIndex ? true : obj.key === key;\n }) || {\n key: key,\n value: baseZIndex\n };\n };\n var getZIndex = function getZIndex(el) {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n return {\n get: getZIndex,\n set: function set(key, el, autoZIndex, baseZIndex) {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, autoZIndex, baseZIndex));\n }\n },\n clear: function clear(el) {\n if (el) {\n revertZIndex(ZIndexUtils.get(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: function getCurrent(key, autoZIndex) {\n return getCurrentZIndex(key, autoZIndex);\n }\n };\n}\nvar ZIndexUtils = handler();\n\nexport { DomHandler, EventBus, IconUtils, ObjectUtils, UniqueComponentId, ZIndexUtils, classNames, mask, mergeProps };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _arrays = _interopRequireDefault(require(\"shallow-equal/arrays\"));\n\nvar _Autowhatever = _interopRequireDefault(require(\"./Autowhatever\"));\n\nvar _theme = require(\"./theme\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar alwaysTrue = function alwaysTrue() {\n return true;\n};\n\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n return value.trim().length > 0;\n};\n\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar REASON_SUGGESTIONS_REVEALED = 'suggestions-revealed';\nvar REASON_SUGGESTIONS_UPDATED = 'suggestions-updated';\nvar REASON_SUGGESTION_SELECTED = 'suggestion-selected';\nvar REASON_INPUT_FOCUSED = 'input-focused';\nvar REASON_INPUT_CHANGED = 'input-changed';\nvar REASON_INPUT_BLURRED = 'input-blurred';\nvar REASON_ESCAPE_PRESSED = 'escape-pressed';\n\nvar Autosuggest = /*#__PURE__*/function (_Component) {\n _inherits(Autosuggest, _Component);\n\n var _super = _createSuper(Autosuggest);\n\n function Autosuggest(_ref2) {\n var _this;\n\n var _alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n\n _classCallCheck(this, Autosuggest);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseDown\", function (event) {\n _this.justClickedOnSuggestionsContainer = false;\n var node = event.detail && event.detail.target || // This is for testing only. Please show me a better way to emulate this.\n event.target;\n\n while (node !== null && node !== document) {\n if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n // Suggestion was clicked\n return;\n }\n\n if (node === _this.suggestionsContainer) {\n // Something else inside suggestions container was clicked\n _this.justClickedOnSuggestionsContainer = true;\n return;\n }\n\n node = node.parentNode;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"storeAutowhateverRef\", function (autowhatever) {\n if (autowhatever !== null) {\n _this.autowhatever = autowhatever;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseEnter\", function (event, _ref3) {\n var sectionIndex = _ref3.sectionIndex,\n itemIndex = _ref3.itemIndex;\n\n _this.updateHighlightedSuggestion(sectionIndex, itemIndex);\n\n if (event.target === _this.pressedSuggestion) {\n _this.justSelectedSuggestion = true;\n }\n\n _this.justMouseEntered = true;\n setTimeout(function () {\n _this.justMouseEntered = false;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"highlightFirstSuggestion\", function () {\n _this.updateHighlightedSuggestion(_this.props.multiSection ? 0 : null, 0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseUp\", function () {\n if (_this.pressedSuggestion && !_this.justSelectedSuggestion) {\n _this.input.focus();\n }\n\n _this.pressedSuggestion = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseDown\", function (event) {\n // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n if (!_this.justSelectedSuggestion) {\n _this.justSelectedSuggestion = true;\n _this.pressedSuggestion = event.target;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionsClearRequested\", function () {\n var onSuggestionsClearRequested = _this.props.onSuggestionsClearRequested;\n onSuggestionsClearRequested && onSuggestionsClearRequested();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionSelected\", function (event, data) {\n var _this$props = _this.props,\n alwaysRenderSuggestions = _this$props.alwaysRenderSuggestions,\n onSuggestionSelected = _this$props.onSuggestionSelected,\n onSuggestionsFetchRequested = _this$props.onSuggestionsFetchRequested;\n onSuggestionSelected && onSuggestionSelected(event, data);\n\n var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(data.suggestion);\n\n if (alwaysRenderSuggestions || keepSuggestionsOnSelect) {\n onSuggestionsFetchRequested({\n value: data.suggestionValue,\n reason: REASON_SUGGESTION_SELECTED\n });\n } else {\n _this.onSuggestionsClearRequested();\n }\n\n _this.resetHighlightedSuggestion();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionClick\", function (event) {\n var _this$props2 = _this.props,\n alwaysRenderSuggestions = _this$props2.alwaysRenderSuggestions,\n focusInputOnSuggestionClick = _this$props2.focusInputOnSuggestionClick;\n\n var _this$getSuggestionIn = _this.getSuggestionIndices(_this.findSuggestionElement(event.target)),\n sectionIndex = _this$getSuggestionIn.sectionIndex,\n suggestionIndex = _this$getSuggestionIn.suggestionIndex;\n\n var clickedSuggestion = _this.getSuggestion(sectionIndex, suggestionIndex);\n\n var clickedSuggestionValue = _this.props.getSuggestionValue(clickedSuggestion);\n\n _this.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n\n _this.onSuggestionSelected(event, {\n suggestion: clickedSuggestion,\n suggestionValue: clickedSuggestionValue,\n suggestionIndex: suggestionIndex,\n sectionIndex: sectionIndex,\n method: 'click'\n });\n\n var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(clickedSuggestion);\n\n if (!(alwaysRenderSuggestions || keepSuggestionsOnSelect)) {\n _this.closeSuggestions();\n }\n\n if (focusInputOnSuggestionClick === true) {\n _this.input.focus();\n } else {\n _this.onBlur();\n }\n\n setTimeout(function () {\n _this.justSelectedSuggestion = false;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n var _this$props3 = _this.props,\n inputProps = _this$props3.inputProps,\n shouldRenderSuggestions = _this$props3.shouldRenderSuggestions;\n var value = inputProps.value,\n onBlur = inputProps.onBlur;\n\n var highlightedSuggestion = _this.getHighlightedSuggestion();\n\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_BLURRED);\n\n _this.setState({\n isFocused: false,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n });\n\n onBlur && onBlur(_this.blurEvent, {\n highlightedSuggestion: highlightedSuggestion\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseLeave\", function (event) {\n _this.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n\n if (_this.justSelectedSuggestion && event.target === _this.pressedSuggestion) {\n _this.justSelectedSuggestion = false;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchStart\", function () {\n _this.justSelectedSuggestion = true; // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n // todo: gets released so onSuggestionMouseDown won't fire in chrome\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchMove\", function () {\n _this.justSelectedSuggestion = false;\n _this.pressedSuggestion = null;\n\n _this.input.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"itemProps\", function (_ref4) {\n var sectionIndex = _ref4.sectionIndex,\n itemIndex = _ref4.itemIndex;\n return {\n 'data-section-index': sectionIndex,\n 'data-suggestion-index': itemIndex,\n onMouseEnter: _this.onSuggestionMouseEnter,\n onMouseLeave: _this.onSuggestionMouseLeave,\n onMouseDown: _this.onSuggestionMouseDown,\n onTouchStart: _this.onSuggestionTouchStart,\n onTouchMove: _this.onSuggestionTouchMove,\n onClick: _this.onSuggestionClick\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsContainer\", function (_ref5) {\n var containerProps = _ref5.containerProps,\n children = _ref5.children;\n var renderSuggestionsContainer = _this.props.renderSuggestionsContainer;\n return renderSuggestionsContainer({\n containerProps: containerProps,\n children: children,\n query: _this.getQuery()\n });\n });\n\n _this.state = {\n isFocused: false,\n isCollapsed: !_alwaysRenderSuggestions,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null\n };\n _this.justPressedUpDown = false;\n _this.justMouseEntered = false;\n _this.pressedSuggestion = null;\n return _this;\n }\n\n _createClass(Autosuggest, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('mousedown', this.onDocumentMouseDown);\n document.addEventListener('mouseup', this.onDocumentMouseUp);\n this.input = this.autowhatever.input;\n this.suggestionsContainer = this.autowhatever.itemsContainer;\n } // eslint-disable-next-line camelcase, react/sort-comp\n\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n // When highlightFirstSuggestion becomes deactivated, if the first suggestion was\n // set, we should reset the suggestion back to the unselected default state.\n var shouldResetHighlighting = this.state.highlightedSuggestionIndex === 0 && this.props.highlightFirstSuggestion && !nextProps.highlightFirstSuggestion;\n\n if ((0, _arrays[\"default\"])(nextProps.suggestions, this.props.suggestions)) {\n if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n this.highlightFirstSuggestion();\n } else if (shouldResetHighlighting) {\n this.resetHighlightedSuggestion();\n }\n } else {\n if (this.willRenderSuggestions(nextProps, REASON_SUGGESTIONS_UPDATED)) {\n if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n this.revealSuggestions();\n }\n\n if (shouldResetHighlighting) {\n this.resetHighlightedSuggestion();\n }\n } else {\n this.resetHighlightedSuggestion();\n }\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props4 = this.props,\n suggestions = _this$props4.suggestions,\n onSuggestionHighlighted = _this$props4.onSuggestionHighlighted,\n highlightFirstSuggestion = _this$props4.highlightFirstSuggestion;\n\n if (!(0, _arrays[\"default\"])(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n this.highlightFirstSuggestion();\n return;\n }\n\n if (onSuggestionHighlighted) {\n var highlightedSuggestion = this.getHighlightedSuggestion();\n var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n\n if (highlightedSuggestion != prevHighlightedSuggestion) {\n onSuggestionHighlighted({\n suggestion: highlightedSuggestion\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('mousedown', this.onDocumentMouseDown);\n document.removeEventListener('mouseup', this.onDocumentMouseUp);\n }\n }, {\n key: \"updateHighlightedSuggestion\",\n value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n var _this2 = this;\n\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n\n if (suggestionIndex === null) {\n valueBeforeUpDown = null;\n } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n valueBeforeUpDown = prevValue;\n }\n\n return {\n highlightedSectionIndex: sectionIndex,\n highlightedSuggestionIndex: suggestionIndex,\n highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n valueBeforeUpDown: valueBeforeUpDown\n };\n });\n }\n }, {\n key: \"resetHighlightedSuggestion\",\n value: function resetHighlightedSuggestion() {\n var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n return {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n };\n });\n }\n }, {\n key: \"revealSuggestions\",\n value: function revealSuggestions() {\n this.setState({\n isCollapsed: false\n });\n }\n }, {\n key: \"closeSuggestions\",\n value: function closeSuggestions() {\n this.setState({\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: true\n });\n }\n }, {\n key: \"getSuggestion\",\n value: function getSuggestion(sectionIndex, suggestionIndex) {\n var _this$props5 = this.props,\n suggestions = _this$props5.suggestions,\n multiSection = _this$props5.multiSection,\n getSectionSuggestions = _this$props5.getSectionSuggestions;\n\n if (multiSection) {\n return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n }\n\n return suggestions[suggestionIndex];\n }\n }, {\n key: \"getHighlightedSuggestion\",\n value: function getHighlightedSuggestion() {\n var _this$state = this.state,\n highlightedSectionIndex = _this$state.highlightedSectionIndex,\n highlightedSuggestionIndex = _this$state.highlightedSuggestionIndex;\n\n if (highlightedSuggestionIndex === null) {\n return null;\n }\n\n return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n }\n }, {\n key: \"getSuggestionValueByIndex\",\n value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n var getSuggestionValue = this.props.getSuggestionValue;\n return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n }\n }, {\n key: \"getSuggestionIndices\",\n value: function getSuggestionIndices(suggestionElement) {\n var sectionIndex = suggestionElement.getAttribute('data-section-index');\n var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n return {\n sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n suggestionIndex: parseInt(suggestionIndex, 10)\n };\n }\n }, {\n key: \"findSuggestionElement\",\n value: function findSuggestionElement(startNode) {\n var node = startNode;\n\n do {\n if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n return node;\n }\n\n node = node.parentNode;\n } while (node !== null);\n\n console.error('Clicked element:', startNode); // eslint-disable-line no-console\n\n throw new Error(\"Couldn't find suggestion element\");\n }\n }, {\n key: \"maybeCallOnChange\",\n value: function maybeCallOnChange(event, newValue, method) {\n var _this$props$inputProp = this.props.inputProps,\n value = _this$props$inputProp.value,\n onChange = _this$props$inputProp.onChange;\n\n if (newValue !== value) {\n onChange(event, {\n newValue: newValue,\n method: method\n });\n }\n }\n }, {\n key: \"willRenderSuggestions\",\n value: function willRenderSuggestions(props, reason) {\n var suggestions = props.suggestions,\n inputProps = props.inputProps,\n shouldRenderSuggestions = props.shouldRenderSuggestions;\n var value = inputProps.value;\n return suggestions.length > 0 && shouldRenderSuggestions(value, reason);\n }\n }, {\n key: \"getQuery\",\n value: function getQuery() {\n var inputProps = this.props.inputProps;\n var value = inputProps.value;\n var valueBeforeUpDown = this.state.valueBeforeUpDown;\n return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props6 = this.props,\n suggestions = _this$props6.suggestions,\n renderInputComponent = _this$props6.renderInputComponent,\n onSuggestionsFetchRequested = _this$props6.onSuggestionsFetchRequested,\n renderSuggestion = _this$props6.renderSuggestion,\n inputProps = _this$props6.inputProps,\n multiSection = _this$props6.multiSection,\n renderSectionTitle = _this$props6.renderSectionTitle,\n id = _this$props6.id,\n getSectionSuggestions = _this$props6.getSectionSuggestions,\n theme = _this$props6.theme,\n getSuggestionValue = _this$props6.getSuggestionValue,\n alwaysRenderSuggestions = _this$props6.alwaysRenderSuggestions,\n highlightFirstSuggestion = _this$props6.highlightFirstSuggestion,\n containerProps = _this$props6.containerProps;\n var _this$state2 = this.state,\n isFocused = _this$state2.isFocused,\n isCollapsed = _this$state2.isCollapsed,\n highlightedSectionIndex = _this$state2.highlightedSectionIndex,\n highlightedSuggestionIndex = _this$state2.highlightedSuggestionIndex,\n valueBeforeUpDown = _this$state2.valueBeforeUpDown;\n var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n var value = inputProps.value,\n _onFocus = inputProps.onFocus,\n _onKeyDown = inputProps.onKeyDown;\n var willRenderSuggestions = this.willRenderSuggestions(this.props, 'render');\n var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n var items = isOpen ? suggestions : [];\n\n var autowhateverInputProps = _objectSpread({}, inputProps, {\n onFocus: function onFocus(event) {\n if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_FOCUSED);\n\n _this3.setState({\n isFocused: true,\n isCollapsed: !shouldRender\n });\n\n _onFocus && _onFocus(event);\n\n if (shouldRender) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_INPUT_FOCUSED\n });\n }\n }\n },\n onBlur: function onBlur(event) {\n if (_this3.justClickedOnSuggestionsContainer) {\n _this3.input.focus();\n\n return;\n }\n\n _this3.blurEvent = event;\n\n if (!_this3.justSelectedSuggestion) {\n _this3.onBlur();\n\n _this3.onSuggestionsClearRequested();\n }\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_CHANGED);\n\n _this3.maybeCallOnChange(event, value, 'type');\n\n if (_this3.suggestionsContainer) {\n _this3.suggestionsContainer.scrollTop = 0;\n }\n\n _this3.setState(_objectSpread({}, highlightFirstSuggestion ? {} : {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null\n }, {\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n }));\n\n if (shouldRender) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_INPUT_CHANGED\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n },\n onKeyDown: function onKeyDown(event, data) {\n var keyCode = event.keyCode;\n\n switch (keyCode) {\n case 40: // ArrowDown\n\n case 38:\n // ArrowUp\n if (isCollapsed) {\n if (shouldRenderSuggestions(value, REASON_SUGGESTIONS_REVEALED)) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_SUGGESTIONS_REVEALED\n });\n\n _this3.revealSuggestions();\n\n event.preventDefault(); // We act on the key.\n }\n } else if (suggestions.length > 0) {\n var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n newHighlightedItemIndex = data.newHighlightedItemIndex;\n var newValue;\n\n if (newHighlightedItemIndex === null) {\n // valueBeforeUpDown can be null if, for example, user\n // hovers on the first suggestion and then pressed Up.\n // If that happens, use the original input value.\n newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n } else {\n newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n }\n\n _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n\n _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n\n event.preventDefault(); // We act on the key.\n }\n\n _this3.justPressedUpDown = true;\n setTimeout(function () {\n _this3.justPressedUpDown = false;\n });\n break;\n // Enter\n\n case 13:\n {\n // See #388\n if (event.keyCode === 229) {\n break;\n }\n\n var highlightedSuggestion = _this3.getHighlightedSuggestion();\n\n if (isOpen && !alwaysRenderSuggestions) {\n _this3.closeSuggestions();\n }\n\n if (highlightedSuggestion != null) {\n event.preventDefault();\n\n var _newValue = getSuggestionValue(highlightedSuggestion);\n\n _this3.maybeCallOnChange(event, _newValue, 'enter');\n\n _this3.onSuggestionSelected(event, {\n suggestion: highlightedSuggestion,\n suggestionValue: _newValue,\n suggestionIndex: highlightedSuggestionIndex,\n sectionIndex: highlightedSectionIndex,\n method: 'enter'\n });\n\n _this3.justSelectedSuggestion = true;\n setTimeout(function () {\n _this3.justSelectedSuggestion = false;\n });\n }\n\n break;\n }\n // Escape\n\n case 27:\n {\n if (isOpen) {\n // If input.type === 'search', the browser clears the input\n // when Escape is pressed. We want to disable this default\n // behaviour so that, when suggestions are shown, we just hide\n // them, without clearing the input.\n event.preventDefault();\n }\n\n var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n\n if (valueBeforeUpDown === null) {\n // Didn't interact with Up/Down\n if (!willCloseSuggestions) {\n var _newValue2 = '';\n\n _this3.maybeCallOnChange(event, _newValue2, 'escape');\n\n if (shouldRenderSuggestions(_newValue2, REASON_ESCAPE_PRESSED)) {\n onSuggestionsFetchRequested({\n value: _newValue2,\n reason: REASON_ESCAPE_PRESSED\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n }\n } else {\n // Interacted with Up/Down\n _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n }\n\n if (willCloseSuggestions) {\n _this3.onSuggestionsClearRequested();\n\n _this3.closeSuggestions();\n } else {\n _this3.resetHighlightedSuggestion();\n }\n\n break;\n }\n }\n\n _onKeyDown && _onKeyDown(event);\n }\n });\n\n var renderSuggestionData = {\n query: this.getQuery()\n };\n return /*#__PURE__*/_react[\"default\"].createElement(_Autowhatever[\"default\"], {\n multiSection: multiSection,\n items: items,\n renderInputComponent: renderInputComponent,\n renderItemsContainer: this.renderSuggestionsContainer,\n renderItem: renderSuggestion,\n renderItemData: renderSuggestionData,\n renderSectionTitle: renderSectionTitle,\n getSectionItems: getSectionSuggestions,\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedSuggestionIndex,\n containerProps: containerProps,\n inputProps: autowhateverInputProps,\n itemProps: this.itemProps,\n theme: (0, _theme.mapToAutowhateverTheme)(theme),\n id: id,\n ref: this.storeAutowhateverRef\n });\n }\n }]);\n\n return Autosuggest;\n}(_react.Component);\n\nexports[\"default\"] = Autosuggest;\n\n_defineProperty(Autosuggest, \"propTypes\", {\n suggestions: _propTypes[\"default\"].array.isRequired,\n onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n var onSuggestionsFetchRequested = props[propName];\n\n if (typeof onSuggestionsFetchRequested !== 'function') {\n throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n }\n },\n onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n var onSuggestionsClearRequested = props[propName];\n\n if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n }\n },\n shouldKeepSuggestionsOnSelect: _propTypes[\"default\"].func,\n onSuggestionSelected: _propTypes[\"default\"].func,\n onSuggestionHighlighted: _propTypes[\"default\"].func,\n renderInputComponent: _propTypes[\"default\"].func,\n renderSuggestionsContainer: _propTypes[\"default\"].func,\n getSuggestionValue: _propTypes[\"default\"].func.isRequired,\n renderSuggestion: _propTypes[\"default\"].func.isRequired,\n inputProps: function inputProps(props, propName) {\n var inputProps = props[propName];\n\n if (!inputProps) {\n throw new Error(\"'inputProps' must be passed.\");\n }\n\n if (!Object.prototype.hasOwnProperty.call(inputProps, 'value')) {\n throw new Error(\"'inputProps' must have 'value'.\");\n }\n\n if (!Object.prototype.hasOwnProperty.call(inputProps, 'onChange')) {\n throw new Error(\"'inputProps' must have 'onChange'.\");\n }\n },\n shouldRenderSuggestions: _propTypes[\"default\"].func,\n alwaysRenderSuggestions: _propTypes[\"default\"].bool,\n multiSection: _propTypes[\"default\"].bool,\n renderSectionTitle: function renderSectionTitle(props, propName) {\n var renderSectionTitle = props[propName];\n\n if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n }\n },\n getSectionSuggestions: function getSectionSuggestions(props, propName) {\n var getSectionSuggestions = props[propName];\n\n if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n }\n },\n focusInputOnSuggestionClick: _propTypes[\"default\"].bool,\n highlightFirstSuggestion: _propTypes[\"default\"].bool,\n theme: _propTypes[\"default\"].object,\n id: _propTypes[\"default\"].string,\n containerProps: _propTypes[\"default\"].object // Arbitrary container props\n\n});\n\n_defineProperty(Autosuggest, \"defaultProps\", {\n renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n shouldRenderSuggestions: defaultShouldRenderSuggestions,\n alwaysRenderSuggestions: false,\n multiSection: false,\n shouldKeepSuggestionsOnSelect: function shouldKeepSuggestionsOnSelect() {\n return false;\n },\n focusInputOnSuggestionClick: true,\n highlightFirstSuggestion: false,\n theme: _theme.defaultTheme,\n id: '1',\n containerProps: {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sectionIterator = _interopRequireDefault(require(\"section-iterator\"));\n\nvar _reactThemeable = _interopRequireDefault(require(\"react-themeable\"));\n\nvar _SectionTitle = _interopRequireDefault(require(\"./SectionTitle\"));\n\nvar _ItemList = _interopRequireDefault(require(\"./ItemList\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar emptyObject = {};\n\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", props);\n};\n\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar defaultTheme = {\n container: 'react-autowhatever__container',\n containerOpen: 'react-autowhatever__container--open',\n input: 'react-autowhatever__input',\n inputOpen: 'react-autowhatever__input--open',\n inputFocused: 'react-autowhatever__input--focused',\n itemsContainer: 'react-autowhatever__items-container',\n itemsContainerOpen: 'react-autowhatever__items-container--open',\n itemsList: 'react-autowhatever__items-list',\n item: 'react-autowhatever__item',\n itemFirst: 'react-autowhatever__item--first',\n itemHighlighted: 'react-autowhatever__item--highlighted',\n sectionContainer: 'react-autowhatever__section-container',\n sectionContainerFirst: 'react-autowhatever__section-container--first',\n sectionTitle: 'react-autowhatever__section-title'\n};\n\nvar Autowhatever = /*#__PURE__*/function (_Component) {\n _inherits(Autowhatever, _Component);\n\n var _super = _createSuper(Autowhatever);\n\n function Autowhatever(props) {\n var _this;\n\n _classCallCheck(this, Autowhatever);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"storeInputReference\", function (input) {\n if (input !== null) {\n _this.input = input;\n }\n\n var userRef = _this.props.inputProps.ref;\n\n if (userRef) {\n if (typeof userRef === 'function') {\n userRef(input);\n } else if (_typeof(userRef) === 'object' && Object.prototype.hasOwnProperty.call(userRef, 'current')) {\n userRef.current = input;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"storeItemsContainerReference\", function (itemsContainer) {\n if (itemsContainer !== null) {\n _this.itemsContainer = itemsContainer;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onHighlightedItemChange\", function (highlightedItem) {\n _this.highlightedItem = highlightedItem;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getItemId\", function (sectionIndex, itemIndex) {\n if (itemIndex === null) {\n return null;\n }\n\n var id = _this.props.id;\n var section = sectionIndex === null ? '' : \"section-\".concat(sectionIndex);\n return \"react-autowhatever-\".concat(id, \"-\").concat(section, \"-item-\").concat(itemIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n var inputProps = _this.props.inputProps;\n\n _this.setState({\n isInputFocused: true\n });\n\n inputProps.onFocus && inputProps.onFocus(event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (event) {\n var inputProps = _this.props.inputProps;\n\n _this.setState({\n isInputFocused: false\n });\n\n inputProps.onBlur && inputProps.onBlur(event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n var _this$props = _this.props,\n inputProps = _this$props.inputProps,\n highlightedSectionIndex = _this$props.highlightedSectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex;\n var keyCode = event.keyCode;\n\n switch (keyCode) {\n case 40: // ArrowDown\n\n case 38:\n {\n // ArrowUp\n var nextPrev = keyCode === 40 ? 'next' : 'prev';\n\n var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n newHighlightedSectionIndex = _this$sectionIterator2[0],\n newHighlightedItemIndex = _this$sectionIterator2[1];\n\n inputProps.onKeyDown(event, {\n newHighlightedSectionIndex: newHighlightedSectionIndex,\n newHighlightedItemIndex: newHighlightedItemIndex\n });\n break;\n }\n\n default:\n inputProps.onKeyDown(event, {\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedItemIndex\n });\n }\n });\n\n _this.highlightedItem = null;\n _this.state = {\n isInputFocused: false\n };\n\n _this.setSectionsItems(props);\n\n _this.setSectionIterator(props);\n\n _this.setTheme(props);\n\n return _this;\n }\n\n _createClass(Autowhatever, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.ensureHighlightedItemIsVisible();\n } // eslint-disable-next-line camelcase, react/sort-comp\n\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.items !== this.props.items) {\n this.setSectionsItems(nextProps);\n }\n\n if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n this.setSectionIterator(nextProps);\n }\n\n if (nextProps.theme !== this.props.theme) {\n this.setTheme(nextProps);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.ensureHighlightedItemIsVisible();\n }\n }, {\n key: \"setSectionsItems\",\n value: function setSectionsItems(props) {\n if (props.multiSection) {\n this.sectionsItems = props.items.map(function (section) {\n return props.getSectionItems(section);\n });\n this.sectionsLengths = this.sectionsItems.map(function (items) {\n return items.length;\n });\n this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n return itemsCount === 0;\n });\n }\n }\n }, {\n key: \"setSectionIterator\",\n value: function setSectionIterator(props) {\n this.sectionIterator = (0, _sectionIterator[\"default\"])({\n multiSection: props.multiSection,\n data: props.multiSection ? this.sectionsLengths : props.items.length\n });\n }\n }, {\n key: \"setTheme\",\n value: function setTheme(props) {\n this.theme = (0, _reactThemeable[\"default\"])(props.theme);\n }\n }, {\n key: \"renderSections\",\n value: function renderSections() {\n var _this2 = this;\n\n if (this.allSectionsAreEmpty) {\n return null;\n }\n\n var theme = this.theme;\n var _this$props2 = this.props,\n id = _this$props2.id,\n items = _this$props2.items,\n renderItem = _this$props2.renderItem,\n renderItemData = _this$props2.renderItemData,\n renderSectionTitle = _this$props2.renderSectionTitle,\n highlightedSectionIndex = _this$props2.highlightedSectionIndex,\n highlightedItemIndex = _this$props2.highlightedItemIndex,\n itemProps = _this$props2.itemProps;\n return items.map(function (section, sectionIndex) {\n var keyPrefix = \"react-autowhatever-\".concat(id, \"-\");\n var sectionKeyPrefix = \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n var isFirstSection = sectionIndex === 0; // `key` is provided by theme()\n\n /* eslint-disable react/jsx-key */\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"container\"), 'sectionContainer', isFirstSection && 'sectionContainerFirst'), /*#__PURE__*/_react[\"default\"].createElement(_SectionTitle[\"default\"], {\n section: section,\n renderSectionTitle: renderSectionTitle,\n theme: theme,\n sectionKeyPrefix: sectionKeyPrefix\n }), /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n items: _this2.sectionsItems[sectionIndex],\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n sectionIndex: sectionIndex,\n highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n onHighlightedItemChange: _this2.onHighlightedItemChange,\n getItemId: _this2.getItemId,\n theme: theme,\n keyPrefix: keyPrefix,\n ref: _this2.storeItemsListReference\n }));\n /* eslint-enable react/jsx-key */\n });\n }\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var items = this.props.items;\n\n if (items.length === 0) {\n return null;\n }\n\n var theme = this.theme;\n var _this$props3 = this.props,\n id = _this$props3.id,\n renderItem = _this$props3.renderItem,\n renderItemData = _this$props3.renderItemData,\n highlightedSectionIndex = _this$props3.highlightedSectionIndex,\n highlightedItemIndex = _this$props3.highlightedItemIndex,\n itemProps = _this$props3.itemProps;\n return /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n items: items,\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n onHighlightedItemChange: this.onHighlightedItemChange,\n getItemId: this.getItemId,\n theme: theme,\n keyPrefix: \"react-autowhatever-\".concat(id, \"-\")\n });\n }\n }, {\n key: \"ensureHighlightedItemIsVisible\",\n value: function ensureHighlightedItemIsVisible() {\n var highlightedItem = this.highlightedItem;\n\n if (!highlightedItem) {\n return;\n }\n\n var itemsContainer = this.itemsContainer;\n var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n if (itemOffsetRelativeToContainer < scrollTop) {\n // Item is off the top of the visible area\n scrollTop = itemOffsetRelativeToContainer;\n } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n // Item is off the bottom of the visible area\n scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n }\n\n if (scrollTop !== itemsContainer.scrollTop) {\n itemsContainer.scrollTop = scrollTop;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var theme = this.theme;\n var _this$props4 = this.props,\n id = _this$props4.id,\n multiSection = _this$props4.multiSection,\n renderInputComponent = _this$props4.renderInputComponent,\n renderItemsContainer = _this$props4.renderItemsContainer,\n highlightedSectionIndex = _this$props4.highlightedSectionIndex,\n highlightedItemIndex = _this$props4.highlightedItemIndex;\n var isInputFocused = this.state.isInputFocused;\n var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n var isOpen = renderedItems !== null;\n var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n var itemsContainerId = \"react-autowhatever-\".concat(id);\n\n var containerProps = _objectSpread({\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-owns': itemsContainerId,\n 'aria-expanded': isOpen\n }, theme(\"react-autowhatever-\".concat(id, \"-container\"), 'container', isOpen && 'containerOpen'), {}, this.props.containerProps);\n\n var inputComponent = renderInputComponent(_objectSpread({\n type: 'text',\n value: '',\n autoComplete: 'off',\n 'aria-autocomplete': 'list',\n 'aria-controls': itemsContainerId,\n 'aria-activedescendant': ariaActivedescendant\n }, theme(\"react-autowhatever-\".concat(id, \"-input\"), 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), {}, this.props.inputProps, {\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n ref: this.storeInputReference\n }));\n var itemsContainer = renderItemsContainer({\n containerProps: _objectSpread({\n id: itemsContainerId,\n role: 'listbox'\n }, theme(\"react-autowhatever-\".concat(id, \"-items-container\"), 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n ref: this.storeItemsContainerReference\n }),\n children: renderedItems\n });\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, inputComponent, itemsContainer);\n }\n }]);\n\n return Autowhatever;\n}(_react.Component);\n\nexports[\"default\"] = Autowhatever;\n\n_defineProperty(Autowhatever, \"propTypes\", {\n id: _propTypes[\"default\"].string,\n // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n multiSection: _propTypes[\"default\"].bool,\n // Indicates whether a multi section layout should be rendered.\n renderInputComponent: _propTypes[\"default\"].func,\n // When specified, it is used to render the input element.\n renderItemsContainer: _propTypes[\"default\"].func,\n // Renders the items container.\n items: _propTypes[\"default\"].array.isRequired,\n // Array of items or sections to render.\n renderItem: _propTypes[\"default\"].func,\n // This function renders a single item.\n renderItemData: _propTypes[\"default\"].object,\n // Arbitrary data that will be passed to renderItem()\n renderSectionTitle: _propTypes[\"default\"].func,\n // This function gets a section and renders its title.\n getSectionItems: _propTypes[\"default\"].func,\n // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n containerProps: _propTypes[\"default\"].object,\n // Arbitrary container props\n inputProps: _propTypes[\"default\"].object,\n // Arbitrary input props\n itemProps: _propTypes[\"default\"].oneOfType([// Arbitrary item props\n _propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n highlightedSectionIndex: _propTypes[\"default\"].number,\n // Section index of the highlighted item\n highlightedItemIndex: _propTypes[\"default\"].number,\n // Highlighted item index (within a section)\n theme: _propTypes[\"default\"].oneOfType([// Styles. See: https://github.com/markdalgleish/react-themeable\n _propTypes[\"default\"].object, _propTypes[\"default\"].array])\n});\n\n_defineProperty(Autowhatever, \"defaultProps\", {\n id: '1',\n multiSection: false,\n renderInputComponent: defaultRenderInputComponent,\n renderItemsContainer: defaultRenderItemsContainer,\n renderItem: function renderItem() {\n throw new Error('`renderItem` must be provided');\n },\n renderItemData: emptyObject,\n renderSectionTitle: function renderSectionTitle() {\n throw new Error('`renderSectionTitle` must be provided');\n },\n getSectionItems: function getSectionItems() {\n throw new Error('`getSectionItems` must be provided');\n },\n containerProps: emptyObject,\n inputProps: emptyObject,\n itemProps: emptyObject,\n highlightedSectionIndex: null,\n highlightedItemIndex: null,\n theme: defaultTheme\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Item = /*#__PURE__*/function (_Component) {\n _inherits(Item, _Component);\n\n var _super = _createSuper(Item);\n\n function Item() {\n var _this;\n\n _classCallCheck(this, Item);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"storeItemReference\", function (item) {\n if (item !== null) {\n _this.item = item;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (event) {\n var _this$props = _this.props,\n sectionIndex = _this$props.sectionIndex,\n itemIndex = _this$props.itemIndex;\n\n _this.props.onMouseEnter(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (event) {\n var _this$props2 = _this.props,\n sectionIndex = _this$props2.sectionIndex,\n itemIndex = _this$props2.itemIndex;\n\n _this.props.onMouseLeave(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (event) {\n var _this$props3 = _this.props,\n sectionIndex = _this$props3.sectionIndex,\n itemIndex = _this$props3.itemIndex;\n\n _this.props.onMouseDown(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props4 = _this.props,\n sectionIndex = _this$props4.sectionIndex,\n itemIndex = _this$props4.itemIndex;\n\n _this.props.onClick(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n\n return _this;\n }\n\n _createClass(Item, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props, ['renderItemData']);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n isHighlighted = _this$props5.isHighlighted,\n item = _this$props5.item,\n renderItem = _this$props5.renderItem,\n renderItemData = _this$props5.renderItemData,\n restProps = _objectWithoutProperties(_this$props5, [\"isHighlighted\", \"item\", \"renderItem\", \"renderItemData\"]);\n\n delete restProps.sectionIndex;\n delete restProps.itemIndex;\n\n if (typeof restProps.onMouseEnter === 'function') {\n restProps.onMouseEnter = this.onMouseEnter;\n }\n\n if (typeof restProps.onMouseLeave === 'function') {\n restProps.onMouseLeave = this.onMouseLeave;\n }\n\n if (typeof restProps.onMouseDown === 'function') {\n restProps.onMouseDown = this.onMouseDown;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick = this.onClick;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"li\", _extends({\n role: \"option\"\n }, restProps, {\n ref: this.storeItemReference\n }), renderItem(item, _objectSpread({\n isHighlighted: isHighlighted\n }, renderItemData)));\n }\n }]);\n\n return Item;\n}(_react.Component);\n\nexports[\"default\"] = Item;\n\n_defineProperty(Item, \"propTypes\", {\n sectionIndex: _propTypes[\"default\"].number,\n isHighlighted: _propTypes[\"default\"].bool.isRequired,\n itemIndex: _propTypes[\"default\"].number.isRequired,\n item: _propTypes[\"default\"].any.isRequired,\n renderItem: _propTypes[\"default\"].func.isRequired,\n renderItemData: _propTypes[\"default\"].object.isRequired,\n onMouseEnter: _propTypes[\"default\"].func,\n onMouseLeave: _propTypes[\"default\"].func,\n onMouseDown: _propTypes[\"default\"].func,\n onClick: _propTypes[\"default\"].func\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Item = _interopRequireDefault(require(\"./Item\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ItemsList = /*#__PURE__*/function (_Component) {\n _inherits(ItemsList, _Component);\n\n var _super = _createSuper(ItemsList);\n\n function ItemsList() {\n var _this;\n\n _classCallCheck(this, ItemsList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"storeHighlightedItemReference\", function (highlightedItem) {\n _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n });\n\n return _this;\n }\n\n _createClass(ItemsList, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props, ['itemProps']);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n items = _this$props.items,\n itemProps = _this$props.itemProps,\n renderItem = _this$props.renderItem,\n renderItemData = _this$props.renderItemData,\n sectionIndex = _this$props.sectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex,\n getItemId = _this$props.getItemId,\n theme = _this$props.theme,\n keyPrefix = _this$props.keyPrefix;\n var sectionPrefix = sectionIndex === null ? keyPrefix : \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n var isItemPropsFunction = typeof itemProps === 'function';\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", _extends({\n role: \"listbox\"\n }, theme(\"\".concat(sectionPrefix, \"items-list\"), 'itemsList')), items.map(function (item, itemIndex) {\n var isFirst = itemIndex === 0;\n var isHighlighted = itemIndex === highlightedItemIndex;\n var itemKey = \"\".concat(sectionPrefix, \"item-\").concat(itemIndex);\n var itemPropsObj = isItemPropsFunction ? itemProps({\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n }) : itemProps;\n\n var allItemProps = _objectSpread({\n id: getItemId(sectionIndex, itemIndex),\n 'aria-selected': isHighlighted\n }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), {}, itemPropsObj);\n\n if (isHighlighted) {\n allItemProps.ref = _this2.storeHighlightedItemReference;\n } // `key` is provided by theme()\n\n /* eslint-disable react/jsx-key */\n\n\n return /*#__PURE__*/_react[\"default\"].createElement(_Item[\"default\"], _extends({}, allItemProps, {\n sectionIndex: sectionIndex,\n isHighlighted: isHighlighted,\n itemIndex: itemIndex,\n item: item,\n renderItem: renderItem,\n renderItemData: renderItemData\n }));\n /* eslint-enable react/jsx-key */\n }));\n }\n }]);\n\n return ItemsList;\n}(_react.Component);\n\nexports[\"default\"] = ItemsList;\n\n_defineProperty(ItemsList, \"propTypes\", {\n items: _propTypes[\"default\"].array.isRequired,\n itemProps: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n renderItem: _propTypes[\"default\"].func.isRequired,\n renderItemData: _propTypes[\"default\"].object.isRequired,\n sectionIndex: _propTypes[\"default\"].number,\n highlightedItemIndex: _propTypes[\"default\"].number,\n onHighlightedItemChange: _propTypes[\"default\"].func.isRequired,\n getItemId: _propTypes[\"default\"].func.isRequired,\n theme: _propTypes[\"default\"].func.isRequired,\n keyPrefix: _propTypes[\"default\"].string.isRequired\n});\n\n_defineProperty(ItemsList, \"defaultProps\", {\n sectionIndex: null\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SectionTitle = /*#__PURE__*/function (_Component) {\n _inherits(SectionTitle, _Component);\n\n var _super = _createSuper(SectionTitle);\n\n function SectionTitle() {\n _classCallCheck(this, SectionTitle);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SectionTitle, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n section = _this$props.section,\n renderSectionTitle = _this$props.renderSectionTitle,\n theme = _this$props.theme,\n sectionKeyPrefix = _this$props.sectionKeyPrefix;\n var sectionTitle = renderSectionTitle(section);\n\n if (!sectionTitle) {\n return null;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"title\"), 'sectionTitle'), sectionTitle);\n }\n }]);\n\n return SectionTitle;\n}(_react.Component);\n\nexports[\"default\"] = SectionTitle;\n\n_defineProperty(SectionTitle, \"propTypes\", {\n section: _propTypes[\"default\"].any.isRequired,\n renderSectionTitle: _propTypes[\"default\"].func.isRequired,\n theme: _propTypes[\"default\"].func.isRequired,\n sectionKeyPrefix: _propTypes[\"default\"].string.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = compareObjects;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction compareObjects(objA, objB) {\n var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (objA === objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (aKeys.length !== bKeys.length) {\n return true;\n }\n\n var keysMap = {};\n var i, len;\n\n for (i = 0, len = keys.length; i < len; i++) {\n keysMap[keys[i]] = true;\n }\n\n for (i = 0, len = aKeys.length; i < len; i++) {\n var key = aKeys[i];\n var aValue = objA[key];\n var bValue = objB[key];\n\n if (aValue === bValue) {\n continue;\n }\n\n if (!keysMap[key] || aValue === null || bValue === null || _typeof(aValue) !== 'object' || _typeof(bValue) !== 'object') {\n return true;\n }\n\n var aValueKeys = Object.keys(aValue);\n var bValueKeys = Object.keys(bValue);\n\n if (aValueKeys.length !== bValueKeys.length) {\n return true;\n }\n\n for (var n = 0, length = aValueKeys.length; n < length; n++) {\n var aValueKey = aValueKeys[n];\n\n if (aValue[aValueKey] !== bValue[aValueKey]) {\n return true;\n }\n }\n }\n\n return false;\n}","\"use strict\";\n\nmodule.exports = require('./Autosuggest')[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mapToAutowhateverTheme = exports.defaultTheme = void 0;\nvar defaultTheme = {\n container: 'react-autosuggest__container',\n containerOpen: 'react-autosuggest__container--open',\n input: 'react-autosuggest__input',\n inputOpen: 'react-autosuggest__input--open',\n inputFocused: 'react-autosuggest__input--focused',\n suggestionsContainer: 'react-autosuggest__suggestions-container',\n suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n suggestionsList: 'react-autosuggest__suggestions-list',\n suggestion: 'react-autosuggest__suggestion',\n suggestionFirst: 'react-autosuggest__suggestion--first',\n suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n sectionContainer: 'react-autosuggest__section-container',\n sectionContainerFirst: 'react-autosuggest__section-container--first',\n sectionTitle: 'react-autosuggest__section-title'\n};\nexports.defaultTheme = defaultTheme;\n\nvar mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n var result = {};\n\n for (var key in theme) {\n switch (key) {\n case 'suggestionsContainer':\n result['itemsContainer'] = theme[key];\n break;\n\n case 'suggestionsContainerOpen':\n result['itemsContainerOpen'] = theme[key];\n break;\n\n case 'suggestion':\n result['item'] = theme[key];\n break;\n\n case 'suggestionFirst':\n result['itemFirst'] = theme[key];\n break;\n\n case 'suggestionHighlighted':\n result['itemHighlighted'] = theme[key];\n break;\n\n case 'suggestionsList':\n result['itemsList'] = theme[key];\n break;\n\n default:\n result[key] = theme[key];\n }\n }\n\n return result;\n};\n\nexports.mapToAutowhateverTheme = mapToAutowhateverTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n var contextControllerId = navContext.getControllerId(navKey);\n var contextControlledId = navContext.getControlledId(navKey);\n process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n props['data-rb-event-key'] = navKey;\n props.id = contextControllerId || props.id;\n props['aria-controls'] = contextControlledId || props['aria-controls'];\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n if (props.disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"];\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n var value = elem[offset];\n var margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n className = _ref.className,\n children = _ref.children,\n _ref$dimension = _ref.dimension,\n dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n _ref$getDimensionValu = _ref.getDimensionValue,\n getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* Compute dimension */\n var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n var handleEnter = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = '0';\n }, onEnter);\n }, [computedDimension, onEnter]);\n var handleEntering = useMemo(function () {\n return createChainedFunction(function (elem) {\n var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n elem.style[computedDimension] = elem[scroll] + \"px\";\n }, onEntering);\n }, [computedDimension, onEntering]);\n var handleEntered = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onEntered);\n }, [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n var handleExit = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n triggerBrowserReflow(elem);\n }, onExit);\n }, [onExit, getDimensionValue, computedDimension]);\n var handleExiting = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onExiting);\n }, [computedDimension, onExiting]);\n return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n , _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting\n }), function (state, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n }));\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"eventKey\"];\nimport React, { useContext } from 'react';\nimport Collapse from './Collapse';\nimport AccordionContext from './AccordionContext';\nimport SelectableContext from './SelectableContext';\nvar AccordionCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n eventKey = _ref.eventKey,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var contextEventKey = useContext(AccordionContext); // Empty SelectableContext is to prevent elements in the collapse\n // from collapsing the accordion when clicked.\n\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Collapse, _extends({\n ref: ref,\n in: contextEventKey === eventKey\n }, props), /*#__PURE__*/React.createElement(\"div\", null, React.Children.only(children))));\n});\nAccordionCollapse.displayName = 'AccordionCollapse';\nexport default AccordionCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"activeKey\", \"bsPrefix\", \"children\", \"className\", \"onSelect\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionToggle from './AccordionToggle';\nimport SelectableContext from './SelectableContext';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionContext from './AccordionContext';\nvar Accordion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n activeKey = _useUncontrolled.activeKey,\n bsPrefix = _useUncontrolled.bsPrefix,\n children = _useUncontrolled.children,\n className = _useUncontrolled.className,\n onSelect = _useUncontrolled.onSelect,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var finalClassName = classNames(className, useBootstrapPrefix(bsPrefix, 'accordion'));\n return /*#__PURE__*/React.createElement(AccordionContext.Provider, {\n value: activeKey || null\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: onSelect || null\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, controlledProps, {\n className: finalClassName\n }), children)));\n});\nAccordion.displayName = 'Accordion';\nAccordion.Toggle = AccordionToggle;\nAccordion.Collapse = AccordionCollapse;\nexport default Accordion;","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'AccordionContext';\nexport default context;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"children\", \"eventKey\", \"onClick\"];\nimport React, { useContext } from 'react';\nimport SelectableContext from './SelectableContext';\nimport AccordionContext from './AccordionContext';\nexport function useAccordionToggle(eventKey, onClick) {\n var contextEventKey = useContext(AccordionContext);\n var onSelect = useContext(SelectableContext);\n return function (e) {\n /*\n Compare the event key in context with the given event key.\n If they are the same, then collapse the component.\n */\n var eventKeyPassed = eventKey === contextEventKey ? null : eventKey;\n if (onSelect) onSelect(eventKeyPassed, e);\n if (onClick) onClick(e);\n };\n}\nvar AccordionToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'button' : _ref$as,\n children = _ref.children,\n eventKey = _ref.eventKey,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var accordionOnClick = useAccordionToggle(eventKey, onClick);\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n onClick: accordionOnClick\n }, props), children);\n});\nexport default AccordionToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport divWithClassName from './divWithClassName';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport SafeAnchor from './SafeAnchor';\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nvar AlertHeading = createWithBsPrefix('alert-heading', {\n Component: DivStyledAsH4\n});\nvar AlertLink = createWithBsPrefix('alert-link', {\n Component: SafeAnchor\n});\nvar defaultProps = {\n show: true,\n transition: Fade,\n closeLabel: 'Close alert'\n};\nvar Alert = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n show = _useUncontrolled.show,\n closeLabel = _useUncontrolled.closeLabel,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n variant = _useUncontrolled.variant,\n onClose = _useUncontrolled.onClose,\n dismissible = _useUncontrolled.dismissible,\n transition = _useUncontrolled.transition,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n var handleClose = useEventCallback(function (e) {\n if (onClose) {\n onClose(false, e);\n }\n });\n var Transition = transition === true ? Fade : transition;\n var alert = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"alert\"\n }, !Transition ? props : undefined, {\n ref: ref,\n className: classNames(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\")\n }), dismissible && /*#__PURE__*/React.createElement(CloseButton, {\n onClick: handleClose,\n label: closeLabel\n }), children);\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/React.createElement(Transition, _extends({\n unmountOnExit: true\n }, props, {\n ref: undefined,\n in: show\n }), alert);\n});\nAlert.displayName = 'Alert';\nAlert.defaultProps = defaultProps;\nAlert.Link = AlertLink;\nAlert.Heading = AlertHeading;\nexport default Alert;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ?\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"label\", \"onClick\", \"className\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","var matchesImpl;\n/**\n * Checks if a given element matches a selector.\n * \n * @param node the element\n * @param selector the selector\n */\n\nexport default function matches(node, selector) {\n if (!matchesImpl) {\n var body = document.body;\n var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n matchesImpl = function matchesImpl(n, s) {\n return nativeMatch.call(n, s);\n };\n }\n\n return matchesImpl(node, selector);\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n * console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture = false) {\n const documentTarget = useCallback(() => document, []);\n return useEventListener(documentTarget, event, handler, capture);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture = false) {\n const handler = useEventCallback(listener);\n useEffect(() => {\n const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return () => target.removeEventListener(event, handler, capture);\n }, [eventTarget]);\n}","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n if (options === void 0) {\n options = {};\n }\n\n var context = useContext(DropdownContext);\n\n var _useCallbackRef = useCallbackRef(),\n arrowElement = _useCallbackRef[0],\n attachArrowRef = _useCallbackRef[1];\n\n var hasShownRef = useRef(false);\n var _options = options,\n flip = _options.flip,\n offset = _options.offset,\n rootCloseEvent = _options.rootCloseEvent,\n _options$fixed = _options.fixed,\n fixed = _options$fixed === void 0 ? false : _options$fixed,\n _options$popperConfig = _options.popperConfig,\n popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n _options$usePopper = _options.usePopper,\n shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n var show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n var handleClose = function handleClose(e) {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n var _ref = context || {},\n drop = _ref.drop,\n setMenu = _ref.setMenu,\n menuElement = _ref.menuElement,\n toggleElement = _ref.toggleElement;\n\n var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n var popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enabled: !!(shouldUsePopper && show),\n enableEvents: show,\n offset: offset,\n flip: flip,\n fixed: fixed,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n }));\n\n var menuProps = _extends({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n\n var metadata = {\n show: show,\n alignEnd: alignEnd,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? _extends({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useRootClose(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Menu element. The `props`\n * argument should spread through to **a component that can accept a ref**.\n *\n * @type {Function ({\n * show: boolean,\n * alignEnd: boolean,\n * close: (?SyntheticEvent) => void,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Controls the visible state of the menu, generally this is\n * provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n show: PropTypes.bool,\n\n /**\n * Aligns the dropdown menu to the 'end' of it's placement position.\n * Generally this is provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n usePopper: PropTypes.oneOf([true, false]),\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Override the default event used by RootCloseWrapper.\n */\n rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n var children = _ref2.children,\n options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n var _useDropdownMenu = useDropdownMenu(options),\n props = _useDropdownMenu[0],\n meta = _useDropdownMenu[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, meta.hasShown ? children(props, meta) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext, useCallback } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n var _ref = useContext(DropdownContext) || {},\n _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$toggle = _ref.toggle,\n toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n setToggle = _ref.setToggle;\n\n var handleClick = useCallback(function (e) {\n toggle(!show, e);\n }, [show, toggle]);\n return [{\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-haspopup': true,\n 'aria-expanded': !!show\n }, {\n show: show,\n toggle: toggle\n }];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Toggle element. The `props`\n * argument should spread through to **a component that can accept a ref**. Use\n * the `onToggle` argument to toggle the menu open or closed\n *\n * @type {Function ({\n * show: boolean,\n * toggle: (show: boolean) => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * aria-haspopup: true\n * aria-expanded: boolean\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n var children = _ref2.children;\n\n var _useDropdownToggle = useDropdownToggle(),\n props = _useDropdownToggle[0],\n meta = _useDropdownToggle[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children(props, meta));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useGlobalListener from '@restart/hooks/useGlobalListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n /**\n * A render prop that returns the root dropdown element. The `props`\n * argument should spread through to an element containing _both_ the\n * menu and toggle in order to handle keyboard events for focus management.\n *\n * @type {Function ({\n * props: {\n * onKeyDown: (SyntheticEvent) => void,\n * },\n * }) => React.Element}\n */\n children: PropTypes.node,\n\n /**\n * Determines the direction and location of the Menu in relation to it's Toggle.\n */\n drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n /**\n * Controls the focus behavior for when the Dropdown is opened. Set to\n * `true` to always focus the first menu item, `keyboard` to focus only when\n * navigating via the keyboard, or `false` to disable completely\n *\n * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n */\n focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n /**\n * A css slector string that will return __focusable__ menu items.\n * Selectors should be relative to the menu component:\n * e.g. ` > li:not('.disabled')`\n */\n itemSelector: PropTypes.string,\n\n /**\n * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Whether or not the Dropdown is visible.\n *\n * @controllable onToggle\n */\n show: PropTypes.bool,\n\n /**\n * Sets the initial show position of the Dropdown.\n */\n defaultShow: PropTypes.bool,\n\n /**\n * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n *\n * ```ts static\n * function(\n * isOpen: boolean,\n * event: SyntheticEvent,\n * ): void\n * ```\n *\n * @controllable show\n */\n onToggle: PropTypes.func\n};\n\nfunction useRefWithUpdate() {\n var forceUpdate = useForceUpdate();\n var ref = useRef(null);\n var attachRef = useCallback(function (element) {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown(_ref) {\n var drop = _ref.drop,\n alignEnd = _ref.alignEnd,\n defaultShow = _ref.defaultShow,\n rawShow = _ref.show,\n rawOnToggle = _ref.onToggle,\n _ref$itemSelector = _ref.itemSelector,\n itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n children = _ref.children;\n\n var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n show = _useUncontrolledProp[0],\n onToggle = _useUncontrolledProp[1]; // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n\n var _useRefWithUpdate = useRefWithUpdate(),\n menuRef = _useRefWithUpdate[0],\n setMenu = _useRefWithUpdate[1];\n\n var menuElement = menuRef.current;\n\n var _useRefWithUpdate2 = useRefWithUpdate(),\n toggleRef = _useRefWithUpdate2[0],\n setToggle = _useRefWithUpdate2[1];\n\n var toggleElement = toggleRef.current;\n var lastShow = usePrevious(show);\n var lastSourceEvent = useRef(null);\n var focusInDropdown = useRef(false);\n var toggle = useCallback(function (nextShow, event) {\n onToggle(nextShow, event);\n }, [onToggle]);\n var context = useMemo(function () {\n return {\n toggle: toggle,\n drop: drop,\n show: show,\n alignEnd: alignEnd,\n menuElement: menuElement,\n toggleElement: toggleElement,\n setMenu: setMenu,\n setToggle: setToggle\n };\n }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(document.activeElement);\n }\n\n var focusToggle = useEventCallback(function () {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n var maybeFocusFirst = useEventCallback(function () {\n var type = lastSourceEvent.current;\n var focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n var first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(function () {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(function () {\n lastSourceEvent.current = null;\n });\n\n var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n if (!menuRef.current) return null;\n var items = qsa(menuRef.current, itemSelector);\n var index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useGlobalListener('keydown', function (event) {\n var _menuRef$current, _toggleRef$current;\n\n var key = event.key;\n var target = event.target;\n var fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n var fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n var isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu)) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (!menuRef.current && key === 'Tab') {\n return;\n }\n\n lastSourceEvent.current = event.type;\n\n switch (key) {\n case 'ArrowUp':\n {\n var next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, event);\n } else {\n var _next = getNextFocusedChild(target, 1);\n\n if (_next && _next.focus) _next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(document, 'keyup', function (e) {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, event);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n onToggle(false, event);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: context\n }, children);\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n as: SafeAnchor,\n disabled: false\n};\nvar DropdownItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n eventKey = _ref.eventKey,\n disabled = _ref.disabled,\n href = _ref.href,\n onClick = _ref.onClick,\n onSelect = _ref.onSelect,\n propActive = _ref.active,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n var onSelectCtx = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n\n var _ref2 = navContext || {},\n activeKey = _ref2.activeKey;\n\n var key = makeEventKey(eventKey, href);\n var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n var handleClick = useEventCallback(function (event) {\n // SafeAnchor handles the disabled case, but we handle it here\n // for other components\n if (disabled) return;\n if (onClick) onClick(event);\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n });\n return (\n /*#__PURE__*/\n // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n // @ts-ignore\n React.createElement(Component, _extends({}, props, {\n ref: ref,\n href: href,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n onClick: handleClick\n }), children)\n );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n var warningRef = useCallback(function (refValue) {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"];\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n sm: alignDirection\n}), PropTypes.shape({\n md: alignDirection\n}), PropTypes.shape({\n lg: alignDirection\n}), PropTypes.shape({\n xl: alignDirection\n})]);\nvar defaultProps = {\n align: 'left',\n alignRight: false,\n flip: true\n};\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n align = _ref.align,\n alignRight = _ref.alignRight,\n rootCloseEvent = _ref.rootCloseEvent,\n flip = _ref.flip,\n showProps = _ref.show,\n renderOnMount = _ref.renderOnMount,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n popperConfig = _ref.popperConfig,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isNavbar = useContext(NavbarContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n popperRef = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n var keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n var brkPoint = keys[0];\n var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n // left in addition to align left classes.\n // Reuse alignRight to toggle the class below.\n\n alignRight = direction === 'left';\n alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n }\n } else if (align === 'right') {\n alignRight = true;\n }\n }\n\n var _useDropdownMenu = useDropdownMenu({\n flip: flip,\n rootCloseEvent: rootCloseEvent,\n show: showProps,\n alignEnd: alignRight,\n usePopper: !isNavbar && alignClasses.length === 0,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n })\n }),\n menuProps = _useDropdownMenu[0],\n _useDropdownMenu$ = _useDropdownMenu[1],\n hasShown = _useDropdownMenu$.hasShown,\n popper = _useDropdownMenu$.popper,\n show = _useDropdownMenu$.show,\n alignEnd = _useDropdownMenu$.alignEnd,\n toggle = _useDropdownMenu$.toggle;\n\n menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = function () {\n return toggle == null ? void 0 : toggle(false);\n };\n\n menuProps.alignRight = alignEnd;\n }\n\n var style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = _extends({}, props.style, menuProps.style);\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n style: style,\n className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"split\", \"className\", \"childBsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n split = _ref.split,\n className = _ref.className,\n childBsPrefix = _ref.childBsPrefix,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? Button : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n var _useDropdownToggle = useDropdownToggle(),\n toggleProps = _useDropdownToggle[0];\n\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(className, prefix, split && prefix + \"-split\")\n }, toggleProps, props));\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nvar DropdownDivider = createWithBsPrefix('dropdown-divider', {\n defaultProps: {\n role: 'separator'\n }\n});\nvar DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nvar defaultProps = {\n navbar: false\n};\nvar Dropdown = /*#__PURE__*/React.forwardRef(function (pProps, ref) {\n var _useUncontrolled = useUncontrolled(pProps, {\n show: 'onToggle'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n drop = _useUncontrolled.drop,\n show = _useUncontrolled.show,\n className = _useUncontrolled.className,\n alignRight = _useUncontrolled.alignRight,\n onSelect = _useUncontrolled.onSelect,\n onToggle = _useUncontrolled.onToggle,\n focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n _4 = _useUncontrolled.navbar,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var onSelectCtx = useContext(SelectableContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n var handleToggle = useEventCallback(function (nextShow, event, source) {\n if (source === void 0) {\n source = event.type;\n }\n\n if (event.currentTarget === document && (source !== 'keydown' || event.key === 'Escape')) source = 'rootClose';\n\n if (onToggle) {\n onToggle(nextShow, event, {\n source: source\n });\n }\n });\n var handleSelect = useEventCallback(function (key, event) {\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n handleToggle(false, event, 'select');\n });\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(BaseDropdown, {\n drop: drop,\n show: show,\n alignEnd: alignRight,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n }))));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.ItemText = DropdownItemText;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"children\"];\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleEnter = useCallback(function (node) {\n triggerBrowserReflow(node);\n if (props.onEnter) props.onEnter(node);\n }, [props]);\n return /*#__PURE__*/React.createElement(Transition, _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n onEnter: handleEnter\n }), function (status, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n isStatic = _ref.isStatic,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$inline = _ref.inline,\n inline = _ref$inline === void 0 ? false : _ref$inline,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n label = _ref.label,\n children = _ref.children,\n propCustom = _ref.custom,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var custom = type === 'switch' ? true : propCustom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = custom || label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled,\n as: as\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n lang = _ref.lang,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var type = 'file';\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n id: id || controlId,\n type: type,\n lang: lang,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix),\n \"data-browse\": props['data-browse']\n }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n lang = _ref.lang,\n dataBrowse = _ref['data-browse'],\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$inputAs = _ref.inputAs,\n inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var type = 'file';\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: inputAs,\n lang: lang\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(Component, {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n \"data-browse\": dataBrowse\n }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n type = _ref.type,\n size = _ref.size,\n htmlSize = _ref.htmlSize,\n id = _ref.id,\n className = _ref.className,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n custom = _ref.custom,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else if (type === 'range') {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n } else if (Component === 'select' && custom) {\n var _classes4;\n\n classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n } else {\n var _classes5;\n\n classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'label' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(Component, _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n ref: ref,\n type: \"switch\"\n }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n if ('window' in node && node.window === node) return node;\n if (isDocument(node)) return node.defaultView || false;\n return false;\n}","export default function isDocument(element) {\n return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n var win = isWindow(node) || doc.defaultView;\n return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n var win = isWindow(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nexport function ariaHidden(hide, node) {\n if (!node) return;\n\n if (hide) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\nexport function hideSiblings(container, _ref2) {\n var dialog = _ref2.dialog,\n backdrop = _ref2.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\nexport function showSiblings(container, _ref3) {\n var dialog = _ref3.dialog,\n backdrop = _ref3.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = void 0;\n this.handleContainerOverflow = void 0;\n this.modals = void 0;\n this.containers = void 0;\n this.data = void 0;\n this.scrollbarSize = void 0;\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = getScrollbarSize();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden'\n }; // we are only interested in the actual `style` here\n // because we will override it\n\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n }\n\n css(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n Object.assign(container.style, containerState.style);\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n hideSiblings(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n // right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: isOverflowing(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n showSiblings(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n // otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n ariaHidden(false, dialog);\n ariaHidden(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nexport default ModalManager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n if (!manager) manager = new ModalManager();\n return manager;\n}\n\nfunction useModalManager(provided) {\n var modalManager = provided || getManager();\n var modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: function add(container, className) {\n return modalManager.add(modal.current, container, className);\n },\n remove: function remove() {\n return modalManager.remove(modal.current);\n },\n isTopModal: function isTopModal() {\n return modalManager.isTopModal(modal.current);\n },\n setDialogRef: useCallback(function (ref) {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(function (ref) {\n modal.current.backdrop = ref;\n }, [])\n });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$role = _ref.role,\n role = _ref$role === void 0 ? 'dialog' : _ref$role,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n _ref$backdrop = _ref.backdrop,\n backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n onBackdropClick = _ref.onBackdropClick,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n transition = _ref.transition,\n backdropTransition = _ref.backdropTransition,\n _ref$autoFocus = _ref.autoFocus,\n autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n _ref$enforceFocus = _ref.enforceFocus,\n enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n _ref$restoreFocus = _ref.restoreFocus,\n restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n renderDialog = _ref.renderDialog,\n _ref$renderBackdrop = _ref.renderBackdrop,\n renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n return /*#__PURE__*/React.createElement(\"div\", props);\n } : _ref$renderBackdrop,\n providedManager = _ref.manager,\n containerRef = _ref.container,\n containerClassName = _ref.containerClassName,\n onShow = _ref.onShow,\n _ref$onHide = _ref.onHide,\n onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n onExit = _ref.onExit,\n onExited = _ref.onExited,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n var container = useWaitForDOMRef(containerRef);\n var modal = useModalManager(providedManager);\n var isMounted = useMounted();\n var prevShow = usePrevious(show);\n\n var _useState = useState(!show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var lastFocusRef = useRef(null);\n useImperativeHandle(ref, function () {\n return modal;\n }, [modal]);\n\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement();\n }\n\n if (!transition && !show && !exited) {\n setExited(true);\n } else if (show && exited) {\n setExited(false);\n }\n\n var handleShow = useEventCallback(function () {\n modal.add(container, containerClassName);\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(handleEnforceFocus);\n }, true);\n\n if (onShow) {\n onShow();\n } // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n if (autoFocus) {\n var currentActiveElement = activeElement(document);\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n var handleHide = useEventCallback(function () {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n if (restoreFocus) {\n var _lastFocusRef$current;\n\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n\n useEffect(function () {\n if (!show || !container) return;\n handleShow();\n }, [show, container,\n /* should never change: */\n handleShow]); // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n\n useEffect(function () {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(function () {\n handleHide();\n }); // --------------------------------\n\n var handleEnforceFocus = useEventCallback(function () {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n\n var currentActiveElement = activeElement();\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n var handleBackdropClick = useEventCallback(function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n if (backdrop === true) {\n onHide();\n }\n });\n var handleDocumentKeyDown = useEventCallback(function (e) {\n if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n var removeFocusListenerRef = useRef();\n var removeKeydownListenerRef = useRef();\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onExited == null ? void 0 : onExited.apply(void 0, args);\n };\n\n var Transition = transition;\n\n if (!container || !(show || Transition && !exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style: style,\n className: className,\n tabIndex: -1\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = /*#__PURE__*/React.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n \"in\": !!show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n var backdropElement = null;\n\n if (backdrop) {\n var BackdropTransition = backdropTransition;\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n\n if (BackdropTransition) {\n backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n appear: true,\n \"in\": !!show\n }, backdropElement);\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: PropTypes.bool,\n\n /**\n * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: PropTypes.any,\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: PropTypes.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: PropTypes.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js static\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: PropTypes.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: PropTypes.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n *\n * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n */\n onEscapeKeyDown: PropTypes.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: PropTypes.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: PropTypes.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: PropTypes.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: PropTypes.elementType,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: PropTypes.elementType,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: PropTypes.bool,\n\n /**\n * Options passed to focus function when `restoreFocus` is set to `true`\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n */\n restoreFocusOptions: PropTypes.shape({\n preventScroll: PropTypes.bool\n }),\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: PropTypes.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n return _ModalManager.apply(this, arguments) || this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {\n var _css;\n\n var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n\n element.dataset[prop] = actual;\n css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n };\n\n _proto.restore = function restore(prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n var _css2;\n\n delete element.dataset[prop];\n css(element, (_css2 = {}, _css2[prop] = value, _css2));\n }\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"contentClassName\", \"centered\", \"size\", \"children\", \"scrollable\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n contentClassName = _ref.contentClassName,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\", contentClassName)\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"contentClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onExited\", \"backdropClassName\", \"manager\"];\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport warning from 'warning';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n style = _ref.style,\n dialogClassName = _ref.dialogClassName,\n contentClassName = _ref.contentClassName,\n children = _ref.children,\n Dialog = _ref.dialogAs,\n ariaLabelledby = _ref['aria-labelledby'],\n ariaDescribedby = _ref['aria-describedby'],\n ariaLabel = _ref['aria-label'],\n show = _ref.show,\n animation = _ref.animation,\n backdrop = _ref.backdrop,\n keyboard = _ref.keyboard,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n onShow = _ref.onShow,\n onHide = _ref.onHide,\n container = _ref.container,\n autoFocus = _ref.autoFocus,\n enforceFocus = _ref.enforceFocus,\n restoreFocus = _ref.restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onExited = _ref.onExited,\n backdropClassName = _ref.backdropClassName,\n propsManager = _ref.manager,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useState = useState({}),\n modalStyle = _useState[0],\n setStyle = _useState[1];\n\n var _useState2 = useState(false),\n animateStaticModal = _useState2[0],\n setAnimateStaticModal = _useState2[1];\n\n var waitingForMouseUpRef = useRef(false);\n var ignoreBackdropClickRef = useRef(false);\n var removeStaticModalAnimationRef = useRef(null); // TODO: what's this type\n\n var _useCallbackRef = useCallbackRef(),\n modal = _useCallbackRef[0],\n setModalRef = _useCallbackRef[1];\n\n var handleHide = useEventCallback(onHide);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n useImperativeHandle(ref, function () {\n return {\n get _modal() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Accessing `_modal` is not supported and will be removed in a future release') : void 0;\n return modal;\n }\n\n };\n }, [modal]);\n var modalContext = useMemo(function () {\n return {\n onHide: handleHide\n };\n }, [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n if (!manager) manager = new BootstrapModalManager();\n return manager;\n }\n\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n\n var handleWindowResize = useEventCallback(function () {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(function () {\n removeEventListener(window, 'resize', handleWindowResize);\n\n if (removeStaticModalAnimationRef.current) {\n removeStaticModalAnimationRef.current();\n }\n }); // We prevent the modal from closing during a drag by detecting where the\n // the click originates from. If it starts in the modal and then ends outside\n // don't close.\n\n var handleDialogMouseDown = function handleDialogMouseDown() {\n waitingForMouseUpRef.current = true;\n };\n\n var handleMouseUp = function handleMouseUp(e) {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n\n waitingForMouseUpRef.current = false;\n };\n\n var handleStaticModalAnimation = function handleStaticModalAnimation() {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, function () {\n setAnimateStaticModal(false);\n });\n };\n\n var handleStaticBackdropClick = function handleStaticBackdropClick(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n handleStaticModalAnimation();\n };\n\n var handleClick = function handleClick(e) {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n\n onHide == null ? void 0 : onHide();\n };\n\n var handleEscapeKeyDown = function handleEscapeKeyDown(e) {\n if (!keyboard && backdrop === 'static') {\n // Call preventDefault to stop modal from closing in react-overlays,\n // then play our animation.\n e.preventDefault();\n handleStaticModalAnimation();\n } else if (keyboard && onEscapeKeyDown) {\n onEscapeKeyDown(e);\n }\n };\n\n var handleEnter = function handleEnter(node, isAppearing) {\n if (node) {\n node.style.display = 'block';\n updateDialogStyle(node);\n }\n\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n\n var handleExit = function handleExit(node) {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n\n var handleEntering = function handleEntering(node, isAppearing) {\n onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n addEventListener(window, 'resize', handleWindowResize);\n };\n\n var handleExited = function handleExited(node) {\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n removeEventListener(window, 'resize', handleWindowResize);\n };\n\n var renderBackdrop = useCallback(function (backdropProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, backdropProps, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n }));\n }, [animation, backdropClassName, bsPrefix]);\n\n var baseModalStyle = _extends({}, style, modalStyle); // Sets `display` always block when `animation` is false\n\n\n if (!animation) {\n baseModalStyle.display = 'block';\n }\n\n var renderDialog = function renderDialog(dialogProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"dialog\"\n }, dialogProps, {\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && bsPrefix + \"-static\"),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }), /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName\n }), children));\n };\n\n return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n value: modalContext\n }, /*#__PURE__*/React.createElement(BaseModal, {\n show: show,\n ref: setModalRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n }));\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nModal.Body = ModalBody;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Footer = ModalFooter;\nModal.Dialog = ModalDialog;\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default Modal;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\nconst MAX_DELAY_MS = 2 ** 31 - 1;\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n const delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(() => setChainedTimeout(handleRef, fn, timeoutAtMs), MAX_DELAY_MS);\n}\n\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\nexport default function useTimeout() {\n const isMounted = useMounted();\n\n // types are confused between node and web here IDK\n const handleRef = useRef();\n useWillUnmount(() => clearTimeout(handleRef.current));\n return useMemo(() => {\n const clear = () => clearTimeout(handleRef.current);\n function set(fn, delayMs = 0) {\n if (!isMounted()) return;\n clear();\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n return {\n set,\n clear\n };\n }, []);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { placements } from './popper';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, outerRef) {\n var flip = props.flip,\n offset = props.offset,\n placement = props.placement,\n _props$containerPaddi = props.containerPadding,\n containerPadding = _props$containerPaddi === void 0 ? 5 : _props$containerPaddi,\n _props$popperConfig = props.popperConfig,\n popperConfig = _props$popperConfig === void 0 ? {} : _props$popperConfig,\n Transition = props.transition;\n\n var _useCallbackRef = useCallbackRef(),\n rootElement = _useCallbackRef[0],\n attachRef = _useCallbackRef[1];\n\n var _useCallbackRef2 = useCallbackRef(),\n arrowElement = _useCallbackRef2[0],\n attachArrowRef = _useCallbackRef2[1];\n\n var mergedRef = useMergedRefs(attachRef, outerRef);\n var container = useWaitForDOMRef(props.container);\n var target = useWaitForDOMRef(props.target);\n\n var _useState = useState(!props.show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var _usePopper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enableEvents: !!props.show,\n containerPadding: containerPadding || 5,\n flip: flip,\n offset: offset,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n })),\n styles = _usePopper.styles,\n attributes = _usePopper.attributes,\n popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n if (props.show) {\n if (exited) setExited(false);\n } else if (!props.transition && !exited) {\n setExited(true);\n }\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n if (props.onExited) {\n props.onExited.apply(props, arguments);\n }\n }; // Don't un-render the overlay while it's transitioning out.\n\n\n var mountOverlay = props.show || Transition && !exited;\n useRootClose(rootElement, props.onHide, {\n disabled: !props.rootClose || props.rootCloseDisabled,\n clickTrigger: props.rootCloseEvent\n });\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n var child = props.children(_extends({}, popper, {\n show: !!props.show,\n props: _extends({}, attributes.popper, {\n style: styles.popper,\n ref: mergedRef\n }),\n arrowProps: _extends({}, attributes.arrow, {\n style: styles.arrow,\n ref: attachArrowRef\n })\n }));\n\n if (Transition) {\n var onExit = props.onExit,\n onExiting = props.onExiting,\n onEnter = props.onEnter,\n onEntering = props.onEntering,\n onEntered = props.onEntered;\n child = /*#__PURE__*/React.createElement(Transition, {\n \"in\": props.show,\n appear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, child);\n }\n\n return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nOverlay.propTypes = {\n /**\n * Set the visibility of the Overlay\n */\n show: PropTypes.bool,\n\n /** Specify where the overlay element is positioned in relation to the target element */\n placement: PropTypes.oneOf(placements),\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `target` element is where\n * the overlay is positioned relative to.\n */\n target: PropTypes.any,\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: PropTypes.any,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Overlay to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n\n /**\n * A render prop that returns an element to overlay and position. See\n * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n *\n * @type {Function ({\n * show: boolean,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * [string]: string | number,\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * [string]: string | number,\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Control how much space there is between the edge of the boundary element and overlay.\n * A convenience shortcut to setting `popperConfig.modfiers.preventOverflow.padding`\n */\n containerPadding: PropTypes.number,\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n */\n rootClose: PropTypes.bool,\n\n /**\n * Specify event for toggling overlay\n */\n rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n /**\n * Specify disabled for disable RootCloseWrapper\n */\n rootCloseDisabled: PropTypes.bool,\n\n /**\n * A Callback fired by the Overlay when it wishes to be hidden.\n *\n * __required__ when `rootClose` is `true`.\n *\n * @type func\n */\n onHide: function onHide(props) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (props.rootClose) {\n var _PropTypes$func;\n\n return (_PropTypes$func = PropTypes.func).isRequired.apply(_PropTypes$func, [props].concat(args));\n }\n\n return PropTypes.func.apply(PropTypes, [props].concat(args));\n },\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component\n * used to animate the overlay as it changes visibility.\n */\n // @ts-ignore\n transition: PropTypes.elementType,\n\n /**\n * Callback fired before the Overlay transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Overlay transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning out\n */\n onExited: PropTypes.func\n};\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"transition\", \"popperConfig\"],\n _excluded2 = [\"props\", \"arrowProps\", \"show\", \"update\", \"forceUpdate\", \"placement\", \"state\"];\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from 'react-overlays/Overlay';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nimport Fade from './Fade';\nvar defaultProps = {\n transition: Fade,\n rootClose: false,\n show: false,\n placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n var ref = props.ref;\n var aRef = arrowProps.ref;\n\n props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n return ref(safeFindDOMNode(r));\n });\n\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n return aRef(safeFindDOMNode(r));\n });\n}\n\nfunction Overlay(_ref) {\n var overlay = _ref.children,\n transition = _ref.transition,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n outerProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var popperRef = useRef({});\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n ref = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var actualTransition = transition === true ? Fade : transition || null;\n return /*#__PURE__*/React.createElement(BaseOverlay, _extends({}, outerProps, {\n ref: ref,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n }),\n transition: actualTransition\n }), function (_ref2) {\n var _state$modifiersData$;\n\n var overlayProps = _ref2.props,\n arrowProps = _ref2.arrowProps,\n show = _ref2.show,\n update = _ref2.update,\n _ = _ref2.forceUpdate,\n placement = _ref2.placement,\n state = _ref2.state,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n wrapRefs(overlayProps, arrowProps);\n var popper = Object.assign(popperRef.current, {\n state: state,\n scheduleUpdate: update,\n placement: placement,\n outOfBoundaries: (state == null ? void 0 : (_state$modifiersData$ = state.modifiersData.hide) == null ? void 0 : _state$modifiersData$.isReferenceHidden) || false\n });\n if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n placement: placement,\n show: show\n }, !transition && show && {\n className: 'show'\n }, {\n popper: popper,\n arrowProps: arrowProps\n }));\n return /*#__PURE__*/React.cloneElement(overlay, _extends({}, props, overlayProps, {\n placement: placement,\n arrowProps: arrowProps,\n popper: popper,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: _extends({}, overlay.props.style, overlayProps.style)\n }));\n });\n}\n\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"trigger\", \"overlay\", \"children\", \"popperConfig\", \"show\", \"defaultShow\", \"onToggle\", \"delay\", \"placement\", \"flip\"];\nimport contains from 'dom-helpers/contains';\nimport React, { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport Overlay from './Overlay';\n\nvar RefHolder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefHolder, _React$Component);\n\n function RefHolder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = RefHolder.prototype;\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(React.Component);\n\nfunction normalizeDelay(delay) {\n return delay && typeof delay === 'object' ? delay : {\n show: delay,\n hide: delay\n };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut( // eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n var e = args[0];\n var target = e.currentTarget;\n var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n if ((!related || related !== target) && !contains(target, related)) {\n handler.apply(void 0, args);\n }\n}\n\nvar defaultProps = {\n defaultShow: false,\n trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger(_ref) {\n var trigger = _ref.trigger,\n overlay = _ref.overlay,\n children = _ref.children,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n propsShow = _ref.show,\n _ref$defaultShow = _ref.defaultShow,\n defaultShow = _ref$defaultShow === void 0 ? false : _ref$defaultShow,\n onToggle = _ref.onToggle,\n propsDelay = _ref.delay,\n placement = _ref.placement,\n _ref$flip = _ref.flip,\n flip = _ref$flip === void 0 ? placement && placement.indexOf('auto') !== -1 : _ref$flip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var triggerNodeRef = useRef(null);\n var timeout = useTimeout();\n var hoverStateRef = useRef('');\n\n var _useUncontrolledProp = useUncontrolledProp(propsShow, defaultShow, onToggle),\n show = _useUncontrolledProp[0],\n setShow = _useUncontrolledProp[1];\n\n var delay = normalizeDelay(propsDelay);\n\n var _ref2 = typeof children !== 'function' ? React.Children.only(children).props : {},\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick;\n\n var getTarget = useCallback(function () {\n return safeFindDOMNode(triggerNodeRef.current);\n }, []);\n var handleShow = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'show';\n\n if (!delay.show) {\n setShow(true);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'show') setShow(true);\n }, delay.show);\n }, [delay.show, setShow, timeout]);\n var handleHide = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'hide';\n\n if (!delay.hide) {\n setShow(false);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'hide') setShow(false);\n }, delay.hide);\n }, [delay.hide, setShow, timeout]);\n var handleFocus = useCallback(function () {\n handleShow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onFocus == null ? void 0 : onFocus.apply(void 0, args);\n }, [handleShow, onFocus]);\n var handleBlur = useCallback(function () {\n handleHide();\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n onBlur == null ? void 0 : onBlur.apply(void 0, args);\n }, [handleHide, onBlur]);\n var handleClick = useCallback(function () {\n setShow(!show);\n if (onClick) onClick.apply(void 0, arguments);\n }, [onClick, setShow, show]);\n var handleMouseOver = useCallback(function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n handleMouseOverOut(handleShow, args, 'fromElement');\n }, [handleShow]);\n var handleMouseOut = useCallback(function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n handleMouseOverOut(handleHide, args, 'toElement');\n }, [handleHide]);\n var triggers = trigger == null ? [] : [].concat(trigger);\n var triggerProps = {};\n\n if (triggers.indexOf('click') !== -1) {\n triggerProps.onClick = handleClick;\n }\n\n if (triggers.indexOf('focus') !== -1) {\n triggerProps.onFocus = handleFocus;\n triggerProps.onBlur = handleBlur;\n }\n\n if (triggers.indexOf('hover') !== -1) {\n process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n triggerProps.onMouseOver = handleMouseOver;\n triggerProps.onMouseOut = handleMouseOut;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(_extends({}, triggerProps, {\n ref: triggerNodeRef\n })) : /*#__PURE__*/React.createElement(RefHolder, {\n ref: triggerNodeRef\n }, /*#__PURE__*/cloneElement(children, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, props, {\n show: show,\n onHide: handleHide,\n flip: flip,\n placement: placement,\n popperConfig: popperConfig,\n target: getTarget\n }), overlay));\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"className\", \"style\", \"variant\", \"bsPrefix\"],\n _excluded2 = [\"isChild\"],\n _excluded3 = [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"bsPrefix\", \"variant\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React, { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nvar ROUND_PRECISION = 1000;\n/**\n * Validate that children, if any, are instances of `<ProgressBar>`.\n */\n\nfunction onlyProgressBar(props, propName, componentName) {\n var children = props[propName];\n\n if (!children) {\n return null;\n }\n\n var error = null;\n React.Children.forEach(children, function (child) {\n if (error) {\n return;\n }\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n\n\n var element = /*#__PURE__*/React.createElement(ProgressBar, null);\n if (child.type === element.type) return;\n var childType = child.type;\n var childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(\"Children of \" + componentName + \" can contain only ProgressBar \" + (\"components. Found \" + childIdentifier + \".\"));\n });\n return error;\n}\n\nvar defaultProps = {\n min: 0,\n max: 100,\n animated: false,\n isChild: false,\n srOnly: false,\n striped: false\n};\n\nfunction getPercentage(now, min, max) {\n var percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\n\nfunction renderProgressBar(_ref, ref) {\n var _classNames;\n\n var min = _ref.min,\n now = _ref.now,\n max = _ref.max,\n label = _ref.label,\n srOnly = _ref.srOnly,\n striped = _ref.striped,\n animated = _ref.animated,\n className = _ref.className,\n style = _ref.style,\n variant = _ref.variant,\n bsPrefix = _ref.bsPrefix,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n role: \"progressbar\",\n className: classNames(className, bsPrefix + \"-bar\", (_classNames = {}, _classNames[\"bg-\" + variant] = variant, _classNames[bsPrefix + \"-bar-animated\"] = animated, _classNames[bsPrefix + \"-bar-striped\"] = animated || striped, _classNames)),\n style: _extends({\n width: getPercentage(now, min, max) + \"%\"\n }, style),\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max\n }), srOnly ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, label) : label);\n}\n\nvar ProgressBar = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var isChild = _ref2.isChild,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n\n var min = props.min,\n now = props.now,\n max = props.max,\n label = props.label,\n srOnly = props.srOnly,\n striped = props.striped,\n animated = props.animated,\n bsPrefix = props.bsPrefix,\n variant = props.variant,\n className = props.className,\n children = props.children,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded3);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, wrapperProps, {\n className: classNames(className, bsPrefix)\n }), children ? map(children, function (child) {\n return /*#__PURE__*/cloneElement(child, {\n isChild: true\n });\n }) : renderProgressBar({\n min: min,\n now: now,\n max: max,\n label: label,\n srOnly: srOnly,\n striped: striped,\n animated: animated,\n bsPrefix: bsPrefix,\n variant: variant\n }, ref));\n});\nProgressBar.displayName = 'ProgressBar';\nProgressBar.defaultProps = defaultProps;\nexport default ProgressBar;","import React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n var index = 0;\n return React.Children.map(children, function (child) {\n return /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child;\n });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n var index = 0;\n React.Children.forEach(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\nexport { map, forEach };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (href === void 0) {\n href = null;\n }\n\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"popper\", \"show\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n placement: 'right'\n};\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n placement = _ref.placement,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n arrowProps = _ref.arrowProps,\n _ = _ref.popper,\n _2 = _ref.show,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n\n var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n primaryPlacement = _ref2[0];\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: style,\n role: \"tooltip\",\n \"x-placement\": primaryPlacement,\n className: classNames(className, bsPrefix, \"bs-tooltip-\" + primaryPlacement)\n }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"arrow\"\n }, arrowProps)), /*#__PURE__*/React.createElement(\"div\", {\n className: bsPrefix + \"-inner\"\n }, children));\n});\nTooltip.defaultProps = defaultProps;\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return /*#__PURE__*/React.forwardRef(function (p, ref) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n var str = css(node, property) || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n var duration = parseDuration(element, 'transitionDuration');\n var delay = parseDuration(element, 'transitionDelay');\n var remove = transitionEnd(element, function (e) {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n var styles = window.getComputedStyle(element);\n var top = parseFloat(styles.marginTop) || 0;\n var right = parseFloat(styles.marginRight) || 0;\n var bottom = parseFloat(styles.marginBottom) || 0;\n var left = parseFloat(styles.marginLeft) || 0;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n}\n\nexport default function usePopperMarginModifiers() {\n var overlayRef = useRef(null);\n var margins = useRef(null);\n var arrowMargins = useRef(null);\n var popoverClass = useBootstrapPrefix(undefined, 'popover');\n var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n var callback = useCallback(function (overlay) {\n if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n margins.current = getMargins(overlay);\n overlay.style.margin = '0';\n overlayRef.current = overlay;\n }, [popoverClass, dropdownMenuClass]);\n var offset = useMemo(function () {\n return {\n name: 'offset',\n options: {\n offset: function offset(_ref) {\n var placement = _ref.placement;\n if (!margins.current) return [0, 0];\n var _margins$current = margins.current,\n top = _margins$current.top,\n left = _margins$current.left,\n bottom = _margins$current.bottom,\n right = _margins$current.right;\n\n switch (placement.split('-')[0]) {\n case 'top':\n return [0, bottom];\n\n case 'left':\n return [0, right];\n\n case 'bottom':\n return [0, top];\n\n case 'right':\n return [0, left];\n\n default:\n return [0, 0];\n }\n }\n }\n };\n }, [margins]);\n var arrow = useMemo(function () {\n return {\n name: 'arrow',\n options: {\n padding: function padding() {\n // The options here are used for Popper 2.8.4 and up.\n // For earlier version, padding is handled in popoverArrowMargins below.\n if (!arrowMargins.current) {\n return 0;\n }\n\n var _arrowMargins$current = arrowMargins.current,\n top = _arrowMargins$current.top,\n right = _arrowMargins$current.right;\n var padding = top || right;\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n }\n }\n };\n }, [arrowMargins]); // Converts popover arrow margin to arrow modifier padding\n\n var popoverArrowMargins = useMemo(function () {\n return {\n name: 'popoverArrowMargins',\n enabled: true,\n phase: 'main',\n fn: function fn() {\n return undefined;\n },\n requiresIfExists: ['arrow'],\n effect: function effect(_ref2) {\n var state = _ref2.state;\n\n if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass)) {\n return undefined;\n }\n\n if (state.modifiersData['arrow#persistent']) {\n // @popperjs/core <= 2.8.3 uses arrow#persistent to pass padding to arrow modifier.\n var _getMargins = getMargins(state.elements.arrow),\n top = _getMargins.top,\n right = _getMargins.right;\n\n var padding = top || right;\n state.modifiersData['arrow#persistent'].padding = {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n } else {\n // @popperjs/core >= 2.8.4 gets the padding from the arrow modifier options,\n // so we'll get the margins here, and let the arrow modifier above pass\n // it to popper.\n arrowMargins.current = getMargins(state.elements.arrow);\n }\n\n state.elements.arrow.style.margin = '0';\n return function () {\n if (state.elements.arrow) state.elements.arrow.style.margin = '';\n };\n }\n };\n }, [popoverClass]);\n return [callback, [offset, arrow, popoverArrowMargins]];\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.1\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 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\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","module.exports=function(i){var e={};function o(t){if(e[t])return e[t].exports;var a=e[t]={i:t,l:!1,exports:{}};return i[t].call(a.exports,a,a.exports,o),a.l=!0,a.exports}return o.m=i,o.c=e,o.d=function(i,e,t){o.o(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:t})},o.r=function(i){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(i,\"__esModule\",{value:!0})},o.t=function(i,e){if(1&e&&(i=o(i)),8&e)return i;if(4&e&&\"object\"==typeof i&&i&&i.__esModule)return i;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:i}),2&e&&\"string\"!=typeof i)for(var a in i)o.d(t,a,function(e){return i[e]}.bind(null,a));return t},o.n=function(i){var e=i&&i.__esModule?function(){return i.default}:function(){return i};return o.d(e,\"a\",e),e},o.o=function(i,e){return Object.prototype.hasOwnProperty.call(i,e)},o.p=\"\",o(o.s=0)}([function(i,e,o){\"use strict\";e.__esModule=!0;var t,a=o(1),r=(t=a)&&t.__esModule?t:{default:t};var n=Promise.resolve(),l=function(i){function e(o){!function(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var t=function(i,e){if(!i)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?i:e}(this,i.call(this,o));return t.uiConfig=o.uiConfig,t.firebaseAuth=o.firebaseAuth,t.className=o.className,t.uiCallback=o.uiCallback,t.unregisterAuthObserver=function(){},t}return function(i,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(i,e):i.__proto__=e)}(e,i),e.prototype.componentDidMount=function(){var i=this;o(2);var e=o(7);return n.then((function(){i.firebaseUiWidget=e.auth.AuthUI.getInstance()||new e.auth.AuthUI(i.firebaseAuth),\"popup\"===i.uiConfig.signInFlow&&i.firebaseUiWidget.reset(),i.userSignedIn=!1,i.unregisterAuthObserver=i.firebaseAuth.onAuthStateChanged((function(e){!e&&i.userSignedIn&&i.firebaseUiWidget.reset(),i.userSignedIn=!!e})),i.uiCallback&&i.uiCallback(i.firebaseUiWidget),i.firebaseUiWidget.start(\"#firebaseui_container\",i.uiConfig)}))},e.prototype.componentWillUnmount=function(){var i=this;return n=n.then((function(){return i.unregisterAuthObserver(),i.firebaseUiWidget.delete()}))},e.prototype.render=function(){return r.default.createElement(\"div\",{className:this.className,id:\"firebaseui_container\"})},e}(r.default.Component);e.default=l},function(i,e){i.exports=require(\"react\")},function(i,e,o){var t=o(3);\"string\"==typeof t&&(t=[[i.i,t,\"\"]]);var a={hmr:!0,transform:void 0,insertInto:void 0};o(5)(t,a);t.locals&&(i.exports=t.locals)},function(i,e,o){(e=i.exports=o(4)(!1)).push([i.i,\"@import url(https://fonts.googleapis.com/css?family=Roboto:400,500,700&display=swap);\",\"\"]),e.push([i.i,'.mdl-button{background:0 0;border:none;border-radius:2px;color:#000;position:relative;height:36px;margin:0;min-width:64px;padding:0 16px;display:inline-block;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;text-transform:uppercase;line-height:1;letter-spacing:0;overflow:hidden;will-change:box-shadow;transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:0;cursor:pointer;text-decoration:none;text-align:center;line-height:36px;vertical-align:middle}.mdl-button::-moz-focus-inner{border:0}.mdl-button:hover{background-color:hsla(0,0%,62%,.2)}.mdl-button:focus:not(:active){background-color:rgba(0,0,0,.12)}.mdl-button:active{background-color:hsla(0,0%,62%,.4)}.mdl-button.mdl-button--colored{color:#3f51b5}.mdl-button.mdl-button--colored:focus:not(:active){background-color:rgba(0,0,0,.12)}input.mdl-button[type=submit]{-webkit-appearance:none}.mdl-button--raised{background:hsla(0,0%,62%,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-button--raised:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:hsla(0,0%,62%,.4)}.mdl-button--raised:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:hsla(0,0%,62%,.4)}.mdl-button--raised.mdl-button--colored{background:#3f51b5;color:#fff}.mdl-button--raised.mdl-button--colored:active,.mdl-button--raised.mdl-button--colored:focus:not(:active),.mdl-button--raised.mdl-button--colored:hover{background-color:#3f51b5}.mdl-button--raised.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;background:hsla(0,0%,62%,.2);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.mdl-button--fab .material-icons{position:absolute;top:50%;left:50%;transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--fab.mdl-button--mini-fab{height:40px;min-width:40px;width:40px}.mdl-button--fab .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button--fab:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:hsla(0,0%,62%,.4)}.mdl-button--fab:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:hsla(0,0%,62%,.4)}.mdl-button--fab.mdl-button--colored{background:#ff4081;color:#fff}.mdl-button--fab.mdl-button--colored:active,.mdl-button--fab.mdl-button--colored:focus:not(:active),.mdl-button--fab.mdl-button--colored:hover{background-color:#ff4081}.mdl-button--fab.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--icon{border-radius:50%;font-size:24px;height:32px;margin-left:0;margin-right:0;min-width:32px;width:32px;padding:0;overflow:hidden;color:inherit;line-height:normal}.mdl-button--icon .material-icons{position:absolute;top:50%;left:50%;transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon{height:24px;min-width:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon .material-icons{top:0;left:0}.mdl-button--icon .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button__ripple-container{display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0;overflow:hidden}.mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple,.mdl-button[disabled] .mdl-button__ripple-container .mdl-ripple{background-color:transparent}.mdl-button--primary.mdl-button--primary{color:#3f51b5}.mdl-button--primary.mdl-button--primary .mdl-ripple{background:#fff}.mdl-button--primary.mdl-button--primary.mdl-button--fab,.mdl-button--primary.mdl-button--primary.mdl-button--raised{color:#fff;background-color:#3f51b5}.mdl-button--accent.mdl-button--accent{color:#ff4081}.mdl-button--accent.mdl-button--accent .mdl-ripple{background:#fff}.mdl-button--accent.mdl-button--accent.mdl-button--fab,.mdl-button--accent.mdl-button--accent.mdl-button--raised{color:#fff;background-color:#ff4081}.mdl-button.mdl-button--disabled.mdl-button--disabled,.mdl-button[disabled][disabled]{color:rgba(0,0,0,.26);cursor:default;background-color:transparent}.mdl-button--fab.mdl-button--disabled.mdl-button--disabled,.mdl-button--fab[disabled][disabled]{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.26)}.mdl-button--raised.mdl-button--disabled.mdl-button--disabled,.mdl-button--raised[disabled][disabled]{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.26);box-shadow:none}.mdl-button--colored.mdl-button--disabled.mdl-button--disabled,.mdl-button--colored[disabled][disabled]{color:rgba(0,0,0,.26)}.mdl-button .material-icons{vertical-align:middle}.mdl-card{display:flex;flex-direction:column;font-size:16px;font-weight:400;min-height:200px;overflow:hidden;width:330px;z-index:1;position:relative;background:#fff;border-radius:2px;box-sizing:border-box}.mdl-card__media{background-color:#ff4081;background-repeat:repeat;background-position:50% 50%;background-size:cover;background-origin:padding-box;background-attachment:scroll;box-sizing:border-box}.mdl-card__title{align-items:center;color:#000;display:block;display:flex;justify-content:stretch;line-height:normal;padding:16px;perspective-origin:165px 56px;transform-origin:165px 56px;box-sizing:border-box}.mdl-card__title.mdl-card--border{border-bottom:1px solid rgba(0,0,0,.1)}.mdl-card__title-text{align-self:flex-end;color:inherit;display:block;display:flex;font-size:24px;font-weight:300;line-height:normal;overflow:hidden;transform-origin:149px 48px;margin:0}.mdl-card__subtitle-text{font-size:14px;color:rgba(0,0,0,.54);margin:0}.mdl-card__supporting-text{color:rgba(0,0,0,.54);font-size:1rem;line-height:18px;overflow:hidden;padding:16px;width:90%}.mdl-card__supporting-text.mdl-card--border{border-bottom:1px solid rgba(0,0,0,.1)}.mdl-card__actions{font-size:16px;line-height:normal;width:100%;background-color:transparent;padding:8px;box-sizing:border-box}.mdl-card__actions.mdl-card--border{border-top:1px solid rgba(0,0,0,.1)}.mdl-card--expand{flex-grow:1}.mdl-card__menu{position:absolute;right:16px;top:16px}.mdl-dialog{border:none;box-shadow:0 9px 46px 8px rgba(0,0,0,.14),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.2);width:280px}.mdl-dialog__title{padding:24px 24px 0;margin:0;font-size:2.5rem}.mdl-dialog__actions{padding:8px 8px 8px 24px;display:flex;flex-direction:row-reverse;flex-wrap:wrap}.mdl-dialog__actions>*{margin-right:8px;height:36px}.mdl-dialog__actions>:first-child{margin-right:0}.mdl-dialog__actions--full-width{padding:0 0 8px}.mdl-dialog__actions--full-width>*{height:48px;flex:0 0 100%;padding-right:16px;margin-right:0;text-align:right}.mdl-dialog__content{padding:20px 24px 24px;color:rgba(0,0,0,.54)}.mdl-progress{display:block;position:relative;height:4px;width:500px;max-width:100%}.mdl-progress>.bar{display:block;position:absolute;top:0;bottom:0;width:0;transition:width .2s cubic-bezier(.4,0,.2,1)}.mdl-progress>.progressbar{background-color:#3f51b5;z-index:1;left:0}.mdl-progress>.bufferbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.7),hsla(0,0%,100%,.7)),linear-gradient(90deg,#3f51b5,#3f51b5);z-index:0;left:0}.mdl-progress>.auxbar{right:0}@supports (-webkit-appearance:none){.mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate)>.auxbar,.mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate)>.auxbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.7),hsla(0,0%,100%,.7)),linear-gradient(90deg,#3f51b5,#3f51b5);mask:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=)}}.mdl-progress:not(.mdl-progress--indeterminate)>.auxbar,.mdl-progress:not(.mdl-progress__indeterminate)>.auxbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.9)),linear-gradient(90deg,#3f51b5,#3f51b5)}.mdl-progress.mdl-progress--indeterminate>.bar1,.mdl-progress.mdl-progress__indeterminate>.bar1{background-color:#3f51b5;animation-name:indeterminate1;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear}.mdl-progress.mdl-progress--indeterminate>.bar3,.mdl-progress.mdl-progress__indeterminate>.bar3{background-image:none;background-color:#3f51b5;animation-name:indeterminate2;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes indeterminate1{0%{left:0;width:0}50%{left:25%;width:75%}75%{left:100%;width:0}}@keyframes indeterminate2{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}to{left:100%;width:0}}.mdl-shadow--2dp{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-shadow--3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-shadow--4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-shadow--6dp{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)}.mdl-shadow--8dp{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2)}.mdl-shadow--16dp{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.2)}.mdl-shadow--24dp{box-shadow:0 9px 46px 8px rgba(0,0,0,.14),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.2)}.mdl-spinner{display:inline-block;position:relative;width:28px;height:28px}.mdl-spinner:not(.is-upgraded).is-active:after{content:\"Loading...\"}.mdl-spinner.is-upgraded.is-active{animation:mdl-spinner__container-rotate 1.568s linear infinite}@keyframes mdl-spinner__container-rotate{to{transform:rotate(1turn)}}.mdl-spinner__layer{position:absolute;width:100%;height:100%;opacity:0}.mdl-spinner__layer-1{border-color:#42a5f5}.mdl-spinner--single-color .mdl-spinner__layer-1{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-1{animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-2{border-color:#f44336}.mdl-spinner--single-color .mdl-spinner__layer-2{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-2{animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-3{border-color:#fdd835}.mdl-spinner--single-color .mdl-spinner__layer-3{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-3{animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-4{border-color:#4caf50}.mdl-spinner--single-color .mdl-spinner__layer-4{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-4{animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@keyframes mdl-spinner__fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(3turn)}}@keyframes mdl-spinner__layer-1-fade-in-out{0%{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdl-spinner__layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}}@keyframes mdl-spinner__layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}}@keyframes mdl-spinner__layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}.mdl-spinner__gap-patch{position:absolute;box-sizing:border-box;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__gap-patch .mdl-spinner__circle{width:1000%;left:-450%}.mdl-spinner__circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__circle-clipper.mdl-spinner__left{float:left}.mdl-spinner__circle-clipper.mdl-spinner__right{float:right}.mdl-spinner__circle-clipper .mdl-spinner__circle{width:200%}.mdl-spinner__circle{box-sizing:border-box;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;animation:none;position:absolute;top:0;right:0;bottom:0;left:0}.mdl-spinner__left .mdl-spinner__circle{border-right-color:transparent!important;transform:rotate(129deg)}.mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle{animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__right .mdl-spinner__circle{left:-100%;border-left-color:transparent!important;transform:rotate(-129deg)}.mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle{animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@keyframes mdl-spinner__left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@keyframes mdl-spinner__right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}.mdl-textfield{position:relative;font-size:16px;display:inline-block;box-sizing:border-box;width:300px;max-width:100%;margin:0;padding:20px 0}.mdl-textfield .mdl-button{position:absolute;bottom:20px}.mdl-textfield--align-right{text-align:right}.mdl-textfield--full-width{width:100%}.mdl-textfield--expandable{min-width:32px;width:auto;min-height:32px}.mdl-textfield--expandable .mdl-button--icon{top:16px}.mdl-textfield__input{border:none;border-bottom:1px solid rgba(0,0,0,.12);display:block;font-size:16px;font-family:Helvetica,Arial,sans-serif;margin:0;padding:4px 0;width:100%;background:0 0;text-align:left;color:inherit}.mdl-textfield__input[type=number]{-moz-appearance:textfield}.mdl-textfield__input[type=number]::-webkit-inner-spin-button,.mdl-textfield__input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.mdl-textfield.is-focused .mdl-textfield__input{outline:0}.mdl-textfield.is-invalid .mdl-textfield__input{border-color:#d50000;box-shadow:none}.mdl-textfield.is-disabled .mdl-textfield__input,fieldset[disabled] .mdl-textfield .mdl-textfield__input{background-color:transparent;border-bottom:1px dotted rgba(0,0,0,.12);color:rgba(0,0,0,.26)}.mdl-textfield textarea.mdl-textfield__input{display:block}.mdl-textfield__label{bottom:0;color:rgba(0,0,0,.26);font-size:16px;left:0;right:0;pointer-events:none;position:absolute;display:block;top:24px;width:100%;overflow:hidden;white-space:nowrap;text-align:left}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:hidden}.mdl-textfield--floating-label .mdl-textfield__label{transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__label{transition:none}.mdl-textfield.is-disabled.is-disabled .mdl-textfield__label,fieldset[disabled] .mdl-textfield .mdl-textfield__label{color:rgba(0,0,0,.26)}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__label,.mdl-textfield--floating-label.is-focused .mdl-textfield__label{color:#3f51b5;font-size:12px;top:4px;visibility:visible}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__expandable-holder .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label,.mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label{top:-16px}.mdl-textfield--floating-label.is-invalid .mdl-textfield__label{color:#d50000;font-size:12px}.mdl-textfield__label:after{background-color:#3f51b5;bottom:20px;content:\"\";height:2px;left:45%;position:absolute;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden;width:10px}.mdl-textfield.is-focused .mdl-textfield__label:after{left:0;visibility:visible;width:100%}.mdl-textfield.is-invalid .mdl-textfield__label:after{background-color:#d50000}.mdl-textfield__error{color:#d50000;position:absolute;font-size:12px;margin-top:3px;visibility:hidden;display:block}.mdl-textfield.is-invalid .mdl-textfield__error{visibility:visible}.mdl-textfield__expandable-holder{position:relative;margin-left:32px;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-block;max-width:.1px}.mdl-textfield.is-dirty .mdl-textfield__expandable-holder,.mdl-textfield.is-focused .mdl-textfield__expandable-holder{max-width:600px}.mdl-textfield__expandable-holder .mdl-textfield__label:after{bottom:0}dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{background:rgba(0,0,0,.1)}._dialog_overlay,dialog+.backdrop{position:fixed;top:0;right:0;bottom:0;left:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}.firebaseui-container{background-color:#fff;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;color:rgba(0,0,0,.87);direction:ltr;font:16px Roboto,arial,sans-serif;margin:0 auto;max-width:360px;overflow:visible;position:relative;text-align:left;width:100%}.firebaseui-container.mdl-card{overflow:visible}.firebaseui-card-header{padding:24px 24px 0}.firebaseui-card-content,.firebaseui-card-footer{padding:0 24px}.firebaseui-card-actions{box-sizing:border-box;display:table;font-size:14px;padding:8px 24px 24px;text-align:left;width:100%}.firebaseui-form-links{display:table-cell;vertical-align:middle;width:100%}.firebaseui-form-actions{display:table-cell;text-align:right;white-space:nowrap;width:100%}.firebaseui-subtitle,.firebaseui-title{color:rgba(0,0,0,.87);direction:ltr;font-size:20px;font-weight:500;line-height:24px;margin:0;padding:0;text-align:left}.firebaseui-title{padding-bottom:16px}.firebaseui-subtitle{margin:16px 0}.firebaseui-text{color:rgba(0,0,0,.87);direction:ltr;font-size:16px;line-height:24px;text-align:left}.firebaseui-id-page-password-recovery-email-sent p.firebaseui-text{margin:16px 0}.firebaseui-text-emphasis{font-weight:700}.firebaseui-error{color:#dd2c00;direction:ltr;font-size:12px;line-height:16px;margin:0;text-align:left}.firebaseui-text-input-error{margin:-16px 0 16px}.firebaseui-error-wrapper{min-height:16px}.firebaseui-list-item{direction:ltr;margin:0;padding:0;text-align:left}.firebaseui-hidden{display:none}.firebaseui-relative-wrapper{position:relative}.firebaseui-label{color:rgba(0,0,0,.54);direction:ltr;font-size:16px;text-align:left}.mdl-textfield--floating-label.is-dirty .mdl-textfield__label,.mdl-textfield--floating-label.is-focused .mdl-textfield__label{color:#757575}.firebaseui-input,.firebaseui-input-invalid{border-radius:0;color:rgba(0,0,0,.87);direction:ltr;font-size:16px;width:100%}input.firebaseui-input,input.firebaseui-input-invalid{direction:ltr;text-align:left}.firebaseui-input-invalid{border-color:#dd2c00}.firebaseui-textfield{width:100%}.firebaseui-textfield.mdl-textfield .firebaseui-input{border-color:rgba(0,0,0,.12)}.firebaseui-textfield.mdl-textfield .firebaseui-label:after{background-color:#3f51b5}.firebaseui-textfield-invalid.mdl-textfield .firebaseui-input{border-color:#dd2c00}.firebaseui-textfield-invalid.mdl-textfield .firebaseui-label:after{background-color:#dd2c00}.firebaseui-button{display:inline-block;height:36px;margin-left:8px;min-width:88px}.firebaseui-link{color:#4285f4;font-variant:normal;font-weight:400;text-decoration:none}.firebaseui-link:hover{text-decoration:underline}.firebaseui-indent{margin-left:1em}.firebaseui-tos{color:#757575;direction:ltr;font-size:12px;line-height:16px;margin-bottom:24px;margin-top:0;text-align:left}.firebaseui-provider-sign-in-footer>.firebaseui-tos{text-align:center}.firebaseui-tos-list{list-style:none;text-align:right}.firebaseui-inline-list-item{display:inline-block;margin-left:5px;margin-right:5px}.firebaseui-page-provider-sign-in,.firebaseui-page-select-tenant{background:inherit}.firebaseui-idp-list,.firebaseui-tenant-list{list-style:none;margin:1em 0;padding:0}.firebaseui-idp-button,.firebaseui-tenant-button{direction:ltr;font-weight:500;height:auto;line-height:normal;max-width:220px;min-height:40px;padding:8px 16px;text-align:left;width:100%}.firebaseui-idp-list>.firebaseui-list-item,.firebaseui-tenant-list>.firebaseui-list-item{margin-bottom:15px;text-align:center}.firebaseui-idp-icon-wrapper{display:table-cell;vertical-align:middle}.firebaseui-idp-icon{height:18px;width:18px}.firebaseui-idp-favicon,.firebaseui-idp-icon{border:none;display:inline-block;vertical-align:middle}.firebaseui-idp-favicon{height:14px;margin-right:5px;width:14px}.firebaseui-idp-text{color:#fff;display:table-cell;font-size:14px;padding-left:16px;text-transform:none;vertical-align:middle}.firebaseui-idp-text.firebaseui-idp-text-long{display:table-cell}.firebaseui-idp-text.firebaseui-idp-text-short{display:none}@media (max-width:268px){.firebaseui-idp-text.firebaseui-idp-text-long{display:none}.firebaseui-idp-text.firebaseui-idp-text-short{display:table-cell}}@media (max-width:320px){.firebaseui-recaptcha-container>div>div{transform:scale(.9);-webkit-transform:scale(.9);transform-origin:0 0;-webkit-transform-origin:0 0}}.firebaseui-idp-google>.firebaseui-idp-text{color:#757575}[data-provider-id=\"yahoo.com\"]>.firebaseui-idp-icon-wrapper>.firebaseui-idp-icon{height:22px;width:22px}.firebaseui-info-bar{background-color:#f9edbe;border:1px solid #f0c36d;box-shadow:0 2px 4px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,.2);left:10%;padding:8px 16px;position:absolute;right:10%;text-align:center;top:0}.firebaseui-info-bar-message{font-size:12px;margin:0}.firebaseui-dialog{box-sizing:border-box;color:rgba(0,0,0,.87);font:16px Roboto,arial,sans-serif;height:auto;max-height:fit-content;padding:24px;text-align:left}.firebaseui-dialog-icon-wrapper{display:table-cell;vertical-align:middle}.firebaseui-dialog-icon{float:left;height:40px;margin-right:24px;width:40px}.firebaseui-progress-dialog-message{display:table-cell;font-size:16px;font-weight:400;min-height:40px;vertical-align:middle}.firebaseui-progress-dialog-loading-icon{height:28px;margin:6px 30px 6px 6px;width:28px}.firebaseui-icon-done{background-image:url(https://www.gstatic.com/images/icons/material/system/2x/done_googgreen_36dp.png);background-position:50%;background-repeat:no-repeat;background-size:36px 36px}.firebaseui-phone-number{display:flex}.firebaseui-country-selector{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/arrow_drop_down_grey600_18dp.png);background-position:100%;background-repeat:no-repeat;background-size:18px auto;border-radius:0;border-bottom:1px solid rgba(0,0,0,.12);color:rgba(0,0,0,.87);flex-shrink:0;font-size:16px;font-weight:400;height:auto;line-height:normal;margin:20px 24px 20px 0;padding:4px 20px 4px 0;width:90px}.firebaseui-country-selector-flag{display:inline-block;margin-right:1ex}.firebaseui-flag{background-image:url(https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth/flags_sprite_2x.png);background-size:100% auto;filter:drop-shadow(1px 1px 1px rgba(0,0,0,.54));height:14px;width:24px}.firebaseui-list-box-dialog{max-height:90%;overflow:auto;padding:8px 0 0}.firebaseui-list-box-actions{padding-bottom:8px}.firebaseui-list-box-icon-wrapper{padding-right:24px}.firebaseui-list-box-icon-wrapper,.firebaseui-list-box-label-wrapper{display:table-cell;vertical-align:top}.firebaseui-list-box-dialog-button{color:rgba(0,0,0,.87);direction:ltr;font-size:16px;font-weight:400;height:auto;line-height:normal;min-height:48px;padding:14px 24px;text-align:left;text-transform:none;width:100%}.firebaseui-phone-number-error{margin-left:114px}.mdl-progress.firebaseui-busy-indicator{height:2px;left:0;position:absolute;top:55px;width:100%}.mdl-spinner.firebaseui-busy-indicator{direction:ltr;height:56px;left:0;margin:auto;position:absolute;right:0;top:30%;width:56px}.firebaseui-callback-indicator-container .firebaseui-busy-indicator{top:0}.firebaseui-callback-indicator-container{height:120px}.firebaseui-new-password-component{display:inline-block;position:relative;width:100%}.firebaseui-input-floating-button{background-position:50%;background-repeat:no-repeat;display:block;height:24px;position:absolute;right:0;top:20px;width:24px}.firebaseui-input-toggle-on{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/visibility_black_24dp.png)}.firebaseui-input-toggle-off{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/visibility_off_black_24dp.png)}.firebaseui-input-toggle-focus{opacity:.87}.firebaseui-input-toggle-blur{opacity:.38}.firebaseui-recaptcha-wrapper{display:table;margin:0 auto;padding-bottom:8px}.firebaseui-recaptcha-container{display:table-cell}.firebaseui-recaptcha-error-wrapper{caption-side:bottom;display:table-caption}.firebaseui-change-phone-number-link{display:block}.firebaseui-resend-container{direction:ltr;margin:20px 0;text-align:center}.firebaseui-id-resend-countdown{color:rgba(0,0,0,.38)}.firebaseui-id-page-phone-sign-in-start .firebaseui-form-actions div{float:left}@media (max-width:480px){.firebaseui-container{box-shadow:none;max-width:none;width:100%}.firebaseui-card-header{border-bottom:1px solid #e0e0e0;margin-bottom:16px;padding:16px 24px 0}.firebaseui-title{padding-bottom:16px}.firebaseui-card-actions{padding-right:24px}.firebaseui-busy-indicator{top:0}}.mdl-textfield__label{font-weight:400;margin-bottom:0}.firebaseui-id-page-blank,.firebaseui-id-page-spinner{background:inherit;height:64px}.firebaseui-email-sent{background-image:url(https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth/success_status.png);background-position:50%;background-repeat:no-repeat;background-size:64px 64px;height:64px;margin-top:16px;text-align:center}.firebaseui-text-justify{text-align:justify}.firebaseui-flag-KY{background-position:0 0}.firebaseui-flag-AC{background-position:0 -14px}.firebaseui-flag-AE{background-position:0 -28px}.firebaseui-flag-AF{background-position:0 -42px}.firebaseui-flag-AG{background-position:0 -56px}.firebaseui-flag-AI{background-position:0 -70px}.firebaseui-flag-AL{background-position:0 -84px}.firebaseui-flag-AM{background-position:0 -98px}.firebaseui-flag-AO{background-position:0 -112px}.firebaseui-flag-AQ{background-position:0 -126px}.firebaseui-flag-AR{background-position:0 -140px}.firebaseui-flag-AS{background-position:0 -154px}.firebaseui-flag-AT{background-position:0 -168px}.firebaseui-flag-AU{background-position:0 -182px}.firebaseui-flag-AW{background-position:0 -196px}.firebaseui-flag-AX{background-position:0 -210px}.firebaseui-flag-AZ{background-position:0 -224px}.firebaseui-flag-BA{background-position:0 -238px}.firebaseui-flag-BB{background-position:0 -252px}.firebaseui-flag-BD{background-position:0 -266px}.firebaseui-flag-BE{background-position:0 -280px}.firebaseui-flag-BF{background-position:0 -294px}.firebaseui-flag-BG{background-position:0 -308px}.firebaseui-flag-BH{background-position:0 -322px}.firebaseui-flag-BI{background-position:0 -336px}.firebaseui-flag-BJ{background-position:0 -350px}.firebaseui-flag-BL{background-position:0 -364px}.firebaseui-flag-BM{background-position:0 -378px}.firebaseui-flag-BN{background-position:0 -392px}.firebaseui-flag-BO{background-position:0 -406px}.firebaseui-flag-BQ{background-position:0 -420px}.firebaseui-flag-BR{background-position:0 -434px}.firebaseui-flag-BS{background-position:0 -448px}.firebaseui-flag-BT{background-position:0 -462px}.firebaseui-flag-BV{background-position:0 -476px}.firebaseui-flag-BW{background-position:0 -490px}.firebaseui-flag-BY{background-position:0 -504px}.firebaseui-flag-BZ{background-position:0 -518px}.firebaseui-flag-CA{background-position:0 -532px}.firebaseui-flag-CC{background-position:0 -546px}.firebaseui-flag-CD{background-position:0 -560px}.firebaseui-flag-CF{background-position:0 -574px}.firebaseui-flag-CG{background-position:0 -588px}.firebaseui-flag-CH{background-position:0 -602px}.firebaseui-flag-CI{background-position:0 -616px}.firebaseui-flag-CK{background-position:0 -630px}.firebaseui-flag-CL{background-position:0 -644px}.firebaseui-flag-CM{background-position:0 -658px}.firebaseui-flag-CN{background-position:0 -672px}.firebaseui-flag-CO{background-position:0 -686px}.firebaseui-flag-CP{background-position:0 -700px}.firebaseui-flag-CR{background-position:0 -714px}.firebaseui-flag-CU{background-position:0 -728px}.firebaseui-flag-CV{background-position:0 -742px}.firebaseui-flag-CW{background-position:0 -756px}.firebaseui-flag-CX{background-position:0 -770px}.firebaseui-flag-CY{background-position:0 -784px}.firebaseui-flag-CZ{background-position:0 -798px}.firebaseui-flag-DE{background-position:0 -812px}.firebaseui-flag-DG{background-position:0 -826px}.firebaseui-flag-DJ{background-position:0 -840px}.firebaseui-flag-DK{background-position:0 -854px}.firebaseui-flag-DM{background-position:0 -868px}.firebaseui-flag-DO{background-position:0 -882px}.firebaseui-flag-DZ{background-position:0 -896px}.firebaseui-flag-EA{background-position:0 -910px}.firebaseui-flag-EC{background-position:0 -924px}.firebaseui-flag-EE{background-position:0 -938px}.firebaseui-flag-EG{background-position:0 -952px}.firebaseui-flag-EH{background-position:0 -966px}.firebaseui-flag-ER{background-position:0 -980px}.firebaseui-flag-ES{background-position:0 -994px}.firebaseui-flag-ET{background-position:0 -1008px}.firebaseui-flag-EU{background-position:0 -1022px}.firebaseui-flag-FI{background-position:0 -1036px}.firebaseui-flag-FJ{background-position:0 -1050px}.firebaseui-flag-FK{background-position:0 -1064px}.firebaseui-flag-FM{background-position:0 -1078px}.firebaseui-flag-FO{background-position:0 -1092px}.firebaseui-flag-FR{background-position:0 -1106px}.firebaseui-flag-GA{background-position:0 -1120px}.firebaseui-flag-GB{background-position:0 -1134px}.firebaseui-flag-GD{background-position:0 -1148px}.firebaseui-flag-GE{background-position:0 -1162px}.firebaseui-flag-GF{background-position:0 -1176px}.firebaseui-flag-GG{background-position:0 -1190px}.firebaseui-flag-GH{background-position:0 -1204px}.firebaseui-flag-GI{background-position:0 -1218px}.firebaseui-flag-GL{background-position:0 -1232px}.firebaseui-flag-GM{background-position:0 -1246px}.firebaseui-flag-GN{background-position:0 -1260px}.firebaseui-flag-GP{background-position:0 -1274px}.firebaseui-flag-GQ{background-position:0 -1288px}.firebaseui-flag-GR{background-position:0 -1302px}.firebaseui-flag-GS{background-position:0 -1316px}.firebaseui-flag-GT{background-position:0 -1330px}.firebaseui-flag-GU{background-position:0 -1344px}.firebaseui-flag-GW{background-position:0 -1358px}.firebaseui-flag-GY{background-position:0 -1372px}.firebaseui-flag-HK{background-position:0 -1386px}.firebaseui-flag-HM{background-position:0 -1400px}.firebaseui-flag-HN{background-position:0 -1414px}.firebaseui-flag-HR{background-position:0 -1428px}.firebaseui-flag-HT{background-position:0 -1442px}.firebaseui-flag-HU{background-position:0 -1456px}.firebaseui-flag-IC{background-position:0 -1470px}.firebaseui-flag-ID{background-position:0 -1484px}.firebaseui-flag-IE{background-position:0 -1498px}.firebaseui-flag-IL{background-position:0 -1512px}.firebaseui-flag-IM{background-position:0 -1526px}.firebaseui-flag-IN{background-position:0 -1540px}.firebaseui-flag-IO{background-position:0 -1554px}.firebaseui-flag-IQ{background-position:0 -1568px}.firebaseui-flag-IR{background-position:0 -1582px}.firebaseui-flag-IS{background-position:0 -1596px}.firebaseui-flag-IT{background-position:0 -1610px}.firebaseui-flag-JE{background-position:0 -1624px}.firebaseui-flag-JM{background-position:0 -1638px}.firebaseui-flag-JO{background-position:0 -1652px}.firebaseui-flag-JP{background-position:0 -1666px}.firebaseui-flag-KE{background-position:0 -1680px}.firebaseui-flag-KG{background-position:0 -1694px}.firebaseui-flag-KH{background-position:0 -1708px}.firebaseui-flag-KI{background-position:0 -1722px}.firebaseui-flag-KM{background-position:0 -1736px}.firebaseui-flag-KN{background-position:0 -1750px}.firebaseui-flag-KP{background-position:0 -1764px}.firebaseui-flag-KR{background-position:0 -1778px}.firebaseui-flag-KW{background-position:0 -1792px}.firebaseui-flag-AD{background-position:0 -1806px}.firebaseui-flag-KZ{background-position:0 -1820px}.firebaseui-flag-LA{background-position:0 -1834px}.firebaseui-flag-LB{background-position:0 -1848px}.firebaseui-flag-LC{background-position:0 -1862px}.firebaseui-flag-LI{background-position:0 -1876px}.firebaseui-flag-LK{background-position:0 -1890px}.firebaseui-flag-LR{background-position:0 -1904px}.firebaseui-flag-LS{background-position:0 -1918px}.firebaseui-flag-LT{background-position:0 -1932px}.firebaseui-flag-LU{background-position:0 -1946px}.firebaseui-flag-LV{background-position:0 -1960px}.firebaseui-flag-LY{background-position:0 -1974px}.firebaseui-flag-MA{background-position:0 -1988px}.firebaseui-flag-MC{background-position:0 -2002px}.firebaseui-flag-MD{background-position:0 -2016px}.firebaseui-flag-ME{background-position:0 -2030px}.firebaseui-flag-MF{background-position:0 -2044px}.firebaseui-flag-MG{background-position:0 -2058px}.firebaseui-flag-MH{background-position:0 -2072px}.firebaseui-flag-MK{background-position:0 -2086px}.firebaseui-flag-ML{background-position:0 -2100px}.firebaseui-flag-MM{background-position:0 -2114px}.firebaseui-flag-MN{background-position:0 -2128px}.firebaseui-flag-MO{background-position:0 -2142px}.firebaseui-flag-MP{background-position:0 -2156px}.firebaseui-flag-MQ{background-position:0 -2170px}.firebaseui-flag-MR{background-position:0 -2184px}.firebaseui-flag-MS{background-position:0 -2198px}.firebaseui-flag-MT{background-position:0 -2212px}.firebaseui-flag-MU{background-position:0 -2226px}.firebaseui-flag-MV{background-position:0 -2240px}.firebaseui-flag-MW{background-position:0 -2254px}.firebaseui-flag-MX{background-position:0 -2268px}.firebaseui-flag-MY{background-position:0 -2282px}.firebaseui-flag-MZ{background-position:0 -2296px}.firebaseui-flag-NA{background-position:0 -2310px}.firebaseui-flag-NC{background-position:0 -2324px}.firebaseui-flag-NE{background-position:0 -2338px}.firebaseui-flag-NF{background-position:0 -2352px}.firebaseui-flag-NG{background-position:0 -2366px}.firebaseui-flag-NI{background-position:0 -2380px}.firebaseui-flag-NL{background-position:0 -2394px}.firebaseui-flag-NO{background-position:0 -2408px}.firebaseui-flag-NP{background-position:0 -2422px}.firebaseui-flag-NR{background-position:0 -2436px}.firebaseui-flag-NU{background-position:0 -2450px}.firebaseui-flag-NZ{background-position:0 -2464px}.firebaseui-flag-OM{background-position:0 -2478px}.firebaseui-flag-PA{background-position:0 -2492px}.firebaseui-flag-PE{background-position:0 -2506px}.firebaseui-flag-PF{background-position:0 -2520px}.firebaseui-flag-PG{background-position:0 -2534px}.firebaseui-flag-PH{background-position:0 -2548px}.firebaseui-flag-PK{background-position:0 -2562px}.firebaseui-flag-PL{background-position:0 -2576px}.firebaseui-flag-PM{background-position:0 -2590px}.firebaseui-flag-PN{background-position:0 -2604px}.firebaseui-flag-PR{background-position:0 -2618px}.firebaseui-flag-PS{background-position:0 -2632px}.firebaseui-flag-PT{background-position:0 -2646px}.firebaseui-flag-PW{background-position:0 -2660px}.firebaseui-flag-PY{background-position:0 -2674px}.firebaseui-flag-QA{background-position:0 -2688px}.firebaseui-flag-RE{background-position:0 -2702px}.firebaseui-flag-RO{background-position:0 -2716px}.firebaseui-flag-RS{background-position:0 -2730px}.firebaseui-flag-RU{background-position:0 -2744px}.firebaseui-flag-RW{background-position:0 -2758px}.firebaseui-flag-SA{background-position:0 -2772px}.firebaseui-flag-SB{background-position:0 -2786px}.firebaseui-flag-SC{background-position:0 -2800px}.firebaseui-flag-SD{background-position:0 -2814px}.firebaseui-flag-SE{background-position:0 -2828px}.firebaseui-flag-SG{background-position:0 -2842px}.firebaseui-flag-SH{background-position:0 -2856px}.firebaseui-flag-SI{background-position:0 -2870px}.firebaseui-flag-SJ{background-position:0 -2884px}.firebaseui-flag-SK{background-position:0 -2898px}.firebaseui-flag-SL{background-position:0 -2912px}.firebaseui-flag-SM{background-position:0 -2926px}.firebaseui-flag-SN{background-position:0 -2940px}.firebaseui-flag-SO{background-position:0 -2954px}.firebaseui-flag-SR{background-position:0 -2968px}.firebaseui-flag-SS{background-position:0 -2982px}.firebaseui-flag-ST{background-position:0 -2996px}.firebaseui-flag-SV{background-position:0 -3010px}.firebaseui-flag-SX{background-position:0 -3024px}.firebaseui-flag-SY{background-position:0 -3038px}.firebaseui-flag-SZ{background-position:0 -3052px}.firebaseui-flag-TA{background-position:0 -3066px}.firebaseui-flag-TC{background-position:0 -3080px}.firebaseui-flag-TD{background-position:0 -3094px}.firebaseui-flag-TF{background-position:0 -3108px}.firebaseui-flag-TG{background-position:0 -3122px}.firebaseui-flag-TH{background-position:0 -3136px}.firebaseui-flag-TJ{background-position:0 -3150px}.firebaseui-flag-TK{background-position:0 -3164px}.firebaseui-flag-TL{background-position:0 -3178px}.firebaseui-flag-TM{background-position:0 -3192px}.firebaseui-flag-TN{background-position:0 -3206px}.firebaseui-flag-TO{background-position:0 -3220px}.firebaseui-flag-TR{background-position:0 -3234px}.firebaseui-flag-TT{background-position:0 -3248px}.firebaseui-flag-TV{background-position:0 -3262px}.firebaseui-flag-TW{background-position:0 -3276px}.firebaseui-flag-TZ{background-position:0 -3290px}.firebaseui-flag-UA{background-position:0 -3304px}.firebaseui-flag-UG{background-position:0 -3318px}.firebaseui-flag-UM{background-position:0 -3332px}.firebaseui-flag-UN{background-position:0 -3346px}.firebaseui-flag-US{background-position:0 -3360px}.firebaseui-flag-UY{background-position:0 -3374px}.firebaseui-flag-UZ{background-position:0 -3388px}.firebaseui-flag-VA{background-position:0 -3402px}.firebaseui-flag-VC{background-position:0 -3416px}.firebaseui-flag-VE{background-position:0 -3430px}.firebaseui-flag-VG{background-position:0 -3444px}.firebaseui-flag-VI{background-position:0 -3458px}.firebaseui-flag-VN{background-position:0 -3472px}.firebaseui-flag-VU{background-position:0 -3486px}.firebaseui-flag-WF{background-position:0 -3500px}.firebaseui-flag-WS{background-position:0 -3514px}.firebaseui-flag-XK{background-position:0 -3528px}.firebaseui-flag-YE{background-position:0 -3542px}.firebaseui-flag-YT{background-position:0 -3556px}.firebaseui-flag-ZA{background-position:0 -3570px}.firebaseui-flag-ZM{background-position:0 -3584px}.firebaseui-flag-ZW{background-position:0 -3598px}',\"\"])},function(i,e){i.exports=function(i){var e=[];return e.toString=function(){return this.map((function(e){var o=function(i,e){var o=i[1]||\"\",t=i[3];if(!t)return o;if(e&&\"function\"==typeof btoa){var a=(n=t,\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+\" */\"),r=t.sources.map((function(i){return\"/*# sourceURL=\"+t.sourceRoot+i+\" */\"}));return[o].concat(r).concat([a]).join(\"\\n\")}var n;return[o].join(\"\\n\")}(e,i);return e[2]?\"@media \"+e[2]+\"{\"+o+\"}\":o})).join(\"\")},e.i=function(i,o){\"string\"==typeof i&&(i=[[null,i,\"\"]]);for(var t={},a=0;a<this.length;a++){var r=this[a][0];\"number\"==typeof r&&(t[r]=!0)}for(a=0;a<i.length;a++){var n=i[a];\"number\"==typeof n[0]&&t[n[0]]||(o&&!n[2]?n[2]=o:o&&(n[2]=\"(\"+n[2]+\") and (\"+o+\")\"),e.push(n))}},e}},function(i,e,o){var t,a,r={},n=(t=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===a&&(a=t.apply(this,arguments)),a}),l=function(i){return document.querySelector(i)},s=function(i){var e={};return function(i){if(\"function\"==typeof i)return i();if(void 0===e[i]){var o=l.call(this,i);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(i){o=null}e[i]=o}return e[i]}}(),d=null,p=0,b=[],f=o(6);function u(i,e){for(var o=0;o<i.length;o++){var t=i[o],a=r[t.id];if(a){a.refs++;for(var n=0;n<a.parts.length;n++)a.parts[n](t.parts[n]);for(;n<t.parts.length;n++)a.parts.push(k(t.parts[n],e))}else{var l=[];for(n=0;n<t.parts.length;n++)l.push(k(t.parts[n],e));r[t.id]={id:t.id,refs:1,parts:l}}}}function g(i,e){for(var o=[],t={},a=0;a<i.length;a++){var r=i[a],n=e.base?r[0]+e.base:r[0],l={css:r[1],media:r[2],sourceMap:r[3]};t[n]?t[n].parts.push(l):o.push(t[n]={id:n,parts:[l]})}return o}function c(i,e){var o=s(i.insertInto);if(!o)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");var t=b[b.length-1];if(\"top\"===i.insertAt)t?t.nextSibling?o.insertBefore(e,t.nextSibling):o.appendChild(e):o.insertBefore(e,o.firstChild),b.push(e);else if(\"bottom\"===i.insertAt)o.appendChild(e);else{if(\"object\"!=typeof i.insertAt||!i.insertAt.before)throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");var a=s(i.insertInto+\" \"+i.insertAt.before);o.insertBefore(e,a)}}function x(i){if(null===i.parentNode)return!1;i.parentNode.removeChild(i);var e=b.indexOf(i);e>=0&&b.splice(e,1)}function m(i){var e=document.createElement(\"style\");return void 0===i.attrs.type&&(i.attrs.type=\"text/css\"),h(e,i.attrs),c(i,e),e}function h(i,e){Object.keys(e).forEach((function(o){i.setAttribute(o,e[o])}))}function k(i,e){var o,t,a,r;if(e.transform&&i.css){if(!(r=e.transform(i.css)))return function(){};i.css=r}if(e.singleton){var n=p++;o=d||(d=m(e)),t=y.bind(null,o,n,!1),a=y.bind(null,o,n,!0)}else i.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(o=function(i){var e=document.createElement(\"link\");return void 0===i.attrs.type&&(i.attrs.type=\"text/css\"),i.attrs.rel=\"stylesheet\",h(e,i.attrs),c(i,e),e}(e),t=I.bind(null,o,e),a=function(){x(o),o.href&&URL.revokeObjectURL(o.href)}):(o=m(e),t=v.bind(null,o),a=function(){x(o)});return t(i),function(e){if(e){if(e.css===i.css&&e.media===i.media&&e.sourceMap===i.sourceMap)return;t(i=e)}else a()}}i.exports=function(i,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(e=e||{}).attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||\"boolean\"==typeof e.singleton||(e.singleton=n()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var o=g(i,e);return u(o,e),function(i){for(var t=[],a=0;a<o.length;a++){var n=o[a];(l=r[n.id]).refs--,t.push(l)}i&&u(g(i,e),e);for(a=0;a<t.length;a++){var l;if(0===(l=t[a]).refs){for(var s=0;s<l.parts.length;s++)l.parts[s]();delete r[l.id]}}}};var _,w=(_=[],function(i,e){return _[i]=e,_.filter(Boolean).join(\"\\n\")});function y(i,e,o,t){var a=o?\"\":t.css;if(i.styleSheet)i.styleSheet.cssText=w(e,a);else{var r=document.createTextNode(a),n=i.childNodes;n[e]&&i.removeChild(n[e]),n.length?i.insertBefore(r,n[e]):i.appendChild(r)}}function v(i,e){var o=e.css,t=e.media;if(t&&i.setAttribute(\"media\",t),i.styleSheet)i.styleSheet.cssText=o;else{for(;i.firstChild;)i.removeChild(i.firstChild);i.appendChild(document.createTextNode(o))}}function I(i,e,o){var t=o.css,a=o.sourceMap,r=void 0===e.convertToAbsoluteUrls&&a;(e.convertToAbsoluteUrls||r)&&(t=f(t)),a&&(t+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+\" */\");var n=new Blob([t],{type:\"text/css\"}),l=i.href;i.href=URL.createObjectURL(n),l&&URL.revokeObjectURL(l)}},function(i,e){i.exports=function(i){var e=\"undefined\"!=typeof window&&window.location;if(!e)throw new Error(\"fixUrls requires window.location\");if(!i||\"string\"!=typeof i)return i;var o=e.protocol+\"//\"+e.host,t=o+e.pathname.replace(/\\/[^\\/]*$/,\"/\");return i.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,(function(i,e){var a,r=e.trim().replace(/^\"(.*)\"$/,(function(i,e){return e})).replace(/^'(.*)'$/,(function(i,e){return e}));return/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(r)?i:(a=0===r.indexOf(\"//\")?r:0===r.indexOf(\"/\")?o+r:t+r.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(a)+\")\")}))}},function(i,e){i.exports=require(\"firebaseui\")}]);\n//# sourceMappingURL=StyledFirebaseAuth.js.map","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","const hotjarLib = require('./src/react-hotjar');\n\nconst hj = (...params) => {\n\tif (!window.hj) {\n\t\tthrow new Error('Hotjar is not initialized');\n\t}\n\twindow.hj(...params);\n};\n\nmodule.exports = {\n\thotjar: {\n\t\tinitialize: function initialize(id, sv) {\n\t\t\thotjarLib(id, sv);\n\t\t},\n\t\tinitialized: function initialized() {\n\t\t\treturn typeof window !== 'undefined' && typeof window?.hj === 'function';\n\t\t},\n\t\tidentify: function identify(userId, properties) {\n\t\t\thj('identify', userId, properties);\n\t\t},\n\t\tevent: function event(event) {\n\t\t\thj('event', event);\n\t\t},\n\t\tstateChange: function stateChange(relativePath) {\n\t\t\thj('stateChange', relativePath);\n\t\t}\n\t},\n};","module.exports = function(id, sv, debug=false) {\n\t(function(h, o, t, j, a, r) {\n\t\th.hj =\n\t\t\th.hj ||\n\t\t\tfunction() {\n\t\t\t\t(h.hj.q = h.hj.q || []).push(arguments);\n\t\t\t};\n\t\th._hjSettings = { hjid: id, hjsv: sv, hjDebug: debug };\n\t\th._scriptPath = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n\t\tif(!document.querySelector(\n\t\t\t'script[src*=\"' + h._scriptPath + '\"]'\n\t\t)){\n\t\t\ta = o.getElementsByTagName('head')[0];\n\t\t\tr = o.createElement('script');\n\t\t\tr.async = 1;\n\t\t\tr.src = h._scriptPath;\n\t\t\ta.appendChild(r);\n\t\t}\n\t})(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, refineValue, getCurrentRefinementValue } from \"../core/indexUtils.js\";\nimport { addQueryID, addAbsolutePositions } from \"../core/utils.js\";\nvar getId = function getId() {\n return 'query';\n};\nfunction getCurrentRefinement(props, searchState, context) {\n var id = getId();\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, id, '');\n if (currentRefinement) {\n return currentRefinement;\n }\n return '';\n}\nfunction getHits(searchResults) {\n if (searchResults.results) {\n if (searchResults.results.hits && Array.isArray(searchResults.results.hits)) {\n return addAbsolutePositions(addQueryID(searchResults.results.hits, searchResults.results.queryID), searchResults.results.hitsPerPage, searchResults.results.page);\n } else {\n return Object.keys(searchResults.results).reduce(function (hits, index) {\n return [].concat(_toConsumableArray(hits), [{\n index: index,\n hits: addAbsolutePositions(addQueryID(searchResults.results[index].hits, searchResults.results[index].queryID), searchResults.results[index].hitsPerPage, searchResults.results[index].page)\n }]);\n }, []);\n }\n } else {\n return [];\n }\n}\nfunction _refine(props, searchState, nextRefinement, context) {\n var id = getId();\n var nextValue = _defineProperty({}, id, nextRefinement);\n var resetPage = true;\n return refineValue(searchState, nextValue, context, resetPage);\n}\nfunction _cleanUp(props, searchState, context) {\n return cleanUpValue(searchState, context, getId());\n}\n\n/**\n * connectAutoComplete connector provides the logic to create connected\n * components that will render the results retrieved from\n * Algolia.\n *\n * To configure the number of hits retrieved, use [HitsPerPage widget](widgets/HitsPerPage.html),\n * [connectHitsPerPage connector](connectors/connectHitsPerPage.html) or pass the hitsPerPage\n * prop to a [Configure](guide/Search_parameters.html) widget.\n * @name connectAutoComplete\n * @kind connector\n * @propType {string} [defaultRefinement] - Provide a default value for the query\n * @providedPropType {array.<object>} hits - the records that matched the search state\n * @providedPropType {function} refine - a function to change the query\n * @providedPropType {string} currentRefinement - the query to search for\n */\nexport default createConnector({\n displayName: 'AlgoliaAutoComplete',\n $$type: 'ais.autoComplete',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n return {\n hits: getHits(searchResults),\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n })\n };\n },\n refine: function refine(props, searchState, nextRefinement) {\n return _refine(props, searchState, nextRefinement, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n return _cleanUp(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n return searchParameters.setQuery(getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }));\n }\n});","import { createContext } from 'react';\nexport var instantSearchContext = /*#__PURE__*/createContext({\n onInternalStateUpdate: function onInternalStateUpdate() {\n return undefined;\n },\n createHrefForState: function createHrefForState() {\n return '#';\n },\n onSearchForFacetValues: function onSearchForFacetValues() {\n return undefined;\n },\n onSearchStateChange: function onSearchStateChange() {\n return undefined;\n },\n onSearchParameters: function onSearchParameters() {\n return undefined;\n },\n store: {},\n widgetsManager: {},\n mainTargetedIndex: ''\n});\nvar InstantSearchConsumer = instantSearchContext.Consumer,\n InstantSearchProvider = instantSearchContext.Provider;\nexport { InstantSearchConsumer, InstantSearchProvider };\nvar _createContext = /*#__PURE__*/createContext(undefined),\n IndexConsumer = _createContext.Consumer,\n IndexProvider = _createContext.Provider;\nexport { IndexConsumer, IndexProvider };","var _excluded = [\"contextValue\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { InstantSearchConsumer, IndexConsumer } from \"./context.js\";\nimport { shallowEqual, getDisplayName, removeEmptyKey } from \"./utils.js\";\n/**\n * Connectors are the HOC used to transform React components\n * into InstantSearch widgets.\n * In order to simplify the construction of such connectors\n * `createConnector` takes a description and transform it into\n * a connector.\n * @param {ConnectorDescription} connectorDesc the description of the connector\n * @return {Connector} a function that wraps a component into\n * an instantsearch connected one.\n */\nexport function createConnectorWithoutContext(connectorDesc) {\n if (!connectorDesc.displayName) {\n throw new Error('`createConnector` requires you to provide a `displayName` property.');\n }\n var isWidget = typeof connectorDesc.getSearchParameters === 'function' || typeof connectorDesc.getMetadata === 'function' || typeof connectorDesc.transitionState === 'function';\n return function (Composed) {\n var additionalWidgetProperties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var Connector = /*#__PURE__*/function (_Component) {\n _inherits(Connector, _Component);\n var _super = _createSuper(Connector);\n function Connector(props) {\n var _this;\n _classCallCheck(this, Connector);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"unsubscribe\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"unregisterWidget\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"cleanupTimerRef\", null);\n _defineProperty(_assertThisInitialized(_this), \"isUnmounting\", false);\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n providedProps: _this.getProvidedProps(_this.props)\n });\n _defineProperty(_assertThisInitialized(_this), \"refine\", function () {\n var _ref;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this.props.contextValue.onInternalStateUpdate(\n // refine will always be defined here because the prop is only given conditionally\n (_ref = connectorDesc.refine).call.apply(_ref, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n _defineProperty(_assertThisInitialized(_this), \"createURL\", function () {\n var _ref2;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _this.props.contextValue.createHrefForState(\n // refine will always be defined here because the prop is only given conditionally\n (_ref2 = connectorDesc.refine).call.apply(_ref2, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n _defineProperty(_assertThisInitialized(_this), \"searchForFacetValues\", function () {\n var _ref3;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n _this.props.contextValue.onSearchForFacetValues(\n // searchForFacetValues will always be defined here because the prop is only given conditionally\n (_ref3 = connectorDesc.searchForFacetValues).call.apply(_ref3, [_assertThisInitialized(_this), _this.props, _this.props.contextValue.store.getState().widgets].concat(args)));\n });\n if (connectorDesc.getSearchParameters) {\n _this.props.contextValue.onSearchParameters(connectorDesc.getSearchParameters.bind(_assertThisInitialized(_this)), {\n ais: _this.props.contextValue,\n multiIndexContext: _this.props.indexContextValue\n }, _this.props, connectorDesc.getMetadata && connectorDesc.getMetadata.bind(_assertThisInitialized(_this)), connectorDesc.displayName);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n if (this.cleanupTimerRef) {\n clearTimeout(this.cleanupTimerRef);\n this.cleanupTimerRef = null;\n }\n this.unsubscribe = this.props.contextValue.store.subscribe(function () {\n if (!_this2.isUnmounting) {\n _this2.setState({\n providedProps: _this2.getProvidedProps(_this2.props)\n });\n }\n });\n if (isWidget) {\n this.unregisterWidget = this.props.contextValue.widgetsManager.registerWidget(this);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n if (typeof connectorDesc.shouldComponentUpdate === 'function') {\n return connectorDesc.shouldComponentUpdate.call(this, this.props, nextProps, this.state, nextState);\n }\n var propsEqual = shallowEqual(this.props, nextProps);\n if (this.state.providedProps === null || nextState.providedProps === null) {\n if (this.state.providedProps === nextState.providedProps) {\n return !propsEqual;\n }\n return true;\n }\n return !propsEqual || !shallowEqual(this.state.providedProps, nextState.providedProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!isEqual(prevProps, this.props)) {\n this.setState({\n providedProps: this.getProvidedProps(this.props)\n });\n if (isWidget) {\n this.props.contextValue.widgetsManager.update();\n if (typeof connectorDesc.transitionState === 'function') {\n this.props.contextValue.onSearchStateChange(connectorDesc.transitionState.call(this, this.props, this.props.contextValue.store.getState().widgets, this.props.contextValue.store.getState().widgets));\n }\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n this.cleanupTimerRef = setTimeout(function () {\n _this3.isUnmounting = true;\n if (_this3.unsubscribe) {\n _this3.unsubscribe();\n }\n if (_this3.unregisterWidget) {\n _this3.unregisterWidget();\n if (typeof connectorDesc.cleanUp === 'function') {\n var nextState = connectorDesc.cleanUp.call(_this3, _this3.props, _this3.props.contextValue.store.getState().widgets);\n _this3.props.contextValue.store.setState(_objectSpread(_objectSpread({}, _this3.props.contextValue.store.getState()), {}, {\n widgets: nextState\n }));\n _this3.props.contextValue.onSearchStateChange(removeEmptyKey(nextState));\n }\n }\n });\n }\n }, {\n key: \"getProvidedProps\",\n value: function getProvidedProps(props) {\n var _this$props$contextVa = this.props.contextValue.store.getState(),\n widgets = _this$props$contextVa.widgets,\n results = _this$props$contextVa.results,\n resultsFacetValues = _this$props$contextVa.resultsFacetValues,\n searching = _this$props$contextVa.searching,\n searchingForFacetValues = _this$props$contextVa.searchingForFacetValues,\n isSearchStalled = _this$props$contextVa.isSearchStalled,\n metadata = _this$props$contextVa.metadata,\n error = _this$props$contextVa.error;\n var searchResults = {\n results: results,\n searching: searching,\n searchingForFacetValues: searchingForFacetValues,\n isSearchStalled: isSearchStalled,\n error: error\n };\n return connectorDesc.getProvidedProps.call(this, props, widgets, searchResults, metadata,\n // @MAJOR: move this attribute on the `searchResults` it doesn't\n // makes sense to have it into a separate argument. The search\n // flags are on the object why not the results?\n resultsFacetValues);\n }\n }, {\n key: \"getSearchParameters\",\n value: function getSearchParameters(searchParameters) {\n if (typeof connectorDesc.getSearchParameters === 'function') {\n return connectorDesc.getSearchParameters.call(this, searchParameters, this.props, this.props.contextValue.store.getState().widgets);\n }\n return null;\n }\n }, {\n key: \"getMetadata\",\n value: function getMetadata(nextWidgetsState) {\n if (typeof connectorDesc.getMetadata === 'function') {\n return connectorDesc.getMetadata.call(this, this.props, nextWidgetsState);\n }\n return {};\n }\n }, {\n key: \"transitionState\",\n value: function transitionState(prevWidgetsState, nextWidgetsState) {\n if (typeof connectorDesc.transitionState === 'function') {\n return connectorDesc.transitionState.call(this, this.props, prevWidgetsState, nextWidgetsState);\n }\n return nextWidgetsState;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n contextValue = _this$props.contextValue,\n props = _objectWithoutProperties(_this$props, _excluded);\n var providedProps = this.state.providedProps;\n if (providedProps === null) {\n return null;\n }\n var refineProps = typeof connectorDesc.refine === 'function' ? {\n refine: this.refine,\n createURL: this.createURL\n } : {};\n var searchForFacetValuesProps = typeof connectorDesc.searchForFacetValues === 'function' ? {\n searchForItems: this.searchForFacetValues\n } : {};\n return /*#__PURE__*/React.createElement(Composed, _extends({}, props, providedProps, refineProps, searchForFacetValuesProps));\n }\n }]);\n return Connector;\n }(Component);\n _defineProperty(Connector, \"displayName\", \"\".concat(connectorDesc.displayName, \"(\").concat(getDisplayName(Composed), \")\"));\n _defineProperty(Connector, \"$$type\", connectorDesc.$$type);\n _defineProperty(Connector, \"$$widgetType\", additionalWidgetProperties.$$widgetType);\n _defineProperty(Connector, \"propTypes\", connectorDesc.propTypes);\n _defineProperty(Connector, \"defaultProps\", connectorDesc.defaultProps);\n _defineProperty(Connector, \"_connectorDesc\", connectorDesc);\n return Connector;\n };\n}\nvar createConnectorWithContext = function createConnectorWithContext(connectorDesc) {\n return function (Composed, additionalWidgetProperties) {\n var Connector = createConnectorWithoutContext(connectorDesc)(Composed, additionalWidgetProperties);\n var ConnectorWrapper = function ConnectorWrapper(props) {\n return /*#__PURE__*/React.createElement(InstantSearchConsumer, null, function (contextValue) {\n return /*#__PURE__*/React.createElement(IndexConsumer, null, function (indexContextValue) {\n return /*#__PURE__*/React.createElement(Connector, _extends({\n contextValue: contextValue,\n indexContextValue: indexContextValue\n }, props));\n });\n });\n };\n return ConnectorWrapper;\n };\n};\nexport default createConnectorWithContext;","import { getPropertyByPath } from \"./utils.js\";\nexport var HIGHLIGHT_TAGS = {\n highlightPreTag: \"<ais-highlight-0000000000>\",\n highlightPostTag: \"</ais-highlight-0000000000>\"\n};\n\n/**\n * Parses an highlighted attribute into an array of objects with the string value, and\n * a boolean that indicated if this part is highlighted.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightedValue - highlighted attribute as returned by Algolia highlight feature\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nfunction parseHighlightedAttribute(_ref) {\n var preTag = _ref.preTag,\n postTag = _ref.postTag,\n _ref$highlightedValue = _ref.highlightedValue,\n highlightedValue = _ref$highlightedValue === void 0 ? '' : _ref$highlightedValue;\n var splitByPreTag = highlightedValue.split(preTag);\n var firstValue = splitByPreTag.shift();\n var elements = firstValue === '' ? [] : [{\n value: firstValue,\n isHighlighted: false\n }];\n if (postTag === preTag) {\n var isHighlighted = true;\n splitByPreTag.forEach(function (split) {\n elements.push({\n value: split,\n isHighlighted: isHighlighted\n });\n isHighlighted = !isHighlighted;\n });\n } else {\n splitByPreTag.forEach(function (split) {\n var splitByPostTag = split.split(postTag);\n elements.push({\n value: splitByPostTag[0],\n isHighlighted: true\n });\n if (splitByPostTag[1] !== '') {\n elements.push({\n value: splitByPostTag[1],\n isHighlighted: false\n });\n }\n });\n }\n return elements;\n}\n\n/**\n * Find an highlighted attribute given an `attribute` and an `highlightProperty`, parses it,\n * and provided an array of objects with the string value and a boolean if this\n * value is highlighted.\n *\n * In order to use this feature, highlight must be activated in the configuration of\n * the index. The `preTag` and `postTag` attributes are respectively highlightPreTag and\n * highlightPostTag in Algolia configuration.\n *\n * @param {string} preTag - string used to identify the start of an highlighted value\n * @param {string} postTag - string used to identify the end of an highlighted value\n * @param {string} highlightProperty - the property that contains the highlight structure in the results\n * @param {string} attribute - the highlighted attribute to look for\n * @param {object} hit - the actual hit returned by Algolia.\n * @return {object[]} - An array of {value: string, isHighlighted: boolean}.\n */\nexport function parseAlgoliaHit(_ref2) {\n var _ref2$preTag = _ref2.preTag,\n preTag = _ref2$preTag === void 0 ? '<em>' : _ref2$preTag,\n _ref2$postTag = _ref2.postTag,\n postTag = _ref2$postTag === void 0 ? '</em>' : _ref2$postTag,\n highlightProperty = _ref2.highlightProperty,\n attribute = _ref2.attribute,\n hit = _ref2.hit;\n if (!hit) throw new Error('`hit`, the matching record, must be provided');\n var highlightObject = getPropertyByPath(hit[highlightProperty], attribute) || {};\n if (Array.isArray(highlightObject)) {\n return highlightObject.map(function (item) {\n return parseHighlightedAttribute({\n preTag: preTag,\n postTag: postTag,\n highlightedValue: item.value\n });\n });\n }\n return parseHighlightedAttribute({\n preTag: preTag,\n postTag: postTag,\n highlightedValue: highlightObject.value\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { omit } from \"./utils.js\";\nexport function getIndexId(context) {\n return hasMultipleIndices(context) ? context.multiIndexContext.targetedIndex : context.ais.mainTargetedIndex;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @returns {import('algoliasearch-helper').SearchResults} results\n */\nexport function getResults(searchResults, context) {\n if (searchResults.results) {\n if (searchResults.results.hits) {\n return searchResults.results;\n }\n var indexId = getIndexId(context);\n if (searchResults.results[indexId]) {\n return searchResults.results[indexId];\n }\n }\n return null;\n}\nexport function hasMultipleIndices(context) {\n return context && context.multiIndexContext;\n}\nexport function refineValue(searchState, nextRefinement, context, resetPage, namespace) {\n if (hasMultipleIndices(context)) {\n var indexId = getIndexId(context);\n return namespace ? refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) : refineMultiIndex(searchState, nextRefinement, indexId, resetPage);\n } else {\n // When we have a multi index page with shared widgets we should also\n // reset their page to 1 if the resetPage is provided. Otherwise the\n // indices will always be reset\n // see: https://github.com/algolia/react-instantsearch/issues/310\n // see: https://github.com/algolia/react-instantsearch/issues/637\n if (searchState.indices && resetPage) {\n Object.keys(searchState.indices).forEach(function (targetedIndex) {\n searchState = refineValue(searchState, {\n page: 1\n }, {\n multiIndexContext: {\n targetedIndex: targetedIndex\n }\n }, true, namespace);\n });\n }\n return namespace ? refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) : refineSingleIndex(searchState, nextRefinement, resetPage);\n }\n}\nfunction refineMultiIndex(searchState, nextRefinement, indexId, resetPage) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread(_objectSpread({}, searchState.indices[indexId]), nextRefinement), page))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, nextRefinement), page)));\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: state\n });\n}\nfunction refineSingleIndex(searchState, nextRefinement, resetPage) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n return _objectSpread(_objectSpread(_objectSpread({}, searchState), nextRefinement), page);\n}\nfunction refineMultiIndexWithNamespace(searchState, nextRefinement, indexId, resetPage, namespace) {\n var _objectSpread4;\n var page = resetPage ? {\n page: 1\n } : undefined;\n var state = searchState.indices && searchState.indices[indexId] ? _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, searchState.indices[indexId]), {}, (_objectSpread4 = {}, _defineProperty(_objectSpread4, namespace, _objectSpread(_objectSpread({}, searchState.indices[indexId][namespace]), nextRefinement)), _defineProperty(_objectSpread4, \"page\", 1), _objectSpread4)))) : _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_defineProperty({}, namespace, nextRefinement), page)));\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: state\n });\n}\nfunction refineSingleIndexWithNamespace(searchState, nextRefinement, resetPage, namespace) {\n var page = resetPage ? {\n page: 1\n } : undefined;\n return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, _objectSpread(_objectSpread({}, searchState[namespace]), nextRefinement)), page);\n}\nfunction getNamespaceAndAttributeName(id) {\n var parts = id.match(/^([^.]*)\\.(.*)/);\n var namespace = parts && parts[1];\n var attributeName = parts && parts[2];\n return {\n namespace: namespace,\n attributeName: attributeName\n };\n}\nfunction hasRefinements(_ref) {\n var multiIndex = _ref.multiIndex,\n indexId = _ref.indexId,\n namespace = _ref.namespace,\n attributeName = _ref.attributeName,\n id = _ref.id,\n searchState = _ref.searchState;\n if (multiIndex && namespace) {\n return searchState.indices && searchState.indices[indexId] && searchState.indices[indexId][namespace] && Object.hasOwnProperty.call(searchState.indices[indexId][namespace], attributeName);\n }\n if (multiIndex) {\n return searchState.indices && searchState.indices[indexId] && Object.hasOwnProperty.call(searchState.indices[indexId], id);\n }\n if (namespace) {\n return searchState[namespace] && Object.hasOwnProperty.call(searchState[namespace], attributeName);\n }\n return Object.hasOwnProperty.call(searchState, id);\n}\nfunction getRefinements(_ref2) {\n var multiIndex = _ref2.multiIndex,\n indexId = _ref2.indexId,\n namespace = _ref2.namespace,\n attributeName = _ref2.attributeName,\n id = _ref2.id,\n searchState = _ref2.searchState;\n if (multiIndex && namespace) {\n return searchState.indices[indexId][namespace][attributeName];\n }\n if (multiIndex) {\n return searchState.indices[indexId][id];\n }\n if (namespace) {\n return searchState[namespace][attributeName];\n }\n return searchState[id];\n}\nexport function getCurrentRefinementValue(props, searchState, context, id, defaultValue) {\n var indexId = getIndexId(context);\n var _getNamespaceAndAttri = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri.namespace,\n attributeName = _getNamespaceAndAttri.attributeName;\n var multiIndex = hasMultipleIndices(context);\n var args = {\n multiIndex: multiIndex,\n indexId: indexId,\n namespace: namespace,\n attributeName: attributeName,\n id: id,\n searchState: searchState\n };\n var hasRefinementsValue = hasRefinements(args);\n if (hasRefinementsValue) {\n return getRefinements(args);\n }\n if (props.defaultRefinement) {\n return props.defaultRefinement;\n }\n return defaultValue;\n}\nexport function cleanUpValue(searchState, context, id) {\n var indexId = getIndexId(context);\n var _getNamespaceAndAttri2 = getNamespaceAndAttributeName(id),\n namespace = _getNamespaceAndAttri2.namespace,\n attributeName = _getNamespaceAndAttri2.attributeName;\n if (hasMultipleIndices(context) && Boolean(searchState.indices)) {\n return cleanUpValueWithMultiIndex({\n attribute: attributeName,\n searchState: searchState,\n indexId: indexId,\n id: id,\n namespace: namespace\n });\n }\n return cleanUpValueWithSingleIndex({\n attribute: attributeName,\n searchState: searchState,\n id: id,\n namespace: namespace\n });\n}\nfunction cleanUpValueWithSingleIndex(_ref3) {\n var searchState = _ref3.searchState,\n id = _ref3.id,\n namespace = _ref3.namespace,\n attribute = _ref3.attribute;\n if (namespace) {\n return _objectSpread(_objectSpread({}, searchState), {}, _defineProperty({}, namespace, omit(searchState[namespace], [attribute])));\n }\n return omit(searchState, [id]);\n}\nfunction cleanUpValueWithMultiIndex(_ref4) {\n var searchState = _ref4.searchState,\n indexId = _ref4.indexId,\n id = _ref4.id,\n namespace = _ref4.namespace,\n attribute = _ref4.attribute;\n var indexSearchState = searchState.indices[indexId];\n if (namespace && indexSearchState) {\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, _objectSpread(_objectSpread({}, indexSearchState), {}, _defineProperty({}, namespace, omit(indexSearchState[namespace], [attribute])))))\n });\n }\n if (indexSearchState) {\n return _objectSpread(_objectSpread({}, searchState), {}, {\n indices: _objectSpread(_objectSpread({}, searchState.indices), {}, _defineProperty({}, indexId, omit(indexSearchState, [id])))\n });\n }\n return searchState;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nvar withKeysPropType = function withKeysPropType(keys) {\n return function (props, propName, componentName) {\n var prop = props[propName];\n if (prop) {\n // eslint-disable-next-line no-restricted-syntax\n for (var _i = 0, _Object$keys = Object.keys(prop); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n if (keys.indexOf(key) === -1) {\n return new Error(\"Unknown `\".concat(propName, \"` key `\").concat(key, \"`. Check the render method \") + \"of `\".concat(componentName, \"`.\"));\n }\n }\n }\n return undefined;\n };\n};\nexport default function translatable(defaultTranslations) {\n return function (Composed) {\n var Translatable = /*#__PURE__*/function (_Component) {\n _inherits(Translatable, _Component);\n var _super = _createSuper(Translatable);\n function Translatable() {\n var _this;\n _classCallCheck(this, Translatable);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"translate\", function (key) {\n var translations = _this.props.translations;\n var translation = translations && translations.hasOwnProperty(key) ? translations[key] : defaultTranslations[key];\n if (typeof translation === 'function') {\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return translation.apply(void 0, params);\n }\n return translation;\n });\n return _this;\n }\n _createClass(Translatable, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Composed, _extends({\n translate: this.translate\n }, this.props));\n }\n }]);\n return Translatable;\n }(Component);\n var name = Composed.displayName || Composed.name || 'UnknownComponent';\n Translatable.displayName = \"Translatable(\".concat(name, \")\");\n Translatable.propTypes = {\n translations: withKeysPropType(Object.keys(defaultTranslations))\n };\n return Translatable;\n };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n// eslint-disable-next-line @typescript-eslint/unbound-method\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n// From https://github.com/reactjs/react-redux/blob/master/src/utils/shallowEqual.js\nexport var shallowEqual = function shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n return true;\n};\nexport var getDisplayName = function getDisplayName(Component) {\n return Component.displayName || Component.name || 'UnknownComponent';\n};\nvar resolved = Promise.resolve();\nexport var defer = function defer(f) {\n resolved.then(f);\n};\nvar isPlainObject = function isPlainObject(value) {\n return _typeof(value) === 'object' && value !== null && !Array.isArray(value);\n};\nexport var removeEmptyKey = function removeEmptyKey(obj) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (!isPlainObject(value)) {\n return;\n }\n if (!objectHasKeys(value)) {\n delete obj[key];\n } else {\n removeEmptyKey(value);\n }\n });\n return obj;\n};\nexport var removeEmptyArraysFromObject = function removeEmptyArraysFromObject(obj) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (Array.isArray(value) && value.length === 0) {\n delete obj[key];\n }\n });\n return obj;\n};\nexport function addAbsolutePositions(hits, hitsPerPage, page) {\n return hits.map(function (hit, index) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __position: hitsPerPage * page + index + 1\n });\n });\n}\nexport function addQueryID(hits, queryID) {\n if (!queryID) {\n return hits;\n }\n return hits.map(function (hit) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __queryID: queryID\n });\n });\n}\nexport function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n return undefined;\n}\nexport function objectHasKeys(object) {\n return object && Object.keys(object).length > 0;\n}\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nexport function omit(source, excluded) {\n if (source === null || source === undefined) {\n return {};\n }\n var target = {};\n var sourceKeys = Object.keys(source);\n for (var i = 0; i < sourceKeys.length; i++) {\n var key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n target[key] = source[key];\n }\n return target;\n}\n\n/**\n * Retrieve the value at a path of the object:\n *\n * @example\n * getPropertyByPath(\n * { test: { this: { function: [{ now: { everyone: true } }] } } },\n * 'test.this.function[0].now.everyone'\n * ); // true\n *\n * getPropertyByPath(\n * { test: { this: { function: [{ now: { everyone: true } }] } } },\n * ['test', 'this', 'function', 0, 'now', 'everyone']\n * ); // true\n *\n * @param object Source object to query\n * @param path either an array of properties, or a string form of the properties, separated by .\n */\nexport var getPropertyByPath = function getPropertyByPath(object, path) {\n return (Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.')).reduce(function (current, key) {\n return current ? current[key] : undefined;\n }, object);\n};\nexport function getObjectType(object) {\n return Object.prototype.toString.call(object).slice(8, -1);\n}\nexport function unescapeFacetValue(value) {\n return value.replace(/^\\\\-/, '-');\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"children\", \"contextValue\", \"indexContextValue\"],\n _excluded2 = [\"children\", \"contextValue\", \"indexContextValue\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport createConnector from \"../core/createConnector.js\";\nimport { refineValue, getIndexId, hasMultipleIndices } from \"../core/indexUtils.js\";\nimport { omit } from \"../core/utils.js\";\nfunction getId() {\n return 'configure';\n}\nexport default createConnector({\n displayName: 'AlgoliaConfigure',\n $$type: 'ais.configure',\n getProvidedProps: function getProvidedProps() {\n return {};\n },\n getSearchParameters: function getSearchParameters(searchParameters, props) {\n var children = props.children,\n contextValue = props.contextValue,\n indexContextValue = props.indexContextValue,\n items = _objectWithoutProperties(props, _excluded);\n return searchParameters.setQueryParameters(items);\n },\n transitionState: function transitionState(props, prevSearchState, nextSearchState) {\n var id = getId();\n var children = props.children,\n contextValue = props.contextValue,\n indexContextValue = props.indexContextValue,\n items = _objectWithoutProperties(props, _excluded2);\n var propKeys = Object.keys(props);\n var nonPresentKeys = this._props ? Object.keys(this._props).filter(function (prop) {\n return propKeys.indexOf(prop) === -1;\n }) : [];\n this._props = props;\n var nextValue = _defineProperty({}, id, _objectSpread(_objectSpread({}, omit(nextSearchState[id], nonPresentKeys)), items));\n return refineValue(nextSearchState, nextValue, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n var id = getId();\n var indexId = getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n var subState = hasMultipleIndices({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }) && searchState.indices ? searchState.indices[indexId] : searchState;\n var configureKeys = subState && subState[id] ? Object.keys(subState[id]) : [];\n var configureState = configureKeys.reduce(function (acc, item) {\n if (!props[item]) {\n acc[item] = subState[id][item];\n }\n return acc;\n }, {});\n var nextValue = _defineProperty({}, id, configureState);\n return refineValue(searchState, nextValue, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n }\n});","import connectConfigure from \"../connectors/connectConfigure.js\";\n\n/**\n * Configure is a widget that lets you provide raw search parameters\n * to the Algolia API.\n *\n * Any of the props added to this widget will be forwarded to Algolia. For more information\n * on the different parameters that can be set, have a look at the\n * [reference](https://www.algolia.com/doc/api-client/javascript/search#search-parameters).\n *\n * This widget can be used either with react-dom and react-native. It will not render anything\n * on screen, only configure some parameters.\n *\n * Read more in the [Search parameters](guide/Search_parameters.html) guide.\n * @name Configure\n * @kind widget\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Configure, Hits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <Configure hitsPerPage={5} />\n * <Hits />\n * </InstantSearch>\n * );\n */\n\nexport default connectConfigure(function Configure() {\n return null;\n}, {\n $$widgetType: 'ais.configure'\n});","export default '6.40.4';","var _excluded = [\"resultsFacetValues\"],\n _excluded2 = [\"resultsFacetValues\"],\n _excluded3 = [\"resultsFacetValues\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { version as ReactVersion } from 'react';\nimport createStore from \"./createStore.js\";\nimport createWidgetsManager from \"./createWidgetsManager.js\";\nimport { HIGHLIGHT_TAGS } from \"./highlight.js\";\nimport { hasMultipleIndices } from \"./indexUtils.js\";\nimport version from \"./version.js\";\nfunction addAlgoliaAgents(searchClient) {\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(\"react (\".concat(ReactVersion, \")\"));\n searchClient.addAlgoliaAgent(\"react-instantsearch (\".concat(version, \")\"));\n }\n}\nvar isMultiIndexContext = function isMultiIndexContext(widget) {\n return hasMultipleIndices({\n ais: widget.props.contextValue,\n multiIndexContext: widget.props.indexContextValue\n });\n};\nvar isTargetedIndexEqualIndex = function isTargetedIndexEqualIndex(widget, indexId) {\n return widget.props.indexContextValue.targetedIndex === indexId;\n};\n\n// Relying on the `indexId` is a bit brittle to detect the `Index` widget.\n// Since it's a class we could rely on `instanceof` or similar. We never\n// had an issue though. Works for now.\nvar isIndexWidget = function isIndexWidget(widget) {\n return Boolean(widget.props.indexId);\n};\nvar isIndexWidgetEqualIndex = function isIndexWidgetEqualIndex(widget, indexId) {\n return widget.props.indexId === indexId;\n};\nvar sortIndexWidgetsFirst = function sortIndexWidgetsFirst(firstWidget, secondWidget) {\n var isFirstWidgetIndex = isIndexWidget(firstWidget);\n var isSecondWidgetIndex = isIndexWidget(secondWidget);\n if (isFirstWidgetIndex && !isSecondWidgetIndex) {\n return -1;\n }\n if (!isFirstWidgetIndex && isSecondWidgetIndex) {\n return 1;\n }\n return 0;\n};\n\n// This function is copied from the algoliasearch v4 API Client. If modified,\n// consider updating it also in `serializeQueryParameters` from `@algolia/transporter`.\nfunction serializeQueryParameters(parameters) {\n var isObjectOrArray = function isObjectOrArray(value) {\n return Object.prototype.toString.call(value) === '[object Object]' || Object.prototype.toString.call(value) === '[object Array]';\n };\n var encode = function encode(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var i = 0;\n return format.replace(/%s/g, function () {\n return encodeURIComponent(args[i++]);\n });\n };\n return Object.keys(parameters).map(function (key) {\n return encode('%s=%s', key, isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]);\n }).join('&');\n}\n\n/**\n * Creates a new instance of the InstantSearchManager which controls the widgets and\n * trigger the search when the widgets are updated.\n * @param {string} indexName - the main index name\n * @param {object} initialState - initial widget state\n * @param {object} SearchParameters - optional additional parameters to send to the algolia API\n * @param {number} stalledSearchDelay - time (in ms) after the search is stalled\n * @return {InstantSearchManager} a new instance of InstantSearchManager\n */\nexport default function createInstantSearchManager(_ref) {\n var indexName = _ref.indexName,\n _ref$initialState = _ref.initialState,\n initialState = _ref$initialState === void 0 ? {} : _ref$initialState,\n searchClient = _ref.searchClient,\n resultsState = _ref.resultsState,\n stalledSearchDelay = _ref.stalledSearchDelay;\n var helper = algoliasearchHelper(searchClient, indexName, _objectSpread({}, HIGHLIGHT_TAGS));\n addAlgoliaAgents(searchClient);\n helper.on('search', handleNewSearch).on('result', handleSearchSuccess({\n indexId: indexName\n })).on('error', handleSearchError);\n var skip = false;\n var stalledSearchTimer = null;\n var initialSearchParameters = helper.state;\n var searchCounter;\n var widgetsManager = createWidgetsManager(onWidgetsUpdate);\n hydrateSearchClient(searchClient, resultsState);\n var store = createStore({\n widgets: initialState,\n metadata: hydrateMetadata(resultsState),\n results: hydrateResultsState(resultsState),\n error: null,\n searching: false,\n isSearchStalled: true,\n searchingForFacetValues: false\n });\n function skipSearch() {\n skip = true;\n }\n function updateClient(client) {\n addAlgoliaAgents(client);\n helper.setClient(client);\n search();\n }\n function clearCache() {\n helper.clearCache();\n search();\n }\n function getMetadata(state) {\n return widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getMetadata);\n }).map(function (widget) {\n return widget.getMetadata(state);\n });\n }\n function getSearchParameters() {\n var sharedParameters = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n return !isMultiIndexContext(widget) && !isIndexWidget(widget);\n }).reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, initialSearchParameters);\n var mainParameters = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n var targetedIndexEqualMainIndex = isMultiIndexContext(widget) && isTargetedIndexEqualIndex(widget, indexName);\n var subIndexEqualMainIndex = isIndexWidget(widget) && isIndexWidgetEqualIndex(widget, indexName);\n return targetedIndexEqualMainIndex || subIndexEqualMainIndex;\n })\n // We have to sort the `Index` widgets first so the `index` parameter\n // is correctly set in the `reduce` function for the following widgets\n .sort(sortIndexWidgetsFirst).reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, sharedParameters);\n var derivedIndices = widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.getSearchParameters);\n }).filter(function (widget) {\n var targetedIndexNotEqualMainIndex = isMultiIndexContext(widget) && !isTargetedIndexEqualIndex(widget, indexName);\n var subIndexNotEqualMainIndex = isIndexWidget(widget) && !isIndexWidgetEqualIndex(widget, indexName);\n return targetedIndexNotEqualMainIndex || subIndexNotEqualMainIndex;\n })\n // We have to sort the `Index` widgets first so the `index` parameter\n // is correctly set in the `reduce` function for the following widgets\n .sort(sortIndexWidgetsFirst).reduce(function (indices, widget) {\n var indexId = isMultiIndexContext(widget) ? widget.props.indexContextValue.targetedIndex : widget.props.indexId;\n var widgets = indices[indexId] || [];\n return _objectSpread(_objectSpread({}, indices), {}, _defineProperty({}, indexId, widgets.concat(widget)));\n }, {});\n var derivedParameters = Object.keys(derivedIndices).map(function (indexId) {\n return {\n parameters: derivedIndices[indexId].reduce(function (res, widget) {\n return widget.getSearchParameters(res);\n }, sharedParameters),\n indexId: indexId\n };\n });\n return {\n mainParameters: mainParameters,\n derivedParameters: derivedParameters\n };\n }\n function search() {\n if (!skip) {\n var _getSearchParameters = getSearchParameters(helper.state),\n mainParameters = _getSearchParameters.mainParameters,\n derivedParameters = _getSearchParameters.derivedParameters;\n searchCounter = derivedParameters.length + 1;\n\n // We have to call `slice` because the method `detach` on the derived\n // helpers mutates the value `derivedHelpers`. The `forEach` loop does\n // not iterate on each value and we're not able to correctly clear the\n // previous derived helpers (memory leak + useless requests).\n helper.derivedHelpers.slice().forEach(function (derivedHelper) {\n // Since we detach the derived helpers on **every** new search they\n // won't receive intermediate results in case of a stalled search.\n // Only the last result is dispatched by the derived helper because\n // they are not detached yet:\n //\n // - a -> main helper receives results\n // - ap -> main helper receives results\n // - app -> main helper + derived helpers receive results\n //\n // The quick fix is to avoid to detach them on search but only once they\n // received the results. But it means that in case of a stalled search\n // all the derived helpers not detached yet register a new search inside\n // the helper. The number grows fast in case of a bad network and it's\n // not deterministic.\n derivedHelper.detach();\n });\n derivedParameters.forEach(function (_ref2) {\n var indexId = _ref2.indexId,\n parameters = _ref2.parameters;\n var derivedHelper = helper.derive(function () {\n return parameters;\n });\n derivedHelper.on('result', handleSearchSuccess({\n indexId: indexId\n })).on('error', handleSearchError);\n });\n helper.setState(mainParameters);\n helper.search();\n }\n }\n function handleSearchSuccess(_ref3) {\n var indexId = _ref3.indexId;\n return function (event) {\n searchCounter--;\n var state = store.getState();\n var isDerivedHelpersEmpty = !helper.derivedHelpers.length;\n var results = state.results ? state.results : {};\n\n // Switching from mono index to multi index and vice versa must reset the\n // results to an empty object, otherwise we keep reference of stalled and\n // unused results.\n results = !isDerivedHelpersEmpty && results.getFacetByName ? {} : results;\n if (!isDerivedHelpersEmpty) {\n results = _objectSpread(_objectSpread({}, results), {}, _defineProperty({}, indexId, event.results));\n } else {\n results = event.results;\n }\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n stalledSearchTimer = null;\n nextIsSearchStalled = false;\n }\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n results: results,\n isSearchStalled: nextIsSearchStalled,\n searching: searchCounter > 0,\n error: null\n }));\n };\n }\n function handleSearchError(_ref4) {\n var error = _ref4.error;\n var currentState = store.getState();\n var nextIsSearchStalled = currentState.isSearchStalled;\n if (!helper.hasPendingRequests()) {\n clearTimeout(stalledSearchTimer);\n nextIsSearchStalled = false;\n }\n var resultsFacetValues = currentState.resultsFacetValues,\n partialState = _objectWithoutProperties(currentState, _excluded2);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: nextIsSearchStalled,\n error: error,\n searching: false\n }));\n }\n function handleNewSearch() {\n if (!stalledSearchTimer) {\n stalledSearchTimer = setTimeout(function () {\n var _store$getState = store.getState(),\n resultsFacetValues = _store$getState.resultsFacetValues,\n partialState = _objectWithoutProperties(_store$getState, _excluded3);\n store.setState(_objectSpread(_objectSpread({}, partialState), {}, {\n isSearchStalled: true\n }));\n }, stalledSearchDelay);\n }\n }\n function hydrateSearchClient(client, results) {\n if (!results) {\n return;\n }\n\n // Disable cache hydration on:\n // - Algoliasearch API Client < v4 with cache disabled\n // - Third party clients (detected by the `addAlgoliaAgent` function missing)\n\n if ((!client.transporter || client._cacheHydrated) && (!client._useCache || typeof client.addAlgoliaAgent !== 'function')) {\n return;\n }\n\n // Algoliasearch API Client >= v4\n // To hydrate the client we need to populate the cache with the data from\n // the server (done in `hydrateSearchClientWithMultiIndexRequest` or\n // `hydrateSearchClientWithSingleIndexRequest`). But since there is no way\n // for us to compute the key the same way as `algoliasearch-client` we need\n // to populate it on a custom key and override the `search` method to\n // search on it first.\n if (client.transporter && !client._cacheHydrated) {\n client._cacheHydrated = true;\n var baseMethod = client.search;\n client.search = function (requests) {\n for (var _len2 = arguments.length, methodArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n methodArgs[_key2 - 1] = arguments[_key2];\n }\n var requestsWithSerializedParams = requests.map(function (request) {\n return _objectSpread(_objectSpread({}, request), {}, {\n params: serializeQueryParameters(request.params)\n });\n });\n return client.transporter.responsesCache.get({\n method: 'search',\n args: [requestsWithSerializedParams].concat(methodArgs)\n }, function () {\n return baseMethod.apply(void 0, [requests].concat(methodArgs));\n });\n };\n }\n if (Array.isArray(results.results)) {\n hydrateSearchClientWithMultiIndexRequest(client, results.results);\n return;\n }\n hydrateSearchClientWithSingleIndexRequest(client, results);\n }\n function hydrateSearchClientWithMultiIndexRequest(client, results) {\n // Algoliasearch API Client >= v4\n // Populate the cache with the data from the server\n if (client.transporter) {\n client.transporter.responsesCache.set({\n method: 'search',\n args: [results.reduce(function (acc, result) {\n return acc.concat(result.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n }));\n }, [])]\n }, {\n results: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults);\n }, [])\n });\n return;\n }\n\n // Algoliasearch API Client < v4\n // Prior to client v4 we didn't have a proper API to hydrate the client\n // cache from the outside. The following code populates the cache with\n // a single-index result. You can find more information about the\n // computation of the key inside the client (see link below).\n // https://github.com/algolia/algoliasearch-client-javascript/blob/c27e89ff92b2a854ae6f40dc524bffe0f0cbc169/src/AlgoliaSearchCore.js#L232-L240\n var key = \"/1/indexes/*/queries_body_\".concat(JSON.stringify({\n requests: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n }));\n }, [])\n }));\n client.cache = _objectSpread(_objectSpread({}, client.cache), {}, _defineProperty({}, key, JSON.stringify({\n results: results.reduce(function (acc, result) {\n return acc.concat(result.rawResults);\n }, [])\n })));\n }\n function hydrateSearchClientWithSingleIndexRequest(client, results) {\n // Algoliasearch API Client >= v4\n // Populate the cache with the data from the server\n if (client.transporter) {\n client.transporter.responsesCache.set({\n method: 'search',\n args: [results.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n })]\n }, {\n results: results.rawResults\n });\n return;\n }\n // Algoliasearch API Client < v4\n // Prior to client v4 we didn't have a proper API to hydrate the client\n // cache from the outside. The following code populates the cache with\n // a single-index result. You can find more information about the\n // computation of the key inside the client (see link below).\n // https://github.com/algolia/algoliasearch-client-javascript/blob/c27e89ff92b2a854ae6f40dc524bffe0f0cbc169/src/AlgoliaSearchCore.js#L232-L240\n var key = \"/1/indexes/*/queries_body_\".concat(JSON.stringify({\n requests: results.rawResults.map(function (request) {\n return {\n indexName: request.index,\n params: request.params\n };\n })\n }));\n client.cache = _objectSpread(_objectSpread({}, client.cache), {}, _defineProperty({}, key, JSON.stringify({\n results: results.rawResults\n })));\n }\n function hydrateResultsState(results) {\n if (!results) {\n return null;\n }\n if (Array.isArray(results.results)) {\n return results.results.reduce(function (acc, result) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, result._internalIndexId, new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(result.state), result.rawResults)));\n }, {});\n }\n return new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(results.state), results.rawResults);\n }\n\n // Called whenever a widget has been rendered with new props.\n function onWidgetsUpdate() {\n var metadata = getMetadata(store.getState().widgets);\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n metadata: metadata,\n searching: true\n }));\n\n // Since the `getSearchParameters` method of widgets also depends on props,\n // the result search parameters might have changed.\n search();\n }\n function transitionState(nextSearchState) {\n var searchState = store.getState().widgets;\n return widgetsManager.getWidgets().filter(function (widget) {\n return Boolean(widget.transitionState);\n }).reduce(function (res, widget) {\n return widget.transitionState(searchState, res);\n }, nextSearchState);\n }\n function onExternalStateUpdate(nextSearchState) {\n var metadata = getMetadata(nextSearchState);\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n widgets: nextSearchState,\n metadata: metadata,\n searching: true\n }));\n search();\n }\n function onSearchForFacetValues(_ref5) {\n var facetName = _ref5.facetName,\n query = _ref5.query,\n _ref5$maxFacetHits = _ref5.maxFacetHits,\n maxFacetHits = _ref5$maxFacetHits === void 0 ? 10 : _ref5$maxFacetHits;\n // The values 1, 100 are the min / max values that the engine accepts.\n // see: https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits\n var maxFacetHitsWithinRange = Math.max(1, Math.min(maxFacetHits, 100));\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n searchingForFacetValues: true\n }));\n helper.searchForFacetValues(facetName, query, maxFacetHitsWithinRange).then(function (content) {\n var _objectSpread7;\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n error: null,\n searchingForFacetValues: false,\n resultsFacetValues: _objectSpread(_objectSpread({}, store.getState().resultsFacetValues), {}, (_objectSpread7 = {}, _defineProperty(_objectSpread7, facetName, content.facetHits), _defineProperty(_objectSpread7, \"query\", query), _objectSpread7))\n }));\n }, function (error) {\n store.setState(_objectSpread(_objectSpread({}, store.getState()), {}, {\n searchingForFacetValues: false,\n error: error\n }));\n }).catch(function (error) {\n // Since setState is synchronous, any error that occurs in the render of a\n // component will be swallowed by this promise.\n // This is a trick to make the error show up correctly in the console.\n // See http://stackoverflow.com/a/30741722/969302\n setTimeout(function () {\n throw error;\n });\n });\n }\n function updateIndex(newIndex) {\n initialSearchParameters = initialSearchParameters.setIndex(newIndex);\n // No need to trigger a new search here as the widgets will also update and trigger it if needed.\n }\n\n function getWidgetsIds() {\n return store.getState().metadata.reduce(function (res, meta) {\n return typeof meta.id !== 'undefined' ? res.concat(meta.id) : res;\n }, []);\n }\n return {\n store: store,\n widgetsManager: widgetsManager,\n getWidgetsIds: getWidgetsIds,\n getSearchParameters: getSearchParameters,\n onSearchForFacetValues: onSearchForFacetValues,\n onExternalStateUpdate: onExternalStateUpdate,\n transitionState: transitionState,\n updateClient: updateClient,\n updateIndex: updateIndex,\n clearCache: clearCache,\n skipSearch: skipSearch\n };\n}\nfunction hydrateMetadata(resultsState) {\n if (!resultsState) {\n return [];\n }\n\n // add a value noop, which gets replaced once the widgets are mounted\n return resultsState.metadata.map(function (datum) {\n return _objectSpread(_objectSpread({\n value: function value() {\n return {};\n }\n }, datum), {}, {\n items: datum.items && datum.items.map(function (item) {\n return _objectSpread(_objectSpread({\n value: function value() {\n return {};\n }\n }, item), {}, {\n items: item.items && item.items.map(function (nestedItem) {\n return _objectSpread({\n value: function value() {\n return {};\n }\n }, nestedItem);\n })\n });\n })\n });\n });\n}","import { defer } from \"./utils.js\";\nexport default function createWidgetsManager(onWidgetsUpdate) {\n var widgets = [];\n // Is an update scheduled?\n var scheduled = false;\n\n // The state manager's updates need to be batched since more than one\n // component can register or unregister widgets during the same tick.\n function scheduleUpdate() {\n if (scheduled) {\n return;\n }\n scheduled = true;\n defer(function () {\n scheduled = false;\n onWidgetsUpdate();\n });\n }\n return {\n registerWidget: function registerWidget(widget) {\n widgets.push(widget);\n scheduleUpdate();\n return function unregisterWidget() {\n widgets.splice(widgets.indexOf(widget), 1);\n scheduleUpdate();\n };\n },\n update: scheduleUpdate,\n getWidgets: function getWidgets() {\n return widgets;\n }\n };\n}","export default function createStore(initialState) {\n var state = initialState;\n var listeners = [];\n return {\n getState: function getState() {\n return state;\n },\n setState: function setState(nextState) {\n state = nextState;\n listeners.forEach(function (listener) {\n return listener();\n });\n },\n subscribe: function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n listeners.splice(listeners.indexOf(listener), 1);\n };\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nexport function isMetadataEnabled() {\n return (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && _typeof(window.navigator) === 'object' && typeof window.navigator.userAgent === 'string' && window.navigator.userAgent.includes('Algolia Crawler') && _typeof(window.document) === 'object';\n}\nexport function getMetadataPayload(widgets, searchClient) {\n var internalProps = ['contextValue', 'indexContextValue'];\n var widgetsPayload = widgets.map(function (_ref) {\n var props = _ref.props,\n constructor = _ref.constructor;\n var _ref2 = constructor._connectorDesc || {},\n _ref2$defaultProps = _ref2.defaultProps,\n defaultProps = _ref2$defaultProps === void 0 ? {} : _ref2$defaultProps,\n _ref2$displayName = _ref2.displayName,\n displayName = _ref2$displayName === void 0 ? constructor.displayName : _ref2$displayName;\n return {\n displayName: displayName,\n $$type: constructor.$$type,\n $$widgetType: constructor.$$widgetType,\n params: Object.keys(props).filter(function (prop) {\n return !internalProps.includes(prop) && defaultProps[prop] !== props[prop] && props[prop] !== undefined;\n })\n };\n });\n var client = searchClient;\n var ua = client.transporter && client.transporter.userAgent ? client.transporter.userAgent.value : client._ua;\n return {\n ua: ua,\n widgets: widgetsPayload\n };\n}\nexport function injectMetadata(widgets, searchClient) {\n var payloadContainer = document.createElement('meta');\n var refNode = document.querySelector('head');\n payloadContainer.name = 'algolia:metadata';\n var payload = getMetadataPayload(widgets, searchClient);\n payloadContainer.content = JSON.stringify(payload);\n refNode.appendChild(payloadContainer);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport PropTypes from 'prop-types';\nimport React, { Component, Children } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { InstantSearchProvider } from \"../core/context.js\";\nimport createInstantSearchManager from \"../core/createInstantSearchManager.js\";\nimport { isMetadataEnabled, injectMetadata } from \"../core/metadata.js\";\nfunction isControlled(props) {\n return Boolean(props.searchState);\n}\n\n/**\n * @description\n * `<InstantSearch>` is the root component of all React InstantSearch implementations.\n * It provides all the connected components (aka widgets) a means to interact\n * with the searchState.\n * @kind widget\n * @name <InstantSearch>\n * @requirements You will need to have an Algolia account to be able to use this widget.\n * [Create one now](https://www.algolia.com/users/sign_up).\n * @propType {string} indexName - Main index in which to search.\n * @propType {boolean} [refresh=false] - Flag to activate when the cache needs to be cleared so that the front-end is updated when a change occurs in the index.\n * @propType {object} [searchClient] - Provide a custom search client.\n * @propType {func} [onSearchStateChange] - Function to be called everytime a new search is done. Useful for [URL Routing](guide/Routing.html).\n * @propType {object} [searchState] - Object to inject some search state. Switches the InstantSearch component in controlled mode. Useful for [URL Routing](guide/Routing.html).\n * @propType {func} [createURL] - Function to call when creating links, useful for [URL Routing](guide/Routing.html).\n * @propType {SearchResults|SearchResults[]} [resultsState] - Use this to inject the results that will be used at first rendering. Those results are found by using the `findResultsState` function. Useful for [Server Side Rendering](guide/Server-side_rendering.html).\n * @propType {number} [stalledSearchDelay=200] - The amount of time before considering that the search takes too much time. The time is expressed in milliseconds.\n * @propType {{ Root: string|function, props: object }} [root] - Use this to customize the root element. Default value: `{ Root: 'div' }`\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox, Hits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <SearchBox />\n * <Hits />\n * </InstantSearch>\n * );\n */\nvar InstantSearch = /*#__PURE__*/function (_Component) {\n _inherits(InstantSearch, _Component);\n var _super = _createSuper(InstantSearch);\n function InstantSearch(props) {\n var _this;\n _classCallCheck(this, InstantSearch);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"cleanupTimerRef\", null);\n _defineProperty(_assertThisInitialized(_this), \"isUnmounting\", false);\n var instantSearchManager = createInstantSearchManager({\n indexName: _this.props.indexName,\n searchClient: _this.props.searchClient,\n initialState: _this.props.searchState || {},\n resultsState: _this.props.resultsState,\n stalledSearchDelay: _this.props.stalledSearchDelay\n });\n var contextValue = {\n store: instantSearchManager.store,\n widgetsManager: instantSearchManager.widgetsManager,\n mainTargetedIndex: _this.props.indexName,\n onInternalStateUpdate: _this.onWidgetsInternalStateUpdate.bind(_assertThisInitialized(_this)),\n createHrefForState: _this.createHrefForState.bind(_assertThisInitialized(_this)),\n onSearchForFacetValues: _this.onSearchForFacetValues.bind(_assertThisInitialized(_this)),\n onSearchStateChange: _this.onSearchStateChange.bind(_assertThisInitialized(_this)),\n onSearchParameters: _this.onSearchParameters.bind(_assertThisInitialized(_this))\n };\n _this.state = {\n isControlled: isControlled(_this.props),\n instantSearchManager: instantSearchManager,\n contextValue: contextValue\n };\n return _this;\n }\n _createClass(InstantSearch, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var prevIsControlled = isControlled(prevProps);\n if (prevIsControlled && !this.state.isControlled) {\n throw new Error(\"You can't switch <InstantSearch> from being controlled to uncontrolled\");\n }\n if (!prevIsControlled && this.state.isControlled) {\n throw new Error(\"You can't switch <InstantSearch> from being uncontrolled to controlled\");\n }\n if (this.props.refresh !== prevProps.refresh && this.props.refresh) {\n this.state.instantSearchManager.clearCache();\n }\n if (prevProps.indexName !== this.props.indexName) {\n this.state.instantSearchManager.updateIndex(this.props.indexName);\n }\n if (prevProps.searchClient !== this.props.searchClient) {\n this.state.instantSearchManager.updateClient(this.props.searchClient);\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.cleanupTimerRef) {\n clearTimeout(this.cleanupTimerRef);\n this.cleanupTimerRef = null;\n }\n if (isMetadataEnabled()) {\n injectMetadata(this.state.instantSearchManager.widgetsManager.getWidgets(), this.props.searchClient);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this2 = this;\n this.cleanupTimerRef = setTimeout(function () {\n _this2.isUnmounting = true;\n _this2.state.instantSearchManager.skipSearch();\n });\n }\n }, {\n key: \"createHrefForState\",\n value: function createHrefForState(searchState) {\n searchState = this.state.instantSearchManager.transitionState(searchState);\n return this.state.isControlled && this.props.createURL ? this.props.createURL(searchState, this.getKnownKeys()) : '#';\n }\n }, {\n key: \"onWidgetsInternalStateUpdate\",\n value: function onWidgetsInternalStateUpdate(searchState) {\n searchState = this.state.instantSearchManager.transitionState(searchState);\n this.onSearchStateChange(searchState);\n if (!this.state.isControlled) {\n this.state.instantSearchManager.onExternalStateUpdate(searchState);\n }\n }\n }, {\n key: \"onSearchStateChange\",\n value: function onSearchStateChange(searchState) {\n if (this.props.onSearchStateChange && !this.isUnmounting) {\n this.props.onSearchStateChange(searchState);\n }\n }\n }, {\n key: \"onSearchParameters\",\n value: function onSearchParameters(getSearchParameters, context, props, getMetadata, displayName) {\n if (this.props.onSearchParameters) {\n var _searchState = this.props.searchState ? this.props.searchState : {};\n this.props.onSearchParameters(getSearchParameters, context, props, _searchState);\n }\n if (this.props.widgetsCollector) {\n var _searchState2 = this.props.searchState ? this.props.searchState : {};\n this.props.widgetsCollector({\n getSearchParameters: getSearchParameters,\n getMetadata: getMetadata,\n context: context,\n props: props,\n searchState: _searchState2,\n displayName: displayName\n });\n }\n }\n }, {\n key: \"onSearchForFacetValues\",\n value: function onSearchForFacetValues(searchState) {\n this.state.instantSearchManager.onSearchForFacetValues(searchState);\n }\n }, {\n key: \"getKnownKeys\",\n value: function getKnownKeys() {\n return this.state.instantSearchManager.getWidgetsIds();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (Children.count(this.props.children) === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(InstantSearchProvider, {\n value: this.state.contextValue\n }, this.props.children);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var nextIsControlled = isControlled(nextProps);\n var previousSearchState = prevState.instantSearchManager.store.getState().widgets;\n var nextSearchState = nextProps.searchState;\n if (nextIsControlled && !isEqual(previousSearchState, nextSearchState)) {\n prevState.instantSearchManager.onExternalStateUpdate(nextProps.searchState);\n }\n return {\n isControlled: nextIsControlled,\n contextValue: _objectSpread(_objectSpread({}, prevState.contextValue), {}, {\n mainTargetedIndex: nextProps.indexName\n })\n };\n }\n }]);\n return InstantSearch;\n}(Component);\n_defineProperty(InstantSearch, \"defaultProps\", {\n stalledSearchDelay: 200,\n refresh: false\n});\n_defineProperty(InstantSearch, \"propTypes\", {\n // @TODO: These props are currently constant.\n indexName: PropTypes.string.isRequired,\n searchClient: PropTypes.shape({\n search: PropTypes.func.isRequired,\n searchForFacetValues: PropTypes.func,\n addAlgoliaAgent: PropTypes.func,\n clearCache: PropTypes.func\n }).isRequired,\n createURL: PropTypes.func,\n refresh: PropTypes.bool,\n searchState: PropTypes.object,\n onSearchStateChange: PropTypes.func,\n onSearchParameters: PropTypes.func,\n widgetsCollector: PropTypes.func,\n resultsState: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n children: PropTypes.node,\n stalledSearchDelay: PropTypes.number\n});\nexport default InstantSearch;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component, createContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { createClassNames } from '../core/utils';\nvar cx = createClassNames('Panel');\n\nvar _createContext = createContext(function setCanRefine() {}),\n PanelConsumer = _createContext.Consumer,\n PanelProvider = _createContext.Provider;\n\nexport { PanelConsumer, PanelProvider };\n\nvar Panel =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Panel, _Component);\n\n function Panel() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Panel);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Panel)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n canRefine: true\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setCanRefine\", function (nextCanRefine) {\n _this.setState({\n canRefine: nextCanRefine\n });\n });\n\n return _this;\n }\n\n _createClass(Panel, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n header = _this$props.header,\n footer = _this$props.footer;\n var canRefine = this.state.canRefine;\n return React.createElement(\"div\", {\n className: classNames(cx('', !canRefine && '-noRefinement'), className)\n }, header && React.createElement(\"div\", {\n className: cx('header')\n }, header), React.createElement(\"div\", {\n className: cx('body')\n }, React.createElement(PanelProvider, {\n value: this.setCanRefine\n }, children)), footer && React.createElement(\"div\", {\n className: cx('footer')\n }, footer));\n }\n }]);\n\n return Panel;\n}(Component);\n\n_defineProperty(Panel, \"propTypes\", {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n header: PropTypes.node,\n footer: PropTypes.node\n});\n\n_defineProperty(Panel, \"defaultProps\", {\n className: '',\n header: null,\n footer: null\n});\n\nexport default Panel;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { PanelConsumer } from './Panel';\n\nvar PanelCallbackHandler =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PanelCallbackHandler, _Component);\n\n function PanelCallbackHandler() {\n _classCallCheck(this, PanelCallbackHandler);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PanelCallbackHandler).apply(this, arguments));\n }\n\n _createClass(PanelCallbackHandler, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.setCanRefine(this.props.canRefine);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.canRefine !== this.props.canRefine) {\n this.props.setCanRefine(this.props.canRefine);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return PanelCallbackHandler;\n}(Component);\n\n_defineProperty(PanelCallbackHandler, \"propTypes\", {\n children: PropTypes.node.isRequired,\n canRefine: PropTypes.bool.isRequired,\n setCanRefine: PropTypes.func.isRequired\n});\n\nvar PanelWrapper = function PanelWrapper(_ref) {\n var canRefine = _ref.canRefine,\n children = _ref.children;\n return React.createElement(PanelConsumer, null, function (setCanRefine) {\n return React.createElement(PanelCallbackHandler, {\n setCanRefine: setCanRefine,\n canRefine: canRefine\n }, children);\n });\n};\n\nPanelWrapper.propTypes = {\n canRefine: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired\n};\nexport default PanelWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { translatable } from 'react-instantsearch-core';\nimport { createClassNames } from '../core/utils';\nvar cx = createClassNames('SearchBox');\nvar defaultLoadingIndicator = React.createElement(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 38 38\",\n xmlns: \"http://www.w3.org/2000/svg\",\n stroke: \"#444\",\n className: cx('loadingIcon')\n}, React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(1 1)\",\n strokeWidth: \"2\"\n}, React.createElement(\"circle\", {\n strokeOpacity: \".5\",\n cx: \"18\",\n cy: \"18\",\n r: \"18\"\n}), React.createElement(\"path\", {\n d: \"M36 18c0-9.94-8.06-18-18-18\"\n}, React.createElement(\"animateTransform\", {\n attributeName: \"transform\",\n type: \"rotate\",\n from: \"0 18 18\",\n to: \"360 18 18\",\n dur: \"1s\",\n repeatCount: \"indefinite\"\n})))));\nvar defaultReset = React.createElement(\"svg\", {\n className: cx('resetIcon'),\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n width: \"10\",\n height: \"10\"\n}, React.createElement(\"path\", {\n d: \"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"\n}));\nvar defaultSubmit = React.createElement(\"svg\", {\n className: cx('submitIcon'),\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 40 40\"\n}, React.createElement(\"path\", {\n d: \"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"\n}));\n\nvar SearchBox =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SearchBox, _Component);\n\n function SearchBox(props) {\n var _this;\n\n _classCallCheck(this, SearchBox);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SearchBox).call(this));\n\n _defineProperty(_assertThisInitialized(_this), \"getQuery\", function () {\n return _this.props.searchAsYouType ? _this.props.currentRefinement : _this.state.query;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onInputMount\", function (input) {\n _this.input = input;\n if (!_this.props.inputRef) return;\n\n if (typeof _this.props.inputRef === 'function') {\n _this.props.inputRef(input);\n } else {\n _this.props.inputRef.current = input;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (e) {\n if (!_this.props.focusShortcuts) {\n return;\n }\n\n var shortcuts = _this.props.focusShortcuts.map(function (key) {\n return typeof key === 'string' ? key.toUpperCase().charCodeAt(0) : key;\n });\n\n var elt = e.target || e.srcElement;\n var tagName = elt.tagName;\n\n if (elt.isContentEditable || tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA') {\n // already in an input\n return;\n }\n\n var which = e.which || e.keyCode;\n\n if (shortcuts.indexOf(which) === -1) {\n // not the right shortcut\n return;\n }\n\n _this.input.focus();\n\n e.stopPropagation();\n e.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSubmit\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n _this.input.blur();\n\n var _this$props = _this.props,\n refine = _this$props.refine,\n searchAsYouType = _this$props.searchAsYouType;\n\n if (!searchAsYouType) {\n refine(_this.getQuery());\n }\n\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n var _this$props2 = _this.props,\n searchAsYouType = _this$props2.searchAsYouType,\n refine = _this$props2.refine,\n onChange = _this$props2.onChange;\n var value = event.target.value;\n\n if (searchAsYouType) {\n refine(value);\n } else {\n _this.setState({\n query: value\n });\n }\n\n if (onChange) {\n onChange(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onReset\", function (event) {\n var _this$props3 = _this.props,\n searchAsYouType = _this$props3.searchAsYouType,\n refine = _this$props3.refine,\n onReset = _this$props3.onReset;\n refine('');\n\n _this.input.focus();\n\n if (!searchAsYouType) {\n _this.setState({\n query: ''\n });\n }\n\n if (onReset) {\n onReset(event);\n }\n });\n\n _this.state = {\n query: props.searchAsYouType ? null : props.currentRefinement\n };\n return _this;\n }\n\n _createClass(SearchBox, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.onKeyDown);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.onKeyDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (!this.props.searchAsYouType && prevProps.currentRefinement !== this.props.currentRefinement) {\n this.setState({\n query: this.props.currentRefinement\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n className = _this$props4.className,\n translate = _this$props4.translate,\n autoFocus = _this$props4.autoFocus,\n loadingIndicator = _this$props4.loadingIndicator,\n submit = _this$props4.submit,\n reset = _this$props4.reset;\n var query = this.getQuery();\n var searchInputEvents = Object.keys(this.props).reduce(function (props, prop) {\n if (['onsubmit', 'onreset', 'onchange'].indexOf(prop.toLowerCase()) === -1 && prop.indexOf('on') === 0) {\n return _objectSpread({}, props, _defineProperty({}, prop, _this2.props[prop]));\n }\n\n return props;\n }, {});\n var isSearchStalled = this.props.showLoadingIndicator && this.props.isSearchStalled;\n /* eslint-disable max-len */\n\n return React.createElement(\"div\", {\n className: classNames(cx(''), className)\n }, React.createElement(\"form\", {\n noValidate: true,\n onSubmit: this.props.onSubmit ? this.props.onSubmit : this.onSubmit,\n onReset: this.onReset,\n className: cx('form', isSearchStalled && 'form--stalledSearch'),\n action: \"\",\n role: \"search\"\n }, React.createElement(\"input\", _extends({\n ref: this.onInputMount,\n type: \"search\",\n placeholder: translate('placeholder'),\n autoFocus: autoFocus,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: \"false\",\n required: true,\n maxLength: \"512\",\n value: query,\n onChange: this.onChange\n }, searchInputEvents, {\n className: cx('input')\n })), React.createElement(\"button\", {\n type: \"submit\",\n title: translate('submitTitle'),\n className: cx('submit')\n }, submit), React.createElement(\"button\", {\n type: \"reset\",\n title: translate('resetTitle'),\n className: cx('reset'),\n hidden: !query || isSearchStalled\n }, reset), this.props.showLoadingIndicator && React.createElement(\"span\", {\n hidden: !isSearchStalled,\n className: cx('loadingIndicator')\n }, loadingIndicator)));\n /* eslint-enable */\n }\n }]);\n\n return SearchBox;\n}(Component);\n\n_defineProperty(SearchBox, \"propTypes\", {\n currentRefinement: PropTypes.string,\n className: PropTypes.string,\n refine: PropTypes.func.isRequired,\n translate: PropTypes.func.isRequired,\n loadingIndicator: PropTypes.node,\n reset: PropTypes.node,\n submit: PropTypes.node,\n focusShortcuts: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n autoFocus: PropTypes.bool,\n searchAsYouType: PropTypes.bool,\n onSubmit: PropTypes.func,\n onReset: PropTypes.func,\n onChange: PropTypes.func,\n isSearchStalled: PropTypes.bool,\n showLoadingIndicator: PropTypes.bool,\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.exact({\n current: PropTypes.object\n })])\n});\n\n_defineProperty(SearchBox, \"defaultProps\", {\n currentRefinement: '',\n className: '',\n focusShortcuts: ['s', '/'],\n autoFocus: false,\n searchAsYouType: true,\n showLoadingIndicator: false,\n isSearchStalled: false,\n loadingIndicator: defaultLoadingIndicator,\n reset: defaultReset,\n submit: defaultSubmit\n});\n\nexport default translatable({\n resetTitle: 'Clear the search query.',\n submitTitle: 'Submit your search query.',\n placeholder: 'Search here…'\n})(SearchBox);","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport cx from 'classnames';\nexport var createClassNames = function createClassNames(block) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ais';\n return function () {\n for (var _len = arguments.length, elements = new Array(_len), _key = 0; _key < _len; _key++) {\n elements[_key] = arguments[_key];\n }\n\n var suitElements = elements.filter(function (element) {\n return element || element === '';\n }).map(function (element) {\n var baseClassName = \"\".concat(prefix, \"-\").concat(block);\n return element ? \"\".concat(baseClassName, \"-\").concat(element) : baseClassName;\n });\n return cx(suitElements);\n };\n};\nexport var isSpecialClick = function isSpecialClick(event) {\n var isMiddleClick = event.button === 1;\n return Boolean(isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n};\nexport var capitalize = function capitalize(key) {\n return key.length === 0 ? '' : \"\".concat(key[0].toUpperCase()).concat(key.slice(1));\n};\n// taken from InstantSearch.js/utils\nexport function range(_ref) {\n var _ref$start = _ref.start,\n start = _ref$start === void 0 ? 0 : _ref$start,\n end = _ref.end,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step;\n // We can't divide by 0 so we re-assign the step to 1 if it happens.\n var limitStep = step === 0 ? 1 : step; // In some cases the array to create has a decimal length.\n // We therefore need to round the value.\n // Example:\n // { start: 1, end: 5000, step: 500 }\n // => Array length = (5000 - 1) / 500 = 9.998\n\n var arrayLength = Math.round((end - start) / limitStep);\n return _toConsumableArray(Array(arrayLength)).map(function (_, current) {\n return (start + current) * limitStep;\n });\n}\nexport function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n\n return undefined;\n}","import createConnector from \"../core/createConnector.js\";\nimport { HIGHLIGHT_TAGS, parseAlgoliaHit } from \"../core/highlight.js\";\nvar highlight = function highlight(_ref) {\n var attribute = _ref.attribute,\n hit = _ref.hit,\n highlightProperty = _ref.highlightProperty,\n _ref$preTag = _ref.preTag,\n preTag = _ref$preTag === void 0 ? HIGHLIGHT_TAGS.highlightPreTag : _ref$preTag,\n _ref$postTag = _ref.postTag,\n postTag = _ref$postTag === void 0 ? HIGHLIGHT_TAGS.highlightPostTag : _ref$postTag;\n return parseAlgoliaHit({\n attribute: attribute,\n highlightProperty: highlightProperty,\n hit: hit,\n preTag: preTag,\n postTag: postTag\n });\n};\n\n/**\n * connectHighlight connector provides the logic to create an highlighter\n * component that will retrieve, parse and render an highlighted attribute\n * from an Algolia hit.\n * @name connectHighlight\n * @kind connector\n * @category connector\n * @providedPropType {function} highlight - function to retrieve and parse an attribute from a hit. It takes a configuration object with 3 attributes: `highlightProperty` which is the property that contains the highlight structure from the records, `attribute` which is the name of the attribute (it can be either a string or an array of strings) to look for and `hit` which is the hit from Algolia. It returns an array of objects `{value: string, isHighlighted: boolean}`. If the element that corresponds to the attribute is an array of strings, it will return a nested array of objects.\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox, Hits, connectHighlight } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const CustomHighlight = connectHighlight(\n * ({ highlight, attribute, hit, highlightProperty }) => {\n * const highlights = highlight({\n * highlightProperty: '_highlightResult',\n * attribute,\n * hit\n * });\n *\n * return highlights.map(part => part.isHighlighted ? (\n * <mark>{part.value}</mark>\n * ) : (\n * <span>{part.value}</span>\n * ));\n * }\n * );\n *\n * const Hit = ({ hit }) => (\n * <p>\n * <CustomHighlight attribute=\"name\" hit={hit} />\n * </p>\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <SearchBox defaultRefinement=\"pho\" />\n * <Hits hitComponent={Hit} />\n * </InstantSearch>\n * );\n */\nexport default createConnector({\n displayName: 'AlgoliaHighlighter',\n $$type: 'ais.highlighter',\n propTypes: {},\n getProvidedProps: function getProvidedProps() {\n return {\n highlight: highlight\n };\n }\n});","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nexport var Highlight = function Highlight(_ref) {\n var cx = _ref.cx,\n value = _ref.value,\n highlightedTagName = _ref.highlightedTagName,\n isHighlighted = _ref.isHighlighted,\n nonHighlightedTagName = _ref.nonHighlightedTagName;\n var TagName = isHighlighted ? highlightedTagName : nonHighlightedTagName;\n var className = isHighlighted ? 'highlighted' : 'nonHighlighted';\n return React.createElement(TagName, {\n className: cx(className)\n }, value);\n};\nHighlight.propTypes = {\n cx: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n isHighlighted: PropTypes.bool.isRequired,\n highlightedTagName: PropTypes.string.isRequired,\n nonHighlightedTagName: PropTypes.string.isRequired\n};\n\nvar Highlighter = function Highlighter(_ref2) {\n var cx = _ref2.cx,\n hit = _ref2.hit,\n attribute = _ref2.attribute,\n highlight = _ref2.highlight,\n highlightProperty = _ref2.highlightProperty,\n tagName = _ref2.tagName,\n nonHighlightedTagName = _ref2.nonHighlightedTagName,\n separator = _ref2.separator,\n className = _ref2.className;\n var parsedHighlightedValue = highlight({\n hit: hit,\n attribute: attribute,\n highlightProperty: highlightProperty\n });\n return React.createElement(\"span\", {\n className: classNames(cx(''), className)\n }, parsedHighlightedValue.map(function (item, i) {\n if (Array.isArray(item)) {\n var isLast = i === parsedHighlightedValue.length - 1;\n return React.createElement(\"span\", {\n key: i\n }, item.map(function (element, index) {\n return React.createElement(Highlight, {\n cx: cx,\n key: index,\n value: element.value,\n highlightedTagName: tagName,\n nonHighlightedTagName: nonHighlightedTagName,\n isHighlighted: element.isHighlighted\n });\n }), !isLast && React.createElement(\"span\", {\n className: cx('separator')\n }, separator));\n }\n\n return React.createElement(Highlight, {\n cx: cx,\n key: i,\n value: item.value,\n highlightedTagName: tagName,\n nonHighlightedTagName: nonHighlightedTagName,\n isHighlighted: item.isHighlighted\n });\n }));\n};\n\nHighlighter.propTypes = {\n cx: PropTypes.func.isRequired,\n hit: PropTypes.object.isRequired,\n attribute: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]).isRequired,\n highlight: PropTypes.func.isRequired,\n highlightProperty: PropTypes.string.isRequired,\n tagName: PropTypes.string,\n nonHighlightedTagName: PropTypes.string,\n className: PropTypes.string,\n separator: PropTypes.node\n};\nHighlighter.defaultProps = {\n tagName: 'em',\n nonHighlightedTagName: 'span',\n className: '',\n separator: ', '\n};\nexport default Highlighter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { createClassNames } from '../core/utils';\nimport Highlighter from './Highlighter';\nvar cx = createClassNames('Highlight');\n\nvar Highlight = function Highlight(props) {\n return React.createElement(Highlighter, _extends({}, props, {\n highlightProperty: \"_highlightResult\",\n cx: cx\n }));\n};\n\nexport default Highlight;","import { connectHighlight } from 'react-instantsearch-core';\nimport Highlight from '../components/Highlight';\n/**\n * Renders any attribute from a hit into its highlighted form when relevant.\n *\n * Read more about it in the [Highlighting results](guide/Highlighting_results.html) guide.\n * @name Highlight\n * @kind widget\n * @propType {string} attribute - location of the highlighted attribute in the hit (the corresponding element can be either a string or an array of strings)\n * @propType {object} hit - hit object containing the highlighted attribute\n * @propType {string} [tagName='em'] - tag to be used for highlighted parts of the hit\n * @propType {string} [nonHighlightedTagName='span'] - tag to be used for the parts of the hit that are not highlighted\n * @propType {node} [separator=',<space>'] - symbol used to separate the elements of the array in case the attribute points to an array of strings.\n * @themeKey ais-Highlight - root of the component\n * @themeKey ais-Highlight-highlighted - part of the text which is highlighted\n * @themeKey ais-Highlight-nonHighlighted - part of the text that is not highlighted\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox, Hits, Highlight } from 'react-instantsearch-dom';\n *\n * const Hit = ({ hit }) => (\n * <div>\n * <Highlight attribute=\"name\" hit={hit} />\n * </div>\n * );\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <SearchBox defaultRefinement=\"Pho\" />\n * <Hits hitComponent={Hit} />\n * </InstantSearch>\n * );\n */\n\nexport default connectHighlight(Highlight);","import createConnector from \"../core/createConnector.js\";\nimport { getResults } from \"../core/indexUtils.js\";\nimport { addAbsolutePositions, addQueryID } from \"../core/utils.js\";\n\n/**\n * connectHits connector provides the logic to create connected\n * components that will render the results retrieved from\n * Algolia.\n *\n * To configure the number of hits retrieved, use [HitsPerPage widget](widgets/HitsPerPage.html),\n * [connectHitsPerPage connector](connectors/connectHitsPerPage.html) or pass the hitsPerPage\n * prop to a [Configure](guide/Search_parameters.html) widget.\n *\n * **Warning:** you will need to use the **objectID** property available on every hit as a key\n * when iterating over them. This will ensure you have the best possible UI experience\n * especially on slow networks.\n * @name connectHits\n * @kind connector\n * @providedPropType {array.<object>} hits - the records that matched the search state\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Highlight, connectHits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n * const CustomHits = connectHits(({ hits }) => (\n * <div>\n * {hits.map(hit =>\n * <p key={hit.objectID}>\n * <Highlight attribute=\"name\" hit={hit} />\n * </p>\n * )}\n * </div>\n * ));\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <CustomHits />\n * </InstantSearch>\n * );\n */\nexport default createConnector({\n displayName: 'AlgoliaHits',\n $$type: 'ais.hits',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n if (!results) {\n return {\n hits: []\n };\n }\n var hitsWithPositions = addAbsolutePositions(results.hits, results.hitsPerPage, results.page);\n var hitsWithPositionsAndQueryID = addQueryID(hitsWithPositions, results.queryID);\n return {\n hits: hitsWithPositionsAndQueryID\n };\n },\n /*\n * Hits needs to be considered as a widget to trigger a search,\n * even if no other widgets are used.\n *\n * To be considered as a widget you need either:\n * - getSearchParameters\n * - getMetadata\n * - transitionState\n *\n * See: createConnector.tsx\n */\n getSearchParameters: function getSearchParameters(searchParameters) {\n return searchParameters;\n }\n});","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { createClassNames } from '../core/utils';\nvar cx = createClassNames('Hits');\n\nvar DefaultHitComponent = function DefaultHitComponent(props) {\n return React.createElement(\"div\", {\n style: {\n borderBottom: '1px solid #bbb',\n paddingBottom: '5px',\n marginBottom: '5px',\n wordBreak: 'break-all'\n }\n }, JSON.stringify(props).slice(0, 100), \"...\");\n};\n\nvar Hits = function Hits(_ref) {\n var hits = _ref.hits,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? '' : _ref$className,\n _ref$hitComponent = _ref.hitComponent,\n HitComponent = _ref$hitComponent === void 0 ? DefaultHitComponent : _ref$hitComponent;\n return React.createElement(\"div\", {\n className: classNames(cx(''), className)\n }, React.createElement(\"ul\", {\n className: cx('list')\n }, hits.map(function (hit) {\n return React.createElement(\"li\", {\n className: cx('item'),\n key: hit.objectID\n }, React.createElement(HitComponent, {\n hit: hit\n }));\n })));\n};\n\nvar HitPropTypes = PropTypes.shape({\n objectID: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired\n});\nHits.propTypes = {\n hits: PropTypes.arrayOf(HitPropTypes.isRequired).isRequired,\n className: PropTypes.string,\n hitComponent: PropTypes.func\n};\nexport default Hits;","import { connectHits } from 'react-instantsearch-core';\nimport Hits from '../components/Hits';\n/**\n * Displays a list of hits.\n *\n * To configure the number of hits being shown, use the [HitsPerPage widget](widgets/HitsPerPage.html),\n * [connectHitsPerPage connector](connectors/connectHitsPerPage.html) or the [Configure widget](widgets/Configure.html).\n *\n * @name Hits\n * @kind widget\n * @propType {Component} [hitComponent] - Component used for rendering each hit from\n * the results. If it is not provided the rendering defaults to displaying the\n * hit in its JSON form. The component will be called with a `hit` prop.\n * @themeKey ais-Hits - the root div of the widget\n * @themeKey ais-Hits-list - the list of results\n * @themeKey ais-Hits-item - the hit list item\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Hits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <Hits />\n * </InstantSearch>\n * );\n */\n\nexport default connectHits(Hits);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, refineValue, getCurrentRefinementValue, getResults } from \"../core/indexUtils.js\";\nfunction getId() {\n return 'page';\n}\nfunction getCurrentRefinement(props, searchState, context) {\n var id = getId();\n var page = 1;\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, id, page);\n if (typeof currentRefinement === 'string') {\n return parseInt(currentRefinement, 10);\n }\n return currentRefinement;\n}\nfunction _refine(props, searchState, nextPage, context) {\n var id = getId();\n var nextValue = _defineProperty({}, id, nextPage);\n var resetPage = false;\n return refineValue(searchState, nextValue, context, resetPage);\n}\n\n/**\n * connectPagination connector provides the logic to build a widget that will\n * let the user displays hits corresponding to a certain page.\n * @name connectPagination\n * @kind connector\n * @propType {boolean} [showFirst=true] - Display the first page link.\n * @propType {boolean} [showLast=false] - Display the last page link.\n * @propType {boolean} [showPrevious=true] - Display the previous page link.\n * @propType {boolean} [showNext=true] - Display the next page link.\n * @propType {number} [padding=3] - How many page links to display around the current page.\n * @propType {number} [totalPages=Infinity] - Maximum number of pages to display.\n * @providedPropType {function} refine - a function to remove a single filter\n * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state\n * @providedPropType {number} nbPages - the total of existing pages\n * @providedPropType {number} currentRefinement - the page refinement currently applied\n */\nexport default createConnector({\n displayName: 'AlgoliaPagination',\n $$type: 'ais.pagination',\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n if (!results) {\n return null;\n }\n var nbPages = results.nbPages;\n return {\n nbPages: nbPages,\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n canRefine: nbPages > 1\n };\n },\n refine: function refine(props, searchState, nextPage) {\n return _refine(props, searchState, nextPage, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n return cleanUpValue(searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }, getId());\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n return searchParameters.setPage(getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }) - 1);\n },\n getMetadata: function getMetadata() {\n return {\n id: getId()\n };\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { isSpecialClick } from '../core/utils';\n\nvar Link =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Link, _Component);\n\n function Link() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Link)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (e) {\n if (isSpecialClick(e)) {\n return;\n }\n\n _this.props.onClick();\n\n e.preventDefault();\n });\n\n return _this;\n }\n\n _createClass(Link, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"a\", _extends({}, this.props, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return Link;\n}(Component);\n\n_defineProperty(Link, \"propTypes\", {\n onClick: PropTypes.func.isRequired\n});\n\nexport { Link as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Link from './Link';\n\nvar LinkList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LinkList, _Component);\n\n function LinkList() {\n _classCallCheck(this, LinkList);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LinkList).apply(this, arguments));\n }\n\n _createClass(LinkList, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n createURL = _this$props.createURL,\n items = _this$props.items,\n onSelect = _this$props.onSelect,\n canRefine = _this$props.canRefine;\n return React.createElement(\"ul\", {\n className: cx('list', !canRefine && 'list--noRefinement')\n }, items.map(function (item) {\n return React.createElement(\"li\", {\n key: item.key === undefined ? item.value : item.key,\n className: cx('item', item.selected && !item.disabled && 'item--selected', item.disabled && 'item--disabled', item.modifier)\n }, item.disabled ? React.createElement(\"span\", {\n className: cx('link')\n }, item.label === undefined ? item.value : item.label) : React.createElement(Link, {\n className: cx('link', item.selected && 'link--selected'),\n \"aria-label\": item.ariaLabel,\n href: createURL(item.value),\n onClick: function onClick() {\n return onSelect(item.value);\n }\n }, item.label === undefined ? item.value : item.label));\n }));\n }\n }]);\n\n return LinkList;\n}(Component);\n\n_defineProperty(LinkList, \"propTypes\", {\n cx: PropTypes.func.isRequired,\n createURL: PropTypes.func.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n key: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.node,\n modifier: PropTypes.string,\n ariaLabel: PropTypes.string,\n disabled: PropTypes.bool\n })),\n onSelect: PropTypes.func.isRequired,\n canRefine: PropTypes.bool.isRequired\n});\n\nexport { LinkList as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { translatable } from 'react-instantsearch-core';\nimport { createClassNames, capitalize, range } from '../core/utils';\nimport LinkList from './LinkList';\nvar cx = createClassNames('Pagination'); // Determines the size of the widget (the number of pages displayed - that the user can directly click on)\n\nfunction calculateSize(padding, maxPages) {\n return Math.min(2 * padding + 1, maxPages);\n}\n\nfunction calculatePaddingLeft(currentPage, padding, maxPages, size) {\n if (currentPage <= padding) {\n return currentPage;\n }\n\n if (currentPage >= maxPages - padding) {\n return size - (maxPages - currentPage);\n }\n\n return padding + 1;\n} // Retrieve the correct page range to populate the widget\n\n\nfunction getPages(currentPage, maxPages, padding) {\n var size = calculateSize(padding, maxPages); // If the widget size is equal to the max number of pages, return the entire page range\n\n if (size === maxPages) return range({\n start: 1,\n end: maxPages + 1\n });\n var paddingLeft = calculatePaddingLeft(currentPage, padding, maxPages, size);\n var paddingRight = size - paddingLeft;\n var first = currentPage - paddingLeft;\n var last = currentPage + paddingRight;\n return range({\n start: first + 1,\n end: last + 1\n });\n}\n\nvar Pagination =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Pagination, _Component);\n\n function Pagination() {\n _classCallCheck(this, Pagination);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Pagination).apply(this, arguments));\n }\n\n _createClass(Pagination, [{\n key: \"getItem\",\n value: function getItem(modifier, translationKey, value) {\n var _this$props = this.props,\n nbPages = _this$props.nbPages,\n totalPages = _this$props.totalPages,\n translate = _this$props.translate;\n return {\n key: \"\".concat(modifier, \".\").concat(value),\n modifier: modifier,\n disabled: value < 1 || value >= Math.min(totalPages, nbPages),\n label: translate(translationKey, value),\n value: value,\n ariaLabel: translate(\"aria\".concat(capitalize(translationKey)), value)\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n ListComponent = _this$props2.listComponent,\n nbPages = _this$props2.nbPages,\n totalPages = _this$props2.totalPages,\n currentRefinement = _this$props2.currentRefinement,\n padding = _this$props2.padding,\n showFirst = _this$props2.showFirst,\n showPrevious = _this$props2.showPrevious,\n showNext = _this$props2.showNext,\n showLast = _this$props2.showLast,\n refine = _this$props2.refine,\n createURL = _this$props2.createURL,\n canRefine = _this$props2.canRefine,\n translate = _this$props2.translate,\n className = _this$props2.className,\n otherProps = _objectWithoutProperties(_this$props2, [\"listComponent\", \"nbPages\", \"totalPages\", \"currentRefinement\", \"padding\", \"showFirst\", \"showPrevious\", \"showNext\", \"showLast\", \"refine\", \"createURL\", \"canRefine\", \"translate\", \"className\"]);\n\n var maxPages = Math.min(nbPages, totalPages);\n var lastPage = maxPages;\n var items = [];\n\n if (showFirst) {\n items.push({\n key: 'first',\n modifier: 'item--firstPage',\n disabled: currentRefinement === 1,\n label: translate('first'),\n value: 1,\n ariaLabel: translate('ariaFirst')\n });\n }\n\n if (showPrevious) {\n items.push({\n key: 'previous',\n modifier: 'item--previousPage',\n disabled: currentRefinement === 1,\n label: translate('previous'),\n value: currentRefinement - 1,\n ariaLabel: translate('ariaPrevious')\n });\n }\n\n items = items.concat(getPages(currentRefinement, maxPages, padding).map(function (value) {\n return {\n key: value,\n modifier: 'item--page',\n label: translate('page', value),\n value: value,\n selected: value === currentRefinement,\n ariaLabel: translate('ariaPage', value)\n };\n }));\n\n if (showNext) {\n items.push({\n key: 'next',\n modifier: 'item--nextPage',\n disabled: currentRefinement === lastPage || lastPage <= 1,\n label: translate('next'),\n value: currentRefinement + 1,\n ariaLabel: translate('ariaNext')\n });\n }\n\n if (showLast) {\n items.push({\n key: 'last',\n modifier: 'item--lastPage',\n disabled: currentRefinement === lastPage || lastPage <= 1,\n label: translate('last'),\n value: lastPage,\n ariaLabel: translate('ariaLast')\n });\n }\n\n return React.createElement(\"div\", {\n className: classNames(cx('', !canRefine && '-noRefinement'), className)\n }, React.createElement(ListComponent, _extends({}, otherProps, {\n cx: cx,\n items: items,\n onSelect: refine,\n createURL: createURL,\n canRefine: canRefine\n })));\n }\n }]);\n\n return Pagination;\n}(Component);\n\n_defineProperty(Pagination, \"propTypes\", {\n nbPages: PropTypes.number.isRequired,\n currentRefinement: PropTypes.number.isRequired,\n refine: PropTypes.func.isRequired,\n createURL: PropTypes.func.isRequired,\n canRefine: PropTypes.bool.isRequired,\n translate: PropTypes.func.isRequired,\n listComponent: PropTypes.func,\n showFirst: PropTypes.bool,\n showPrevious: PropTypes.bool,\n showNext: PropTypes.bool,\n showLast: PropTypes.bool,\n padding: PropTypes.number,\n totalPages: PropTypes.number,\n className: PropTypes.string\n});\n\n_defineProperty(Pagination, \"defaultProps\", {\n listComponent: LinkList,\n showFirst: true,\n showPrevious: true,\n showNext: true,\n showLast: false,\n padding: 3,\n totalPages: Infinity,\n className: ''\n});\n\nexport default translatable({\n previous: '‹',\n next: '›',\n first: '«',\n last: '»',\n page: function page(currentRefinement) {\n return currentRefinement.toString();\n },\n ariaPrevious: 'Previous page',\n ariaNext: 'Next page',\n ariaFirst: 'First page',\n ariaLast: 'Last page',\n ariaPage: function ariaPage(currentRefinement) {\n return \"Page \".concat(currentRefinement.toString());\n }\n})(Pagination);","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import React from 'react';\nimport { connectPagination } from 'react-instantsearch-core';\nimport PanelCallbackHandler from '../components/PanelCallbackHandler';\nimport Pagination from '../components/Pagination';\n/**\n * The Pagination widget displays a simple pagination system allowing the user to\n * change the current page.\n * @name Pagination\n * @kind widget\n * @propType {boolean} [showFirst=true] - Display the first page link.\n * @propType {boolean} [showLast=false] - Display the last page link.\n * @propType {boolean} [showPrevious=true] - Display the previous page link.\n * @propType {boolean} [showNext=true] - Display the next page link.\n * @propType {number} [padding=3] - How many page links to display around the current page.\n * @propType {number} [totalPages=Infinity] - Maximum number of pages to display.\n * @themeKey ais-Pagination - the root div of the widget\n * @themeKey ais-Pagination--noRefinement - the root div of the widget when there is no refinement\n * @themeKey ais-Pagination-list - the list of all pagination items\n * @themeKey ais-Pagination-list--noRefinement - the list of all pagination items when there is no refinement\n * @themeKey ais-Pagination-item - the pagination list item\n * @themeKey ais-Pagination-item--firstPage - the \"first\" pagination list item\n * @themeKey ais-Pagination-item--lastPage - the \"last\" pagination list item\n * @themeKey ais-Pagination-item--previousPage - the \"previous\" pagination list item\n * @themeKey ais-Pagination-item--nextPage - the \"next\" pagination list item\n * @themeKey ais-Pagination-item--page - the \"page\" pagination list item\n * @themeKey ais-Pagination-item--selected - the selected pagination list item\n * @themeKey ais-Pagination-item--disabled - the disabled pagination list item\n * @themeKey ais-Pagination-link - the pagination clickable element\n * @translationKey previous - Label value for the previous page link\n * @translationKey next - Label value for the next page link\n * @translationKey first - Label value for the first page link\n * @translationKey last - Label value for the last page link\n * @translationkey page - Label value for a page item. You get function(currentRefinement) and you need to return a string\n * @translationKey ariaPrevious - Accessibility label value for the previous page link\n * @translationKey ariaNext - Accessibility label value for the next page link\n * @translationKey ariaFirst - Accessibility label value for the first page link\n * @translationKey ariaLast - Accessibility label value for the last page link\n * @translationkey ariaPage - Accessibility label value for a page item. You get function(currentRefinement) and you need to return a string\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, Pagination } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <Pagination />\n * </InstantSearch>\n * );\n */\n\nvar PaginationWidget = function PaginationWidget(props) {\n return React.createElement(PanelCallbackHandler, props, React.createElement(Pagination, props));\n};\n\nexport default connectPagination(PaginationWidget);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, getIndexId, refineValue, getCurrentRefinementValue, getResults } from \"../core/indexUtils.js\";\nimport { unescapeFacetValue } from \"../core/utils.js\";\nvar namespace = 'refinementList';\nfunction getId(props) {\n return props.attribute;\n}\nfunction getCurrentRefinement(props, searchState, context) {\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, \"\".concat(namespace, \".\").concat(getId(props)), []);\n if (typeof currentRefinement !== 'string') {\n return currentRefinement;\n }\n if (currentRefinement) {\n return [currentRefinement];\n }\n return [];\n}\nfunction getValue(value, props, searchState, context) {\n var currentRefinement = getCurrentRefinement(props, searchState, context);\n var isAnewValue = currentRefinement.indexOf(value) === -1;\n var nextRefinement = isAnewValue ? currentRefinement.concat([value]) // cannot use .push(), it mutates\n : currentRefinement.filter(function (selectedValue) {\n return selectedValue !== value;\n }); // cannot use .splice(), it mutates\n return nextRefinement;\n}\nfunction getLimit(_ref) {\n var showMore = _ref.showMore,\n limit = _ref.limit,\n showMoreLimit = _ref.showMoreLimit;\n return showMore ? showMoreLimit : limit;\n}\nfunction _refine(props, searchState, nextRefinement, context) {\n var id = getId(props);\n // Setting the value to an empty string ensures that it is persisted in\n // the URL as an empty value.\n // This is necessary in the case where `defaultRefinement` contains one\n // item and we try to deselect it. `nextSelected` would be an empty array,\n // which would not be persisted to the URL.\n // {foo: ['bar']} => \"foo[0]=bar\"\n // {foo: []} => \"\"\n var nextValue = _defineProperty({}, id, nextRefinement.length > 0 ? nextRefinement : '');\n var resetPage = true;\n return refineValue(searchState, nextValue, context, resetPage, namespace);\n}\nfunction _cleanUp(props, searchState, context) {\n return cleanUpValue(searchState, context, \"\".concat(namespace, \".\").concat(getId(props)));\n}\n/**\n * connectRefinementList connector provides the logic to build a widget that will\n * give the user the ability to choose multiple values for a specific facet.\n * @name connectRefinementList\n * @kind connector\n * @requirements The attribute passed to the `attribute` prop must be present in \"attributes for faceting\"\n * on the Algolia dashboard or configured as `attributesForFaceting` via a set settings call to the Algolia API.\n * @propType {string} attribute - the name of the attribute in the record\n * @propType {boolean} [searchable=false] - allow search inside values\n * @propType {string} [operator=or] - How to apply the refinements. Possible values: 'or' or 'and'.\n * @propType {boolean} [showMore=false] - true if the component should display a button that will expand the number of items\n * @propType {number} [limit=10] - the minimum number of displayed items\n * @propType {number} [showMoreLimit=20] - the maximun number of displayed items. Only used when showMore is set to `true`\n * @propType {string[]} defaultRefinement - the values of the items selected by default. The searchState of this widget takes the form of a list of `string`s, which correspond to the values of all selected refinements. However, when there are no refinements selected, the value of the searchState is an empty string.\n * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.\n * @providedPropType {function} refine - a function to toggle a refinement\n * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state\n * @providedPropType {string[]} currentRefinement - the refinement currently applied\n * @providedPropType {array.<{count: number, isRefined: boolean, label: string, value: string}>} items - the list of items the RefinementList can display.\n * @providedPropType {function} searchForItems - a function to toggle a search inside items values\n * @providedPropType {boolean} isFromSearch - a boolean that says if the `items` props contains facet values from the global search or from the search inside items.\n * @providedPropType {boolean} canRefine - a boolean that says whether you can refine\n */\n\nvar sortBy = ['isRefined', 'count:desc', 'name:asc'];\nexport default createConnector({\n displayName: 'AlgoliaRefinementList',\n $$type: 'ais.refinementList',\n propTypes: {\n id: PropTypes.string,\n attribute: PropTypes.string.isRequired,\n operator: PropTypes.oneOf(['and', 'or']),\n showMore: PropTypes.bool,\n limit: PropTypes.number,\n showMoreLimit: PropTypes.number,\n defaultRefinement: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n searchable: PropTypes.bool,\n transformItems: PropTypes.func,\n facetOrdering: PropTypes.bool\n },\n defaultProps: {\n operator: 'or',\n showMore: false,\n limit: 10,\n showMoreLimit: 20,\n facetOrdering: true\n },\n getProvidedProps: function getProvidedProps(props, searchState, searchResults, metadata, searchForFacetValuesResults) {\n var attribute = props.attribute,\n searchable = props.searchable,\n indexContextValue = props.indexContextValue,\n facetOrdering = props.facetOrdering;\n var results = getResults(searchResults, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n var canRefine = Boolean(results) && Boolean(results.getFacetByName(attribute));\n var isFromSearch = Boolean(searchForFacetValuesResults && searchForFacetValuesResults[attribute] && searchForFacetValuesResults.query !== '');\n\n // Search For Facet Values is not available with derived helper (used for multi index search)\n if (searchable && indexContextValue) {\n throw new Error('react-instantsearch: searching in *List is not available when used inside a' + ' multi index context');\n }\n if (!canRefine) {\n return {\n items: [],\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n canRefine: canRefine,\n isFromSearch: isFromSearch,\n searchable: searchable\n };\n }\n var items = isFromSearch ? searchForFacetValuesResults[attribute].map(function (v) {\n return {\n label: v.value,\n value: getValue(v.escapedValue, props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n _highlightResult: {\n label: {\n value: v.highlighted\n }\n },\n count: v.count,\n isRefined: v.isRefined\n };\n }) : results.getFacetValues(attribute, {\n sortBy: sortBy,\n facetOrdering: facetOrdering\n }).map(function (v) {\n return {\n label: v.name,\n value: getValue(v.escapedValue, props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n count: v.count,\n isRefined: v.isRefined\n };\n });\n var transformedItems = props.transformItems ? props.transformItems(items) : items;\n return {\n items: transformedItems.slice(0, getLimit(props)),\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n isFromSearch: isFromSearch,\n searchable: searchable,\n canRefine: transformedItems.length > 0\n };\n },\n refine: function refine(props, searchState, nextRefinement) {\n return _refine(props, searchState, nextRefinement, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n searchForFacetValues: function searchForFacetValues(props, searchState, nextRefinement) {\n return {\n facetName: props.attribute,\n query: nextRefinement,\n maxFacetHits: getLimit(props)\n };\n },\n cleanUp: function cleanUp(props, searchState) {\n return _cleanUp(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n var attribute = props.attribute,\n operator = props.operator;\n var addKey = operator === 'and' ? 'addFacet' : 'addDisjunctiveFacet';\n var addRefinementKey = \"\".concat(addKey, \"Refinement\");\n searchParameters = searchParameters.setQueryParameters({\n maxValuesPerFacet: Math.max(searchParameters.maxValuesPerFacet || 0, getLimit(props))\n });\n searchParameters = searchParameters[addKey](attribute);\n return getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }).reduce(function (res, val) {\n return res[addRefinementKey](attribute, val);\n }, searchParameters);\n },\n getMetadata: function getMetadata(props, searchState) {\n var id = getId(props);\n var context = {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n };\n return {\n id: id,\n index: getIndexId(context),\n items: getCurrentRefinement(props, searchState, context).length > 0 ? [{\n attribute: props.attribute,\n label: \"\".concat(props.attribute, \": \"),\n currentRefinement: getCurrentRefinement(props, searchState, context),\n value: function value(nextState) {\n return _refine(props, nextState, [], context);\n },\n items: getCurrentRefinement(props, searchState, context).map(function (item) {\n return {\n label: unescapeFacetValue(\"\".concat(item)),\n value: function value(nextState) {\n var nextSelectedItems = getCurrentRefinement(props, nextState, context).filter(function (other) {\n return other !== item;\n });\n return _refine(props, searchState, nextSelectedItems, context);\n }\n };\n })\n }] : []\n };\n }\n});","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport SearchBox from '../components/SearchBox';\nvar itemsPropType = PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.any,\n label: PropTypes.node.isRequired,\n items: function items() {\n return itemsPropType.apply(void 0, arguments);\n }\n}));\n\nvar List =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(List, _Component);\n\n function List() {\n var _this;\n\n _classCallCheck(this, List);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(List).call(this));\n\n _defineProperty(_assertThisInitialized(_this), \"onShowMoreClick\", function () {\n _this.setState(function (state) {\n return {\n extended: !state.extended\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getLimit\", function () {\n var _this$props = _this.props,\n limit = _this$props.limit,\n showMoreLimit = _this$props.showMoreLimit;\n var extended = _this.state.extended;\n return extended ? showMoreLimit : limit;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resetQuery\", function () {\n _this.setState({\n query: ''\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderItem\", function (item, resetQuery) {\n var itemHasChildren = item.items && Boolean(item.items.length);\n return React.createElement(\"li\", {\n key: item.key || item.label,\n className: _this.props.cx('item', item.isRefined && 'item--selected', item.noRefinement && 'item--noRefinement', itemHasChildren && 'item--parent')\n }, _this.props.renderItem(item, resetQuery), itemHasChildren && React.createElement(\"ul\", {\n className: _this.props.cx('list', 'list--child')\n }, item.items.slice(0, _this.getLimit()).map(function (child) {\n return _this.renderItem(child, item);\n })));\n });\n\n _this.state = {\n extended: false,\n query: ''\n };\n return _this;\n }\n\n _createClass(List, [{\n key: \"renderShowMore\",\n value: function renderShowMore() {\n var _this$props2 = this.props,\n showMore = _this$props2.showMore,\n translate = _this$props2.translate,\n cx = _this$props2.cx;\n var extended = this.state.extended;\n var disabled = this.props.limit >= this.props.items.length;\n\n if (!showMore) {\n return null;\n }\n\n return React.createElement(\"button\", {\n disabled: disabled,\n className: cx('showMore', disabled && 'showMore--disabled'),\n onClick: this.onShowMoreClick\n }, translate('showMore', extended));\n }\n }, {\n key: \"renderSearchBox\",\n value: function renderSearchBox() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n cx = _this$props3.cx,\n searchForItems = _this$props3.searchForItems,\n isFromSearch = _this$props3.isFromSearch,\n translate = _this$props3.translate,\n items = _this$props3.items,\n selectItem = _this$props3.selectItem;\n var noResults = items.length === 0 && this.state.query !== '' ? React.createElement(\"div\", {\n className: cx('noResults')\n }, translate('noResults')) : null;\n return React.createElement(\"div\", {\n className: cx('searchBox')\n }, React.createElement(SearchBox, {\n currentRefinement: this.state.query,\n refine: function refine(value) {\n _this2.setState({\n query: value\n });\n\n searchForItems(value);\n },\n focusShortcuts: [],\n translate: translate,\n onSubmit: function onSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (isFromSearch) {\n selectItem(items[0], _this2.resetQuery);\n }\n }\n }), noResults);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props4 = this.props,\n cx = _this$props4.cx,\n items = _this$props4.items,\n className = _this$props4.className,\n searchable = _this$props4.searchable,\n canRefine = _this$props4.canRefine;\n var searchBox = searchable ? this.renderSearchBox() : null;\n var rootClassName = classNames(cx('', !canRefine && '-noRefinement'), className);\n\n if (items.length === 0) {\n return React.createElement(\"div\", {\n className: rootClassName\n }, searchBox);\n } // Always limit the number of items we show on screen, since the actual\n // number of retrieved items might vary with the `maxValuesPerFacet` config\n // option.\n\n\n return React.createElement(\"div\", {\n className: rootClassName\n }, searchBox, React.createElement(\"ul\", {\n className: cx('list', !canRefine && 'list--noRefinement')\n }, items.slice(0, this.getLimit()).map(function (item) {\n return _this3.renderItem(item, _this3.resetQuery);\n })), this.renderShowMore());\n }\n }]);\n\n return List;\n}(Component);\n\n_defineProperty(List, \"propTypes\", {\n cx: PropTypes.func.isRequired,\n // Only required with showMore.\n translate: PropTypes.func,\n items: itemsPropType,\n renderItem: PropTypes.func.isRequired,\n selectItem: PropTypes.func,\n className: PropTypes.string,\n showMore: PropTypes.bool,\n limit: PropTypes.number,\n showMoreLimit: PropTypes.number,\n show: PropTypes.func,\n searchForItems: PropTypes.func,\n searchable: PropTypes.bool,\n isFromSearch: PropTypes.bool,\n canRefine: PropTypes.bool\n});\n\n_defineProperty(List, \"defaultProps\", {\n className: '',\n isFromSearch: false\n});\n\nexport default List;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { translatable } from 'react-instantsearch-core';\nimport { createClassNames } from '../core/utils';\nimport Highlight from '../widgets/Highlight';\nimport List from './List';\nvar cx = createClassNames('RefinementList');\n\nvar RefinementList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RefinementList, _Component);\n\n function RefinementList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RefinementList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RefinementList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n query: ''\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectItem\", function (item, resetQuery) {\n resetQuery();\n\n _this.props.refine(item.value);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderItem\", function (item, resetQuery) {\n var label = _this.props.isFromSearch ? React.createElement(Highlight, {\n attribute: \"label\",\n hit: item\n }) : item.label;\n return React.createElement(\"label\", {\n className: cx('label')\n }, React.createElement(\"input\", {\n className: cx('checkbox'),\n type: \"checkbox\",\n checked: item.isRefined,\n onChange: function onChange() {\n return _this.selectItem(item, resetQuery);\n }\n }), React.createElement(\"span\", {\n className: cx('labelText')\n }, label), ' ', React.createElement(\"span\", {\n className: cx('count')\n }, item.count.toLocaleString()));\n });\n\n return _this;\n }\n\n _createClass(RefinementList, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n translate = _this$props.translate,\n items = _this$props.items,\n showMore = _this$props.showMore,\n limit = _this$props.limit,\n showMoreLimit = _this$props.showMoreLimit,\n isFromSearch = _this$props.isFromSearch,\n searchForItems = _this$props.searchForItems,\n searchable = _this$props.searchable,\n canRefine = _this$props.canRefine,\n className = _this$props.className;\n return React.createElement(List, {\n renderItem: this.renderItem,\n selectItem: this.selectItem,\n cx: cx,\n translate: translate,\n items: items,\n showMore: showMore,\n limit: limit,\n showMoreLimit: showMoreLimit,\n isFromSearch: isFromSearch,\n searchForItems: searchForItems,\n searchable: searchable,\n canRefine: canRefine,\n className: className,\n query: this.state.query\n });\n }\n }]);\n\n return RefinementList;\n}(Component);\n\n_defineProperty(RefinementList, \"propTypes\", {\n translate: PropTypes.func.isRequired,\n refine: PropTypes.func.isRequired,\n searchForItems: PropTypes.func.isRequired,\n searchable: PropTypes.bool,\n createURL: PropTypes.func.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.arrayOf(PropTypes.string).isRequired,\n count: PropTypes.number.isRequired,\n isRefined: PropTypes.bool.isRequired\n })),\n isFromSearch: PropTypes.bool.isRequired,\n canRefine: PropTypes.bool.isRequired,\n showMore: PropTypes.bool,\n limit: PropTypes.number,\n showMoreLimit: PropTypes.number,\n transformItems: PropTypes.func,\n className: PropTypes.string\n});\n\n_defineProperty(RefinementList, \"defaultProps\", {\n className: ''\n});\n\nexport default translatable({\n showMore: function showMore(extended) {\n return extended ? 'Show less' : 'Show more';\n },\n noResults: 'No results',\n submit: null,\n reset: null,\n resetTitle: 'Clear the search query.',\n submitTitle: 'Submit your search query.',\n placeholder: 'Search here…'\n})(RefinementList);","import React from 'react';\nimport { connectRefinementList } from 'react-instantsearch-core';\nimport PanelCallbackHandler from '../components/PanelCallbackHandler';\nimport RefinementList from '../components/RefinementList';\n/**\n * The RefinementList component displays a list that let the end user choose multiple values for a specific facet.\n * @name RefinementList\n * @kind widget\n * @propType {string} attribute - the name of the attribute in the record\n * @propType {boolean} [searchable=false] - true if the component should display an input to search for facet values. <br> In order to make this feature work, you need to make the attribute searchable [using the API](https://www.algolia.com/doc/guides/searching/faceting/?language=js#declaring-a-searchable-attribute-for-faceting) or [the dashboard](https://www.algolia.com/explorer/display/).\n * @propType {string} [operator=or] - How to apply the refinements. Possible values: 'or' or 'and'.\n * @propType {boolean} [showMore=false] - true if the component should display a button that will expand the number of items\n * @propType {number} [limit=10] - the minimum number of displayed items\n * @propType {number} [showMoreLimit=20] - the maximum number of displayed items. Only used when showMore is set to `true`\n * @propType {string[]} [defaultRefinement] - the values of the items selected by default\n * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.\n * @themeKey ais-RefinementList - the root div of the widget\n * @themeKey ais-RefinementList--noRefinement - the root div of the widget when there is no refinement\n * @themeKey ais-RefinementList-searchBox - the search box of the widget. See [the SearchBox documentation](widgets/SearchBox.html#classnames) for the classnames and translation keys of the SearchBox.\n * @themeKey ais-RefinementList-list - the list of refinement items\n * @themeKey ais-RefinementList-item - the refinement list item\n * @themeKey ais-RefinementList-item--selected - the refinement selected list item\n * @themeKey ais-RefinementList-label - the label of each refinement item\n * @themeKey ais-RefinementList-checkbox - the checkbox input of each refinement item\n * @themeKey ais-RefinementList-labelText - the label text of each refinement item\n * @themeKey ais-RefinementList-count - the count of values for each item\n * @themeKey ais-RefinementList-noResults - the div displayed when there are no results\n * @themeKey ais-RefinementList-showMore - the button used to display more categories\n * @themeKey ais-RefinementList-showMore--disabled - the disabled button used to display more categories\n * @translationkey showMore - The label of the show more button. Accepts one parameters, a boolean that is true if the values are expanded\n * @translationkey noResults - The label of the no results text when no search for facet values results are found.\n * @requirements The attribute passed to the `attribute` prop must be present in \"attributes for faceting\"\n * on the Algolia dashboard or configured as `attributesForFaceting` via a set settings call to the Algolia API.\n *\n * If you are using the `searchable` prop, you'll also need to make the attribute searchable using\n * the [dashboard](https://www.algolia.com/explorer/display/) or using the [API](https://www.algolia.com/doc/guides/searching/faceting/#search-for-facet-values).\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, RefinementList } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <RefinementList attribute=\"brand\" />\n * </InstantSearch>\n * );\n */\n\nvar RefinementListWidget = function RefinementListWidget(props) {\n return React.createElement(PanelCallbackHandler, props, React.createElement(RefinementList, props));\n};\n\nexport default connectRefinementList(RefinementListWidget);","import PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { getCurrentRefinementValue, hasMultipleIndices, getIndexId } from \"../core/indexUtils.js\";\nimport { shallowEqual, omit } from \"../core/utils.js\";\n\n/**\n * connectScrollTo connector provides the logic to build a widget that will\n * let the page scroll to a certain point.\n * @name connectScrollTo\n * @kind connector\n * @propType {string} [scrollOn=\"page\"] - Widget searchState key on which to listen for changes, default to the pagination widget.\n * @providedPropType {any} value - the current refinement applied to the widget listened by scrollTo\n * @providedPropType {boolean} hasNotChanged - indicates whether the refinement came from the scrollOn argument (for instance page by default)\n */\nexport default createConnector({\n displayName: 'AlgoliaScrollTo',\n $$type: 'ais.scrollTo',\n propTypes: {\n scrollOn: PropTypes.string\n },\n defaultProps: {\n scrollOn: 'page'\n },\n getProvidedProps: function getProvidedProps(props, searchState) {\n var id = props.scrollOn;\n var value = getCurrentRefinementValue(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }, id, null);\n if (!this._prevSearchState) {\n this._prevSearchState = {};\n }\n\n // Get the subpart of the state that interest us\n if (hasMultipleIndices({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n })) {\n searchState = searchState.indices ? searchState.indices[getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n })] : {};\n }\n\n // if there is a change in the app that has been triggered by another element\n // than \"props.scrollOn (id) or the Configure widget, we need to keep track of\n // the search state to know if there's a change in the app that was not triggered\n // by the props.scrollOn (id) or the Configure widget. This is useful when\n // using ScrollTo in combination of Pagination. As pagination can be change\n // by every widget, we want to scroll only if it cames from the pagination\n // widget itself. We also remove the configure key from the search state to\n // do this comparison because for now configure values are not present in the\n // search state before a first refinement has been made and will false the results.\n // See: https://github.com/algolia/react-instantsearch/issues/164\n var cleanedSearchState = omit(searchState, ['configure', id]);\n var hasNotChanged = shallowEqual(this._prevSearchState, cleanedSearchState);\n this._prevSearchState = cleanedSearchState;\n return {\n value: value,\n hasNotChanged: hasNotChanged\n };\n }\n});","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { createClassNames } from '../core/utils';\nvar cx = createClassNames('ScrollTo');\n\nvar ScrollTo =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollTo, _Component);\n\n function ScrollTo() {\n _classCallCheck(this, ScrollTo);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ScrollTo).apply(this, arguments));\n }\n\n _createClass(ScrollTo, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n value = _this$props.value,\n hasNotChanged = _this$props.hasNotChanged;\n\n if (value !== prevProps.value && hasNotChanged) {\n this.el.scrollIntoView();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n\n return React.createElement(\"div\", {\n ref: function ref(_ref) {\n return _this.el = _ref;\n },\n className: cx('')\n }, this.props.children);\n }\n }]);\n\n return ScrollTo;\n}(Component);\n\n_defineProperty(ScrollTo, \"propTypes\", {\n value: PropTypes.any,\n children: PropTypes.node,\n hasNotChanged: PropTypes.bool\n});\n\nexport default ScrollTo;","import { connectScrollTo } from 'react-instantsearch-core';\nimport ScrollTo from '../components/ScrollTo';\n/**\n * The ScrollTo component will make the page scroll to the component wrapped by it when one of the\n * [search state](guide/Search_state.html) prop is updated. By default when the page number changes,\n * the scroll goes to the wrapped component.\n *\n * @name ScrollTo\n * @kind widget\n * @propType {string} [scrollOn=\"page\"] - Widget state key on which to listen for changes.\n * @themeKey ais-ScrollTo - the root div of the widget\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, ScrollTo, Hits } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <ScrollTo>\n * <Hits />\n * </ScrollTo>\n * </InstantSearch>\n * );\n */\n\nexport default connectScrollTo(ScrollTo);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport PropTypes from 'prop-types';\nimport createConnector from \"../core/createConnector.js\";\nimport { cleanUpValue, refineValue, getCurrentRefinementValue, getIndexId } from \"../core/indexUtils.js\";\nfunction getId() {\n return 'query';\n}\nfunction getCurrentRefinement(props, searchState, context) {\n var id = getId(props);\n var currentRefinement = getCurrentRefinementValue(props, searchState, context, id, '');\n if (currentRefinement) {\n return currentRefinement;\n }\n return '';\n}\nfunction _refine(props, searchState, nextRefinement, context) {\n var id = getId();\n var nextValue = _defineProperty({}, id, nextRefinement);\n var resetPage = true;\n return refineValue(searchState, nextValue, context, resetPage);\n}\nfunction _cleanUp(props, searchState, context) {\n return cleanUpValue(searchState, context, getId());\n}\n\n/**\n * connectSearchBox connector provides the logic to build a widget that will\n * let the user search for a query\n * @name connectSearchBox\n * @kind connector\n * @propType {string} [defaultRefinement] - Provide a default value for the query\n * @providedPropType {function} refine - a function to change the current query\n * @providedPropType {string} currentRefinement - the current query used\n * @providedPropType {boolean} isSearchStalled - a flag that indicates if InstantSearch has detected that searches are stalled\n */\nexport default createConnector({\n displayName: 'AlgoliaSearchBox',\n $$type: 'ais.searchBox',\n propTypes: {\n defaultRefinement: PropTypes.string\n },\n getProvidedProps: function getProvidedProps(props, searchState, searchResults) {\n return {\n currentRefinement: getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n isSearchStalled: searchResults.isSearchStalled\n };\n },\n refine: function refine(props, searchState, nextRefinement) {\n return _refine(props, searchState, nextRefinement, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n cleanUp: function cleanUp(props, searchState) {\n return _cleanUp(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {\n return searchParameters.setQuery(getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }));\n },\n getMetadata: function getMetadata(props, searchState) {\n var id = getId(props);\n var currentRefinement = getCurrentRefinement(props, searchState, {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n return {\n id: id,\n index: getIndexId({\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n }),\n items: currentRefinement === null ? [] : [{\n label: \"\".concat(id, \": \").concat(currentRefinement),\n value: function value(nextState) {\n return _refine(props, nextState, '', {\n ais: props.contextValue,\n multiIndexContext: props.indexContextValue\n });\n },\n currentRefinement: currentRefinement\n }]\n };\n }\n});","import { connectSearchBox } from 'react-instantsearch-core';\nimport SearchBox from '../components/SearchBox';\n/**\n * The SearchBox component displays a search box that lets the user search for a specific query.\n * @name SearchBox\n * @kind widget\n * @propType {string[]} [focusShortcuts=['s','/']] - List of keyboard shortcuts that focus the search box. Accepts key names and key codes.\n * @propType {boolean} [autoFocus=false] - Should the search box be focused on render?\n * @propType {boolean} [searchAsYouType=true] - Should we search on every change to the query? If you disable this option, new searches will only be triggered by clicking the search button or by pressing the enter key while the search box is focused.\n * @propType {function} [onSubmit] - Intercept submit event sent from the SearchBox form container.\n * @propType {function} [onReset] - Listen to `reset` event sent from the SearchBox form container.\n * @propType {function} [on*] - Listen to any events sent from the search input itself.\n * @propType {node} [submit] - Change the apparence of the default submit button (magnifying glass).\n * @propType {node} [reset] - Change the apparence of the default reset button (cross).\n * @propType {node} [loadingIndicator] - Change the apparence of the default loading indicator (spinning circle).\n * @propType {string} [defaultRefinement] - Provide default refinement value when component is mounted.\n * @propType {boolean} [showLoadingIndicator=false] - Display that the search is loading. This only happens after a certain amount of time to avoid a blinking effect. This timer can be configured with `stalledSearchDelay` props on <InstantSearch>. By default, the value is 200ms.\n * @themeKey ais-SearchBox - the root div of the widget\n * @themeKey ais-SearchBox-form - the wrapping form\n * @themeKey ais-SearchBox-input - the search input\n * @themeKey ais-SearchBox-submit - the submit button\n * @themeKey ais-SearchBox-submitIcon - the default magnifier icon used with the search input\n * @themeKey ais-SearchBox-reset - the reset button used to clear the content of the input\n * @themeKey ais-SearchBox-resetIcon - the default reset icon used inside the reset button\n * @themeKey ais-SearchBox-loadingIndicator - the loading indicator container\n * @themeKey ais-SearchBox-loadingIcon - the default loading icon\n * @translationkey submitTitle - The submit button title\n * @translationkey resetTitle - The reset button title\n * @translationkey placeholder - The label of the input placeholder\n * @example\n * import React from 'react';\n * import algoliasearch from 'algoliasearch/lite';\n * import { InstantSearch, SearchBox } from 'react-instantsearch-dom';\n *\n * const searchClient = algoliasearch(\n * 'latency',\n * '6be0576ff61c053d5f9a3225e2a90f76'\n * );\n *\n * const App = () => (\n * <InstantSearch\n * searchClient={searchClient}\n * indexName=\"instant_search\"\n * >\n * <SearchBox />\n * </InstantSearch>\n * );\n */\n\nexport default connectSearchBox(SearchBox);","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { invariantIntlContext } from '../utils';\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n// This is primarily dealing with packaging systems where multiple copies of react-intl\n// might exist\nvar IntlContext = typeof window !== 'undefined' && !window.__REACT_INTL_BYPASS_GLOBAL_CONTEXT__\n ? window.__REACT_INTL_CONTEXT__ ||\n (window.__REACT_INTL_CONTEXT__ = React.createContext(null))\n : React.createContext(null);\nvar IntlConsumer = IntlContext.Consumer, IntlProvider = IntlContext.Provider;\nexport var Provider = IntlProvider;\nexport var Context = IntlContext;\nexport default function injectIntl(WrappedComponent, options) {\n var _a = options || {}, _b = _a.intlPropName, intlPropName = _b === void 0 ? 'intl' : _b, _c = _a.forwardRef, forwardRef = _c === void 0 ? false : _c, _d = _a.enforceContext, enforceContext = _d === void 0 ? true : _d;\n var WithIntl = function (props) { return (React.createElement(IntlConsumer, null, function (intl) {\n var _a;\n if (enforceContext) {\n invariantIntlContext(intl);\n }\n var intlProp = (_a = {}, _a[intlPropName] = intl, _a);\n return (React.createElement(WrappedComponent, __assign({}, props, intlProp, { ref: forwardRef ? props.forwardedRef : null })));\n })); };\n WithIntl.displayName = \"injectIntl(\".concat(getDisplayName(WrappedComponent), \")\");\n WithIntl.WrappedComponent = WrappedComponent;\n if (forwardRef) {\n return hoistNonReactStatics(React.forwardRef(function (props, ref) { return (React.createElement(WithIntl, __assign({}, props, { forwardedRef: ref }))); }), WrappedComponent);\n }\n return hoistNonReactStatics(WithIntl, WrappedComponent);\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __rest } from \"tslib\";\nimport * as React from 'react';\nimport useIntl from './useIntl';\nimport { shallowEqual } from '../utils';\nfunction areEqual(prevProps, nextProps) {\n var values = prevProps.values, otherProps = __rest(prevProps, [\"values\"]);\n var nextValues = nextProps.values, nextOtherProps = __rest(nextProps, [\"values\"]);\n return (shallowEqual(nextValues, values) &&\n shallowEqual(otherProps, nextOtherProps));\n}\nfunction FormattedMessage(props) {\n var intl = useIntl();\n var formatMessage = intl.formatMessage, _a = intl.textComponent, Text = _a === void 0 ? React.Fragment : _a;\n var id = props.id, description = props.description, defaultMessage = props.defaultMessage, values = props.values, children = props.children, _b = props.tagName, Component = _b === void 0 ? Text : _b, ignoreTag = props.ignoreTag;\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var nodes = formatMessage(descriptor, values, {\n ignoreTag: ignoreTag,\n });\n if (typeof children === 'function') {\n return children(Array.isArray(nodes) ? nodes : [nodes]);\n }\n if (Component) {\n return React.createElement(Component, null, React.Children.toArray(nodes));\n }\n return React.createElement(React.Fragment, null, nodes);\n}\nFormattedMessage.displayName = 'FormattedMessage';\nvar MemoizedFormattedMessage = React.memo(FormattedMessage, areEqual);\nMemoizedFormattedMessage.displayName = 'MemoizedFormattedMessage';\nexport default MemoizedFormattedMessage;\n","import * as React from 'react';\nimport { Context } from './injectIntl';\nimport { invariantIntlContext } from '../utils';\nexport default function useIntl() {\n var intl = React.useContext(Context);\n invariantIntlContext(intl);\n return intl;\n}\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { DEFAULT_INTL_CONFIG as CORE_DEFAULT_INTL_CONFIG } from '@formatjs/intl';\nexport function invariantIntlContext(intl) {\n invariant(intl, '[React Intl] Could not find required `intl` object. ' +\n '<IntlProvider> needs to exist in the component ancestry.');\n}\nexport var DEFAULT_INTL_CONFIG = __assign(__assign({}, CORE_DEFAULT_INTL_CONFIG), { textComponent: React.Fragment });\n/**\n * Takes a `formatXMLElementFn`, and composes it in function, which passes\n * argument `parts` through, assigning unique key to each part, to prevent\n * \"Each child in a list should have a unique \"key\"\" React error.\n * @param formatXMLElementFn\n */\nexport function assignUniqueKeysToParts(formatXMLElementFn) {\n return function (parts) {\n // eslint-disable-next-line prefer-rest-params\n return formatXMLElementFn(React.Children.toArray(parts));\n };\n}\nexport function shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n if (objA[key] !== objB[key] ||\n !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n","/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(\"\".concat(pl, \" InternalSlot has not been initialized\"));\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value,\n });\n}\nexport var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err) {\n if (Err === void 0) { Err = Error; }\n if (!condition) {\n throw new Err(message);\n }\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Page =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Page, _Component);\n\n function Page() {\n _classCallCheck(this, Page);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Page).apply(this, arguments));\n }\n\n _createClass(Page, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var _this$props = this.props,\n isDisabled = _this$props.isDisabled,\n pageNumber = _this$props.pageNumber;\n e.preventDefault();\n\n if (isDisabled) {\n return;\n }\n\n this.props.onClick(pageNumber);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _cx;\n\n var _this$props2 = this.props,\n pageText = _this$props2.pageText,\n pageNumber = _this$props2.pageNumber,\n activeClass = _this$props2.activeClass,\n itemClass = _this$props2.itemClass,\n linkClass = _this$props2.linkClass,\n activeLinkClass = _this$props2.activeLinkClass,\n disabledClass = _this$props2.disabledClass,\n isActive = _this$props2.isActive,\n isDisabled = _this$props2.isDisabled,\n href = _this$props2.href,\n ariaLabel = _this$props2.ariaLabel;\n var css = (0, _classnames[\"default\"])(itemClass, (_cx = {}, _defineProperty(_cx, activeClass, isActive), _defineProperty(_cx, disabledClass, isDisabled), _cx));\n var linkCss = (0, _classnames[\"default\"])(linkClass, _defineProperty({}, activeLinkClass, isActive));\n return _react[\"default\"].createElement(\"li\", {\n className: css,\n onClick: this.handleClick.bind(this)\n }, _react[\"default\"].createElement(\"a\", {\n className: linkCss,\n href: href,\n \"aria-label\": ariaLabel\n }, pageText));\n }\n }]);\n\n return Page;\n}(_react.Component);\n\nexports[\"default\"] = Page;\n\n_defineProperty(Page, \"propTypes\", {\n pageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n pageNumber: _propTypes[\"default\"].number.isRequired,\n onClick: _propTypes[\"default\"].func.isRequired,\n isActive: _propTypes[\"default\"].bool.isRequired,\n isDisabled: _propTypes[\"default\"].bool,\n activeClass: _propTypes[\"default\"].string,\n activeLinkClass: _propTypes[\"default\"].string,\n itemClass: _propTypes[\"default\"].string,\n linkClass: _propTypes[\"default\"].string,\n disabledClass: _propTypes[\"default\"].string,\n href: _propTypes[\"default\"].string\n});\n\n_defineProperty(Page, \"defaultProps\", {\n activeClass: \"active\",\n disabledClass: \"disabled\",\n itemClass: undefined,\n linkClass: undefined,\n activeLinkCLass: undefined,\n isActive: false,\n isDisabled: false,\n href: \"#\"\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _paginator = _interopRequireDefault(require(\"paginator\"));\n\nvar _Page = _interopRequireDefault(require(\"./Page\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Pagination =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n function Pagination() {\n _classCallCheck(this, Pagination);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Pagination).apply(this, arguments));\n }\n\n _createClass(Pagination, [{\n key: \"isFirstPageVisible\",\n value: function isFirstPageVisible(has_previous_page) {\n var _this$props = this.props,\n hideDisabled = _this$props.hideDisabled,\n hideNavigation = _this$props.hideNavigation,\n hideFirstLastPages = _this$props.hideFirstLastPages;\n if (hideFirstLastPages || hideDisabled && !has_previous_page) return false;\n return true;\n }\n }, {\n key: \"isPrevPageVisible\",\n value: function isPrevPageVisible(has_previous_page) {\n var _this$props2 = this.props,\n hideDisabled = _this$props2.hideDisabled,\n hideNavigation = _this$props2.hideNavigation;\n if (hideNavigation || hideDisabled && !has_previous_page) return false;\n return true;\n }\n }, {\n key: \"isNextPageVisible\",\n value: function isNextPageVisible(has_next_page) {\n var _this$props3 = this.props,\n hideDisabled = _this$props3.hideDisabled,\n hideNavigation = _this$props3.hideNavigation;\n if (hideNavigation || hideDisabled && !has_next_page) return false;\n return true;\n }\n }, {\n key: \"isLastPageVisible\",\n value: function isLastPageVisible(has_next_page) {\n var _this$props4 = this.props,\n hideDisabled = _this$props4.hideDisabled,\n hideNavigation = _this$props4.hideNavigation,\n hideFirstLastPages = _this$props4.hideFirstLastPages;\n if (hideFirstLastPages || hideDisabled && !has_next_page) return false;\n return true;\n }\n }, {\n key: \"buildPages\",\n value: function buildPages() {\n var pages = [];\n var _this$props5 = this.props,\n itemsCountPerPage = _this$props5.itemsCountPerPage,\n pageRangeDisplayed = _this$props5.pageRangeDisplayed,\n activePage = _this$props5.activePage,\n prevPageText = _this$props5.prevPageText,\n nextPageText = _this$props5.nextPageText,\n firstPageText = _this$props5.firstPageText,\n lastPageText = _this$props5.lastPageText,\n totalItemsCount = _this$props5.totalItemsCount,\n onChange = _this$props5.onChange,\n activeClass = _this$props5.activeClass,\n itemClass = _this$props5.itemClass,\n itemClassFirst = _this$props5.itemClassFirst,\n itemClassPrev = _this$props5.itemClassPrev,\n itemClassNext = _this$props5.itemClassNext,\n itemClassLast = _this$props5.itemClassLast,\n activeLinkClass = _this$props5.activeLinkClass,\n disabledClass = _this$props5.disabledClass,\n hideDisabled = _this$props5.hideDisabled,\n hideNavigation = _this$props5.hideNavigation,\n linkClass = _this$props5.linkClass,\n linkClassFirst = _this$props5.linkClassFirst,\n linkClassPrev = _this$props5.linkClassPrev,\n linkClassNext = _this$props5.linkClassNext,\n linkClassLast = _this$props5.linkClassLast,\n hideFirstLastPages = _this$props5.hideFirstLastPages,\n getPageUrl = _this$props5.getPageUrl;\n var paginationInfo = new _paginator[\"default\"](itemsCountPerPage, pageRangeDisplayed).build(totalItemsCount, activePage);\n\n for (var i = paginationInfo.first_page; i <= paginationInfo.last_page; i++) {\n pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n isActive: i === activePage,\n key: i,\n href: getPageUrl(i),\n pageNumber: i,\n pageText: i + \"\",\n onClick: onChange,\n itemClass: itemClass,\n linkClass: linkClass,\n activeClass: activeClass,\n activeLinkClass: activeLinkClass,\n ariaLabel: \"Go to page number \".concat(i)\n }));\n }\n\n this.isPrevPageVisible(paginationInfo.has_previous_page) && pages.unshift(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"prev\" + paginationInfo.previous_page,\n href: getPageUrl(paginationInfo.previous_page),\n pageNumber: paginationInfo.previous_page,\n onClick: onChange,\n pageText: prevPageText,\n isDisabled: !paginationInfo.has_previous_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassPrev),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassPrev),\n disabledClass: disabledClass,\n ariaLabel: \"Go to previous page\"\n }));\n this.isFirstPageVisible(paginationInfo.has_previous_page) && pages.unshift(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"first\",\n href: getPageUrl(1),\n pageNumber: 1,\n onClick: onChange,\n pageText: firstPageText,\n isDisabled: !paginationInfo.has_previous_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassFirst),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassFirst),\n disabledClass: disabledClass,\n ariaLabel: \"Go to first page\"\n }));\n this.isNextPageVisible(paginationInfo.has_next_page) && pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"next\" + paginationInfo.next_page,\n href: getPageUrl(paginationInfo.next_page),\n pageNumber: paginationInfo.next_page,\n onClick: onChange,\n pageText: nextPageText,\n isDisabled: !paginationInfo.has_next_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassNext),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassNext),\n disabledClass: disabledClass,\n ariaLabel: \"Go to next page\"\n }));\n this.isLastPageVisible(paginationInfo.has_next_page) && pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"last\",\n href: getPageUrl(paginationInfo.total_pages),\n pageNumber: paginationInfo.total_pages,\n onClick: onChange,\n pageText: lastPageText,\n isDisabled: paginationInfo.current_page === paginationInfo.total_pages,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassLast),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassLast),\n disabledClass: disabledClass,\n ariaLabel: \"Go to last page\"\n }));\n return pages;\n }\n }, {\n key: \"render\",\n value: function render() {\n var pages = this.buildPages();\n return _react[\"default\"].createElement(\"ul\", {\n className: this.props.innerClass\n }, pages);\n }\n }]);\n\n return Pagination;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Pagination;\n\n_defineProperty(Pagination, \"propTypes\", {\n totalItemsCount: _propTypes[\"default\"].number.isRequired,\n onChange: _propTypes[\"default\"].func.isRequired,\n activePage: _propTypes[\"default\"].number,\n itemsCountPerPage: _propTypes[\"default\"].number,\n pageRangeDisplayed: _propTypes[\"default\"].number,\n prevPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n nextPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n lastPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n firstPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n disabledClass: _propTypes[\"default\"].string,\n hideDisabled: _propTypes[\"default\"].bool,\n hideNavigation: _propTypes[\"default\"].bool,\n innerClass: _propTypes[\"default\"].string,\n itemClass: _propTypes[\"default\"].string,\n itemClassFirst: _propTypes[\"default\"].string,\n itemClassPrev: _propTypes[\"default\"].string,\n itemClassNext: _propTypes[\"default\"].string,\n itemClassLast: _propTypes[\"default\"].string,\n linkClass: _propTypes[\"default\"].string,\n activeClass: _propTypes[\"default\"].string,\n activeLinkClass: _propTypes[\"default\"].string,\n linkClassFirst: _propTypes[\"default\"].string,\n linkClassPrev: _propTypes[\"default\"].string,\n linkClassNext: _propTypes[\"default\"].string,\n linkClassLast: _propTypes[\"default\"].string,\n hideFirstLastPages: _propTypes[\"default\"].bool,\n getPageUrl: _propTypes[\"default\"].func\n});\n\n_defineProperty(Pagination, \"defaultProps\", {\n itemsCountPerPage: 10,\n pageRangeDisplayed: 5,\n activePage: 1,\n prevPageText: \"⟨\",\n firstPageText: \"«\",\n nextPageText: \"⟩\",\n lastPageText: \"»\",\n innerClass: \"pagination\",\n itemClass: undefined,\n linkClass: undefined,\n activeLinkClass: undefined,\n hideFirstLastPages: false,\n getPageUrl: function getPageUrl(i) {\n return \"#\";\n }\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _airbnbPropTypes = require('airbnb-prop-types');\n\nvar _consolidatedEvents = require('consolidated-events');\n\nvar _object = require('object.values');\n\nvar _object2 = _interopRequireDefault(_object);\n\nvar _document = require('document.contains');\n\nvar _document2 = _interopRequireDefault(_document);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DISPLAY = {\n BLOCK: 'block',\n FLEX: 'flex',\n INLINE: 'inline',\n INLINE_BLOCK: 'inline-block',\n CONTENTS: 'contents'\n};\n\nvar propTypes = (0, _airbnbPropTypes.forbidExtraProps)({\n children: _propTypes2['default'].node.isRequired,\n onOutsideClick: _propTypes2['default'].func.isRequired,\n disabled: _propTypes2['default'].bool,\n useCapture: _propTypes2['default'].bool,\n display: _propTypes2['default'].oneOf((0, _object2['default'])(DISPLAY))\n});\n\nvar defaultProps = {\n disabled: false,\n\n // `useCapture` is set to true by default so that a `stopPropagation` in the\n // children will not prevent all outside click handlers from firing - maja\n useCapture: true,\n display: DISPLAY.BLOCK\n};\n\nvar OutsideClickHandler = function (_React$Component) {\n _inherits(OutsideClickHandler, _React$Component);\n\n function OutsideClickHandler() {\n var _ref;\n\n _classCallCheck(this, OutsideClickHandler);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = OutsideClickHandler.__proto__ || Object.getPrototypeOf(OutsideClickHandler)).call.apply(_ref, [this].concat(args)));\n\n _this.onMouseDown = _this.onMouseDown.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n _this.setChildNodeRef = _this.setChildNodeRef.bind(_this);\n return _this;\n }\n\n _createClass(OutsideClickHandler, [{\n key: 'componentDidMount',\n value: function () {\n function componentDidMount() {\n var _props = this.props,\n disabled = _props.disabled,\n useCapture = _props.useCapture;\n\n\n if (!disabled) this.addMouseDownEventListener(useCapture);\n }\n\n return componentDidMount;\n }()\n }, {\n key: 'componentDidUpdate',\n value: function () {\n function componentDidUpdate(_ref2) {\n var prevDisabled = _ref2.disabled;\n var _props2 = this.props,\n disabled = _props2.disabled,\n useCapture = _props2.useCapture;\n\n if (prevDisabled !== disabled) {\n if (disabled) {\n this.removeEventListeners();\n } else {\n this.addMouseDownEventListener(useCapture);\n }\n }\n }\n\n return componentDidUpdate;\n }()\n }, {\n key: 'componentWillUnmount',\n value: function () {\n function componentWillUnmount() {\n this.removeEventListeners();\n }\n\n return componentWillUnmount;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseDown',\n value: function () {\n function onMouseDown(e) {\n var useCapture = this.props.useCapture;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (!isDescendantOfRoot) {\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n this.removeMouseUp = (0, _consolidatedEvents.addEventListener)(document, 'mouseup', this.onMouseUp, { capture: useCapture });\n }\n }\n\n return onMouseDown;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseUp',\n value: function () {\n function onMouseUp(e) {\n var onOutsideClick = this.props.onOutsideClick;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n\n if (!isDescendantOfRoot) {\n onOutsideClick(e);\n }\n }\n\n return onMouseUp;\n }()\n }, {\n key: 'setChildNodeRef',\n value: function () {\n function setChildNodeRef(ref) {\n this.childNode = ref;\n }\n\n return setChildNodeRef;\n }()\n }, {\n key: 'addMouseDownEventListener',\n value: function () {\n function addMouseDownEventListener(useCapture) {\n this.removeMouseDown = (0, _consolidatedEvents.addEventListener)(document, 'mousedown', this.onMouseDown, { capture: useCapture });\n }\n\n return addMouseDownEventListener;\n }()\n }, {\n key: 'removeEventListeners',\n value: function () {\n function removeEventListeners() {\n if (this.removeMouseDown) this.removeMouseDown();\n if (this.removeMouseUp) this.removeMouseUp();\n }\n\n return removeEventListeners;\n }()\n }, {\n key: 'render',\n value: function () {\n function render() {\n var _props3 = this.props,\n children = _props3.children,\n display = _props3.display;\n\n\n return _react2['default'].createElement(\n 'div',\n {\n ref: this.setChildNodeRef,\n style: display !== DISPLAY.BLOCK && (0, _object2['default'])(DISPLAY).includes(display) ? { display: display } : undefined\n },\n children\n );\n }\n\n return render;\n }()\n }]);\n\n return OutsideClickHandler;\n}(_react2['default'].Component);\n\nexports['default'] = OutsideClickHandler;\n\n\nOutsideClickHandler.propTypes = propTypes;\nOutsideClickHandler.defaultProps = defaultProps;","// eslint-disable-next-line import/no-unresolved\nmodule.exports = require('./build/OutsideClickHandler');\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n var result = {};\n\n if (!Array.isArray(modifiers)) {\n return modifiers || result;\n } // eslint-disable-next-line no-unused-expressions\n\n\n modifiers == null ? void 0 : modifiers.forEach(function (m) {\n result[m.name] = m;\n });\n return result;\n}\nexport function toModifierArray(map) {\n if (map === void 0) {\n map = {};\n }\n\n if (Array.isArray(map)) return map;\n return Object.keys(map).map(function (k) {\n map[k].name = k;\n return map[k];\n });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n var enabled = _ref.enabled,\n enableEvents = _ref.enableEvents,\n placement = _ref.placement,\n flip = _ref.flip,\n offset = _ref.offset,\n fixed = _ref.fixed,\n containerPadding = _ref.containerPadding,\n arrowElement = _ref.arrowElement,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n var modifiers = toModifierMap(popperConfig.modifiers);\n return _extends({}, popperConfig, {\n placement: placement,\n enabled: enabled,\n strategy: fixed ? 'fixed' : popperConfig.strategy,\n modifiers: toModifierArray(_extends({}, modifiers, {\n eventListeners: {\n enabled: enableEvents\n },\n preventOverflow: _extends({}, modifiers.preventOverflow, {\n options: containerPadding ? _extends({\n padding: containerPadding\n }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n }),\n offset: {\n options: _extends({\n offset: offset\n }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n },\n arrow: _extends({}, modifiers.arrow, {\n enabled: !!arrowElement,\n options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n element: arrowElement\n })\n }),\n flip: _extends({\n enabled: !!flip\n }, modifiers.flip)\n }))\n });\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\n/**\n * `useSafeState` takes the return value of a `useState` hook and wraps the\n * setter to prevent updates onces the component has unmounted. Can used\n * with `useMergeState` and `useStateAsync` as well\n *\n * @param state The return value of a useStateHook\n *\n * ```ts\n * const [show, setShow] = useSafeState(useState(true));\n * ```\n */\n\nfunction useSafeState(state) {\n const isMounted = useMounted();\n return [state[0], useCallback(nextState => {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\nexport default useSafeState;","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n return {\n position: position,\n top: '0',\n left: '0',\n opacity: '0',\n pointerEvents: 'none'\n };\n};\n\nvar disabledApplyStylesModifier = {\n name: 'applyStyles',\n enabled: false\n}; // In order to satisfy the current usage of options, including undefined\n\nvar ariaDescribedByModifier = {\n name: 'ariaDescribedBy',\n enabled: true,\n phase: 'afterWrite',\n effect: function effect(_ref) {\n var state = _ref.state;\n return function () {\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper;\n\n if ('removeAttribute' in reference) {\n var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n return id.trim() !== popper.id;\n });\n if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n }\n };\n },\n fn: function fn(_ref2) {\n var _popper$getAttribute;\n\n var state = _ref2.state;\n var _state$elements2 = state.elements,\n popper = _state$elements2.popper,\n reference = _state$elements2.reference;\n var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n var ids = reference.getAttribute('aria-describedby');\n\n if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n return;\n }\n\n reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n }\n }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object} options\n * @param {object=} options.modifiers Popper.js modifiers\n * @param {boolean=} options.enabled toggle the popper functionality on/off\n * @param {string=} options.placement The popper element placement relative to the reference element\n * @param {string=} options.strategy the positioning strategy\n * @param {boolean=} options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=} options.onCreate called when the popper is created\n * @param {function=} options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$enabled = _ref3.enabled,\n enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n _ref3$placement = _ref3.placement,\n placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n _ref3$strategy = _ref3.strategy,\n strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n _ref3$modifiers = _ref3.modifiers,\n modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n var popperInstanceRef = useRef();\n var update = useCallback(function () {\n var _popperInstanceRef$cu;\n\n (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n }, []);\n var forceUpdate = useCallback(function () {\n var _popperInstanceRef$cu2;\n\n (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n }, []);\n\n var _useSafeState = useSafeState(useState({\n placement: placement,\n update: update,\n forceUpdate: forceUpdate,\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy),\n arrow: {}\n }\n })),\n popperState = _useSafeState[0],\n setState = _useSafeState[1];\n\n var updateModifier = useMemo(function () {\n return {\n name: 'updateStateModifier',\n enabled: true,\n phase: 'write',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var state = _ref4.state;\n var styles = {};\n var attributes = {};\n Object.keys(state.elements).forEach(function (element) {\n styles[element] = state.styles[element];\n attributes[element] = state.attributes[element];\n });\n setState({\n state: state,\n styles: styles,\n attributes: attributes,\n update: update,\n forceUpdate: forceUpdate,\n placement: state.placement\n });\n }\n };\n }, [update, forceUpdate, setState]);\n useEffect(function () {\n if (!popperInstanceRef.current || !enabled) return;\n popperInstanceRef.current.setOptions({\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n }); // intentionally NOT re-running on new modifiers\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [strategy, placement, updateModifier, enabled]);\n useEffect(function () {\n if (!enabled || referenceElement == null || popperElement == null) {\n return undefined;\n }\n\n popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n }));\n return function () {\n if (popperInstanceRef.current != null) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = undefined;\n setState(function (s) {\n return _extends({}, s, {\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy)\n }\n });\n });\n }\n }; // This is only run once to _create_ the popper\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, referenceElement, popperElement]);\n return popperState;\n}\n\nexport default usePopper;","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var _e$composedPath$;\n\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n var _ref;\n\n if (typeof document === 'undefined') return null;\n if (ref == null) return ownerDocument().body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n var _useState = useState(function () {\n return resolveContainerRef(ref);\n }),\n resolvedRef = _useState[0],\n setRef = _useState[1];\n\n if (!resolvedRef) {\n var earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n\n useEffect(function () {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(function () {\n var nextRef = resolveContainerRef(ref);\n\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SEEK_ON_PLAY_EXPIRY = 5000;\n\nvar Player = /*#__PURE__*/function (_Component) {\n _inherits(Player, _Component);\n\n var _super = _createSuper(Player);\n\n function Player() {\n var _this;\n\n _classCallCheck(this, Player);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isReady\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isPlaying\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isLoading\", true);\n\n _defineProperty(_assertThisInitialized(_this), \"loadOnReady\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"startOnPlay\", true);\n\n _defineProperty(_assertThisInitialized(_this), \"seekOnPlay\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"onDurationCalled\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"handlePlayerMount\", function (player) {\n if (_this.player) {\n _this.progress(); // Ensure onProgress is still called in strict mode\n\n\n return; // Return here to prevent loading twice in strict mode\n }\n\n _this.player = player;\n\n _this.player.load(_this.props.url);\n\n _this.progress();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function (key) {\n if (!_this.player) return null;\n return _this.player[key];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progress\", function () {\n if (_this.props.url && _this.player && _this.isReady) {\n var playedSeconds = _this.getCurrentTime() || 0;\n\n var loadedSeconds = _this.getSecondsLoaded();\n\n var duration = _this.getDuration();\n\n if (duration) {\n var progress = {\n playedSeconds: playedSeconds,\n played: playedSeconds / duration\n };\n\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n } // Only call onProgress if values have changed\n\n\n if (progress.playedSeconds !== _this.prevPlayed || progress.loadedSeconds !== _this.prevLoaded) {\n _this.props.onProgress(progress);\n }\n\n _this.prevPlayed = progress.playedSeconds;\n _this.prevLoaded = progress.loadedSeconds;\n }\n }\n\n _this.progressTimeout = setTimeout(_this.progress, _this.props.progressFrequency || _this.props.progressInterval);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n if (!_this.mounted) return;\n _this.isReady = true;\n _this.isLoading = false;\n var _this$props = _this.props,\n onReady = _this$props.onReady,\n playing = _this$props.playing,\n volume = _this$props.volume,\n muted = _this$props.muted;\n onReady();\n\n if (!muted && volume !== null) {\n _this.player.setVolume(volume);\n }\n\n if (_this.loadOnReady) {\n _this.player.load(_this.loadOnReady, true);\n\n _this.loadOnReady = null;\n } else if (playing) {\n _this.player.play();\n }\n\n _this.handleDurationCheck();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePlay\", function () {\n _this.isPlaying = true;\n _this.isLoading = false;\n var _this$props2 = _this.props,\n onStart = _this$props2.onStart,\n onPlay = _this$props2.onPlay,\n playbackRate = _this$props2.playbackRate;\n\n if (_this.startOnPlay) {\n if (_this.player.setPlaybackRate && playbackRate !== 1) {\n _this.player.setPlaybackRate(playbackRate);\n }\n\n onStart();\n _this.startOnPlay = false;\n }\n\n onPlay();\n\n if (_this.seekOnPlay) {\n _this.seekTo(_this.seekOnPlay);\n\n _this.seekOnPlay = null;\n }\n\n _this.handleDurationCheck();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePause\", function (e) {\n _this.isPlaying = false;\n\n if (!_this.isLoading) {\n _this.props.onPause(e);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleEnded\", function () {\n var _this$props3 = _this.props,\n activePlayer = _this$props3.activePlayer,\n loop = _this$props3.loop,\n onEnded = _this$props3.onEnded;\n\n if (activePlayer.loopOnEnded && loop) {\n _this.seekTo(0);\n }\n\n if (!loop) {\n _this.isPlaying = false;\n onEnded();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleError\", function () {\n var _this$props4;\n\n _this.isLoading = false;\n\n (_this$props4 = _this.props).onError.apply(_this$props4, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDurationCheck\", function () {\n clearTimeout(_this.durationCheckTimeout);\n\n var duration = _this.getDuration();\n\n if (duration) {\n if (!_this.onDurationCalled) {\n _this.props.onDuration(duration);\n\n _this.onDurationCalled = true;\n }\n } else {\n _this.durationCheckTimeout = setTimeout(_this.handleDurationCheck, 100);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleLoaded\", function () {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n _this.isLoading = false;\n });\n\n return _this;\n }\n\n _createClass(Player, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n\n if (this.isReady && this.props.stopOnUnmount) {\n this.player.stop();\n\n if (this.player.disablePIP) {\n this.player.disablePIP();\n }\n }\n\n this.mounted = false;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this2 = this;\n\n // If there isn’t a player available, don’t do anything\n if (!this.player) {\n return;\n } // Invoke player methods based on changed props\n\n\n var _this$props5 = this.props,\n url = _this$props5.url,\n playing = _this$props5.playing,\n volume = _this$props5.volume,\n muted = _this$props5.muted,\n playbackRate = _this$props5.playbackRate,\n pip = _this$props5.pip,\n loop = _this$props5.loop,\n activePlayer = _this$props5.activePlayer,\n disableDeferredLoading = _this$props5.disableDeferredLoading;\n\n if (!(0, _reactFastCompare[\"default\"])(prevProps.url, url)) {\n if (this.isLoading && !activePlayer.forceLoad && !disableDeferredLoading && !(0, _utils.isMediaStream)(url)) {\n console.warn(\"ReactPlayer: the attempt to load \".concat(url, \" is being deferred until the player has loaded\"));\n this.loadOnReady = url;\n return;\n }\n\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(url, this.isReady);\n }\n\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n\n if (!prevProps.pip && pip && this.player.enablePIP) {\n this.player.enablePIP();\n }\n\n if (prevProps.pip && !pip && this.player.disablePIP) {\n this.player.disablePIP();\n }\n\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n\n if (volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(function () {\n return _this2.player.setVolume(volume);\n });\n }\n }\n }\n\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(amount, type, keepPlaying) {\n var _this3 = this;\n\n // When seeking before player is ready, store value and seek later\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(function () {\n _this3.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n\n return;\n }\n\n var isFraction = !type ? amount > 0 && amount < 1 : type === 'fraction';\n\n if (isFraction) {\n // Convert fraction to seconds based on duration\n var duration = this.player.getDuration();\n\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available');\n return;\n }\n\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n\n this.player.seekTo(amount, keepPlaying);\n }\n }, {\n key: \"render\",\n value: function render() {\n var Player = this.props.activePlayer;\n\n if (!Player) {\n return null;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(Player, _extends({}, this.props, {\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n }));\n }\n }]);\n\n return Player;\n}(_react.Component);\n\nexports[\"default\"] = Player;\n\n_defineProperty(Player, \"displayName\", 'Player');\n\n_defineProperty(Player, \"propTypes\", _props.propTypes);\n\n_defineProperty(Player, \"defaultProps\", _props.defaultProps);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ICON_SIZE = '64px';\nvar cache = {};\n\nvar Preview = /*#__PURE__*/function (_Component) {\n _inherits(Preview, _Component);\n\n var _super = _createSuper(Preview);\n\n function Preview() {\n var _this;\n\n _classCallCheck(this, Preview);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n image: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleKeyPress\", function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.props.onClick();\n }\n });\n\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n this.fetchImage(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n url = _this$props.url,\n light = _this$props.light;\n\n if (prevProps.url !== url || prevProps.light !== light) {\n this.fetchImage(this.props);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"fetchImage\",\n value: function fetchImage(_ref) {\n var _this2 = this;\n\n var url = _ref.url,\n light = _ref.light,\n oEmbedUrl = _ref.oEmbedUrl;\n\n if ( /*#__PURE__*/_react[\"default\"].isValidElement(light)) {\n return;\n }\n\n if (typeof light === 'string') {\n this.setState({\n image: light\n });\n return;\n }\n\n if (cache[url]) {\n this.setState({\n image: cache[url]\n });\n return;\n }\n\n this.setState({\n image: null\n });\n return window.fetch(oEmbedUrl.replace('{url}', url)).then(function (response) {\n return response.json();\n }).then(function (data) {\n if (data.thumbnail_url && _this2.mounted) {\n var image = data.thumbnail_url.replace('height=100', 'height=480').replace('-d_295x166', '-d_640');\n\n _this2.setState({\n image: image\n });\n\n cache[url] = image;\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n light = _this$props2.light,\n onClick = _this$props2.onClick,\n playIcon = _this$props2.playIcon,\n previewTabIndex = _this$props2.previewTabIndex;\n var image = this.state.image;\n\n var isElement = /*#__PURE__*/_react[\"default\"].isValidElement(light);\n\n var flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n };\n var styles = {\n preview: _objectSpread({\n width: '100%',\n height: '100%',\n backgroundImage: image && !isElement ? \"url(\".concat(image, \")\") : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer'\n }, flexCenter),\n shadow: _objectSpread({\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE,\n position: isElement ? 'absolute' : undefined\n }, flexCenter),\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n };\n\n var defaultPlayIcon = /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.shadow,\n className: \"react-player__shadow\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.playIcon,\n className: \"react-player__play-icon\"\n }));\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.preview,\n className: \"react-player__preview\",\n onClick: onClick,\n tabIndex: previewTabIndex,\n onKeyPress: this.handleKeyPress\n }, isElement ? light : null, playIcon || defaultPlayIcon);\n }\n }]);\n\n return Preview;\n}(_react.Component);\n\nexports[\"default\"] = Preview;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createReactPlayer = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nvar _memoizeOne = _interopRequireDefault(require(\"memoize-one\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nvar _utils = require(\"./utils\");\n\nvar _Player3 = _interopRequireDefault(require(\"./Player\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar Preview = /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Preview'));\n });\n});\nvar IS_BROWSER = typeof window !== 'undefined' && window.document;\nvar IS_GLOBAL = typeof global !== 'undefined' && global.window && global.window.document;\nvar SUPPORTED_PROPS = Object.keys(_props.propTypes); // Return null when rendering on the server\n// as Suspense is not supported yet\n\nvar UniversalSuspense = IS_BROWSER || IS_GLOBAL ? _react.Suspense : function () {\n return null;\n};\nvar customPlayers = [];\n\nvar createReactPlayer = function createReactPlayer(players, fallback) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(ReactPlayer, _Component);\n\n var _super = _createSuper(ReactPlayer);\n\n function ReactPlayer() {\n var _this;\n\n _classCallCheck(this, ReactPlayer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n showPreview: !!_this.props.light\n });\n\n _defineProperty(_assertThisInitialized(_this), \"references\", {\n wrapper: function wrapper(_wrapper) {\n _this.wrapper = _wrapper;\n },\n player: function player(_player) {\n _this.player = _player;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleClickPreview\", function (e) {\n _this.setState({\n showPreview: false\n });\n\n _this.props.onClickPreview(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"showPreview\", function () {\n _this.setState({\n showPreview: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getDuration\", function () {\n if (!_this.player) return null;\n return _this.player.getDuration();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getCurrentTime\", function () {\n if (!_this.player) return null;\n return _this.player.getCurrentTime();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getSecondsLoaded\", function () {\n if (!_this.player) return null;\n return _this.player.getSecondsLoaded();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';\n if (!_this.player) return null;\n return _this.player.getInternalPlayer(key);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"seekTo\", function (fraction, type, keepPlaying) {\n if (!_this.player) return null;\n\n _this.player.seekTo(fraction, type, keepPlaying);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n _this.props.onReady(_assertThisInitialized(_this));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getActivePlayer\", (0, _memoizeOne[\"default\"])(function (url) {\n for (var _i = 0, _arr = [].concat(customPlayers, _toConsumableArray(players)); _i < _arr.length; _i++) {\n var player = _arr[_i];\n\n if (player.canPlay(url)) {\n return player;\n }\n }\n\n if (fallback) {\n return fallback;\n }\n\n return null;\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"getConfig\", (0, _memoizeOne[\"default\"])(function (url, key) {\n var config = _this.props.config;\n return _deepmerge[\"default\"].all([_props.defaultProps.config, _props.defaultProps.config[key] || {}, config, config[key] || {}]);\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"getAttributes\", (0, _memoizeOne[\"default\"])(function (url) {\n return (0, _utils.omit)(_this.props, SUPPORTED_PROPS);\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"renderActivePlayer\", function (url) {\n if (!url) return null;\n\n var player = _this.getActivePlayer(url);\n\n if (!player) return null;\n\n var config = _this.getConfig(url, player.key);\n\n return /*#__PURE__*/_react[\"default\"].createElement(_Player3[\"default\"], _extends({}, _this.props, {\n key: player.key,\n ref: _this.references.player,\n config: config,\n activePlayer: player.lazyPlayer || player,\n onReady: _this.handleReady\n }));\n });\n\n return _this;\n }\n\n _createClass(ReactPlayer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !(0, _reactFastCompare[\"default\"])(this.props, nextProps) || !(0, _reactFastCompare[\"default\"])(this.state, nextState);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var light = this.props.light;\n\n if (!prevProps.light && light) {\n this.setState({\n showPreview: true\n });\n }\n\n if (prevProps.light && !light) {\n this.setState({\n showPreview: false\n });\n }\n }\n }, {\n key: \"renderPreview\",\n value: function renderPreview(url) {\n if (!url) return null;\n var _this$props = this.props,\n light = _this$props.light,\n playIcon = _this$props.playIcon,\n previewTabIndex = _this$props.previewTabIndex,\n oEmbedUrl = _this$props.oEmbedUrl;\n return /*#__PURE__*/_react[\"default\"].createElement(Preview, {\n url: url,\n light: light,\n playIcon: playIcon,\n previewTabIndex: previewTabIndex,\n oEmbedUrl: oEmbedUrl,\n onClick: this.handleClickPreview\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n url = _this$props2.url,\n style = _this$props2.style,\n width = _this$props2.width,\n height = _this$props2.height,\n fallback = _this$props2.fallback,\n Wrapper = _this$props2.wrapper;\n var showPreview = this.state.showPreview;\n var attributes = this.getAttributes(url);\n var wrapperRef = typeof Wrapper === 'string' ? this.references.wrapper : undefined;\n return /*#__PURE__*/_react[\"default\"].createElement(Wrapper, _extends({\n ref: wrapperRef,\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height\n })\n }, attributes), /*#__PURE__*/_react[\"default\"].createElement(UniversalSuspense, {\n fallback: fallback\n }, showPreview ? this.renderPreview(url) : this.renderActivePlayer(url)));\n }\n }]);\n\n return ReactPlayer;\n }(_react.Component), _defineProperty(_class, \"displayName\", 'ReactPlayer'), _defineProperty(_class, \"propTypes\", _props.propTypes), _defineProperty(_class, \"defaultProps\", _props.defaultProps), _defineProperty(_class, \"addCustomPlayer\", function (player) {\n customPlayers.push(player);\n }), _defineProperty(_class, \"removeCustomPlayers\", function () {\n customPlayers.length = 0;\n }), _defineProperty(_class, \"canPlay\", function (url) {\n for (var _i2 = 0, _arr2 = [].concat(customPlayers, _toConsumableArray(players)); _i2 < _arr2.length; _i2++) {\n var _Player = _arr2[_i2];\n\n if (_Player.canPlay(url)) {\n return true;\n }\n }\n\n return false;\n }), _defineProperty(_class, \"canEnablePIP\", function (url) {\n for (var _i3 = 0, _arr3 = [].concat(customPlayers, _toConsumableArray(players)); _i3 < _arr3.length; _i3++) {\n var _Player2 = _arr3[_i3];\n\n if (_Player2.canEnablePIP && _Player2.canEnablePIP(url)) {\n return true;\n }\n }\n\n return false;\n }), _temp;\n};\n\nexports.createReactPlayer = createReactPlayer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _players = _interopRequireDefault(require(\"./players\"));\n\nvar _ReactPlayer = require(\"./ReactPlayer\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// Fall back to FilePlayer if nothing else can play the URL\nvar fallback = _players[\"default\"][_players[\"default\"].length - 1];\n\nvar _default = (0, _ReactPlayer.createReactPlayer)(_players[\"default\"], fallback);\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canPlay = exports.FLV_EXTENSIONS = exports.DASH_EXTENSIONS = exports.HLS_EXTENSIONS = exports.VIDEO_EXTENSIONS = exports.AUDIO_EXTENSIONS = exports.MATCH_URL_KALTURA = exports.MATCH_URL_VIDYARD = exports.MATCH_URL_MIXCLOUD = exports.MATCH_URL_DAILYMOTION = exports.MATCH_URL_TWITCH_CHANNEL = exports.MATCH_URL_TWITCH_VIDEO = exports.MATCH_URL_WISTIA = exports.MATCH_URL_STREAMABLE = exports.MATCH_URL_FACEBOOK_WATCH = exports.MATCH_URL_FACEBOOK = exports.MATCH_URL_VIMEO = exports.MATCH_URL_SOUNDCLOUD = exports.MATCH_URL_YOUTUBE = void 0;\n\nvar _utils = require(\"./utils\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie|education)?\\.com\\/(?:embed\\/|v\\/|watch\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//;\nexports.MATCH_URL_YOUTUBE = MATCH_URL_YOUTUBE;\nvar MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/;\nexports.MATCH_URL_SOUNDCLOUD = MATCH_URL_SOUNDCLOUD;\nvar MATCH_URL_VIMEO = /vimeo\\.com\\/(?!progressive_redirect).+/;\nexports.MATCH_URL_VIMEO = MATCH_URL_VIMEO;\nvar MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/;\nexports.MATCH_URL_FACEBOOK = MATCH_URL_FACEBOOK;\nvar MATCH_URL_FACEBOOK_WATCH = /^https?:\\/\\/fb\\.watch\\/.+$/;\nexports.MATCH_URL_FACEBOOK_WATCH = MATCH_URL_FACEBOOK_WATCH;\nvar MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/;\nexports.MATCH_URL_STREAMABLE = MATCH_URL_STREAMABLE;\nvar MATCH_URL_WISTIA = /(?:wistia\\.(?:com|net)|wi\\.st)\\/(?:medias|embed)\\/(?:iframe\\/)?([^?]+)/;\nexports.MATCH_URL_WISTIA = MATCH_URL_WISTIA;\nvar MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nexports.MATCH_URL_TWITCH_VIDEO = MATCH_URL_TWITCH_VIDEO;\nvar MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nexports.MATCH_URL_TWITCH_CHANNEL = MATCH_URL_TWITCH_CHANNEL;\nvar MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?(?:[\\w.#_-]+)?/;\nexports.MATCH_URL_DAILYMOTION = MATCH_URL_DAILYMOTION;\nvar MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\nexports.MATCH_URL_MIXCLOUD = MATCH_URL_MIXCLOUD;\nvar MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-_]+)/;\nexports.MATCH_URL_VIDYARD = MATCH_URL_VIDYARD;\nvar MATCH_URL_KALTURA = /^https?:\\/\\/[a-zA-Z]+\\.kaltura.(com|org)\\/p\\/([0-9]+)\\/sp\\/([0-9]+)00\\/embedIframeJs\\/uiconf_id\\/([0-9]+)\\/partner_id\\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/;\nexports.MATCH_URL_KALTURA = MATCH_URL_KALTURA;\nvar AUDIO_EXTENSIONS = /\\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nexports.AUDIO_EXTENSIONS = AUDIO_EXTENSIONS;\nvar VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\\d+]+)?($|\\?)/i;\nexports.VIDEO_EXTENSIONS = VIDEO_EXTENSIONS;\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nexports.HLS_EXTENSIONS = HLS_EXTENSIONS;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nexports.DASH_EXTENSIONS = DASH_EXTENSIONS;\nvar FLV_EXTENSIONS = /\\.(flv)($|\\?)/i;\nexports.FLV_EXTENSIONS = FLV_EXTENSIONS;\n\nvar canPlayFile = function canPlayFile(url) {\n if (url instanceof Array) {\n var _iterator = _createForOfIteratorHelper(url),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n\n if (typeof item === 'string' && canPlayFile(item)) {\n return true;\n }\n\n if (canPlayFile(item.src)) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return false;\n }\n\n if ((0, _utils.isMediaStream)(url) || (0, _utils.isBlobUrl)(url)) {\n return true;\n }\n\n return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url) || FLV_EXTENSIONS.test(url);\n};\n\nvar canPlay = {\n youtube: function youtube(url) {\n if (url instanceof Array) {\n return url.every(function (item) {\n return MATCH_URL_YOUTUBE.test(item);\n });\n }\n\n return MATCH_URL_YOUTUBE.test(url);\n },\n soundcloud: function soundcloud(url) {\n return MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url);\n },\n vimeo: function vimeo(url) {\n return MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url);\n },\n facebook: function facebook(url) {\n return MATCH_URL_FACEBOOK.test(url) || MATCH_URL_FACEBOOK_WATCH.test(url);\n },\n streamable: function streamable(url) {\n return MATCH_URL_STREAMABLE.test(url);\n },\n wistia: function wistia(url) {\n return MATCH_URL_WISTIA.test(url);\n },\n twitch: function twitch(url) {\n return MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url);\n },\n dailymotion: function dailymotion(url) {\n return MATCH_URL_DAILYMOTION.test(url);\n },\n mixcloud: function mixcloud(url) {\n return MATCH_URL_MIXCLOUD.test(url);\n },\n vidyard: function vidyard(url) {\n return MATCH_URL_VIDYARD.test(url);\n },\n kaltura: function kaltura(url) {\n return MATCH_URL_KALTURA.test(url);\n },\n file: canPlayFile\n};\nexports.canPlay = canPlay;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://api.dmcdn.net/all.js';\nvar SDK_GLOBAL = 'DM';\nvar SDK_GLOBAL_READY = 'dmAsyncInit';\n\nvar DailyMotion = /*#__PURE__*/function (_Component) {\n _inherits(DailyMotion, _Component);\n\n var _super = _createSuper(DailyMotion);\n\n function DailyMotion() {\n var _this;\n\n _classCallCheck(this, DailyMotion);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"onDurationChange\", function () {\n var duration = _this.getDuration();\n\n _this.props.onDuration(duration);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('setMuted', true);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('setMuted', false);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n _this.container = container;\n });\n\n return _this;\n }\n\n _createClass(DailyMotion, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n var _this$props = this.props,\n controls = _this$props.controls,\n config = _this$props.config,\n onError = _this$props.onError,\n playing = _this$props.playing;\n\n var _url$match = url.match(_patterns.MATCH_URL_DAILYMOTION),\n _url$match2 = _slicedToArray(_url$match, 2),\n id = _url$match2[1];\n\n if (this.player) {\n this.player.load(id, {\n start: (0, _utils.parseStartTime)(url),\n autoplay: playing\n });\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (DM) {\n return DM.player;\n }).then(function (DM) {\n if (!_this2.container) return;\n var Player = DM.player;\n _this2.player = new Player(_this2.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: _objectSpread({\n controls: controls,\n autoplay: _this2.props.playing,\n mute: _this2.props.muted,\n start: (0, _utils.parseStartTime)(url),\n origin: window.location.origin\n }, config.params),\n events: {\n apiready: _this2.props.onReady,\n seeked: function seeked() {\n return _this2.props.onSeek(_this2.player.currentTime);\n },\n video_end: _this2.props.onEnded,\n durationchange: _this2.onDurationChange,\n pause: _this2.props.onPause,\n playing: _this2.props.onPlay,\n waiting: _this2.props.onBuffer,\n error: function error(event) {\n return onError(event);\n }\n }\n });\n }, onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seek', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.player.duration || null;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.player.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.player.bufferedTime;\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.ref\n }));\n }\n }]);\n\n return DailyMotion;\n}(_react.Component);\n\nexports[\"default\"] = DailyMotion;\n\n_defineProperty(DailyMotion, \"displayName\", 'DailyMotion');\n\n_defineProperty(DailyMotion, \"canPlay\", _patterns.canPlay.dailymotion);\n\n_defineProperty(DailyMotion, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://connect.facebook.net/en_US/sdk.js';\nvar SDK_GLOBAL = 'FB';\nvar SDK_GLOBAL_READY = 'fbAsyncInit';\nvar PLAYER_ID_PREFIX = 'facebook-player-';\n\nvar Facebook = /*#__PURE__*/function (_Component) {\n _inherits(Facebook, _Component);\n\n var _super = _createSuper(Facebook);\n\n function Facebook() {\n var _this;\n\n _classCallCheck(this, Facebook);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unmute');\n });\n\n return _this;\n }\n\n _createClass(Facebook, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url, isReady) {\n var _this2 = this;\n\n if (isReady) {\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n return FB.XFBML.parse();\n });\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n FB.init({\n appId: _this2.props.config.appId,\n xfbml: true,\n version: _this2.props.config.version\n });\n FB.Event.subscribe('xfbml.render', function (msg) {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n _this2.props.onLoaded();\n });\n FB.Event.subscribe('xfbml.ready', function (msg) {\n if (msg.type === 'video' && msg.id === _this2.playerID) {\n _this2.player = msg.instance;\n\n _this2.player.subscribe('startedPlaying', _this2.props.onPlay);\n\n _this2.player.subscribe('paused', _this2.props.onPause);\n\n _this2.player.subscribe('finishedPlaying', _this2.props.onEnded);\n\n _this2.player.subscribe('startedBuffering', _this2.props.onBuffer);\n\n _this2.player.subscribe('finishedBuffering', _this2.props.onBufferEnd);\n\n _this2.player.subscribe('error', _this2.props.onError);\n\n if (_this2.props.muted) {\n _this2.callPlayer('mute');\n } else {\n _this2.callPlayer('unmute');\n }\n\n _this2.props.onReady(); // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n\n\n document.getElementById(_this2.playerID).querySelector('iframe').style.visibility = 'visible';\n }\n });\n });\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seek', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentPosition');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var attributes = this.props.config.attributes;\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n style: style,\n id: this.playerID,\n className: \"fb-video\",\n \"data-href\": this.props.url,\n \"data-autoplay\": this.props.playing ? 'true' : 'false',\n \"data-allowfullscreen\": \"true\",\n \"data-controls\": this.props.controls ? 'true' : 'false'\n }, attributes));\n }\n }]);\n\n return Facebook;\n}(_react.Component);\n\nexports[\"default\"] = Facebook;\n\n_defineProperty(Facebook, \"displayName\", 'Facebook');\n\n_defineProperty(Facebook, \"canPlay\", _patterns.canPlay.facebook);\n\n_defineProperty(Facebook, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar HAS_NAVIGATOR = typeof navigator !== 'undefined';\nvar IS_IPAD_PRO = HAS_NAVIGATOR && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nvar IS_IOS = HAS_NAVIGATOR && (/iPad|iPhone|iPod/.test(navigator.userAgent) || IS_IPAD_PRO) && !window.MSStream;\nvar IS_SAFARI = HAS_NAVIGATOR && /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\nvar HLS_SDK_URL = 'https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js';\nvar HLS_GLOBAL = 'Hls';\nvar DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js';\nvar DASH_GLOBAL = 'dashjs';\nvar FLV_SDK_URL = 'https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js';\nvar FLV_GLOBAL = 'flvjs';\nvar MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/;\nvar MATCH_CLOUDFLARE_STREAM = /https:\\/\\/watch\\.cloudflarestream\\.com\\/([a-z0-9]+)/;\nvar REPLACE_CLOUDFLARE_STREAM = 'https://videodelivery.net/{id}/manifest/video.m3u8';\n\nvar FilePlayer = /*#__PURE__*/function (_Component) {\n _inherits(FilePlayer, _Component);\n\n var _super = _createSuper(FilePlayer);\n\n function FilePlayer() {\n var _this;\n\n _classCallCheck(this, FilePlayer);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"onReady\", function () {\n var _this$props;\n\n return (_this$props = _this.props).onReady.apply(_this$props, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPlay\", function () {\n var _this$props2;\n\n return (_this$props2 = _this.props).onPlay.apply(_this$props2, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBuffer\", function () {\n var _this$props3;\n\n return (_this$props3 = _this.props).onBuffer.apply(_this$props3, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBufferEnd\", function () {\n var _this$props4;\n\n return (_this$props4 = _this.props).onBufferEnd.apply(_this$props4, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPause\", function () {\n var _this$props5;\n\n return (_this$props5 = _this.props).onPause.apply(_this$props5, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onEnded\", function () {\n var _this$props6;\n\n return (_this$props6 = _this.props).onEnded.apply(_this$props6, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onError\", function () {\n var _this$props7;\n\n return (_this$props7 = _this.props).onError.apply(_this$props7, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPlayBackRateChange\", function (event) {\n return _this.props.onPlaybackRateChange(event.target.playbackRate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onEnablePIP\", function () {\n var _this$props8;\n\n return (_this$props8 = _this.props).onEnablePIP.apply(_this$props8, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDisablePIP\", function (e) {\n var _this$props9 = _this.props,\n onDisablePIP = _this$props9.onDisablePIP,\n playing = _this$props9.playing;\n onDisablePIP(e);\n\n if (playing) {\n _this.play();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPresentationModeChange\", function (e) {\n if (_this.player && (0, _utils.supportsWebKitPresentationMode)(_this.player)) {\n var webkitPresentationMode = _this.player.webkitPresentationMode;\n\n if (webkitPresentationMode === 'picture-in-picture') {\n _this.onEnablePIP(e);\n } else if (webkitPresentationMode === 'inline') {\n _this.onDisablePIP(e);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSeek\", function (e) {\n _this.props.onSeek(e.target.currentTime);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.player.muted = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.player.muted = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSourceElement\", function (source, index) {\n if (typeof source === 'string') {\n return /*#__PURE__*/_react[\"default\"].createElement(\"source\", {\n key: index,\n src: source\n });\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"source\", _extends({\n key: index\n }, source));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTrack\", function (track, index) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"track\", _extends({\n key: index\n }, track));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (player) {\n if (_this.player) {\n // Store previous player to be used by removeListeners()\n _this.prevPlayer = _this.player;\n }\n\n _this.player = player;\n });\n\n return _this;\n }\n\n _createClass(FilePlayer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n this.addListeners(this.player);\n var src = this.getSource(this.props.url); // Ensure src is set in strict mode\n\n if (src) {\n this.player.src = src;\n }\n\n if (IS_IOS || this.props.config.forceDisableHls) {\n this.player.load();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.removeListeners(this.prevPlayer, prevProps.url);\n this.addListeners(this.player);\n }\n\n if (this.props.url !== prevProps.url && !(0, _utils.isMediaStream)(this.props.url) && !(this.props.url instanceof Array) // Avoid infinite loop\n ) {\n this.player.srcObject = null;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.player.removeAttribute('src');\n this.removeListeners(this.player);\n\n if (this.hls) {\n this.hls.destroy();\n }\n }\n }, {\n key: \"addListeners\",\n value: function addListeners(player) {\n var _this$props10 = this.props,\n url = _this$props10.url,\n playsinline = _this$props10.playsinline;\n player.addEventListener('play', this.onPlay);\n player.addEventListener('waiting', this.onBuffer);\n player.addEventListener('playing', this.onBufferEnd);\n player.addEventListener('pause', this.onPause);\n player.addEventListener('seeked', this.onSeek);\n player.addEventListener('ended', this.onEnded);\n player.addEventListener('error', this.onError);\n player.addEventListener('ratechange', this.onPlayBackRateChange);\n player.addEventListener('enterpictureinpicture', this.onEnablePIP);\n player.addEventListener('leavepictureinpicture', this.onDisablePIP);\n player.addEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n\n if (!this.shouldUseHLS(url)) {\n // onReady is handled by hls.js\n player.addEventListener('canplay', this.onReady);\n }\n\n if (playsinline) {\n player.setAttribute('playsinline', '');\n player.setAttribute('webkit-playsinline', '');\n player.setAttribute('x5-playsinline', '');\n }\n }\n }, {\n key: \"removeListeners\",\n value: function removeListeners(player, url) {\n player.removeEventListener('canplay', this.onReady);\n player.removeEventListener('play', this.onPlay);\n player.removeEventListener('waiting', this.onBuffer);\n player.removeEventListener('playing', this.onBufferEnd);\n player.removeEventListener('pause', this.onPause);\n player.removeEventListener('seeked', this.onSeek);\n player.removeEventListener('ended', this.onEnded);\n player.removeEventListener('error', this.onError);\n player.removeEventListener('ratechange', this.onPlayBackRateChange);\n player.removeEventListener('enterpictureinpicture', this.onEnablePIP);\n player.removeEventListener('leavepictureinpicture', this.onDisablePIP);\n player.removeEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n\n if (!this.shouldUseHLS(url)) {\n // onReady is handled by hls.js\n player.removeEventListener('canplay', this.onReady);\n }\n } // Proxy methods to prevent listener leaks\n\n }, {\n key: \"shouldUseAudio\",\n value: function shouldUseAudio(props) {\n if (props.config.forceVideo) {\n return false;\n }\n\n if (props.config.attributes.poster) {\n return false; // Use <video> so that poster is shown\n }\n\n return _patterns.AUDIO_EXTENSIONS.test(props.url) || props.config.forceAudio;\n }\n }, {\n key: \"shouldUseHLS\",\n value: function shouldUseHLS(url) {\n if (IS_SAFARI && this.props.config.forceSafariHLS || this.props.config.forceHLS) {\n return true;\n }\n\n if (IS_IOS || this.props.config.forceDisableHls) {\n return false;\n }\n\n return _patterns.HLS_EXTENSIONS.test(url) || MATCH_CLOUDFLARE_STREAM.test(url);\n }\n }, {\n key: \"shouldUseDASH\",\n value: function shouldUseDASH(url) {\n return _patterns.DASH_EXTENSIONS.test(url) || this.props.config.forceDASH;\n }\n }, {\n key: \"shouldUseFLV\",\n value: function shouldUseFLV(url) {\n return _patterns.FLV_EXTENSIONS.test(url) || this.props.config.forceFLV;\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n var _this$props$config = this.props.config,\n hlsVersion = _this$props$config.hlsVersion,\n hlsOptions = _this$props$config.hlsOptions,\n dashVersion = _this$props$config.dashVersion,\n flvVersion = _this$props$config.flvVersion;\n\n if (this.hls) {\n this.hls.destroy();\n }\n\n if (this.dash) {\n this.dash.reset();\n }\n\n if (this.shouldUseHLS(url)) {\n (0, _utils.getSDK)(HLS_SDK_URL.replace('VERSION', hlsVersion), HLS_GLOBAL).then(function (Hls) {\n _this2.hls = new Hls(hlsOptions);\n\n _this2.hls.on(Hls.Events.MANIFEST_PARSED, function () {\n _this2.props.onReady();\n });\n\n _this2.hls.on(Hls.Events.ERROR, function (e, data) {\n _this2.props.onError(e, data, _this2.hls, Hls);\n });\n\n if (MATCH_CLOUDFLARE_STREAM.test(url)) {\n var id = url.match(MATCH_CLOUDFLARE_STREAM)[1];\n\n _this2.hls.loadSource(REPLACE_CLOUDFLARE_STREAM.replace('{id}', id));\n } else {\n _this2.hls.loadSource(url);\n }\n\n _this2.hls.attachMedia(_this2.player);\n\n _this2.props.onLoaded();\n });\n }\n\n if (this.shouldUseDASH(url)) {\n (0, _utils.getSDK)(DASH_SDK_URL.replace('VERSION', dashVersion), DASH_GLOBAL).then(function (dashjs) {\n _this2.dash = dashjs.MediaPlayer().create();\n\n _this2.dash.initialize(_this2.player, url, _this2.props.playing);\n\n _this2.dash.on('error', _this2.props.onError);\n\n if (parseInt(dashVersion) < 3) {\n _this2.dash.getDebug().setLogToBrowserConsole(false);\n } else {\n _this2.dash.updateSettings({\n debug: {\n logLevel: dashjs.Debug.LOG_LEVEL_NONE\n }\n });\n }\n\n _this2.props.onLoaded();\n });\n }\n\n if (this.shouldUseFLV(url)) {\n (0, _utils.getSDK)(FLV_SDK_URL.replace('VERSION', flvVersion), FLV_GLOBAL).then(function (flvjs) {\n _this2.flv = flvjs.createPlayer({\n type: 'flv',\n url: url\n });\n\n _this2.flv.attachMediaElement(_this2.player);\n\n _this2.flv.on(flvjs.Events.ERROR, function (e, data) {\n _this2.props.onError(e, data, _this2.flv, flvjs);\n });\n\n _this2.flv.load();\n\n _this2.props.onLoaded();\n });\n }\n\n if (url instanceof Array) {\n // When setting new urls (<source>) on an already loaded video,\n // HTMLMediaElement.load() is needed to reset the media element\n // and restart the media resource. Just replacing children source\n // dom nodes is not enough\n this.player.load();\n } else if ((0, _utils.isMediaStream)(url)) {\n try {\n this.player.srcObject = url;\n } catch (e) {\n this.player.src = window.URL.createObjectURL(url);\n }\n }\n }\n }, {\n key: \"play\",\n value: function play() {\n var promise = this.player.play();\n\n if (promise) {\n promise[\"catch\"](this.props.onError);\n }\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.player.pause();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.player.removeAttribute('src');\n\n if (this.dash) {\n this.dash.reset();\n }\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.player.currentTime = seconds;\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.player.volume = fraction;\n }\n }, {\n key: \"enablePIP\",\n value: function enablePIP() {\n if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n this.player.requestPictureInPicture();\n } else if ((0, _utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== 'picture-in-picture') {\n this.player.webkitSetPresentationMode('picture-in-picture');\n }\n }\n }, {\n key: \"disablePIP\",\n value: function disablePIP() {\n if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n document.exitPictureInPicture();\n } else if ((0, _utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== 'inline') {\n this.player.webkitSetPresentationMode('inline');\n }\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate) {\n try {\n this.player.playbackRate = rate;\n } catch (error) {\n this.props.onError(error);\n }\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n if (!this.player) return null;\n var _this$player = this.player,\n duration = _this$player.duration,\n seekable = _this$player.seekable; // on iOS, live streams return Infinity for the duration\n // so instead we use the end of the seekable timerange\n\n if (duration === Infinity && seekable.length > 0) {\n return seekable.end(seekable.length - 1);\n }\n\n return duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n if (!this.player) return null;\n return this.player.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n if (!this.player) return null;\n var buffered = this.player.buffered;\n\n if (buffered.length === 0) {\n return 0;\n }\n\n var end = buffered.end(buffered.length - 1);\n var duration = this.getDuration();\n\n if (end > duration) {\n return duration;\n }\n\n return end;\n }\n }, {\n key: \"getSource\",\n value: function getSource(url) {\n var useHLS = this.shouldUseHLS(url);\n var useDASH = this.shouldUseDASH(url);\n var useFLV = this.shouldUseFLV(url);\n\n if (url instanceof Array || (0, _utils.isMediaStream)(url) || useHLS || useDASH || useFLV) {\n return undefined;\n }\n\n if (MATCH_DROPBOX_URL.test(url)) {\n return url.replace('www.dropbox.com', 'dl.dropboxusercontent.com');\n }\n\n return url;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n url = _this$props11.url,\n playing = _this$props11.playing,\n loop = _this$props11.loop,\n controls = _this$props11.controls,\n muted = _this$props11.muted,\n config = _this$props11.config,\n width = _this$props11.width,\n height = _this$props11.height;\n var useAudio = this.shouldUseAudio(this.props);\n var Element = useAudio ? 'audio' : 'video';\n var style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(Element, _extends({\n ref: this.ref,\n src: this.getSource(url),\n style: style,\n preload: \"auto\",\n autoPlay: playing || undefined,\n controls: controls,\n muted: muted,\n loop: loop\n }, config.attributes), url instanceof Array && url.map(this.renderSourceElement), config.tracks.map(this.renderTrack));\n }\n }]);\n\n return FilePlayer;\n}(_react.Component);\n\nexports[\"default\"] = FilePlayer;\n\n_defineProperty(FilePlayer, \"displayName\", 'FilePlayer');\n\n_defineProperty(FilePlayer, \"canPlay\", _patterns.canPlay.file);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js';\nvar SDK_GLOBAL = 'playerjs';\n\nvar Kaltura = /*#__PURE__*/function (_Component) {\n _inherits(Kaltura, _Component);\n\n var _super = _createSuper(Kaltura);\n\n function Kaltura() {\n var _this;\n\n _classCallCheck(this, Kaltura);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unmute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n _this.iframe = iframe;\n });\n\n return _this;\n }\n\n _createClass(Kaltura, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (playerjs) {\n if (!_this2.iframe) return;\n _this2.player = new playerjs.Player(_this2.iframe);\n\n _this2.player.on('ready', function () {\n // An arbitrary timeout is required otherwise\n // the event listeners won’t work\n setTimeout(function () {\n _this2.player.isReady = true;\n\n _this2.player.setLoop(_this2.props.loop);\n\n if (_this2.props.muted) {\n _this2.player.mute();\n }\n\n _this2.addListeners(_this2.player, _this2.props);\n\n _this2.props.onReady();\n }, 500);\n });\n }, this.props.onError);\n }\n }, {\n key: \"addListeners\",\n value: function addListeners(player, props) {\n var _this3 = this;\n\n player.on('play', props.onPlay);\n player.on('pause', props.onPause);\n player.on('ended', props.onEnded);\n player.on('error', props.onError);\n player.on('timeupdate', function (_ref) {\n var duration = _ref.duration,\n seconds = _ref.seconds;\n _this3.duration = duration;\n _this3.currentTime = seconds;\n });\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('setCurrentTime', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: \"render\",\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n ref: this.ref,\n src: this.props.url,\n frameBorder: \"0\",\n scrolling: \"no\",\n style: style,\n allow: \"encrypted-media; autoplay; fullscreen;\",\n referrerPolicy: \"no-referrer-when-downgrade\"\n });\n }\n }]);\n\n return Kaltura;\n}(_react.Component);\n\nexports[\"default\"] = Kaltura;\n\n_defineProperty(Kaltura, \"displayName\", 'Kaltura');\n\n_defineProperty(Kaltura, \"canPlay\", _patterns.canPlay.kaltura);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://widget.mixcloud.com/media/js/widgetApi.js';\nvar SDK_GLOBAL = 'Mixcloud';\n\nvar Mixcloud = /*#__PURE__*/function (_Component) {\n _inherits(Mixcloud, _Component);\n\n var _super = _createSuper(Mixcloud);\n\n function Mixcloud() {\n var _this;\n\n _classCallCheck(this, Mixcloud);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {// No volume support\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {// No volume support\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n _this.iframe = iframe;\n });\n\n return _this;\n }\n\n _createClass(Mixcloud, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Mixcloud) {\n _this2.player = Mixcloud.PlayerWidget(_this2.iframe);\n\n _this2.player.ready.then(function () {\n _this2.player.events.play.on(_this2.props.onPlay);\n\n _this2.player.events.pause.on(_this2.props.onPause);\n\n _this2.player.events.ended.on(_this2.props.onEnded);\n\n _this2.player.events.error.on(_this2.props.error);\n\n _this2.player.events.progress.on(function (seconds, duration) {\n _this2.currentTime = seconds;\n _this2.duration = duration;\n });\n\n _this2.props.onReady();\n });\n }, this.props.onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seek', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {// No volume support\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n url = _this$props.url,\n config = _this$props.config;\n var id = url.match(_patterns.MATCH_URL_MIXCLOUD)[1];\n var style = {\n width: '100%',\n height: '100%'\n };\n var query = (0, _utils.queryString)(_objectSpread(_objectSpread({}, config.options), {}, {\n feed: \"/\".concat(id, \"/\")\n })); // We have to give the iframe a key here to prevent a\n // weird dialog appearing when loading a new track\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n key: id,\n ref: this.ref,\n style: style,\n src: \"https://www.mixcloud.com/widget/iframe/?\".concat(query),\n frameBorder: \"0\",\n allow: \"autoplay\"\n });\n }\n }]);\n\n return Mixcloud;\n}(_react.Component);\n\nexports[\"default\"] = Mixcloud;\n\n_defineProperty(Mixcloud, \"displayName\", 'Mixcloud');\n\n_defineProperty(Mixcloud, \"canPlay\", _patterns.canPlay.mixcloud);\n\n_defineProperty(Mixcloud, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://w.soundcloud.com/player/api.js';\nvar SDK_GLOBAL = 'SC';\n\nvar SoundCloud = /*#__PURE__*/function (_Component) {\n _inherits(SoundCloud, _Component);\n\n var _super = _createSuper(SoundCloud);\n\n function SoundCloud() {\n var _this;\n\n _classCallCheck(this, SoundCloud);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"fractionLoaded\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.setVolume(0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n if (_this.props.volume !== null) {\n _this.setVolume(_this.props.volume);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n _this.iframe = iframe;\n });\n\n return _this;\n }\n\n _createClass(SoundCloud, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url, isReady) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (SC) {\n if (!_this2.iframe) return;\n var _SC$Widget$Events = SC.Widget.Events,\n PLAY = _SC$Widget$Events.PLAY,\n PLAY_PROGRESS = _SC$Widget$Events.PLAY_PROGRESS,\n PAUSE = _SC$Widget$Events.PAUSE,\n FINISH = _SC$Widget$Events.FINISH,\n ERROR = _SC$Widget$Events.ERROR;\n\n if (!isReady) {\n _this2.player = SC.Widget(_this2.iframe);\n\n _this2.player.bind(PLAY, _this2.props.onPlay);\n\n _this2.player.bind(PAUSE, function () {\n var remaining = _this2.duration - _this2.currentTime;\n\n if (remaining < 0.05) {\n // Prevent onPause firing right before onEnded\n return;\n }\n\n _this2.props.onPause();\n });\n\n _this2.player.bind(PLAY_PROGRESS, function (e) {\n _this2.currentTime = e.currentPosition / 1000;\n _this2.fractionLoaded = e.loadedProgress;\n });\n\n _this2.player.bind(FINISH, function () {\n return _this2.props.onEnded();\n });\n\n _this2.player.bind(ERROR, function (e) {\n return _this2.props.onError(e);\n });\n }\n\n _this2.player.load(url, _objectSpread(_objectSpread({}, _this2.props.config.options), {}, {\n callback: function callback() {\n _this2.player.getDuration(function (duration) {\n _this2.duration = duration / 1000;\n\n _this2.props.onReady();\n });\n }\n }));\n });\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seekTo', seconds * 1000);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.fractionLoaded * this.duration;\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n ref: this.ref,\n src: \"https://w.soundcloud.com/player/?url=\".concat(encodeURIComponent(this.props.url)),\n style: style,\n frameBorder: 0,\n allow: \"autoplay\"\n });\n }\n }]);\n\n return SoundCloud;\n}(_react.Component);\n\nexports[\"default\"] = SoundCloud;\n\n_defineProperty(SoundCloud, \"displayName\", 'SoundCloud');\n\n_defineProperty(SoundCloud, \"canPlay\", _patterns.canPlay.soundcloud);\n\n_defineProperty(SoundCloud, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js';\nvar SDK_GLOBAL = 'playerjs';\n\nvar Streamable = /*#__PURE__*/function (_Component) {\n _inherits(Streamable, _Component);\n\n var _super = _createSuper(Streamable);\n\n function Streamable() {\n var _this;\n\n _classCallCheck(this, Streamable);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unmute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n _this.iframe = iframe;\n });\n\n return _this;\n }\n\n _createClass(Streamable, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (playerjs) {\n if (!_this2.iframe) return;\n _this2.player = new playerjs.Player(_this2.iframe);\n\n _this2.player.setLoop(_this2.props.loop);\n\n _this2.player.on('ready', _this2.props.onReady);\n\n _this2.player.on('play', _this2.props.onPlay);\n\n _this2.player.on('pause', _this2.props.onPause);\n\n _this2.player.on('seeked', _this2.props.onSeek);\n\n _this2.player.on('ended', _this2.props.onEnded);\n\n _this2.player.on('error', _this2.props.onError);\n\n _this2.player.on('timeupdate', function (_ref) {\n var duration = _ref.duration,\n seconds = _ref.seconds;\n _this2.duration = duration;\n _this2.currentTime = seconds;\n });\n\n _this2.player.on('buffered', function (_ref2) {\n var percent = _ref2.percent;\n\n if (_this2.duration) {\n _this2.secondsLoaded = _this2.duration * percent;\n }\n });\n\n if (_this2.props.muted) {\n _this2.player.mute();\n }\n }, this.props.onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('setCurrentTime', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: \"render\",\n value: function render() {\n var id = this.props.url.match(_patterns.MATCH_URL_STREAMABLE)[1];\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n ref: this.ref,\n src: \"https://streamable.com/o/\".concat(id),\n frameBorder: \"0\",\n scrolling: \"no\",\n style: style,\n allow: \"encrypted-media; autoplay; fullscreen;\"\n });\n }\n }]);\n\n return Streamable;\n}(_react.Component);\n\nexports[\"default\"] = Streamable;\n\n_defineProperty(Streamable, \"displayName\", 'Streamable');\n\n_defineProperty(Streamable, \"canPlay\", _patterns.canPlay.streamable);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://player.twitch.tv/js/embed/v1.js';\nvar SDK_GLOBAL = 'Twitch';\nvar PLAYER_ID_PREFIX = 'twitch-player-';\n\nvar Twitch = /*#__PURE__*/function (_Component) {\n _inherits(Twitch, _Component);\n\n var _super = _createSuper(Twitch);\n\n function Twitch() {\n var _this;\n\n _classCallCheck(this, Twitch);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('setMuted', true);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('setMuted', false);\n });\n\n return _this;\n }\n\n _createClass(Twitch, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url, isReady) {\n var _this2 = this;\n\n var _this$props = this.props,\n playsinline = _this$props.playsinline,\n onError = _this$props.onError,\n config = _this$props.config,\n controls = _this$props.controls;\n\n var isChannel = _patterns.MATCH_URL_TWITCH_CHANNEL.test(url);\n\n var id = isChannel ? url.match(_patterns.MATCH_URL_TWITCH_CHANNEL)[1] : url.match(_patterns.MATCH_URL_TWITCH_VIDEO)[1];\n\n if (isReady) {\n if (isChannel) {\n this.player.setChannel(id);\n } else {\n this.player.setVideo('v' + id);\n }\n\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Twitch) {\n _this2.player = new Twitch.Player(_this2.playerID, _objectSpread({\n video: isChannel ? '' : id,\n channel: isChannel ? id : '',\n height: '100%',\n width: '100%',\n playsinline: playsinline,\n autoplay: _this2.props.playing,\n muted: _this2.props.muted,\n // https://github.com/CookPete/react-player/issues/733#issuecomment-549085859\n controls: isChannel ? true : controls,\n time: (0, _utils.parseStartTime)(url)\n }, config.options));\n var _Twitch$Player = Twitch.Player,\n READY = _Twitch$Player.READY,\n PLAYING = _Twitch$Player.PLAYING,\n PAUSE = _Twitch$Player.PAUSE,\n ENDED = _Twitch$Player.ENDED,\n ONLINE = _Twitch$Player.ONLINE,\n OFFLINE = _Twitch$Player.OFFLINE,\n SEEK = _Twitch$Player.SEEK;\n\n _this2.player.addEventListener(READY, _this2.props.onReady);\n\n _this2.player.addEventListener(PLAYING, _this2.props.onPlay);\n\n _this2.player.addEventListener(PAUSE, _this2.props.onPause);\n\n _this2.player.addEventListener(ENDED, _this2.props.onEnded);\n\n _this2.player.addEventListener(SEEK, _this2.props.onSeek); // Prevent weird isLoading behaviour when streams are offline\n\n\n _this2.player.addEventListener(ONLINE, _this2.props.onLoaded);\n\n _this2.player.addEventListener(OFFLINE, _this2.props.onLoaded);\n }, onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.callPlayer('pause');\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seek', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentTime');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style,\n id: this.playerID\n });\n }\n }]);\n\n return Twitch;\n}(_react.Component);\n\nexports[\"default\"] = Twitch;\n\n_defineProperty(Twitch, \"displayName\", 'Twitch');\n\n_defineProperty(Twitch, \"canPlay\", _patterns.canPlay.twitch);\n\n_defineProperty(Twitch, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://play.vidyard.com/embed/v4.js';\nvar SDK_GLOBAL = 'VidyardV4';\nvar SDK_GLOBAL_READY = 'onVidyardAPI';\n\nvar Vidyard = /*#__PURE__*/function (_Component) {\n _inherits(Vidyard, _Component);\n\n var _super = _createSuper(Vidyard);\n\n function Vidyard() {\n var _this;\n\n _classCallCheck(this, Vidyard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.setVolume(0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n if (_this.props.volume !== null) {\n _this.setVolume(_this.props.volume);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n _this.container = container;\n });\n\n return _this;\n }\n\n _createClass(Vidyard, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n var _this$props = this.props,\n playing = _this$props.playing,\n config = _this$props.config,\n onError = _this$props.onError,\n onDuration = _this$props.onDuration;\n var id = url && url.match(_patterns.MATCH_URL_VIDYARD)[1];\n\n if (this.player) {\n this.stop();\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (Vidyard) {\n if (!_this2.container) return;\n Vidyard.api.addReadyListener(function (data, player) {\n if (_this2.player) {\n return;\n }\n\n _this2.player = player;\n\n _this2.player.on('ready', _this2.props.onReady);\n\n _this2.player.on('play', _this2.props.onPlay);\n\n _this2.player.on('pause', _this2.props.onPause);\n\n _this2.player.on('seek', _this2.props.onSeek);\n\n _this2.player.on('playerComplete', _this2.props.onEnded);\n }, id);\n Vidyard.api.renderPlayer(_objectSpread({\n uuid: id,\n container: _this2.container,\n autoplay: playing ? 1 : 0\n }, config.options));\n Vidyard.api.getPlayerMetadata(id).then(function (meta) {\n _this2.duration = meta.length_in_seconds;\n onDuration(meta.length_in_seconds);\n });\n }, onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {\n window.VidyardV4.api.destroyPlayer(this.player);\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(amount) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('seek', amount);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate) {\n this.callPlayer('setPlaybackSpeed', rate);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('currentTime');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.ref\n }));\n }\n }]);\n\n return Vidyard;\n}(_react.Component);\n\nexports[\"default\"] = Vidyard;\n\n_defineProperty(Vidyard, \"displayName\", 'Vidyard');\n\n_defineProperty(Vidyard, \"canPlay\", _patterns.canPlay.vidyard);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://player.vimeo.com/api/player.js';\nvar SDK_GLOBAL = 'Vimeo';\n\nvar cleanUrl = function cleanUrl(url) {\n return url.replace('/manage/videos', '');\n};\n\nvar Vimeo = /*#__PURE__*/function (_Component) {\n _inherits(Vimeo, _Component);\n\n var _super = _createSuper(Vimeo);\n\n function Vimeo() {\n var _this;\n\n _classCallCheck(this, Vimeo);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.setMuted(true);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.setMuted(false);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n _this.container = container;\n });\n\n return _this;\n }\n\n _createClass(Vimeo, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n this.duration = null;\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Vimeo) {\n if (!_this2.container) return;\n var _this2$props$config = _this2.props.config,\n playerOptions = _this2$props$config.playerOptions,\n title = _this2$props$config.title;\n _this2.player = new Vimeo.Player(_this2.container, _objectSpread({\n url: cleanUrl(url),\n autoplay: _this2.props.playing,\n muted: _this2.props.muted,\n loop: _this2.props.loop,\n playsinline: _this2.props.playsinline,\n controls: _this2.props.controls\n }, playerOptions));\n\n _this2.player.ready().then(function () {\n var iframe = _this2.container.querySelector('iframe');\n\n iframe.style.width = '100%';\n iframe.style.height = '100%';\n\n if (title) {\n iframe.title = title;\n }\n })[\"catch\"](_this2.props.onError);\n\n _this2.player.on('loaded', function () {\n _this2.props.onReady();\n\n _this2.refreshDuration();\n });\n\n _this2.player.on('play', function () {\n _this2.props.onPlay();\n\n _this2.refreshDuration();\n });\n\n _this2.player.on('pause', _this2.props.onPause);\n\n _this2.player.on('seeked', function (e) {\n return _this2.props.onSeek(e.seconds);\n });\n\n _this2.player.on('ended', _this2.props.onEnded);\n\n _this2.player.on('error', _this2.props.onError);\n\n _this2.player.on('timeupdate', function (_ref) {\n var seconds = _ref.seconds;\n _this2.currentTime = seconds;\n });\n\n _this2.player.on('progress', function (_ref2) {\n var seconds = _ref2.seconds;\n _this2.secondsLoaded = seconds;\n });\n\n _this2.player.on('bufferstart', _this2.props.onBuffer);\n\n _this2.player.on('bufferend', _this2.props.onBufferEnd);\n\n _this2.player.on('playbackratechange', function (e) {\n return _this2.props.onPlaybackRateChange(e.playbackRate);\n });\n }, this.props.onError);\n }\n }, {\n key: \"refreshDuration\",\n value: function refreshDuration() {\n var _this3 = this;\n\n this.player.getDuration().then(function (duration) {\n _this3.duration = duration;\n });\n }\n }, {\n key: \"play\",\n value: function play() {\n var promise = this.callPlayer('play');\n\n if (promise) {\n promise[\"catch\"](this.props.onError);\n }\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.callPlayer('unload');\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('setCurrentTime', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"setMuted\",\n value: function setMuted(muted) {\n this.callPlayer('setMuted', muted);\n }\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate) {\n this.callPlayer('setPlaybackRate', rate);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: this.props.url,\n ref: this.ref,\n style: style\n });\n }\n }]);\n\n return Vimeo;\n}(_react.Component);\n\nexports[\"default\"] = Vimeo;\n\n_defineProperty(Vimeo, \"displayName\", 'Vimeo');\n\n_defineProperty(Vimeo, \"canPlay\", _patterns.canPlay.vimeo);\n\n_defineProperty(Vimeo, \"forceLoad\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://fast.wistia.com/assets/external/E-v1.js';\nvar SDK_GLOBAL = 'Wistia';\nvar PLAYER_ID_PREFIX = 'wistia-player-';\n\nvar Wistia = /*#__PURE__*/function (_Component) {\n _inherits(Wistia, _Component);\n\n var _super = _createSuper(Wistia);\n\n function Wistia() {\n var _this;\n\n _classCallCheck(this, Wistia);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n _defineProperty(_assertThisInitialized(_this), \"onPlay\", function () {\n var _this$props;\n\n return (_this$props = _this.props).onPlay.apply(_this$props, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPause\", function () {\n var _this$props2;\n\n return (_this$props2 = _this.props).onPause.apply(_this$props2, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSeek\", function () {\n var _this$props3;\n\n return (_this$props3 = _this.props).onSeek.apply(_this$props3, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onEnded\", function () {\n var _this$props4;\n\n return (_this$props4 = _this.props).onEnded.apply(_this$props4, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPlaybackRateChange\", function () {\n var _this$props5;\n\n return (_this$props5 = _this.props).onPlaybackRateChange.apply(_this$props5, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unmute');\n });\n\n return _this;\n }\n\n _createClass(Wistia, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n var _this$props6 = this.props,\n playing = _this$props6.playing,\n muted = _this$props6.muted,\n controls = _this$props6.controls,\n _onReady = _this$props6.onReady,\n config = _this$props6.config,\n onError = _this$props6.onError;\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Wistia) {\n if (config.customControls) {\n config.customControls.forEach(function (control) {\n return Wistia.defineControl(control);\n });\n }\n\n window._wq = window._wq || [];\n\n window._wq.push({\n id: _this2.playerID,\n options: _objectSpread({\n autoPlay: playing,\n silentAutoPlay: 'allow',\n muted: muted,\n controlsVisibleOnLoad: controls,\n fullscreenButton: controls,\n playbar: controls,\n playbackRateControl: controls,\n qualityControl: controls,\n volumeControl: controls,\n settingsControl: controls,\n smallPlayButton: controls\n }, config.options),\n onReady: function onReady(player) {\n _this2.player = player;\n\n _this2.unbind();\n\n _this2.player.bind('play', _this2.onPlay);\n\n _this2.player.bind('pause', _this2.onPause);\n\n _this2.player.bind('seek', _this2.onSeek);\n\n _this2.player.bind('end', _this2.onEnded);\n\n _this2.player.bind('playbackratechange', _this2.onPlaybackRateChange);\n\n _onReady();\n }\n });\n }, onError);\n }\n }, {\n key: \"unbind\",\n value: function unbind() {\n this.player.unbind('play', this.onPlay);\n this.player.unbind('pause', this.onPause);\n this.player.unbind('seek', this.onSeek);\n this.player.unbind('end', this.onEnded);\n this.player.unbind('playbackratechange', this.onPlaybackRateChange);\n } // Proxy methods to prevent listener leaks\n\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.unbind();\n this.callPlayer('remove');\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.callPlayer('time', seconds);\n\n if (!keepPlaying) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('volume', fraction);\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate) {\n this.callPlayer('playbackRate', rate);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.callPlayer('duration');\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('time');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var url = this.props.url;\n var videoID = url && url.match(_patterns.MATCH_URL_WISTIA)[1];\n var className = \"wistia_embed wistia_async_\".concat(videoID);\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n id: this.playerID,\n key: videoID,\n className: className,\n style: style\n });\n }\n }]);\n\n return Wistia;\n}(_react.Component);\n\nexports[\"default\"] = Wistia;\n\n_defineProperty(Wistia, \"displayName\", 'Wistia');\n\n_defineProperty(Wistia, \"canPlay\", _patterns.canPlay.wistia);\n\n_defineProperty(Wistia, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://www.youtube.com/iframe_api';\nvar SDK_GLOBAL = 'YT';\nvar SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady';\nvar MATCH_PLAYLIST = /[?&](?:list|channel)=([a-zA-Z0-9_-]+)/;\nvar MATCH_USER_UPLOADS = /user\\/([a-zA-Z0-9_-]+)\\/?/;\nvar MATCH_NOCOOKIE = /youtube-nocookie\\.com/;\nvar NOCOOKIE_HOST = 'https://www.youtube-nocookie.com';\n\nvar YouTube = /*#__PURE__*/function (_Component) {\n _inherits(YouTube, _Component);\n\n var _super = _createSuper(YouTube);\n\n function YouTube() {\n var _this;\n\n _classCallCheck(this, YouTube);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"parsePlaylist\", function (url) {\n if (url instanceof Array) {\n return {\n listType: 'playlist',\n playlist: url.map(_this.getID).join(',')\n };\n }\n\n if (MATCH_PLAYLIST.test(url)) {\n var _url$match = url.match(MATCH_PLAYLIST),\n _url$match2 = _slicedToArray(_url$match, 2),\n playlistId = _url$match2[1];\n\n return {\n listType: 'playlist',\n list: playlistId.replace(/^UC/, 'UU')\n };\n }\n\n if (MATCH_USER_UPLOADS.test(url)) {\n var _url$match3 = url.match(MATCH_USER_UPLOADS),\n _url$match4 = _slicedToArray(_url$match3, 2),\n username = _url$match4[1];\n\n return {\n listType: 'user_uploads',\n list: username\n };\n }\n\n return {};\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onStateChange\", function (event) {\n var data = event.data;\n var _this$props = _this.props,\n onPlay = _this$props.onPlay,\n onPause = _this$props.onPause,\n onBuffer = _this$props.onBuffer,\n onBufferEnd = _this$props.onBufferEnd,\n onEnded = _this$props.onEnded,\n onReady = _this$props.onReady,\n loop = _this$props.loop,\n _this$props$config = _this$props.config,\n playerVars = _this$props$config.playerVars,\n onUnstarted = _this$props$config.onUnstarted;\n var _window$SDK_GLOBAL$Pl = window[SDK_GLOBAL].PlayerState,\n UNSTARTED = _window$SDK_GLOBAL$Pl.UNSTARTED,\n PLAYING = _window$SDK_GLOBAL$Pl.PLAYING,\n PAUSED = _window$SDK_GLOBAL$Pl.PAUSED,\n BUFFERING = _window$SDK_GLOBAL$Pl.BUFFERING,\n ENDED = _window$SDK_GLOBAL$Pl.ENDED,\n CUED = _window$SDK_GLOBAL$Pl.CUED;\n if (data === UNSTARTED) onUnstarted();\n\n if (data === PLAYING) {\n onPlay();\n onBufferEnd();\n }\n\n if (data === PAUSED) onPause();\n if (data === BUFFERING) onBuffer();\n\n if (data === ENDED) {\n var isPlaylist = !!_this.callPlayer('getPlaylist'); // Only loop manually if not playing a playlist\n\n if (loop && !isPlaylist) {\n if (playerVars.start) {\n _this.seekTo(playerVars.start);\n } else {\n _this.play();\n }\n }\n\n onEnded();\n }\n\n if (data === CUED) onReady();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unMute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n _this.container = container;\n });\n\n return _this;\n }\n\n _createClass(YouTube, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"getID\",\n value: function getID(url) {\n if (!url || url instanceof Array || MATCH_PLAYLIST.test(url)) {\n return null;\n }\n\n return url.match(_patterns.MATCH_URL_YOUTUBE)[1];\n }\n }, {\n key: \"load\",\n value: function load(url, isReady) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n playing = _this$props2.playing,\n muted = _this$props2.muted,\n playsinline = _this$props2.playsinline,\n controls = _this$props2.controls,\n loop = _this$props2.loop,\n config = _this$props2.config,\n _onError = _this$props2.onError;\n var playerVars = config.playerVars,\n embedOptions = config.embedOptions;\n var id = this.getID(url);\n\n if (isReady) {\n if (MATCH_PLAYLIST.test(url) || MATCH_USER_UPLOADS.test(url) || url instanceof Array) {\n this.player.loadPlaylist(this.parsePlaylist(url));\n return;\n }\n\n this.player.cueVideoById({\n videoId: id,\n startSeconds: (0, _utils.parseStartTime)(url) || playerVars.start,\n endSeconds: (0, _utils.parseEndTime)(url) || playerVars.end\n });\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (YT) {\n return YT.loaded;\n }).then(function (YT) {\n if (!_this2.container) return;\n _this2.player = new YT.Player(_this2.container, _objectSpread({\n width: '100%',\n height: '100%',\n videoId: id,\n playerVars: _objectSpread(_objectSpread({\n autoplay: playing ? 1 : 0,\n mute: muted ? 1 : 0,\n controls: controls ? 1 : 0,\n start: (0, _utils.parseStartTime)(url),\n end: (0, _utils.parseEndTime)(url),\n origin: window.location.origin,\n playsinline: playsinline ? 1 : 0\n }, _this2.parsePlaylist(url)), playerVars),\n events: {\n onReady: function onReady() {\n if (loop) {\n _this2.player.setLoop(true); // Enable playlist looping\n\n }\n\n _this2.props.onReady();\n },\n onPlaybackRateChange: function onPlaybackRateChange(event) {\n return _this2.props.onPlaybackRateChange(event.data);\n },\n onPlaybackQualityChange: function onPlaybackQualityChange(event) {\n return _this2.props.onPlaybackQualityChange(event);\n },\n onStateChange: _this2.onStateChange,\n onError: function onError(event) {\n return _onError(event.data);\n }\n },\n host: MATCH_NOCOOKIE.test(url) ? NOCOOKIE_HOST : undefined\n }, embedOptions));\n }, _onError);\n\n if (embedOptions.events) {\n console.warn('Using `embedOptions.events` will likely break things. Use ReactPlayer’s callback props instead, eg onReady, onPlay, onPause');\n }\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('playVideo');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pauseVideo');\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (!document.body.contains(this.callPlayer('getIframe'))) return;\n this.callPlayer('stopVideo');\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(amount) {\n var keepPlaying = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.callPlayer('seekTo', amount);\n\n if (!keepPlaying && !this.props.playing) {\n this.pause();\n }\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(rate) {\n this.callPlayer('setPlaybackRate', rate);\n }\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentTime');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.callPlayer('getVideoLoadedFraction') * this.getDuration();\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.ref\n }));\n }\n }]);\n\n return YouTube;\n}(_react.Component);\n\nexports[\"default\"] = YouTube;\n\n_defineProperty(YouTube, \"displayName\", 'YouTube');\n\n_defineProperty(YouTube, \"canPlay\", _patterns.canPlay.youtube);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = require(\"react\");\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _default = [{\n key: 'youtube',\n name: 'YouTube',\n canPlay: _patterns.canPlay.youtube,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./YouTube'));\n });\n })\n}, {\n key: 'soundcloud',\n name: 'SoundCloud',\n canPlay: _patterns.canPlay.soundcloud,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./SoundCloud'));\n });\n })\n}, {\n key: 'vimeo',\n name: 'Vimeo',\n canPlay: _patterns.canPlay.vimeo,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Vimeo'));\n });\n })\n}, {\n key: 'facebook',\n name: 'Facebook',\n canPlay: _patterns.canPlay.facebook,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Facebook'));\n });\n })\n}, {\n key: 'streamable',\n name: 'Streamable',\n canPlay: _patterns.canPlay.streamable,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Streamable'));\n });\n })\n}, {\n key: 'wistia',\n name: 'Wistia',\n canPlay: _patterns.canPlay.wistia,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Wistia'));\n });\n })\n}, {\n key: 'twitch',\n name: 'Twitch',\n canPlay: _patterns.canPlay.twitch,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Twitch'));\n });\n })\n}, {\n key: 'dailymotion',\n name: 'DailyMotion',\n canPlay: _patterns.canPlay.dailymotion,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./DailyMotion'));\n });\n })\n}, {\n key: 'mixcloud',\n name: 'Mixcloud',\n canPlay: _patterns.canPlay.mixcloud,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Mixcloud'));\n });\n })\n}, {\n key: 'vidyard',\n name: 'Vidyard',\n canPlay: _patterns.canPlay.vidyard,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Vidyard'));\n });\n })\n}, {\n key: 'kaltura',\n name: 'Kaltura',\n canPlay: _patterns.canPlay.kaltura,\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Kaltura'));\n });\n })\n}, {\n key: 'file',\n name: 'FilePlayer',\n canPlay: _patterns.canPlay.file,\n canEnablePIP: function canEnablePIP(url) {\n return _patterns.canPlay.file(url) && (document.pictureInPictureEnabled || (0, _utils.supportsWebKitPresentationMode)()) && !_patterns.AUDIO_EXTENSIONS.test(url);\n },\n lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./FilePlayer'));\n });\n })\n}];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultProps = exports.propTypes = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar string = _propTypes[\"default\"].string,\n bool = _propTypes[\"default\"].bool,\n number = _propTypes[\"default\"].number,\n array = _propTypes[\"default\"].array,\n oneOfType = _propTypes[\"default\"].oneOfType,\n shape = _propTypes[\"default\"].shape,\n object = _propTypes[\"default\"].object,\n func = _propTypes[\"default\"].func,\n node = _propTypes[\"default\"].node;\nvar propTypes = {\n url: oneOfType([string, array, object]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([string, number]),\n height: oneOfType([string, number]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n stopOnUnmount: bool,\n light: oneOfType([bool, string, object]),\n playIcon: node,\n previewTabIndex: number,\n fallback: node,\n oEmbedUrl: string,\n wrapper: oneOfType([string, func, shape({\n render: func.isRequired\n })]),\n config: shape({\n soundcloud: shape({\n options: object\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n onUnstarted: func\n }),\n facebook: shape({\n appId: string,\n version: string,\n playerId: string,\n attributes: object\n }),\n dailymotion: shape({\n params: object\n }),\n vimeo: shape({\n playerOptions: object,\n title: string\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceSafariHLS: bool,\n forceDisableHls: bool,\n forceDASH: bool,\n forceFLV: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string,\n flvVersion: string\n }),\n wistia: shape({\n options: object,\n playerId: string,\n customControls: array\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object,\n playerId: string\n }),\n vidyard: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onPlaybackRateChange: func,\n onPlaybackQualityChange: func,\n onProgress: func,\n onClickPreview: func,\n onEnablePIP: func,\n onDisablePIP: func\n};\nexports.propTypes = propTypes;\n\nvar noop = function noop() {};\n\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: '640px',\n height: '360px',\n style: {},\n progressInterval: 1000,\n playsinline: false,\n pip: false,\n stopOnUnmount: true,\n light: false,\n fallback: null,\n wrapper: 'div',\n previewTabIndex: 0,\n oEmbedUrl: 'https://noembed.com/embed?url={url}',\n config: {\n soundcloud: {\n options: {\n visual: true,\n // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n onUnstarted: noop\n },\n facebook: {\n appId: '1309697205772819',\n version: 'v3.3',\n playerId: null,\n attributes: {}\n },\n dailymotion: {\n params: {\n api: 1,\n 'endscreen-enable': false\n }\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n title: null\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n forceFLV: false,\n hlsOptions: {},\n hlsVersion: '1.1.4',\n dashVersion: '3.1.3',\n flvVersion: '1.5.0',\n forceDisableHls: false\n },\n wistia: {\n options: {},\n playerId: null,\n customControls: null\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {},\n playerId: null\n },\n vidyard: {\n options: {}\n }\n },\n onReady: noop,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onPlaybackRateChange: noop,\n onPlaybackQualityChange: noop,\n onProgress: noop,\n onClickPreview: noop,\n onEnablePIP: noop,\n onDisablePIP: noop\n};\nexports.defaultProps = defaultProps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseStartTime = parseStartTime;\nexports.parseEndTime = parseEndTime;\nexports.randomString = randomString;\nexports.queryString = queryString;\nexports.getSDK = getSDK;\nexports.getConfig = getConfig;\nexports.omit = omit;\nexports.callPlayer = callPlayer;\nexports.isMediaStream = isMediaStream;\nexports.isBlobUrl = isBlobUrl;\nexports.supportsWebKitPresentationMode = supportsWebKitPresentationMode;\n\nvar _loadScript = _interopRequireDefault(require(\"load-script\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/;\nvar MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/;\nvar MATCH_START_STAMP = /(\\d+)(h|m|s)/g;\nvar MATCH_NUMERIC = /^\\d+$/; // Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\n\nfunction parseTimeParam(url, pattern) {\n if (url instanceof Array) {\n return undefined;\n }\n\n var match = url.match(pattern);\n\n if (match) {\n var stamp = match[1];\n\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp);\n }\n\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp);\n }\n }\n\n return undefined;\n}\n\nfunction parseTimeString(stamp) {\n var seconds = 0;\n var array = MATCH_START_STAMP.exec(stamp);\n\n while (array !== null) {\n var _array = array,\n _array2 = _slicedToArray(_array, 3),\n count = _array2[1],\n period = _array2[2];\n\n if (period === 'h') seconds += parseInt(count, 10) * 60 * 60;\n if (period === 'm') seconds += parseInt(count, 10) * 60;\n if (period === 's') seconds += parseInt(count, 10);\n array = MATCH_START_STAMP.exec(stamp);\n }\n\n return seconds;\n}\n\nfunction parseStartTime(url) {\n return parseTimeParam(url, MATCH_START_QUERY);\n}\n\nfunction parseEndTime(url) {\n return parseTimeParam(url, MATCH_END_QUERY);\n} // http://stackoverflow.com/a/38622545\n\n\nfunction randomString() {\n return Math.random().toString(36).substr(2, 5);\n}\n\nfunction queryString(object) {\n return Object.keys(object).map(function (key) {\n return \"\".concat(key, \"=\").concat(object[key]);\n }).join('&');\n}\n\nfunction getGlobal(key) {\n if (window[key]) {\n return window[key];\n }\n\n if (window.exports && window.exports[key]) {\n return window.exports[key];\n }\n\n if (window.module && window.module.exports && window.module.exports[key]) {\n return window.module.exports[key];\n }\n\n return null;\n} // Util function to load an external SDK\n// or return the SDK if it is already loaded\n\n\nvar requests = {};\n\nfunction getSDK(url, sdkGlobal) {\n var sdkReady = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var isLoaded = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n return true;\n };\n var fetchScript = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _loadScript[\"default\"];\n var existingGlobal = getGlobal(sdkGlobal);\n\n if (existingGlobal && isLoaded(existingGlobal)) {\n return Promise.resolve(existingGlobal);\n }\n\n return new Promise(function (resolve, reject) {\n // If we are already loading the SDK, add the resolve and reject\n // functions to the existing array of requests\n if (requests[url]) {\n requests[url].push({\n resolve: resolve,\n reject: reject\n });\n return;\n }\n\n requests[url] = [{\n resolve: resolve,\n reject: reject\n }];\n\n var onLoaded = function onLoaded(sdk) {\n // When loaded, resolve all pending request promises\n requests[url].forEach(function (request) {\n return request.resolve(sdk);\n });\n };\n\n if (sdkReady) {\n var previousOnReady = window[sdkReady];\n\n window[sdkReady] = function () {\n if (previousOnReady) previousOnReady();\n onLoaded(getGlobal(sdkGlobal));\n };\n }\n\n fetchScript(url, function (err) {\n if (err) {\n // Loading the SDK failed – reject all requests and\n // reset the array of requests for this SDK\n requests[url].forEach(function (request) {\n return request.reject(err);\n });\n requests[url] = null;\n } else if (!sdkReady) {\n onLoaded(getGlobal(sdkGlobal));\n }\n });\n });\n}\n\nfunction getConfig(props, defaultProps) {\n return (0, _deepmerge[\"default\"])(defaultProps.config, props.config);\n}\n\nfunction omit(object) {\n var _ref;\n\n for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n var omitKeys = (_ref = []).concat.apply(_ref, arrays);\n\n var output = {};\n var keys = Object.keys(object);\n\n for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {\n var key = _keys[_i2];\n\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key];\n }\n }\n\n return output;\n}\n\nfunction callPlayer(method) {\n var _this$player;\n\n // Util method for calling a method on this.player\n // but guard against errors and console.warn instead\n if (!this.player || !this.player[method]) {\n var message = \"ReactPlayer: \".concat(this.constructor.displayName, \" player could not call %c\").concat(method, \"%c \\u2013 \");\n\n if (!this.player) {\n message += 'The player was not available';\n } else if (!this.player[method]) {\n message += 'The method was not available';\n }\n\n console.warn(message, 'font-weight: bold', '');\n return null;\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$player = this.player)[method].apply(_this$player, args);\n}\n\nfunction isMediaStream(url) {\n return typeof window !== 'undefined' && typeof window.MediaStream !== 'undefined' && url instanceof window.MediaStream;\n}\n\nfunction isBlobUrl(url) {\n return /^blob:/.test(url);\n}\n\nfunction supportsWebKitPresentationMode() {\n var video = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.createElement('video');\n // Check if Safari supports PiP, and is not on mobile (other than iPad)\n // iPhone safari appears to \"support\" PiP through the check, however PiP does not function\n var notMobile = /iPhone|iPod/.test(navigator.userAgent) === false;\n return video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function' && notMobile;\n}","'use strict';Object.defineProperty(exports,'__esModule',{value:true});var $inject_window_ResizeObserver=require('resize-observer-polyfill'),React=require('react'),reactDom=require('react-dom');function _interopDefaultLegacy(e){return e&&typeof e==='object'&&'default'in e?e:{'default':e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n[\"default\"]=e;return Object.freeze(n)}var $inject_window_ResizeObserver__default=/*#__PURE__*/_interopDefaultLegacy($inject_window_ResizeObserver);var React__namespace=/*#__PURE__*/_interopNamespace(React);/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\nfunction isObject$3(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject$3;/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal$1;var freeGlobal = _freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$2 = freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$2;var root$1 = _root;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now$1 = function() {\n return root$1.Date.now();\n};\n\nvar now_1 = now$1;/** Used to match a single whitespace character. */\n\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex$1(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nvar _trimmedEndIndex = trimmedEndIndex$1;var trimmedEndIndex = _trimmedEndIndex;\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim$1(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nvar _baseTrim = baseTrim$1;var root = _root;\n\n/** Built-in value references. */\nvar Symbol$2 = root.Symbol;\n\nvar _Symbol = Symbol$2;var Symbol$1 = _Symbol;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto$1.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag$1(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag$1;/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString$1(value) {\n return nativeObjectToString.call(value);\n}\n\nvar _objectToString = objectToString$1;var Symbol = _Symbol,\n getRawTag = _getRawTag,\n objectToString = _objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag$1(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag$1;/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction isObjectLike$1(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike$1;var baseGetTag = _baseGetTag,\n isObjectLike = isObjectLike_1;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol$1(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol$1;var baseTrim = _baseTrim,\n isObject$2 = isObject_1,\n isSymbol = isSymbol_1;\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber$1(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject$2(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject$2(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar toNumber_1 = toNumber$1;var isObject$1 = isObject_1,\n now = now_1,\n toNumber = toNumber_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce$1(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n wait = toNumber(wait) || 0;\n if (isObject$1(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nvar debounce_1 = debounce$1;var debounce = debounce_1,\n isObject = isObject_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nvar throttle_1 = throttle;var patchResizeHandler = function (resizeCallback, refreshMode, refreshRate, refreshOptions) {\r\n switch (refreshMode) {\r\n case 'debounce':\r\n return debounce_1(resizeCallback, refreshRate, refreshOptions);\r\n case 'throttle':\r\n return throttle_1(resizeCallback, refreshRate, refreshOptions);\r\n default:\r\n return resizeCallback;\r\n }\r\n};\r\nvar isFunction = function (fn) { return typeof fn === 'function'; };\r\nvar isSSR = function () { return typeof window === 'undefined'; };\r\nvar isDOMElement = function (element) { return element instanceof Element || element instanceof HTMLDocument; };\r\nvar createNotifier = function (onResize, setSize, handleWidth, handleHeight) {\r\n return function (_a) {\r\n var width = _a.width, height = _a.height;\r\n setSize(function (prev) {\r\n if (prev.width === width && prev.height === height) {\r\n // skip if dimensions haven't changed\r\n return prev;\r\n }\r\n if ((prev.width === width && !handleHeight) || (prev.height === height && !handleWidth)) {\r\n // process `handleHeight/handleWidth` props\r\n return prev;\r\n }\r\n if (onResize && isFunction(onResize)) {\r\n onResize(width, height);\r\n }\r\n return { width: width, height: height };\r\n });\r\n };\r\n};var ResizeDetector = /** @class */ (function (_super) {\r\n __extends(ResizeDetector, _super);\r\n function ResizeDetector(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.cancelHandler = function () {\r\n if (_this.resizeHandler && _this.resizeHandler.cancel) {\r\n // cancel debounced handler\r\n _this.resizeHandler.cancel();\r\n _this.resizeHandler = null;\r\n }\r\n };\r\n _this.attachObserver = function () {\r\n var _a = _this.props, targetRef = _a.targetRef, observerOptions = _a.observerOptions;\r\n if (isSSR()) {\r\n return;\r\n }\r\n if (targetRef && targetRef.current) {\r\n _this.targetRef.current = targetRef.current;\r\n }\r\n var element = _this.getElement();\r\n if (!element) {\r\n // can't find element to observe\r\n return;\r\n }\r\n if (_this.observableElement && _this.observableElement === element) {\r\n // element is already observed\r\n return;\r\n }\r\n _this.observableElement = element;\r\n _this.resizeObserver.observe(element, observerOptions);\r\n };\r\n _this.getElement = function () {\r\n var _a = _this.props, querySelector = _a.querySelector, targetDomEl = _a.targetDomEl;\r\n if (isSSR())\r\n return null;\r\n // in case we pass a querySelector\r\n if (querySelector)\r\n return document.querySelector(querySelector);\r\n // in case we pass a DOM element\r\n if (targetDomEl && isDOMElement(targetDomEl))\r\n return targetDomEl;\r\n // in case we pass a React ref using React.createRef()\r\n if (_this.targetRef && isDOMElement(_this.targetRef.current))\r\n return _this.targetRef.current;\r\n // the worse case when we don't receive any information from the parent and the library doesn't add any wrappers\r\n // we have to use a deprecated `findDOMNode` method in order to find a DOM element to attach to\r\n var currentElement = reactDom.findDOMNode(_this);\r\n if (!currentElement)\r\n return null;\r\n var renderType = _this.getRenderType();\r\n switch (renderType) {\r\n case 'renderProp':\r\n return currentElement;\r\n case 'childFunction':\r\n return currentElement;\r\n case 'child':\r\n return currentElement;\r\n case 'childArray':\r\n return currentElement;\r\n default:\r\n return currentElement.parentElement;\r\n }\r\n };\r\n _this.createResizeHandler = function (entries) {\r\n var _a = _this.props, _b = _a.handleWidth, handleWidth = _b === void 0 ? true : _b, _c = _a.handleHeight, handleHeight = _c === void 0 ? true : _c, onResize = _a.onResize;\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n var notifyResize = createNotifier(onResize, _this.setState.bind(_this), handleWidth, handleHeight);\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !_this.skipOnMount && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n _this.skipOnMount = false;\r\n });\r\n };\r\n _this.getRenderType = function () {\r\n var _a = _this.props, render = _a.render, children = _a.children;\r\n if (isFunction(render)) {\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'renderProp';\r\n }\r\n if (isFunction(children)) {\r\n return 'childFunction';\r\n }\r\n if (React.isValidElement(children)) {\r\n return 'child';\r\n }\r\n if (Array.isArray(children)) {\r\n // DEPRECATED. Wrap children with a single parent\r\n return 'childArray';\r\n }\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'parent';\r\n };\r\n var skipOnMount = props.skipOnMount, refreshMode = props.refreshMode, _a = props.refreshRate, refreshRate = _a === void 0 ? 1000 : _a, refreshOptions = props.refreshOptions;\r\n _this.state = {\r\n width: undefined,\r\n height: undefined\r\n };\r\n _this.skipOnMount = skipOnMount;\r\n _this.targetRef = React.createRef();\r\n _this.observableElement = null;\r\n if (isSSR()) {\r\n return _this;\r\n }\r\n _this.resizeHandler = patchResizeHandler(_this.createResizeHandler, refreshMode, refreshRate, refreshOptions);\r\n _this.resizeObserver = new $inject_window_ResizeObserver__default[\"default\"](_this.resizeHandler);\r\n return _this;\r\n }\r\n ResizeDetector.prototype.componentDidMount = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentDidUpdate = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentWillUnmount = function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n this.resizeObserver.disconnect();\r\n this.cancelHandler();\r\n };\r\n ResizeDetector.prototype.render = function () {\r\n var _a = this.props, render = _a.render, children = _a.children, _b = _a.nodeType, WrapperTag = _b === void 0 ? 'div' : _b;\r\n var _c = this.state, width = _c.width, height = _c.height;\r\n var childProps = { width: width, height: height, targetRef: this.targetRef };\r\n var renderType = this.getRenderType();\r\n var typedChildren;\r\n switch (renderType) {\r\n case 'renderProp':\r\n return render && render(childProps);\r\n case 'childFunction':\r\n typedChildren = children;\r\n return typedChildren(childProps);\r\n case 'child':\r\n // @TODO bug prone logic\r\n typedChildren = children;\r\n if (typedChildren.type && typeof typedChildren.type === 'string') {\r\n // child is a native DOM elements such as div, span etc\r\n childProps.targetRef; var nativeProps = __rest(childProps, [\"targetRef\"]);\r\n return React.cloneElement(typedChildren, nativeProps);\r\n }\r\n // class or functional component otherwise\r\n return React.cloneElement(typedChildren, childProps);\r\n case 'childArray':\r\n typedChildren = children;\r\n return typedChildren.map(function (el) { return !!el && React.cloneElement(el, childProps); });\r\n default:\r\n return React__namespace.createElement(WrapperTag, null);\r\n }\r\n };\r\n return ResizeDetector;\r\n}(React.PureComponent));function withResizeDetector(ComponentInner, options) {\r\n if (options === void 0) { options = {}; }\r\n var ResizeDetectorHOC = /** @class */ (function (_super) {\r\n __extends(ResizeDetectorHOC, _super);\r\n function ResizeDetectorHOC() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.ref = React.createRef();\r\n return _this;\r\n }\r\n ResizeDetectorHOC.prototype.render = function () {\r\n var _a = this.props, forwardedRef = _a.forwardedRef, rest = __rest(_a, [\"forwardedRef\"]);\r\n var targetRef = forwardedRef !== null && forwardedRef !== void 0 ? forwardedRef : this.ref;\r\n return (React__namespace.createElement(ResizeDetector, __assign({}, options, { targetRef: targetRef }),\r\n React__namespace.createElement(ComponentInner, __assign({ targetRef: targetRef }, rest))));\r\n };\r\n return ResizeDetectorHOC;\r\n }(React.Component));\r\n function forwardRefWrapper(props, ref) {\r\n return React__namespace.createElement(ResizeDetectorHOC, __assign({}, props, { forwardedRef: ref }));\r\n }\r\n var name = ComponentInner.displayName || ComponentInner.name;\r\n forwardRefWrapper.displayName = \"withResizeDetector(\".concat(name, \")\");\r\n return React.forwardRef(forwardRefWrapper);\r\n}var useEnhancedEffect = isSSR() ? React.useEffect : React.useLayoutEffect;\r\nfunction useResizeDetector(props) {\r\n if (props === void 0) { props = {}; }\r\n var _a = props.skipOnMount, skipOnMount = _a === void 0 ? false : _a, refreshMode = props.refreshMode, _b = props.refreshRate, refreshRate = _b === void 0 ? 1000 : _b, refreshOptions = props.refreshOptions, _c = props.handleWidth, handleWidth = _c === void 0 ? true : _c, _d = props.handleHeight, handleHeight = _d === void 0 ? true : _d, targetRef = props.targetRef, observerOptions = props.observerOptions, onResize = props.onResize;\r\n var skipResize = React.useRef(skipOnMount);\r\n var localRef = React.useRef(null);\r\n var ref = (targetRef !== null && targetRef !== void 0 ? targetRef : localRef);\r\n var resizeHandler = React.useRef();\r\n var _e = React.useState({\r\n width: undefined,\r\n height: undefined\r\n }), size = _e[0], setSize = _e[1];\r\n useEnhancedEffect(function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n var notifyResize = createNotifier(onResize, setSize, handleWidth, handleHeight);\r\n var resizeCallback = function (entries) {\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !skipResize.current && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n skipResize.current = false;\r\n });\r\n };\r\n resizeHandler.current = patchResizeHandler(resizeCallback, refreshMode, refreshRate, refreshOptions);\r\n var resizeObserver = new $inject_window_ResizeObserver__default[\"default\"](resizeHandler.current);\r\n if (ref.current) {\r\n // Something wrong with typings here...\r\n resizeObserver.observe(ref.current, observerOptions);\r\n }\r\n return function () {\r\n resizeObserver.disconnect();\r\n var patchedResizeHandler = resizeHandler.current;\r\n if (patchedResizeHandler && patchedResizeHandler.cancel) {\r\n patchedResizeHandler.cancel();\r\n }\r\n };\r\n }, [refreshMode, refreshRate, refreshOptions, handleWidth, handleHeight, onResize, observerOptions, ref.current]);\r\n return __assign({ ref: ref }, size);\r\n}exports[\"default\"]=ResizeDetector;exports.useResizeDetector=useResizeDetector;exports.withResizeDetector=withResizeDetector;//# sourceMappingURL=withPolyfill.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.InkBar = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar InkBar = function InkBar(_ref) {\n var left = _ref.left,\n width = _ref.width;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"RRT__inkbar-wrapper\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"RRT__inkbar\",\n style: {\n left: left,\n width: width\n }\n }));\n};\n\nexports.InkBar = InkBar;\nvar _default = InkBar;\nexports[\"default\"] = _default;\nInkBar.propTypes = {\n left: _propTypes[\"default\"].number,\n width: _propTypes[\"default\"].number\n};\nInkBar.defaultProps = {\n left: 0,\n width: 0\n};","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ShowMore = /*#__PURE__*/function (_Component) {\n _inherits(ShowMore, _Component);\n\n var _super = _createSuper(ShowMore);\n\n function ShowMore() {\n var _this;\n\n _classCallCheck(this, ShowMore);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n return _this.setState({\n isFocused: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n return _this.setState({\n isFocused: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n var _this$state = _this.state,\n isFocused = _this$state.isFocused,\n isHidden = _this$state.isHidden;\n\n if (event.keyCode === 13) {\n if (isFocused) {\n _this.setState({\n isHidden: !isHidden\n });\n } else if (!isHidden) {\n _this.setState({\n isHidden: true\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"close\", function () {\n var isHidden = _this.state.isHidden;\n\n if (!isHidden) {\n _this.setState({\n isHidden: true\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleVisibility\", function (event) {\n var isHidden = _this.state.isHidden;\n event.stopPropagation();\n\n _this.setState({\n isHidden: !isHidden\n });\n });\n\n _this.state = {\n isFocused: false,\n isHidden: true\n };\n return _this;\n }\n\n _createClass(ShowMore, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (typeof window !== 'undefined') {\n window.addEventListener('click', this.close);\n window.addEventListener('keydown', this.onKeyDown);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n children = _this$props.children,\n isShown = _this$props.isShown,\n hasChildSelected = _this$props.hasChildSelected;\n return children.length !== nextProps.children.length || isShown !== nextProps.isShown || hasChildSelected !== nextProps.hasChildSelected || this.state !== nextState;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('click', this.close);\n window.removeEventListener('keydown', this.onKeyDown);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n isShown = _this$props2.isShown,\n children = _this$props2.children,\n onShowMoreChanged = _this$props2.onShowMoreChanged,\n hasChildSelected = _this$props2.hasChildSelected,\n label = _this$props2.label;\n var isHidden = this.state.isHidden;\n\n if (!isShown || !children || !children.length) {\n return null;\n }\n\n var isListHidden = isHidden;\n var showMoreStyles = (0, _classnames[\"default\"])({\n RRT__showmore: true,\n 'RRT__showmore--selected': hasChildSelected\n });\n var listStyles = (0, _classnames[\"default\"])({\n 'RRT__showmore-list': true,\n 'RRT__showmore-list--opened': !isListHidden\n });\n var showMoreLabelStyles = (0, _classnames[\"default\"])({\n 'RRT__showmore-label': true,\n 'RRT__showmore-label--selected': !isListHidden\n });\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: onShowMoreChanged,\n className: showMoreStyles,\n role: \"navigation\",\n tabIndex: \"0\",\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onClick: this.toggleVisibility\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: showMoreLabelStyles\n }, label), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: listStyles,\n \"aria-hidden\": isListHidden,\n role: \"menu\"\n }, children));\n }\n }]);\n\n return ShowMore;\n}(_react.Component);\n\nexports[\"default\"] = ShowMore;\nShowMore.propTypes = {\n children: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].array, _propTypes[\"default\"].object, _propTypes[\"default\"].string]),\n hasChildSelected: _propTypes[\"default\"].bool,\n isShown: _propTypes[\"default\"].bool.isRequired,\n onShowMoreChanged: _propTypes[\"default\"].func,\n label: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node])\n};\nShowMore.defaultProps = {\n children: undefined,\n hasChildSelected: false,\n label: '...',\n onShowMoreChanged: function onShowMoreChanged() {\n return null;\n }\n};","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Tab = /*#__PURE__*/function (_Component) {\n _inherits(Tab, _Component);\n\n var _super = _createSuper(Tab);\n\n function Tab() {\n var _this;\n\n _classCallCheck(this, Tab);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onTabClick\", function (evt) {\n var _this$props = _this.props,\n onClick = _this$props.onClick,\n originalKey = _this$props.originalKey;\n onClick(originalKey, evt);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderRemovableTab\", function () {\n var _this$props2 = _this.props,\n children = _this$props2.children,\n onRemove = _this$props2.onRemove;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"RRT__removable\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"RRT__removable-text\"\n }, children), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"RRT__removable-icon\",\n onClick: onRemove\n }, \"x\"));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTab\", function () {\n var _this$props3 = _this.props,\n children = _this$props3.children,\n allowRemove = _this$props3.allowRemove;\n\n if (allowRemove) {\n return _this.renderRemovableTab();\n }\n\n return children;\n });\n\n return _this;\n }\n\n _createClass(Tab, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this$props4 = this.props,\n children = _this$props4.children,\n selected = _this$props4.selected,\n classNames = _this$props4.classNames;\n return children !== nextProps.children || selected !== nextProps.selected || classNames !== nextProps.classNames;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n id = _this$props5.id,\n classNames = _this$props5.classNames,\n selected = _this$props5.selected,\n disabled = _this$props5.disabled,\n panelId = _this$props5.panelId,\n onFocus = _this$props5.onFocus,\n onBlur = _this$props5.onBlur,\n originalKey = _this$props5.originalKey;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: function ref(e) {\n return _this2.tab = e;\n },\n role: \"tab\",\n className: classNames,\n id: id,\n \"aria-selected\": selected ? 'true' : 'false',\n \"aria-expanded\": selected ? 'true' : 'false',\n \"aria-disabled\": disabled ? 'true' : 'false',\n \"aria-controls\": panelId,\n tabIndex: \"0\",\n onClick: this.onTabClick,\n onFocus: onFocus(originalKey),\n onBlur: onBlur\n }, this.renderTab());\n }\n }]);\n\n return Tab;\n}(_react.Component);\n\nexports[\"default\"] = Tab;\nTab.propTypes = {\n children: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].array, _propTypes[\"default\"].object, _propTypes[\"default\"].string]),\n disabled: _propTypes[\"default\"].bool,\n // generic props\n panelId: _propTypes[\"default\"].string.isRequired,\n selected: _propTypes[\"default\"].bool.isRequired,\n onClick: _propTypes[\"default\"].func.isRequired,\n onRemove: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func.isRequired,\n onBlur: _propTypes[\"default\"].func.isRequired,\n allowRemove: _propTypes[\"default\"].bool,\n id: _propTypes[\"default\"].string.isRequired,\n originalKey: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]).isRequired,\n classNames: _propTypes[\"default\"].string.isRequired\n};\nTab.defaultProps = {\n children: undefined,\n onRemove: function onRemove() {},\n allowRemove: false,\n disabled: false\n};","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar TabPanel = /*#__PURE__*/function (_Component) {\n _inherits(TabPanel, _Component);\n\n var _super = _createSuper(TabPanel);\n\n function TabPanel(props) {\n var _this;\n\n _classCallCheck(this, TabPanel);\n\n _this = _super.call(this, props);\n _this.state = {\n renderedAtLeastOnce: !props.isHidden\n };\n return _this;\n }\n\n _createClass(TabPanel, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this$props = this.props,\n children = _this$props.children,\n getContent = _this$props.getContent,\n classNames = _this$props.classNames,\n isHidden = _this$props.isHidden;\n return getContent !== nextProps.getContent || children !== nextProps.children || classNames !== nextProps.classNames || isHidden !== nextProps.isHidden;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n classNames = _this$props2.classNames,\n id = _this$props2.id,\n tabId = _this$props2.tabId,\n children = _this$props2.children,\n getContent = _this$props2.getContent,\n isHidden = _this$props2.isHidden;\n var renderedAtLeastOnce = this.state.renderedAtLeastOnce;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: classNames,\n role: \"tabpanel\",\n id: id,\n \"aria-labelledby\": tabId,\n \"aria-hidden\": isHidden\n }, getContent && renderedAtLeastOnce && getContent(), !getContent && children);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n return {\n renderedAtLeastOnce: state.renderedAtLeastOnce || !props.isHidden\n };\n }\n }]);\n\n return TabPanel;\n}(_react.Component);\n\nexports[\"default\"] = TabPanel;\nTabPanel.propTypes = {\n getContent: _propTypes[\"default\"].func,\n children: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].array, _propTypes[\"default\"].object, _propTypes[\"default\"].string]),\n id: _propTypes[\"default\"].string.isRequired,\n isHidden: _propTypes[\"default\"].bool,\n // generic props\n classNames: _propTypes[\"default\"].string.isRequired,\n tabId: _propTypes[\"default\"].string.isRequired\n};\nTabPanel.defaultProps = {\n getContent: undefined,\n children: undefined,\n isHidden: false\n};","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _withPolyfill = _interopRequireDefault(require(\"react-resize-detector/build/withPolyfill\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.throttle\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _ShowMore = _interopRequireDefault(require(\"./components/ShowMore\"));\n\nvar _Tab = _interopRequireDefault(require(\"./components/Tab\"));\n\nvar _TabPanel = _interopRequireDefault(require(\"./components/TabPanel\"));\n\nvar _InkBar = _interopRequireDefault(require(\"./components/InkBar\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar tabPrefix = 'tab-';\nvar panelPrefix = 'panel-';\n\nvar Tabs = /*#__PURE__*/function (_Component) {\n _inherits(Tabs, _Component);\n\n var _super = _createSuper(Tabs);\n\n function Tabs(props) {\n var _this;\n\n _classCallCheck(this, Tabs);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function () {\n if (_this.tabsWrapper.current) {\n var currentIsCollapsed = _this.getIsCollapsed();\n\n _this.setState({\n blockWidth: _this.tabsWrapper.current.offsetWidth\n }, function () {\n var items = _this.props.items;\n var selectedTabKey = _this.state.selectedTabKey;\n\n var nextIsCollapsed = _this.getIsCollapsed();\n\n if (currentIsCollapsed && !nextIsCollapsed && selectedTabKey === -1 && items && items.length) {\n var firstTabKey = items[0].key || 0;\n\n _this.setState({\n selectedTabKey: firstTabKey\n });\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChangeTab\", function (nextTabKey, evt) {\n var _this$props = _this.props,\n beforeChange = _this$props.beforeChange,\n onChange = _this$props.onChange;\n var selectedTabKey = _this.state.selectedTabKey;\n\n if (typeof beforeChange === 'function') {\n var beforeChangeRes = beforeChange({\n selectedTabKey: selectedTabKey,\n nextTabKey: nextTabKey\n });\n\n if (beforeChangeRes === false) {\n evt.preventDefault();\n return;\n }\n }\n\n var isCollapsed = _this.getIsCollapsed();\n\n if (isCollapsed && selectedTabKey === nextTabKey) {\n // hide on mobile\n _this.setState({\n selectedTabKey: -1\n });\n } else {\n // change active tab\n _this.setState({\n selectedTabKey: nextTabKey\n });\n }\n\n if (onChange) {\n onChange(nextTabKey);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocusTab\", function (focusedTabKey) {\n return function () {\n return _this.setState({\n focusedTabKey: focusedTabKey\n });\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlurTab\", function () {\n return _this.setState({\n focusedTabKey: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n var focusedTabKey = _this.state.focusedTabKey;\n\n if (event.keyCode === 13 && focusedTabKey !== null) {\n _this.setState({\n selectedTabKey: focusedTabKey\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setTabsDimensions\", function () {\n if (!_this.tabsWrapper.current) {\n // it shouldn't happen ever. Just a paranoic check\n return;\n }\n\n var tabDimensions = _this.state.tabDimensions; // initial wrapper width calculation\n\n var blockWidth = _this.tabsWrapper.current.offsetWidth; // calculate width and offset for each tab\n\n var tabsTotalWidth = 0;\n var tabDimensionsNext = {};\n Object.keys(_this.tabRefs).forEach(function (key) {\n if (_this.tabRefs[key]) {\n var tabKey = key.replace(tabPrefix, '');\n var width = _this.tabRefs[key].tab.offsetWidth;\n\n if (width) {\n tabDimensionsNext[tabKey] = {\n width: width,\n offset: tabsTotalWidth\n };\n } else {\n tabDimensionsNext[tabKey] = tabDimensions[tabKey];\n }\n\n tabsTotalWidth += tabDimensionsNext[tabKey].width;\n }\n });\n\n _this.setState({\n tabDimensions: tabDimensionsNext,\n tabsTotalWidth: tabsTotalWidth,\n blockWidth: blockWidth\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getTabs\", function () {\n var _this$props2 = _this.props,\n showMore = _this$props2.showMore,\n transform = _this$props2.transform,\n transformWidth = _this$props2.transformWidth,\n items = _this$props2.items,\n allowRemove = _this$props2.allowRemove,\n removeActiveOnly = _this$props2.removeActiveOnly,\n _onRemove = _this$props2.onRemove;\n var _this$state = _this.state,\n blockWidth = _this$state.blockWidth,\n tabsTotalWidth = _this$state.tabsTotalWidth,\n tabDimensions = _this$state.tabDimensions,\n showMoreWidth = _this$state.showMoreWidth;\n\n var selectedTabKey = _this.getSelectedTabKey();\n\n var collapsed = blockWidth && transform && blockWidth < transformWidth;\n var tabIndex = 0;\n var availableWidth = blockWidth - (tabsTotalWidth > blockWidth ? showMoreWidth : 0);\n return items.reduce(function (result, item, index) {\n var _item$key = item.key,\n key = _item$key === void 0 ? index : _item$key,\n title = item.title,\n content = item.content,\n getContent = item.getContent,\n disabled = item.disabled,\n tabClassName = item.tabClassName,\n panelClassName = item.panelClassName;\n var selected = selectedTabKey === key;\n var payload = {\n tabIndex: tabIndex,\n collapsed: collapsed,\n selected: selected,\n disabled: disabled,\n key: key\n };\n\n var tabPayload = _objectSpread(_objectSpread({}, payload), {}, {\n title: title,\n onRemove: function onRemove(evt) {\n if (typeof _onRemove === 'function') {\n _onRemove(key, evt);\n }\n },\n allowRemove: allowRemove && (!removeActiveOnly || selected),\n className: tabClassName\n });\n\n var panelPayload = _objectSpread(_objectSpread({}, payload), {}, {\n content: content,\n getContent: getContent,\n className: panelClassName\n });\n\n var tabWidth = tabDimensions[key] ? tabDimensions[key].width : 0;\n tabIndex += 1;\n /* eslint-disable no-param-reassign */\n\n if ( // don't need to `Show more` button\n !showMore || // initial call\n !blockWidth || // collapsed mode\n collapsed || // all tabs are fit into the block\n blockWidth > tabsTotalWidth || // current tab fit into the block\n availableWidth - tabWidth > 0) {\n result.tabsVisible.push(tabPayload);\n } else {\n result.tabsHidden.push(tabPayload);\n if (selected) result.isSelectedTabHidden = true;\n }\n /* eslint-enable no-param-reassign */\n\n\n result.panels[key] = panelPayload; // eslint-disable-line no-param-reassign\n\n availableWidth -= tabWidth;\n return result;\n }, {\n tabsVisible: [],\n tabsHidden: [],\n panels: {},\n isSelectedTabHidden: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getTabProps\", function (_ref) {\n var title = _ref.title,\n key = _ref.key,\n selected = _ref.selected,\n collapsed = _ref.collapsed,\n tabIndex = _ref.tabIndex,\n disabled = _ref.disabled,\n className = _ref.className,\n onRemove = _ref.onRemove,\n allowRemove = _ref.allowRemove;\n return {\n selected: selected,\n allowRemove: allowRemove,\n children: title,\n key: tabPrefix + key,\n id: tabPrefix + key,\n ref: function ref(e) {\n return _this.tabRefs[tabPrefix + key] = e;\n },\n originalKey: key,\n onClick: _this.onChangeTab,\n onFocus: _this.onFocusTab,\n onBlur: _this.onBlurTab,\n onRemove: onRemove,\n panelId: panelPrefix + key,\n classNames: _this.getClassNamesFor('tab', {\n selected: selected,\n collapsed: collapsed,\n tabIndex: tabIndex,\n disabled: disabled,\n className: className\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPanelProps\", function (_ref2, isHidden) {\n var key = _ref2.key,\n content = _ref2.content,\n getContent = _ref2.getContent,\n className = _ref2.className;\n return {\n getContent: getContent,\n children: content,\n key: panelPrefix + key,\n id: panelPrefix + key,\n tabId: tabPrefix + key,\n classNames: _this.getClassNamesFor('panel', {\n className: className,\n isHidden: isHidden\n }),\n isHidden: isHidden\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getShowMoreProps\", function (isShown, isSelectedTabHidden, showMoreLabel) {\n return {\n onShowMoreChanged: _this.showMoreChanged,\n isShown: isShown,\n label: showMoreLabel,\n hasChildSelected: isSelectedTabHidden\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getClassNamesFor\", function (type, _ref3) {\n var selected = _ref3.selected,\n collapsed = _ref3.collapsed,\n tabIndex = _ref3.tabIndex,\n disabled = _ref3.disabled,\n _ref3$className = _ref3.className,\n className = _ref3$className === void 0 ? '' : _ref3$className,\n isHidden = _ref3.isHidden;\n var _this$props3 = _this.props,\n tabClass = _this$props3.tabClass,\n panelClass = _this$props3.panelClass;\n\n switch (type) {\n case 'tab':\n return (0, _classnames[\"default\"])('RRT__tab', className, tabClass, {\n 'RRT__tab--first': !tabIndex,\n 'RRT__tab--selected': selected,\n 'RRT__tab--disabled': disabled,\n 'RRT__tab--collapsed': collapsed\n });\n\n case 'panel':\n return (0, _classnames[\"default\"])('RRT__panel', className, panelClass, {\n 'RRT__panel--hidden': isHidden\n });\n\n default:\n return '';\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getSelectedTabKey\", function () {\n var items = _this.props.items;\n var selectedTabKey = _this.state.selectedTabKey;\n\n if (typeof selectedTabKey === 'undefined') {\n if (!items[0]) {\n return undefined;\n }\n\n return items[0].key || 0;\n }\n\n return selectedTabKey;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getIsCollapsed\", function () {\n var _this$props4 = _this.props,\n transform = _this$props4.transform,\n transformWidth = _this$props4.transformWidth;\n var blockWidth = _this.state.blockWidth;\n return blockWidth && transform && blockWidth < transformWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"showMoreChanged\", function (element) {\n if (!element) {\n return;\n }\n\n var showMoreWidth = _this.state.showMoreWidth;\n var offsetWidth = element.offsetWidth;\n\n if (showMoreWidth === offsetWidth) {\n return;\n }\n\n _this.setState({\n showMoreWidth: offsetWidth\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getExpandedTabs\", function (panels, selectedTabKey, isCollapsed) {\n var unmountOnExit = _this.props.unmountOnExit;\n\n if (isCollapsed) {\n return undefined;\n }\n\n if (!unmountOnExit) {\n // render all tabs if unmountOnExit === false (inactive are hidden)\n return Object.keys(panels).map(function (key) {\n return /*#__PURE__*/_react[\"default\"].createElement(_TabPanel[\"default\"], _this.getPanelProps(panels[key], \"\".concat(selectedTabKey) !== \"\".concat(key)));\n });\n }\n\n if (panels[selectedTabKey]) {\n // render only active tab if unmountOnExit === true\n return /*#__PURE__*/_react[\"default\"].createElement(_TabPanel[\"default\"], _this.getPanelProps(panels[selectedTabKey]));\n }\n\n return undefined;\n });\n\n _this.tabRefs = {};\n _this.tabsWrapper = /*#__PURE__*/(0, _react.createRef)();\n _this.selectedTabKeyProp = props.selectedTabKey;\n _this.state = {\n tabDimensions: {},\n blockWidth: 0,\n tabsTotalWidth: 0,\n showMoreWidth: 40,\n selectedTabKey: props.selectedTabKey,\n focusedTabKey: null\n };\n _this.onResizeThrottled = (0, _lodash[\"default\"])(_this.onResize, props.resizeThrottle, {\n trailing: true\n });\n return _this;\n }\n\n _createClass(Tabs, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setTabsDimensions();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$state2 = this.state,\n selectedTabKey = _this$state2.selectedTabKey,\n tabsTotalWidth = _this$state2.tabsTotalWidth,\n blockWidth = _this$state2.blockWidth,\n showMoreWidth = _this$state2.showMoreWidth;\n var _this$props5 = this.props,\n items = _this$props5.items,\n transform = _this$props5.transform,\n showMore = _this$props5.showMore,\n showInkBar = _this$props5.showInkBar,\n allowRemove = _this$props5.allowRemove,\n removeActiveOnly = _this$props5.removeActiveOnly,\n uid = _this$props5.uid;\n return items !== nextProps.items || nextProps.uid !== uid || nextProps.transform !== transform || nextProps.showMore !== showMore || nextProps.showInkBar !== showInkBar || nextProps.allowRemove !== allowRemove || nextProps.removeActiveOnly !== removeActiveOnly || nextState.tabsTotalWidth !== tabsTotalWidth || nextState.blockWidth !== blockWidth || nextState.showMoreWidth !== showMoreWidth || nextProps.selectedTabKey !== this.selectedTabKeyProp || nextState.selectedTabKey !== selectedTabKey;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props6 = this.props,\n uid = _this$props6.uid,\n items = _this$props6.items,\n selectedTabKey = _this$props6.selectedTabKey;\n\n if (this.selectedTabKeyProp !== selectedTabKey) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n selectedTabKey: selectedTabKey\n });\n }\n\n if (uid !== prevProps.uid || items.length !== prevProps.items.length || items.every(function (item, i) {\n return item.title !== prevProps.items[i].title;\n })) {\n this.setTabsDimensions();\n }\n\n this.selectedTabKeyProp = selectedTabKey;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props7 = this.props,\n showInkBar = _this$props7.showInkBar,\n containerClass = _this$props7.containerClass,\n tabsWrapperClass = _this$props7.tabsWrapperClass,\n showMore = _this$props7.showMore,\n transform = _this$props7.transform,\n showMoreLabel = _this$props7.showMoreLabel,\n unmountOnExit = _this$props7.unmountOnExit;\n var tabDimensions = this.state.tabDimensions;\n\n var _this$getTabs = this.getTabs(),\n tabsVisible = _this$getTabs.tabsVisible,\n tabsHidden = _this$getTabs.tabsHidden,\n panels = _this$getTabs.panels,\n isSelectedTabHidden = _this$getTabs.isSelectedTabHidden;\n\n var isCollapsed = this.getIsCollapsed();\n var selectedTabKey = this.getSelectedTabKey();\n var selectedTabDimensions = tabDimensions[selectedTabKey] || {};\n var containerClasses = (0, _classnames[\"default\"])('RRT__container', containerClass);\n var tabsClasses = (0, _classnames[\"default\"])('RRT__tabs', tabsWrapperClass, {\n RRT__accordion: isCollapsed\n });\n var handleResize = showMore || transform;\n return /*#__PURE__*/_react[\"default\"].createElement(_withPolyfill[\"default\"], {\n handleWidth: handleResize,\n handleHeight: false,\n targetRef: this.tabsWrapper,\n onResize: this.onResizeThrottled\n }, function () {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: containerClasses,\n ref: _this2.tabsWrapper,\n onKeyDown: _this2.onKeyDown\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: tabsClasses\n }, tabsVisible.reduce(function (result, tab) {\n result.push( /*#__PURE__*/_react[\"default\"].createElement(_Tab[\"default\"], _this2.getTabProps(tab)));\n\n if (isCollapsed && (!unmountOnExit || selectedTabKey === tab.key)) {\n result.push( /*#__PURE__*/_react[\"default\"].createElement(_TabPanel[\"default\"], _this2.getPanelProps(panels[tab.key], selectedTabKey !== tab.key)));\n }\n\n return result;\n }, []), !isCollapsed && /*#__PURE__*/_react[\"default\"].createElement(_ShowMore[\"default\"], _this2.getShowMoreProps(showMore, isSelectedTabHidden, showMoreLabel), tabsHidden.map(function (tab) {\n return /*#__PURE__*/_react[\"default\"].createElement(_Tab[\"default\"], _this2.getTabProps(tab));\n }))), showInkBar && !isCollapsed && !isSelectedTabHidden && /*#__PURE__*/_react[\"default\"].createElement(_InkBar[\"default\"], {\n left: selectedTabDimensions.offset || 0,\n width: selectedTabDimensions.width || 0\n }), _this2.getExpandedTabs(panels, selectedTabKey, isCollapsed));\n });\n }\n }]);\n\n return Tabs;\n}(_react.Component);\n\nexports[\"default\"] = Tabs;\nTabs.propTypes = {\n /* eslint-disable react/no-unused-prop-types */\n // list of tabs\n items: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].array, _propTypes[\"default\"].object]),\n\n /* eslint-enable react/no-unused-prop-types */\n // selected tab key\n selectedTabKey: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n // show 'X' and remove tab\n allowRemove: _propTypes[\"default\"].bool,\n // show 'X' closing element only for active tab\n removeActiveOnly: _propTypes[\"default\"].bool,\n // move tabs to the special `Show more` tab if they don't fit into a screen\n showMore: _propTypes[\"default\"].bool,\n // materialUI-like rail under the selected tab\n showInkBar: _propTypes[\"default\"].bool,\n // transform to the accordion on small screens\n transform: _propTypes[\"default\"].bool,\n // tabs will be transformed to accodrion for screen sizes below `transformWidth`px\n transformWidth: _propTypes[\"default\"].number,\n // beforeChange callback: return false to prevent tab change\n beforeChange: _propTypes[\"default\"].func,\n // onChange active tab callback\n onChange: _propTypes[\"default\"].func,\n // onRemove callback\n onRemove: _propTypes[\"default\"].func,\n // frequency of onResize recalculation fires\n resizeThrottle: _propTypes[\"default\"].number,\n // unmounts the tab when it gets inactive (unselected)\n unmountOnExit: _propTypes[\"default\"].bool,\n // classnames\n containerClass: _propTypes[\"default\"].string,\n tabsWrapperClass: _propTypes[\"default\"].string,\n tabClass: _propTypes[\"default\"].string,\n panelClass: _propTypes[\"default\"].string,\n // optional external id. Force rerender when it changes\n // eslint-disable-next-line react/forbid-prop-types\n uid: _propTypes[\"default\"].any,\n // labels\n showMoreLabel: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node])\n};\nTabs.defaultProps = {\n items: [],\n uid: undefined,\n selectedTabKey: undefined,\n showMore: true,\n showInkBar: false,\n allowRemove: false,\n removeActiveOnly: false,\n transform: true,\n transformWidth: 800,\n resizeThrottle: 100,\n containerClass: undefined,\n tabsWrapperClass: undefined,\n tabClass: undefined,\n panelClass: undefined,\n showMoreLabel: '...',\n unmountOnExit: true,\n beforeChange: undefined,\n onChange: function onChange() {\n return null;\n },\n onRemove: function onRemove() {\n return null;\n }\n};","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d<c.length;d++){var e=n.get(c[d]);if(null!==e)throw e;}c=__webpack_require__(b.id);b=\"*\"===b.name?c:\"\"===b.name?c.__esModule?c.default:c:c[b.name];a._status=3;return a._value=b;case 0:throw a;default:throw a._value;}}function x(){var a=y(this,0);return w(a)}function z(a,b){return new v(3,b,a)}\nfunction A(a){if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}function C(a,b){if(0===a._status){var c=a._value;a._status=4;a._value=b;A(c)}}function D(a,b){a._chunks.forEach(function(a){C(a,b)})}function y(a,b){var c=a._chunks,d=c.get(b);d||(d=new v(0,null,a),c.set(b,d));return d}\nfunction E(a,b,c){switch(c[0]){case \"$\":if(\"$\"===c)return p;if(\"$\"===c[1]||\"@\"===c[1])return c.substring(1);b=parseInt(c.substring(1),16);a=y(a,b);return w(a);case \"@\":return b=parseInt(c.substring(1),16),a=y(a,b),{$$typeof:q,_payload:a,_init:w}}return c}function F(a){D(a,Error(\"Connection closed.\"))}\nfunction G(a,b){if(\"\"!==b){var c=b[0],d=b.indexOf(\":\",1),e=parseInt(b.substring(1,d),16);d=b.substring(d+1);switch(c){case \"J\":b=a._chunks;(c=b.get(e))?0===c._status&&(a=c._value,c._status=1,c._value=d,A(a)):b.set(e,new v(1,d,a));break;case \"M\":b=a._chunks;c=b.get(e);d=JSON.parse(d,a._fromJSON);var f=a._bundlerConfig;d=f?f[d.id][d.name]:d;f=d.chunks;for(var h=0;h<f.length;h++){var g=f[h];if(void 0===n.get(g)){var B=__webpack_chunk_load__(g),m=n.set.bind(n,g,null),J=n.set.bind(n,g);B.then(m,J);n.set(g,\nB)}}c?0===c._status&&(a=c._value,c._status=2,c._value=d,A(a)):b.set(e,new v(2,d,a));break;case \"P\":a._chunks.set(e,z(a,u(d).Provider));break;case \"S\":c=JSON.parse(d);a._chunks.set(e,z(a,Symbol.for(c)));break;case \"E\":b=JSON.parse(d);c=Error(b.message);c.stack=b.stack;b=a._chunks;(d=b.get(e))?C(d,c):b.set(e,new v(4,c,a));break;default:throw Error(\"Error parsing the data. It's probably an error code or network corruption.\");}}}\nfunction H(a){return function(b,c){return\"string\"===typeof c?E(a,this,c):\"object\"===typeof c&&null!==c?(b=c[0]===p?{$$typeof:p,type:c[1],key:c[2],ref:null,props:c[3],_owner:null}:c,b):c}}function I(a){var b=new TextDecoder,c=new Map;a={_bundlerConfig:a,_chunks:c,readRoot:x,_partialRow:\"\",_stringDecoder:b};a._fromJSON=H(a);return a}\nfunction K(a,b){function c(b){var h=b.value;if(b.done)F(a);else{b=h;h=a._stringDecoder;for(var g=b.indexOf(10);-1<g;){var f=a._partialRow;var m=b.subarray(0,g);m=h.decode(m);G(a,f+m);a._partialRow=\"\";b=b.subarray(g+1);g=b.indexOf(10)}a._partialRow+=h.decode(b,l);return e.read().then(c,d)}}function d(b){D(a,b)}var e=b.getReader();e.read().then(c,d)}exports.createFromFetch=function(a,b){var c=I(b&&b.moduleMap?b.moduleMap:null);a.then(function(a){K(c,a.body)},function(a){D(c,a)});return c};\nexports.createFromReadableStream=function(a,b){b=I(b&&b.moduleMap?b.moduleMap:null);K(b,a);return b};\nexports.createFromXHR=function(a,b){function c(){for(var b=a.responseText,c=f,d=b.indexOf(\"\\n\",c);-1<d;)c=e._partialRow+b.substring(c,d),G(e,c),e._partialRow=\"\",c=d+1,d=b.indexOf(\"\\n\",c);e._partialRow+=b.substring(c);f=b.length}function d(){D(e,new TypeError(\"Network error\"))}var e=I(b&&b.moduleMap?b.moduleMap:null),f=0;a.addEventListener(\"progress\",c);a.addEventListener(\"load\",function(){c();F(e)});a.addEventListener(\"error\",d);a.addEventListener(\"abort\",d);a.addEventListener(\"timeout\",d);return e};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-server-dom-webpack.production.min.js');\n} else {\n module.exports = require('./cjs/react-server-dom-webpack.development.js');\n}\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 = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // 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 /*#__PURE__*/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","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar truthy = function truthy(x) {\n return x;\n};\n\nexports['default'] = function (input) {\n var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var theme = _ref2[0];\n var classNameDecorator = _ref2[1];\n\n return function (key) {\n for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n names[_key - 1] = arguments[_key];\n }\n\n var styles = names.map(function (name) {\n return theme[name];\n }).filter(truthy);\n\n return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? { key: key, className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ') } : { key: key, style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles))) };\n };\n};\n\nmodule.exports = exports['default'];","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"lib\",[\"react\",\"react-dom\"],t):\"object\"==typeof exports?exports.lib=t(require(\"react\"),require(\"react-dom\")):e.lib=t(e.react,e[\"react-dom\"])}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var r={156:function(t){t.exports=e},111:function(e){e.exports=t},582:function(e,t,r){r.r(t),r.d(t,{__addDisposableResource:function(){return M},__assign:function(){return i},__asyncDelegator:function(){return O},__asyncGenerator:function(){return E},__asyncValues:function(){return x},__await:function(){return S},__awaiter:function(){return h},__classPrivateFieldGet:function(){return C},__classPrivateFieldIn:function(){return D},__classPrivateFieldSet:function(){return R},__createBinding:function(){return b},__decorate:function(){return c},__disposeResources:function(){return q},__esDecorate:function(){return u},__exportStar:function(){return v},__extends:function(){return o},__generator:function(){return y},__importDefault:function(){return k},__importStar:function(){return A},__makeTemplateObject:function(){return j},__metadata:function(){return p},__param:function(){return s},__propKey:function(){return f},__read:function(){return m},__rest:function(){return a},__runInitializers:function(){return l},__setFunctionName:function(){return d},__spread:function(){return _},__spreadArray:function(){return P},__spreadArrays:function(){return w},__values:function(){return g}});var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)};function a(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function c(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function s(e,t){return function(r,n){t(r,n,e)}}function u(e,t,r,n,o,i){function a(e){if(void 0!==e&&\"function\"!=typeof e)throw new TypeError(\"Function expected\");return e}for(var c,s=n.kind,u=\"getter\"===s?\"get\":\"setter\"===s?\"set\":\"value\",l=!t&&e?n.static?e:e.prototype:null,f=t||(l?Object.getOwnPropertyDescriptor(l,n.name):{}),d=!1,p=r.length-1;p>=0;p--){var h={};for(var y in n)h[y]=\"access\"===y?{}:n[y];for(var y in n.access)h.access[y]=n.access[y];h.addInitializer=function(e){if(d)throw new TypeError(\"Cannot add initializers after decoration has completed\");i.push(a(e||null))};var b=(0,r[p])(\"accessor\"===s?{get:f.get,set:f.set}:f[u],h);if(\"accessor\"===s){if(void 0===b)continue;if(null===b||\"object\"!=typeof b)throw new TypeError(\"Object expected\");(c=a(b.get))&&(f.get=c),(c=a(b.set))&&(f.set=c),(c=a(b.init))&&o.unshift(c)}else(c=a(b))&&(\"field\"===s?o.unshift(c):f[u]=c)}l&&Object.defineProperty(l,n.name,f),d=!0}function l(e,t,r){for(var n=arguments.length>2,o=0;o<t.length;o++)r=n?t[o].call(e,r):t[o].call(e);return n?r:void 0}function f(e){return\"symbol\"==typeof e?e:\"\".concat(e)}function d(e,t,r){return\"symbol\"==typeof t&&(t=t.description?\"[\".concat(t.description,\"]\"):\"\"),Object.defineProperty(e,\"name\",{configurable:!0,value:r?\"\".concat(r,\" \",t):t})}function p(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function c(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}s((n=n.apply(e,t||[])).next())}))}function y(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(s){return function(c){if(r)throw new TypeError(\"Generator is already executing.\");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}}var b=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!(\"get\"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]};function v(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||b(t,e,r)}function g(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function m(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function _(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(m(arguments[t]));return e}function w(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var i=arguments[t],a=0,c=i.length;a<c;a++,o++)n[o]=i[a];return n}function P(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}function S(e){return this instanceof S?(this.v=e,this):new S(e)}function E(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var n,o=r.apply(e,t||[]),i=[];return n={},a(\"next\"),a(\"throw\"),a(\"return\"),n[Symbol.asyncIterator]=function(){return this},n;function a(e){o[e]&&(n[e]=function(t){return new Promise((function(r,n){i.push([e,t,r,n])>1||c(e,t)}))})}function c(e,t){try{(r=o[e](t)).value instanceof S?Promise.resolve(r.value.v).then(s,u):l(i[0][2],r)}catch(e){l(i[0][3],e)}var r}function s(e){c(\"next\",e)}function u(e){c(\"throw\",e)}function l(e,t){e(t),i.shift(),i.length&&c(i[0][0],i[0][1])}}function O(e){var t,r;return t={},n(\"next\"),n(\"throw\",(function(e){throw e})),n(\"return\"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:S(e[n](t)),done:!1}:o?o(t):t}:o}}function x(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=g(e),t={},n(\"next\"),n(\"throw\"),n(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){!function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}(n,o,(t=e[r](t)).done,t.value)}))}}}function j(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function A(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&b(t,e,r);return T(t,e),t}function k(e){return e&&e.__esModule?e:{default:e}}function C(e,t,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!n:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(e):n?n.value:t.get(e)}function R(e,t,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}function D(e,t){if(null===t||\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?t===e:e.has(t)}function M(e,t,r){if(null!=t){if(\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Object expected.\");var n;if(r){if(!Symbol.asyncDispose)throw new TypeError(\"Symbol.asyncDispose is not defined.\");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError(\"Symbol.dispose is not defined.\");n=t[Symbol.dispose]}if(\"function\"!=typeof n)throw new TypeError(\"Object not disposable.\");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var I=\"function\"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=new Error(r);return n.name=\"SuppressedError\",n.error=e,n.suppressed=t,n};function q(e){function t(t){e.error=e.hasError?new I(t,e.error,\"An error was suppressed during disposal.\"):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var o=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(o).then(r,(function(e){return t(e),r()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()}t.default={__extends:o,__assign:i,__rest:a,__decorate:c,__param:s,__metadata:p,__awaiter:h,__generator:y,__createBinding:b,__exportStar:v,__values:g,__read:m,__spread:_,__spreadArrays:w,__spreadArray:P,__await:S,__asyncGenerator:E,__asyncDelegator:O,__asyncValues:x,__makeTemplateObject:j,__importStar:A,__importDefault:k,__classPrivateFieldGet:C,__classPrivateFieldSet:R,__classPrivateFieldIn:D,__addDisposableResource:M,__disposeResources:q}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(582),r=o(156),n=o(111),a=Object.prototype.hasOwnProperty.call(r,\"createContext\"),c=Object.prototype.hasOwnProperty.call(r,\"useMemo\")&&Object.prototype.hasOwnProperty.call(r,\"useCallback\"),s=a?r.createContext({}):null;e.PrintContextConsumer=s?s.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"\\n @page {\\n /* Remove browser default header (title) and footer (url) */\\n margin: 0;\\n }\\n @media print {\\n body {\\n /* Tell browsers to print background colors */\\n -webkit-print-color-adjust: exact; /* Chrome/Safari/Edge/Opera */\\n color-adjust: exact; /* Firefox */\\n }\\n }\\n \",removeAfterPrint:!1,suppressErrors:!1},l=function(e){function o(){var r=null!==e&&e.apply(this,arguments)||this;return r.startPrint=function(e){var t=r.props,n=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.documentTitle;setTimeout((function(){var t,c;if(e.contentWindow)if(e.contentWindow.focus(),i)i(e).then((function(){return null==n?void 0:n()})).then((function(){return r.handleRemoveIframe()})).catch((function(e){o?o(\"print\",e):r.logMessages([\"An error was thrown by the specified `print` function\"])}));else{if(e.contentWindow.print){var s=null!==(c=null===(t=e.contentDocument)||void 0===t?void 0:t.title)&&void 0!==c?c:\"\",u=e.ownerDocument.title;a&&(e.ownerDocument.title=a,e.contentDocument&&(e.contentDocument.title=a)),e.contentWindow.print(),a&&(e.ownerDocument.title=u,e.contentDocument&&(e.contentDocument.title=s))}else r.logMessages([\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\"]);null==n||n(),r.handleRemoveIframe()}else r.logMessages([\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\"])}),500)},r.triggerPrint=function(e){var t=r.props,n=t.onBeforePrint,o=t.onPrintError;if(n){var i=n();i&&\"function\"==typeof i.then?i.then((function(){r.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):r.startPrint(e)}else r.startPrint(e)},r.handleClick=function(){var e=r.props,t=e.onBeforeGetContent,n=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(r.handlePrint).catch((function(e){n&&n(\"onBeforeGetContent\",e)})):r.handlePrint()}else r.handlePrint()},r.handlePrint=function(){var e=r.props,o=e.bodyClass,i=e.content,a=e.copyStyles,c=e.fonts,s=e.pageStyle,u=e.nonce,l=i();if(void 0!==l)if(null!==l){var f=document.createElement(\"iframe\");f.width=\"\".concat(document.documentElement.clientWidth,\"px\"),f.height=\"\".concat(document.documentElement.clientHeight,\"px\"),f.style.position=\"absolute\",f.style.top=\"-\".concat(document.documentElement.clientHeight+100,\"px\"),f.style.left=\"-\".concat(document.documentElement.clientWidth+100,\"px\"),f.id=\"printWindow\",f.srcdoc=\"<!DOCTYPE html>\";var d=(0,n.findDOMNode)(l);if(d){var p=d.cloneNode(!0),h=p instanceof Text,y=document.querySelectorAll(\"link[rel~='stylesheet'], link[as='style']\"),b=h?[]:p.querySelectorAll(\"img\"),v=h?[]:p.querySelectorAll(\"video\"),g=c?c.length:0;r.numResourcesToLoad=y.length+b.length+v.length+g,r.resourcesLoaded=[],r.resourcesErrored=[];var m=function(e,n){r.resourcesLoaded.includes(e)?r.logMessages([\"Tried to mark a resource that has already been handled\",e],\"debug\"):(n?(r.logMessages(t.__spreadArray(['\"react-to-print\" was unable to load a resource but will continue attempting to print the page'],t.__read(n),!1)),r.resourcesErrored.push(e)):r.resourcesLoaded.push(e),r.resourcesLoaded.length+r.resourcesErrored.length===r.numResourcesToLoad&&r.triggerPrint(f))};f.onload=function(){var e,n,i,l;f.onload=null;var y=f.contentDocument||(null===(n=f.contentWindow)||void 0===n?void 0:n.document);if(y){y.body.appendChild(p),c&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(l=f.contentWindow)||void 0===l?void 0:l.FontFace)?c.forEach((function(e){var t=new FontFace(e.family,e.source,{weight:e.weight,style:e.style});f.contentDocument.fonts.add(t),t.loaded.then((function(){m(t)})).catch((function(e){m(t,[\"Failed loading the font:\",t,\"Load error:\",e])}))})):(c.forEach((function(e){return m(e)})),r.logMessages(['\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API but will continue attempting to print the page'])));var g=\"function\"==typeof s?s():s;if(\"string\"!=typeof g)r.logMessages(['\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'.concat(typeof g,'\". Styles from `pageStyle` will not be applied.')]);else{var _=y.createElement(\"style\");u&&(_.setAttribute(\"nonce\",u),y.head.setAttribute(\"nonce\",u)),_.appendChild(y.createTextNode(g)),y.head.appendChild(_)}if(o&&(e=y.body.classList).add.apply(e,t.__spreadArray([],t.__read(o.split(\" \")),!1)),!h){for(var w=h?[]:d.querySelectorAll(\"canvas\"),P=y.querySelectorAll(\"canvas\"),S=0;S<w.length;++S){var E=w[S],O=P[S].getContext(\"2d\");O&&O.drawImage(E,0,0)}var x=function(e){var t=b[e],r=t.getAttribute(\"src\");if(r){var n=new Image;n.onload=function(){return m(t)},n.onerror=function(e,r,n,o,i){return m(t,[\"Error loading <img>\",t,\"Error\",i])},n.src=r}else m(t,['Found an <img> tag with an empty \"src\" attribute. This prevents pre-loading it. The <img> is:',t])};for(S=0;S<b.length;S++)x(S);var j=function(e){var t=v[e];t.preload=\"auto\";var r=t.getAttribute(\"poster\");if(r){var n=new Image;n.onload=function(){return m(t)},n.onerror=function(e,n,o,i,a){return m(t,[\"Error loading video poster\",r,\"for video\",t,\"Error:\",a])},n.src=r}else t.readyState>=2?m(t):(t.onloadeddata=function(){return m(t)},t.onerror=function(e,r,n,o,i){return m(t,[\"Error loading video\",t,\"Error\",i])},t.onstalled=function(){return m(t,[\"Loading video stalled, skipping\",t])})};for(S=0;S<v.length;S++)j(S);var T=\"input\",A=d.querySelectorAll(T),k=y.querySelectorAll(T);for(S=0;S<A.length;S++)k[S].value=A[S].value;var C=\"input[type=checkbox],input[type=radio]\",R=d.querySelectorAll(C),D=y.querySelectorAll(C);for(S=0;S<R.length;S++)D[S].checked=R[S].checked;var M=\"select\",I=d.querySelectorAll(M),q=y.querySelectorAll(M);for(S=0;S<I.length;S++)q[S].value=I[S].value}if(a)for(var F=document.querySelectorAll(\"style, link[rel~='stylesheet'], link[as='style']\"),L=function(e,t){var n=F[e];if(\"style\"===n.tagName.toLowerCase()){var o=y.createElement(n.tagName),i=n.sheet;if(i){var a=\"\";try{for(var c=i.cssRules.length,s=0;s<c;++s)\"string\"==typeof i.cssRules[s].cssText&&(a+=\"\".concat(i.cssRules[s].cssText,\"\\r\\n\"))}catch(e){r.logMessages([\"A stylesheet could not be accessed. This is likely due to the stylesheet having cross-origin imports, and many browsers block script access to cross-origin stylesheets. See https://github.com/gregnb/react-to-print/issues/429 for details. You may be able to load the sheet by both marking the stylesheet with the cross `crossorigin` attribute, and setting the `Access-Control-Allow-Origin` header on the server serving the stylesheet. Alternatively, host the stylesheet on your domain to avoid this issue entirely.\",n],\"warning\")}o.setAttribute(\"id\",\"react-to-print-\".concat(e)),u&&o.setAttribute(\"nonce\",u),o.appendChild(y.createTextNode(a)),y.head.appendChild(o)}}else if(n.getAttribute(\"href\"))if(n.hasAttribute(\"disabled\"))r.logMessages([\"`react-to-print` encountered a <link> tag with a `disabled` attribute and will ignore it. Note that the `disabled` attribute is deprecated, and some browsers ignore it. You should stop using it. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-disabled. The <link> is:\",n],\"warning\"),m(n);else{for(var l=y.createElement(n.tagName),f=(s=0,n.attributes.length);s<f;++s){var d=n.attributes[s];d&&l.setAttribute(d.nodeName,d.nodeValue||\"\")}l.onload=function(){return m(l)},l.onerror=function(e,t,r,n,o){return m(l,[\"Failed to load\",l,\"Error:\",o])},u&&l.setAttribute(\"nonce\",u),y.head.appendChild(l)}else r.logMessages([\"`react-to-print` encountered a <link> tag with an empty `href` attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the <link> was not loaded. The <link> is:\",n],\"warning\"),m(n)},W=(S=0,F.length);S<W;++S)L(S)}0!==r.numResourcesToLoad&&a||r.triggerPrint(f)},r.handleRemoveIframe(!0),document.body.appendChild(f)}else r.logMessages(['\"react-to-print\" could not locate the DOM node corresponding with the `content` prop'])}else r.logMessages(['There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.']);else r.logMessages([\"To print a functional component ensure it is wrapped with `React.forwardRef`, and ensure the forwarded ref is used. See the README for an example: https://github.com/gregnb/react-to-print#examples\"])},r.handleRemoveIframe=function(e){var t=r.props.removeAfterPrint;if(e||t){var n=document.getElementById(\"printWindow\");n&&document.body.removeChild(n)}},r.logMessages=function(e,t){void 0===t&&(t=\"error\"),r.props.suppressErrors||(\"error\"===t?console.error(e):\"warning\"===t?console.warn(e):\"debug\"===t&&console.debug(e))},r}return t.__extends(o,e),o.prototype.render=function(){var e=this.props,t=e.children,n=e.trigger;if(n)return r.cloneElement(n(),{onClick:this.handleClick});if(!s)return this.logMessages(['\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"']),null;var o={handlePrint:this.handleClick};return r.createElement(s.Provider,{value:o},t)},o.defaultProps=u,o}(r.Component);e.default=l,e.useReactToPrint=function(e){if(!c)return e.suppressErrors||console.error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"'),function(){throw new Error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')};var n=r.useMemo((function(){return new l(t.__assign(t.__assign({},u),e))}),[e]);return r.useCallback((function(){return n.handleClick()}),[n])}}(),i}()}));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nmodule.exports = function (_ref) {\n var data = _ref.data;\n var multiSection = _ref.multiSection;\n\n function nextNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = 0;\n } else {\n sectionIndex++;\n }\n\n while (sectionIndex < data.length && data[sectionIndex] === 0) {\n sectionIndex++;\n }\n\n return sectionIndex === data.length ? null : sectionIndex;\n }\n\n function prevNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = data.length - 1;\n } else {\n sectionIndex--;\n }\n\n while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n sectionIndex--;\n }\n\n return sectionIndex === -1 ? null : sectionIndex;\n }\n\n function next(position) {\n var _position = _slicedToArray(position, 2);\n\n var sectionIndex = _position[0];\n var itemIndex = _position[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, 0];\n }\n\n return [sectionIndex, itemIndex + 1];\n }\n\n if (data === 0 || itemIndex === data - 1) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, 0];\n }\n\n return [null, itemIndex + 1];\n }\n\n function prev(position) {\n var _position2 = _slicedToArray(position, 2);\n\n var sectionIndex = _position2[0];\n var itemIndex = _position2[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === 0) {\n sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, data[sectionIndex] - 1];\n }\n\n return [sectionIndex, itemIndex - 1];\n }\n\n if (data === 0 || itemIndex === 0) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, data - 1];\n }\n\n return [null, itemIndex - 1];\n }\n\n function isLast(position) {\n return next(position)[1] === null;\n }\n\n return {\n next: next,\n prev: prev,\n isLast: isLast\n };\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _has from \"lodash-es/has\";\nimport _invoke from \"lodash-es/invoke\";\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { customPropTypes, getUnhandledProps } from '../../lib';\nimport Button from '../../elements/Button';\nimport Modal from '../../modules/Modal';\n/**\n * A Confirm modal gives the user a choice to confirm or cancel an action.\n * @see Modal\n */\n\nvar Confirm = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Confirm, _Component);\n\n function Confirm() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleCancel = function (e) {\n _invoke(_this.props, 'onCancel', e, _this.props);\n };\n\n _this.handleCancelOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e, buttonProps) {\n _invoke(predefinedProps, 'onClick', e, buttonProps);\n\n _this.handleCancel(e);\n }\n };\n };\n\n _this.handleConfirmOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e, buttonProps) {\n _invoke(predefinedProps, 'onClick', e, buttonProps);\n\n _invoke(_this.props, 'onConfirm', e, _this.props);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = Confirm.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n cancelButton = _this$props.cancelButton,\n confirmButton = _this$props.confirmButton,\n content = _this$props.content,\n header = _this$props.header,\n open = _this$props.open,\n size = _this$props.size;\n var rest = getUnhandledProps(Confirm, this.props); // `open` is auto controlled by the Modal\n // It cannot be present (even undefined) with `defaultOpen`\n // only apply it if the user provided an open prop\n\n var openProp = {};\n if (_has(this.props, 'open')) openProp.open = open;\n return /*#__PURE__*/React.createElement(Modal, _extends({}, rest, openProp, {\n size: size,\n onClose: this.handleCancel\n }), Modal.Header.create(header, {\n autoGenerateKey: false\n }), Modal.Content.create(content, {\n autoGenerateKey: false\n }), /*#__PURE__*/React.createElement(Modal.Actions, null, Button.create(cancelButton, {\n autoGenerateKey: false,\n overrideProps: this.handleCancelOverrides\n }), Button.create(confirmButton, {\n autoGenerateKey: false,\n defaultProps: {\n primary: true\n },\n overrideProps: this.handleConfirmOverrides\n })));\n };\n\n return Confirm;\n}(Component);\n\nConfirm.handledProps = [\"cancelButton\", \"confirmButton\", \"content\", \"header\", \"onCancel\", \"onConfirm\", \"open\", \"size\"];\nConfirm.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** The cancel button text. */\n cancelButton: customPropTypes.itemShorthand,\n\n /** The OK button text. */\n confirmButton: customPropTypes.itemShorthand,\n\n /** The ModalContent text. */\n content: customPropTypes.itemShorthand,\n\n /** The ModalHeader text. */\n header: customPropTypes.itemShorthand,\n\n /**\n * Called when the Modal is closed without clicking confirm.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onCancel: PropTypes.func,\n\n /**\n * Called when the OK button is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onConfirm: PropTypes.func,\n\n /** Whether or not the modal is visible. */\n open: PropTypes.bool,\n\n /** A Confirm can vary in size */\n size: PropTypes.oneOf(['mini', 'tiny', 'small', 'large', 'fullscreen'])\n} : {};\nConfirm.defaultProps = {\n cancelButton: 'Cancel',\n confirmButton: 'OK',\n content: 'Are you sure?',\n size: 'small'\n};\nexport default Confirm;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport EventStack from '@semantic-ui-react/event-stack';\nimport { handleRef, Ref } from '@fluentui/react-component-ref';\nimport keyboardKey from 'keyboard-key';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ModernAutoControlledComponent as Component, customPropTypes, doesNodeContainClick } from '../../lib';\nimport validateTrigger from './utils/validateTrigger';\nimport PortalInner from './PortalInner';\n\n/**\n * A component that allows you to render children outside their parent.\n * @see Modal\n * @see Popup\n * @see Dimmer\n * @see Confirm\n */\nvar Portal = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Portal, _Component);\n\n function Portal() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.contentRef = /*#__PURE__*/React.createRef();\n _this.triggerRef = /*#__PURE__*/React.createRef();\n _this.latestDocumentMouseDownEvent = null;\n\n _this.handleDocumentMouseDown = function (e) {\n _this.latestDocumentMouseDownEvent = e;\n };\n\n _this.handleDocumentClick = function (e) {\n var closeOnDocumentClick = _this.props.closeOnDocumentClick;\n var currentMouseDownEvent = _this.latestDocumentMouseDownEvent;\n _this.latestDocumentMouseDownEvent = null;\n\n if (!_this.contentRef.current || // no portal\n doesNodeContainClick(_this.triggerRef.current, e) || // event happened in trigger (delegate to trigger handlers)\n currentMouseDownEvent && doesNodeContainClick(_this.contentRef.current, currentMouseDownEvent) || // event originated in the portal but was ended outside\n doesNodeContainClick(_this.contentRef.current, e) // event happened in the portal\n ) {\n return;\n } // ignore the click\n\n\n if (closeOnDocumentClick) {\n _this.close(e);\n }\n };\n\n _this.handleEscape = function (e) {\n if (!_this.props.closeOnEscape) return;\n if (keyboardKey.getCode(e) !== keyboardKey.Escape) return;\n\n _this.close(e);\n };\n\n _this.handlePortalMouseLeave = function (e) {\n var _this$props = _this.props,\n closeOnPortalMouseLeave = _this$props.closeOnPortalMouseLeave,\n mouseLeaveDelay = _this$props.mouseLeaveDelay;\n if (!closeOnPortalMouseLeave) return; // Do not close the portal when 'mouseleave' is triggered by children\n\n if (e.target !== _this.contentRef.current) return;\n _this.mouseLeaveTimer = _this.closeWithTimeout(e, mouseLeaveDelay);\n };\n\n _this.handlePortalMouseEnter = function () {\n // In order to enable mousing from the trigger to the portal, we need to\n // clear the mouseleave timer that was set when leaving the trigger.\n var closeOnPortalMouseLeave = _this.props.closeOnPortalMouseLeave;\n if (!closeOnPortalMouseLeave) return;\n clearTimeout(_this.mouseLeaveTimer);\n };\n\n _this.handleTriggerBlur = function (e) {\n var _this$props2 = _this.props,\n trigger = _this$props2.trigger,\n closeOnTriggerBlur = _this$props2.closeOnTriggerBlur; // Call original event handler\n\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n\n _invoke.apply(void 0, [trigger, 'props.onBlur', e].concat(rest)); // IE 11 doesn't work with relatedTarget in blur events\n\n\n var target = e.relatedTarget || document.activeElement; // do not close if focus is given to the portal\n\n var didFocusPortal = _invoke(_this.contentRef.current, 'contains', target);\n\n if (!closeOnTriggerBlur || didFocusPortal) return;\n\n _this.close(e);\n };\n\n _this.handleTriggerClick = function (e) {\n var _this$props3 = _this.props,\n trigger = _this$props3.trigger,\n closeOnTriggerClick = _this$props3.closeOnTriggerClick,\n openOnTriggerClick = _this$props3.openOnTriggerClick;\n var open = _this.state.open; // Call original event handler\n\n for (var _len3 = arguments.length, rest = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n rest[_key3 - 1] = arguments[_key3];\n }\n\n _invoke.apply(void 0, [trigger, 'props.onClick', e].concat(rest));\n\n if (open && closeOnTriggerClick) {\n _this.close(e);\n } else if (!open && openOnTriggerClick) {\n _this.open(e);\n }\n };\n\n _this.handleTriggerFocus = function (e) {\n var _this$props4 = _this.props,\n trigger = _this$props4.trigger,\n openOnTriggerFocus = _this$props4.openOnTriggerFocus; // Call original event handler\n\n for (var _len4 = arguments.length, rest = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n _invoke.apply(void 0, [trigger, 'props.onFocus', e].concat(rest));\n\n if (!openOnTriggerFocus) return;\n\n _this.open(e);\n };\n\n _this.handleTriggerMouseLeave = function (e) {\n clearTimeout(_this.mouseEnterTimer);\n var _this$props5 = _this.props,\n trigger = _this$props5.trigger,\n closeOnTriggerMouseLeave = _this$props5.closeOnTriggerMouseLeave,\n mouseLeaveDelay = _this$props5.mouseLeaveDelay; // Call original event handler\n\n for (var _len5 = arguments.length, rest = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n rest[_key5 - 1] = arguments[_key5];\n }\n\n _invoke.apply(void 0, [trigger, 'props.onMouseLeave', e].concat(rest));\n\n if (!closeOnTriggerMouseLeave) return;\n _this.mouseLeaveTimer = _this.closeWithTimeout(e, mouseLeaveDelay);\n };\n\n _this.handleTriggerMouseEnter = function (e) {\n clearTimeout(_this.mouseLeaveTimer);\n var _this$props6 = _this.props,\n trigger = _this$props6.trigger,\n mouseEnterDelay = _this$props6.mouseEnterDelay,\n openOnTriggerMouseEnter = _this$props6.openOnTriggerMouseEnter; // Call original event handler\n\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n rest[_key6 - 1] = arguments[_key6];\n }\n\n _invoke.apply(void 0, [trigger, 'props.onMouseEnter', e].concat(rest));\n\n if (!openOnTriggerMouseEnter) return;\n _this.mouseEnterTimer = _this.openWithTimeout(e, mouseEnterDelay);\n };\n\n _this.open = function (e) {\n _invoke(_this.props, 'onOpen', e, _extends({}, _this.props, {\n open: true\n }));\n\n _this.setState({\n open: true\n });\n };\n\n _this.openWithTimeout = function (e, delay) {\n // React wipes the entire event object and suggests using e.persist() if\n // you need the event for async access. However, even with e.persist\n // certain required props (e.g. currentTarget) are null so we're forced to clone.\n var eventClone = _extends({}, e);\n\n return setTimeout(function () {\n return _this.open(eventClone);\n }, delay || 0);\n };\n\n _this.close = function (e) {\n _this.setState({\n open: false\n });\n\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.closeWithTimeout = function (e, delay) {\n // React wipes the entire event object and suggests using e.persist() if\n // you need the event for async access. However, even with e.persist\n // certain required props (e.g. currentTarget) are null so we're forced to clone.\n var eventClone = _extends({}, e);\n\n return setTimeout(function () {\n return _this.close(eventClone);\n }, delay || 0);\n };\n\n _this.handleMount = function () {\n _invoke(_this.props, 'onMount', null, _this.props);\n };\n\n _this.handleUnmount = function () {\n _invoke(_this.props, 'onUnmount', null, _this.props);\n };\n\n _this.handleTriggerRef = function (c) {\n _this.triggerRef.current = c;\n handleRef(_this.props.triggerRef, c);\n };\n\n return _this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Clean up timers\n clearTimeout(this.mouseEnterTimer);\n clearTimeout(this.mouseLeaveTimer);\n } // ----------------------------------------\n // Document Event Handlers\n // ----------------------------------------\n ;\n\n _proto.render = function render() {\n var _this$props7 = this.props,\n children = _this$props7.children,\n eventPool = _this$props7.eventPool,\n mountNode = _this$props7.mountNode,\n trigger = _this$props7.trigger;\n var open = this.state.open;\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== 'production') {\n validateTrigger(trigger);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, open && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PortalInner, {\n innerRef: this.contentRef,\n mountNode: mountNode,\n onMount: this.handleMount,\n onUnmount: this.handleUnmount\n }, children), /*#__PURE__*/React.createElement(EventStack, {\n name: \"mouseleave\",\n on: this.handlePortalMouseLeave,\n pool: eventPool,\n target: this.contentRef\n }), /*#__PURE__*/React.createElement(EventStack, {\n name: \"mouseenter\",\n on: this.handlePortalMouseEnter,\n pool: eventPool,\n target: this.contentRef\n }), /*#__PURE__*/React.createElement(EventStack, {\n name: \"mousedown\",\n on: this.handleDocumentMouseDown,\n pool: eventPool\n }), /*#__PURE__*/React.createElement(EventStack, {\n name: \"click\",\n on: this.handleDocumentClick,\n pool: eventPool\n }), /*#__PURE__*/React.createElement(EventStack, {\n name: \"keydown\",\n on: this.handleEscape,\n pool: eventPool\n })), trigger && /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.handleTriggerRef\n }, /*#__PURE__*/React.cloneElement(trigger, {\n onBlur: this.handleTriggerBlur,\n onClick: this.handleTriggerClick,\n onFocus: this.handleTriggerFocus,\n onMouseLeave: this.handleTriggerMouseLeave,\n onMouseEnter: this.handleTriggerMouseEnter\n })));\n };\n\n return Portal;\n}(Component);\n\nPortal.handledProps = [\"children\", \"closeOnDocumentClick\", \"closeOnEscape\", \"closeOnPortalMouseLeave\", \"closeOnTriggerBlur\", \"closeOnTriggerClick\", \"closeOnTriggerMouseLeave\", \"defaultOpen\", \"eventPool\", \"mountNode\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"onClose\", \"onMount\", \"onOpen\", \"onUnmount\", \"open\", \"openOnTriggerClick\", \"openOnTriggerFocus\", \"openOnTriggerMouseEnter\", \"trigger\", \"triggerRef\"];\nPortal.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Primary content. */\n children: PropTypes.node.isRequired,\n\n /** Controls whether or not the portal should close when the document is clicked. */\n closeOnDocumentClick: PropTypes.bool,\n\n /** Controls whether or not the portal should close when escape is pressed is displayed. */\n closeOnEscape: PropTypes.bool,\n\n /**\n * Controls whether or not the portal should close when mousing out of the portal.\n * NOTE: This will prevent `closeOnTriggerMouseLeave` when mousing over the\n * gap from the trigger to the portal.\n */\n closeOnPortalMouseLeave: PropTypes.bool,\n\n /** Controls whether or not the portal should close on blur of the trigger. */\n closeOnTriggerBlur: PropTypes.bool,\n\n /** Controls whether or not the portal should close on click of the trigger. */\n closeOnTriggerClick: PropTypes.bool,\n\n /** Controls whether or not the portal should close when mousing out of the trigger. */\n closeOnTriggerMouseLeave: PropTypes.bool,\n\n /** Initial value of open. */\n defaultOpen: PropTypes.bool,\n\n /** Event pool namespace that is used to handle component events */\n eventPool: PropTypes.string,\n\n /** The node where the portal should mount. */\n mountNode: PropTypes.any,\n\n /** Milliseconds to wait before opening on mouse over */\n mouseEnterDelay: PropTypes.number,\n\n /** Milliseconds to wait before closing on mouse leave */\n mouseLeaveDelay: PropTypes.number,\n\n /**\n * Called when a close event happens\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called when the portal is mounted on the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onMount: PropTypes.func,\n\n /**\n * Called when an open event happens\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called when the portal is unmounted from the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onUnmount: PropTypes.func,\n\n /** Controls whether or not the portal is displayed. */\n open: PropTypes.bool,\n\n /** Controls whether or not the portal should open when the trigger is clicked. */\n openOnTriggerClick: PropTypes.bool,\n\n /** Controls whether or not the portal should open on focus of the trigger. */\n openOnTriggerFocus: PropTypes.bool,\n\n /** Controls whether or not the portal should open when mousing over the trigger. */\n openOnTriggerMouseEnter: PropTypes.bool,\n\n /** Element to be rendered in-place where the portal is defined. */\n trigger: PropTypes.node,\n\n /** Called with a ref to the trigger node. */\n triggerRef: customPropTypes.ref\n} : {};\nPortal.defaultProps = {\n closeOnDocumentClick: true,\n closeOnEscape: true,\n eventPool: 'default',\n openOnTriggerClick: true\n};\nPortal.autoControlledProps = ['open'];\nPortal.Inner = PortalInner;\nexport default Portal;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport { handleRef, Ref } from '@fluentui/react-component-ref';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport { customPropTypes, isBrowser } from '../../lib';\n\n/**\n * An inner component that allows you to render children outside their parent.\n */\nvar PortalInner = /*#__PURE__*/function (_Component) {\n _inheritsLoose(PortalInner, _Component);\n\n function PortalInner() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleRef = function (c) {\n handleRef(_this.props.innerRef, c);\n };\n\n return _this;\n }\n\n var _proto = PortalInner.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n _invoke(this.props, 'onMount', null, this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n _invoke(this.props, 'onUnmount', null, this.props);\n };\n\n _proto.render = function render() {\n if (!isBrowser()) return null;\n var _this$props = this.props,\n children = _this$props.children,\n _this$props$mountNode = _this$props.mountNode,\n mountNode = _this$props$mountNode === void 0 ? document.body : _this$props$mountNode;\n return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.handleRef\n }, children), mountNode);\n };\n\n return PortalInner;\n}(Component);\n\nPortalInner.handledProps = [\"children\", \"innerRef\", \"mountNode\", \"onMount\", \"onUnmount\"];\nPortalInner.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Primary content. */\n children: PropTypes.node.isRequired,\n\n /** Called with a ref to the inner node. */\n innerRef: customPropTypes.ref,\n\n /** The node where the portal should mount. */\n mountNode: PropTypes.any,\n\n /**\n * Called when the portal is mounted on the DOM\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onMount: PropTypes.func,\n\n /**\n * Called when the portal is unmounted from the DOM\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onUnmount: PropTypes.func\n} : {};\nexport default PortalInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _isNil from \"lodash-es/isNil\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { childrenUtils, customPropTypes, createShorthandFactory, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey } from '../../lib';\nimport Icon from '../Icon/Icon';\nimport Label from '../Label/Label';\nimport ButtonContent from './ButtonContent';\nimport ButtonGroup from './ButtonGroup';\nimport ButtonOr from './ButtonOr';\n/**\n * A Button indicates a possible user action.\n * @see Form\n * @see Icon\n * @see Label\n */\n\nvar Button = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Button, _Component);\n\n function Button() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.ref = /*#__PURE__*/createRef();\n\n _this.computeElementType = function () {\n var _this$props = _this.props,\n attached = _this$props.attached,\n label = _this$props.label;\n if (!_isNil(attached) || !_isNil(label)) return 'div';\n };\n\n _this.computeTabIndex = function (ElementType) {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n if (disabled) return -1;\n if (ElementType === 'div') return 0;\n };\n\n _this.focus = function (options) {\n return _invoke(_this.ref.current, 'focus', options);\n };\n\n _this.handleClick = function (e) {\n var disabled = _this.props.disabled;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n _this.hasIconClass = function () {\n var _this$props3 = _this.props,\n labelPosition = _this$props3.labelPosition,\n children = _this$props3.children,\n content = _this$props3.content,\n icon = _this$props3.icon;\n if (icon === true) return true;\n return icon && (labelPosition || childrenUtils.isNil(children) && _isNil(content));\n };\n\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.computeButtonAriaRole = function computeButtonAriaRole(ElementType) {\n var role = this.props.role;\n if (!_isNil(role)) return role;\n if (ElementType !== 'button') return 'button';\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n active = _this$props4.active,\n animated = _this$props4.animated,\n attached = _this$props4.attached,\n basic = _this$props4.basic,\n children = _this$props4.children,\n circular = _this$props4.circular,\n className = _this$props4.className,\n color = _this$props4.color,\n compact = _this$props4.compact,\n content = _this$props4.content,\n disabled = _this$props4.disabled,\n floated = _this$props4.floated,\n fluid = _this$props4.fluid,\n icon = _this$props4.icon,\n inverted = _this$props4.inverted,\n label = _this$props4.label,\n labelPosition = _this$props4.labelPosition,\n loading = _this$props4.loading,\n negative = _this$props4.negative,\n positive = _this$props4.positive,\n primary = _this$props4.primary,\n secondary = _this$props4.secondary,\n size = _this$props4.size,\n toggle = _this$props4.toggle,\n type = _this$props4.type;\n var baseClasses = cx(color, size, useKeyOnly(active, 'active'), useKeyOnly(basic, 'basic'), useKeyOnly(circular, 'circular'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(this.hasIconClass(), 'icon'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(negative, 'negative'), useKeyOnly(positive, 'positive'), useKeyOnly(primary, 'primary'), useKeyOnly(secondary, 'secondary'), useKeyOnly(toggle, 'toggle'), useKeyOrValueAndKey(animated, 'animated'), useKeyOrValueAndKey(attached, 'attached'));\n var labeledClasses = cx(useKeyOrValueAndKey(labelPosition || !!label, 'labeled'));\n var wrapperClasses = cx(useKeyOnly(disabled, 'disabled'), useValueAndKey(floated, 'floated'));\n var rest = getUnhandledProps(Button, this.props);\n var ElementType = getElementType(Button, this.props, this.computeElementType);\n var tabIndex = this.computeTabIndex(ElementType);\n\n if (!_isNil(label)) {\n var buttonClasses = cx('ui', baseClasses, 'button', className);\n var containerClasses = cx('ui', labeledClasses, 'button', className, wrapperClasses);\n var labelElement = Label.create(label, {\n defaultProps: {\n basic: true,\n pointing: labelPosition === 'left' ? 'right' : 'left'\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: containerClasses,\n onClick: this.handleClick\n }), labelPosition === 'left' && labelElement, /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: buttonClasses,\n \"aria-pressed\": toggle ? !!active : undefined,\n disabled: disabled,\n type: type,\n tabIndex: tabIndex\n }, Icon.create(icon, {\n autoGenerateKey: false\n }), \" \", content)), (labelPosition === 'right' || !labelPosition) && labelElement);\n }\n\n var classes = cx('ui', baseClasses, wrapperClasses, labeledClasses, 'button', className);\n var hasChildren = !childrenUtils.isNil(children);\n var role = this.computeButtonAriaRole(ElementType);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n \"aria-pressed\": toggle ? !!active : undefined,\n disabled: disabled && ElementType === 'button' || undefined,\n onClick: this.handleClick,\n role: role,\n type: type,\n tabIndex: tabIndex\n }), hasChildren && children, !hasChildren && Icon.create(icon, {\n autoGenerateKey: false\n }), !hasChildren && content));\n };\n\n return Button;\n}(Component);\n\nButton.handledProps = [\"active\", \"animated\", \"as\", \"attached\", \"basic\", \"children\", \"circular\", \"className\", \"color\", \"compact\", \"content\", \"disabled\", \"floated\", \"fluid\", \"icon\", \"inverted\", \"label\", \"labelPosition\", \"loading\", \"negative\", \"onClick\", \"positive\", \"primary\", \"role\", \"secondary\", \"size\", \"tabIndex\", \"toggle\", \"type\"];\nButton.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A button can show it is currently the active user selection. */\n active: PropTypes.bool,\n\n /** A button can animate to show hidden content. */\n animated: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['fade', 'vertical'])]),\n\n /** A button can be attached to other content. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'bottom'])]),\n\n /** A basic button is less pronounced. */\n basic: PropTypes.bool,\n\n /** Primary content. */\n children: customPropTypes.every([PropTypes.node, customPropTypes.disallow(['label']), customPropTypes.givenProps({\n icon: PropTypes.oneOfType([PropTypes.string.isRequired, PropTypes.object.isRequired, PropTypes.element.isRequired])\n }, customPropTypes.disallow(['icon']))]),\n\n /** A button can be circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A button can have different colors */\n color: PropTypes.oneOf([].concat(SUI.COLORS, ['facebook', 'google plus', 'instagram', 'linkedin', 'twitter', 'vk', 'youtube'])),\n\n /** A button can reduce its padding to fit into tighter spaces. */\n compact: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A button can show it is currently unable to be interacted with. */\n disabled: PropTypes.bool,\n\n /** A button can be aligned to the left or right of its container. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** A button can take the width of its container. */\n fluid: PropTypes.bool,\n\n /** Add an Icon by name, props object, or pass an <Icon />. */\n icon: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.object, PropTypes.element]),\n\n /** A button can be formatted to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Add a Label by text, props object, or pass a <Label />. */\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.element]),\n\n /** A labeled button can format a Label or Icon to appear on the left or right. */\n labelPosition: PropTypes.oneOf(['right', 'left']),\n\n /** A button can show a loading indicator. */\n loading: PropTypes.bool,\n\n /** A button can hint towards a negative consequence. */\n negative: PropTypes.bool,\n\n /**\n * Called after user's click.\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /** A button can hint towards a positive consequence. */\n positive: PropTypes.bool,\n\n /** A button can be formatted to show different levels of emphasis. */\n primary: PropTypes.bool,\n\n /** The role of the HTML element. */\n role: PropTypes.string,\n\n /** A button can be formatted to show different levels of emphasis. */\n secondary: PropTypes.bool,\n\n /** A button can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** A button can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** A button can be formatted to toggle on and off. */\n toggle: PropTypes.bool,\n\n /** The type of the HTML element. */\n type: PropTypes.oneOf(['button', 'submit', 'reset'])\n} : {};\nButton.defaultProps = {\n as: 'button'\n};\nButton.Content = ButtonContent;\nButton.Group = ButtonGroup;\nButton.Or = ButtonOr;\nButton.create = createShorthandFactory(Button, function (value) {\n return {\n content: value\n };\n});\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * Used in some Button types, such as `animated`.\n */\n\nfunction ButtonContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n hidden = props.hidden,\n visible = props.visible;\n var classes = cx(useKeyOnly(visible, 'visible'), useKeyOnly(hidden, 'hidden'), 'content', className);\n var rest = getUnhandledProps(ButtonContent, props);\n var ElementType = getElementType(ButtonContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nButtonContent.handledProps = [\"as\", \"children\", \"className\", \"content\", \"hidden\", \"visible\"];\nButtonContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Initially hidden, visible on hover. */\n hidden: PropTypes.bool,\n\n /** Initially visible, hidden on hover. */\n visible: PropTypes.bool\n} : {};\nexport default ButtonContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _map from \"lodash-es/map\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey, useWidthProp } from '../../lib';\nimport Button from './Button';\n/**\n * Buttons can be grouped.\n */\n\nfunction ButtonGroup(props) {\n var attached = props.attached,\n basic = props.basic,\n buttons = props.buttons,\n children = props.children,\n className = props.className,\n color = props.color,\n compact = props.compact,\n content = props.content,\n floated = props.floated,\n fluid = props.fluid,\n icon = props.icon,\n inverted = props.inverted,\n labeled = props.labeled,\n negative = props.negative,\n positive = props.positive,\n primary = props.primary,\n secondary = props.secondary,\n size = props.size,\n toggle = props.toggle,\n vertical = props.vertical,\n widths = props.widths;\n var classes = cx('ui', color, size, useKeyOnly(basic, 'basic'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(icon, 'icon'), useKeyOnly(inverted, 'inverted'), useKeyOnly(labeled, 'labeled'), useKeyOnly(negative, 'negative'), useKeyOnly(positive, 'positive'), useKeyOnly(primary, 'primary'), useKeyOnly(secondary, 'secondary'), useKeyOnly(toggle, 'toggle'), useKeyOnly(vertical, 'vertical'), useKeyOrValueAndKey(attached, 'attached'), useValueAndKey(floated, 'floated'), useWidthProp(widths), 'buttons', className);\n var rest = getUnhandledProps(ButtonGroup, props);\n var ElementType = getElementType(ButtonGroup, props);\n\n if (_isNil(buttons)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), _map(buttons, function (button) {\n return Button.create(button);\n }));\n}\n\nButtonGroup.handledProps = [\"as\", \"attached\", \"basic\", \"buttons\", \"children\", \"className\", \"color\", \"compact\", \"content\", \"floated\", \"fluid\", \"icon\", \"inverted\", \"labeled\", \"negative\", \"positive\", \"primary\", \"secondary\", \"size\", \"toggle\", \"vertical\", \"widths\"];\nButtonGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Groups can be attached to other content. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'bottom'])]),\n\n /** Groups can be less pronounced. */\n basic: PropTypes.bool,\n\n /** Array of shorthand Button values. */\n buttons: customPropTypes.collectionShorthand,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Groups can have a shared color. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Groups can reduce their padding to fit into tighter spaces. */\n compact: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Groups can be aligned to the left or right of its container. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** Groups can take the width of their container. */\n fluid: PropTypes.bool,\n\n /** Groups can be formatted as icons. */\n icon: PropTypes.bool,\n\n /** Groups can be formatted to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Groups can be formatted as labeled icon buttons. */\n labeled: PropTypes.bool,\n\n /** Groups can hint towards a negative consequence. */\n negative: PropTypes.bool,\n\n /** Groups can hint towards a positive consequence. */\n positive: PropTypes.bool,\n\n /** Groups can be formatted to show different levels of emphasis. */\n primary: PropTypes.bool,\n\n /** Groups can be formatted to show different levels of emphasis. */\n secondary: PropTypes.bool,\n\n /** Groups can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** Groups can be formatted to toggle on and off. */\n toggle: PropTypes.bool,\n\n /** Groups can be formatted to appear vertically. */\n vertical: PropTypes.bool,\n\n /** Groups can have their widths divided evenly. */\n widths: PropTypes.oneOf(SUI.WIDTHS)\n} : {};\nexport default ButtonGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * Button groups can contain conditionals.\n */\n\nfunction ButtonOr(props) {\n var className = props.className,\n text = props.text;\n var classes = cx('or', className);\n var rest = getUnhandledProps(ButtonOr, props);\n var ElementType = getElementType(ButtonOr, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n \"data-text\": text\n }));\n}\n\nButtonOr.handledProps = [\"as\", \"className\", \"text\"];\nButtonOr.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Or buttons can have their text localized, or adjusted by using the text prop. */\n text: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nexport default ButtonOr;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nexport var names = ['ad', 'andorra', 'ae', 'united arab emirates', 'uae', 'af', 'afghanistan', 'ag', 'antigua', 'ai', 'anguilla', 'al', 'albania', 'am', 'armenia', 'an', 'netherlands antilles', 'ao', 'angola', 'ar', 'argentina', 'as', 'american samoa', 'at', 'austria', 'au', 'australia', 'aw', 'aruba', 'ax', 'aland islands', 'az', 'azerbaijan', 'ba', 'bosnia', 'bb', 'barbados', 'bd', 'bangladesh', 'be', 'belgium', 'bf', 'burkina faso', 'bg', 'bulgaria', 'bh', 'bahrain', 'bi', 'burundi', 'bj', 'benin', 'bm', 'bermuda', 'bn', 'brunei', 'bo', 'bolivia', 'br', 'brazil', 'bs', 'bahamas', 'bt', 'bhutan', 'bv', 'bouvet island', 'bw', 'botswana', 'by', 'belarus', 'bz', 'belize', 'ca', 'canada', 'cc', 'cocos islands', 'cd', 'congo', 'cf', 'central african republic', 'cg', 'congo brazzaville', 'ch', 'switzerland', 'ci', 'cote divoire', 'ck', 'cook islands', 'cl', 'chile', 'cm', 'cameroon', 'cn', 'china', 'co', 'colombia', 'cr', 'costa rica', 'cs', 'cu', 'cuba', 'cv', 'cape verde', 'cx', 'christmas island', 'cy', 'cyprus', 'cz', 'czech republic', 'de', 'germany', 'dj', 'djibouti', 'dk', 'denmark', 'dm', 'dominica', 'do', 'dominican republic', 'dz', 'algeria', 'ec', 'ecuador', 'england', 'gb eng', 'ee', 'estonia', 'eg', 'egypt', 'eh', 'western sahara', 'er', 'eritrea', 'es', 'spain', 'et', 'ethiopia', 'eu', 'european union', 'fi', 'finland', 'fj', 'fiji', 'fk', 'falkland islands', 'fm', 'micronesia', 'fo', 'faroe islands', 'fr', 'france', 'ga', 'gabon', 'gb', 'uk', 'united kingdom', 'gd', 'grenada', 'ge', 'georgia', 'gf', 'french guiana', 'gh', 'ghana', 'gi', 'gibraltar', 'gl', 'greenland', 'gm', 'gambia', 'gn', 'guinea', 'gp', 'guadeloupe', 'gq', 'equatorial guinea', 'gr', 'greece', 'gs', 'sandwich islands', 'gt', 'guatemala', 'gu', 'guam', 'gw', 'guinea-bissau', 'gy', 'guyana', 'hk', 'hong kong', 'hm', 'heard island', 'hn', 'honduras', 'hr', 'croatia', 'ht', 'haiti', 'hu', 'hungary', 'id', 'indonesia', 'ie', 'ireland', 'il', 'israel', 'in', 'india', 'io', 'indian ocean territory', 'iq', 'iraq', 'ir', 'iran', 'is', 'iceland', 'it', 'italy', 'jm', 'jamaica', 'jo', 'jordan', 'jp', 'japan', 'ke', 'kenya', 'kg', 'kyrgyzstan', 'kh', 'cambodia', 'ki', 'kiribati', 'km', 'comoros', 'kn', 'saint kitts and nevis', 'kp', 'north korea', 'kr', 'south korea', 'kw', 'kuwait', 'ky', 'cayman islands', 'kz', 'kazakhstan', 'la', 'laos', 'lb', 'lebanon', 'lc', 'saint lucia', 'li', 'liechtenstein', 'lk', 'sri lanka', 'lr', 'liberia', 'ls', 'lesotho', 'lt', 'lithuania', 'lu', 'luxembourg', 'lv', 'latvia', 'ly', 'libya', 'ma', 'morocco', 'mc', 'monaco', 'md', 'moldova', 'me', 'montenegro', 'mg', 'madagascar', 'mh', 'marshall islands', 'mk', 'macedonia', 'ml', 'mali', 'mm', 'myanmar', 'burma', 'mn', 'mongolia', 'mo', 'macau', 'mp', 'northern mariana islands', 'mq', 'martinique', 'mr', 'mauritania', 'ms', 'montserrat', 'mt', 'malta', 'mu', 'mauritius', 'mv', 'maldives', 'mw', 'malawi', 'mx', 'mexico', 'my', 'malaysia', 'mz', 'mozambique', 'na', 'namibia', 'nc', 'new caledonia', 'ne', 'niger', 'nf', 'norfolk island', 'ng', 'nigeria', 'ni', 'nicaragua', 'nl', 'netherlands', 'no', 'norway', 'np', 'nepal', 'nr', 'nauru', 'nu', 'niue', 'nz', 'new zealand', 'om', 'oman', 'pa', 'panama', 'pe', 'peru', 'pf', 'french polynesia', 'pg', 'new guinea', 'ph', 'philippines', 'pk', 'pakistan', 'pl', 'poland', 'pm', 'saint pierre', 'pn', 'pitcairn islands', 'pr', 'puerto rico', 'ps', 'palestine', 'pt', 'portugal', 'pw', 'palau', 'py', 'paraguay', 'qa', 'qatar', 're', 'reunion', 'ro', 'romania', 'rs', 'serbia', 'ru', 'russia', 'rw', 'rwanda', 'sa', 'saudi arabia', 'sb', 'solomon islands', 'sc', 'seychelles', 'gb sct', 'scotland', 'sd', 'sudan', 'se', 'sweden', 'sg', 'singapore', 'sh', 'saint helena', 'si', 'slovenia', 'sj', 'svalbard', 'jan mayen', 'sk', 'slovakia', 'sl', 'sierra leone', 'sm', 'san marino', 'sn', 'senegal', 'so', 'somalia', 'sr', 'suriname', 'st', 'sao tome', 'sv', 'el salvador', 'sy', 'syria', 'sz', 'swaziland', 'tc', 'caicos islands', 'td', 'chad', 'tf', 'french territories', 'tg', 'togo', 'th', 'thailand', 'tj', 'tajikistan', 'tk', 'tokelau', 'tl', 'timorleste', 'tm', 'turkmenistan', 'tn', 'tunisia', 'to', 'tonga', 'tr', 'turkey', 'tt', 'trinidad', 'tv', 'tuvalu', 'tw', 'taiwan', 'tz', 'tanzania', 'ua', 'ukraine', 'ug', 'uganda', 'um', 'us minor islands', 'us', 'america', 'united states', 'uy', 'uruguay', 'uz', 'uzbekistan', 'va', 'vatican city', 'vc', 'saint vincent', 've', 'venezuela', 'vg', 'british virgin islands', 'vi', 'us virgin islands', 'vn', 'vietnam', 'vu', 'vanuatu', 'gb wls', 'wales', 'wf', 'wallis and futuna', 'ws', 'samoa', 'ye', 'yemen', 'yt', 'mayotte', 'za', 'south africa', 'zm', 'zambia', 'zw', 'zimbabwe'];\n/**\n * A flag is is used to represent a political state.\n */\n\nvar Flag = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Flag, _PureComponent);\n\n function Flag() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n var _proto = Flag.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n name = _this$props.name;\n var classes = cx(name, 'flag', className);\n var rest = getUnhandledProps(Flag, this.props);\n var ElementType = getElementType(Flag, this.props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }));\n };\n\n return Flag;\n}(PureComponent);\n\nFlag.handledProps = [\"as\", \"className\", \"name\"];\nFlag.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Flag name, can use the two digit country code, the full name, or a common alias. */\n name: customPropTypes.suggest(names)\n} : {};\nFlag.defaultProps = {\n as: 'i'\n};\nFlag.create = createShorthandFactory(Flag, function (value) {\n return {\n name: value\n };\n});\nexport default Flag;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _invoke from \"lodash-es/invoke\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey } from '../../lib';\nimport IconGroup from './IconGroup';\n/**\n * An icon is a glyph used to represent something else.\n * @see Image\n */\n\nvar Icon = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Icon, _PureComponent);\n\n function Icon() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _PureComponent.call.apply(_PureComponent, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n var disabled = _this.props.disabled;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = Icon.prototype;\n\n _proto.getIconAriaOptions = function getIconAriaOptions() {\n var ariaOptions = {};\n var _this$props = this.props,\n ariaLabel = _this$props['aria-label'],\n ariaHidden = _this$props['aria-hidden'];\n\n if (_isNil(ariaLabel)) {\n ariaOptions['aria-hidden'] = 'true';\n } else {\n ariaOptions['aria-label'] = ariaLabel;\n }\n\n if (!_isNil(ariaHidden)) {\n ariaOptions['aria-hidden'] = ariaHidden;\n }\n\n return ariaOptions;\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n bordered = _this$props2.bordered,\n circular = _this$props2.circular,\n className = _this$props2.className,\n color = _this$props2.color,\n corner = _this$props2.corner,\n disabled = _this$props2.disabled,\n fitted = _this$props2.fitted,\n flipped = _this$props2.flipped,\n inverted = _this$props2.inverted,\n link = _this$props2.link,\n loading = _this$props2.loading,\n name = _this$props2.name,\n rotated = _this$props2.rotated,\n size = _this$props2.size;\n var classes = cx(color, name, size, useKeyOnly(bordered, 'bordered'), useKeyOnly(circular, 'circular'), useKeyOnly(disabled, 'disabled'), useKeyOnly(fitted, 'fitted'), useKeyOnly(inverted, 'inverted'), useKeyOnly(link, 'link'), useKeyOnly(loading, 'loading'), useKeyOrValueAndKey(corner, 'corner'), useValueAndKey(flipped, 'flipped'), useValueAndKey(rotated, 'rotated'), 'icon', className);\n var rest = getUnhandledProps(Icon, this.props);\n var ElementType = getElementType(Icon, this.props);\n var ariaOptions = this.getIconAriaOptions();\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onClick: this.handleClick\n }));\n };\n\n return Icon;\n}(PureComponent);\n\nIcon.handledProps = [\"aria-hidden\", \"aria-label\", \"as\", \"bordered\", \"circular\", \"className\", \"color\", \"corner\", \"disabled\", \"fitted\", \"flipped\", \"inverted\", \"link\", \"loading\", \"name\", \"rotated\", \"size\"];\nIcon.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Formatted to appear bordered. */\n bordered: PropTypes.bool,\n\n /** Icon can formatted to appear circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Color of the icon. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Icons can display a smaller corner icon. */\n corner: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['top left', 'top right', 'bottom left', 'bottom right'])]),\n\n /** Show that the icon is inactive. */\n disabled: PropTypes.bool,\n\n /** Fitted, without space to left or right of Icon. */\n fitted: PropTypes.bool,\n\n /** Icon can be flipped. */\n flipped: PropTypes.oneOf(['horizontally', 'vertically']),\n\n /** Formatted to have its colors inverted for contrast. */\n inverted: PropTypes.bool,\n\n /** Icon can be formatted as a link. */\n link: PropTypes.bool,\n\n /** Icon can be used as a simple loader. */\n loading: PropTypes.bool,\n\n /** Name of the icon. */\n name: customPropTypes.suggest(SUI.ALL_ICONS_IN_ALL_CONTEXTS),\n\n /** Icon can rotated. */\n rotated: PropTypes.oneOf(['clockwise', 'counterclockwise']),\n\n /** Size of the icon. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium')),\n\n /** Icon can have an aria label. */\n 'aria-hidden': PropTypes.string,\n\n /** Icon can have an aria label. */\n 'aria-label': PropTypes.string\n} : {};\nIcon.defaultProps = {\n as: 'i'\n};\nIcon.Group = IconGroup;\nIcon.create = createShorthandFactory(Icon, function (value) {\n return {\n name: value\n };\n});\nexport default Icon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _without from \"lodash-es/without\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI } from '../../lib';\n/**\n * Several icons can be used together as a group.\n */\n\nfunction IconGroup(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n size = props.size;\n var classes = cx(size, 'icons', className);\n var rest = getUnhandledProps(IconGroup, props);\n var ElementType = getElementType(IconGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nIconGroup.handledProps = [\"as\", \"children\", \"className\", \"content\", \"size\"];\nIconGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Size of the icon group. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium'))\n} : {};\nIconGroup.defaultProps = {\n as: 'i'\n};\nexport default IconGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, htmlImageProps, partitionHTMLProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey, useVerticalAlignProp } from '../../lib';\nimport Dimmer from '../../modules/Dimmer';\nimport Label from '../Label/Label';\nimport ImageGroup from './ImageGroup';\n/**\n * An image is a graphic representation of something.\n * @see Icon\n */\n\nfunction Image(props) {\n var avatar = props.avatar,\n bordered = props.bordered,\n centered = props.centered,\n children = props.children,\n circular = props.circular,\n className = props.className,\n content = props.content,\n dimmer = props.dimmer,\n disabled = props.disabled,\n floated = props.floated,\n fluid = props.fluid,\n hidden = props.hidden,\n href = props.href,\n inline = props.inline,\n label = props.label,\n rounded = props.rounded,\n size = props.size,\n spaced = props.spaced,\n verticalAlign = props.verticalAlign,\n wrapped = props.wrapped,\n ui = props.ui;\n var classes = cx(useKeyOnly(ui, 'ui'), size, useKeyOnly(avatar, 'avatar'), useKeyOnly(bordered, 'bordered'), useKeyOnly(circular, 'circular'), useKeyOnly(centered, 'centered'), useKeyOnly(disabled, 'disabled'), useKeyOnly(fluid, 'fluid'), useKeyOnly(hidden, 'hidden'), useKeyOnly(inline, 'inline'), useKeyOnly(rounded, 'rounded'), useKeyOrValueAndKey(spaced, 'spaced'), useValueAndKey(floated, 'floated'), useVerticalAlignProp(verticalAlign, 'aligned'), 'image', className);\n var rest = getUnhandledProps(Image, props);\n\n var _partitionHTMLProps = partitionHTMLProps(rest, {\n htmlProps: htmlImageProps\n }),\n imgTagProps = _partitionHTMLProps[0],\n rootProps = _partitionHTMLProps[1];\n\n var ElementType = getElementType(Image, props, function () {\n if (!_isNil(dimmer) || !_isNil(label) || !_isNil(wrapped) || !childrenUtils.isNil(children)) {\n return 'div';\n }\n });\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n if (!childrenUtils.isNil(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), content);\n }\n\n if (ElementType === 'img') {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rootProps, imgTagProps, {\n className: classes\n }));\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rootProps, {\n className: classes,\n href: href\n }), Dimmer.create(dimmer, {\n autoGenerateKey: false\n }), Label.create(label, {\n autoGenerateKey: false\n }), /*#__PURE__*/React.createElement(\"img\", imgTagProps));\n}\n\nImage.handledProps = [\"as\", \"avatar\", \"bordered\", \"centered\", \"children\", \"circular\", \"className\", \"content\", \"dimmer\", \"disabled\", \"floated\", \"fluid\", \"hidden\", \"href\", \"inline\", \"label\", \"rounded\", \"size\", \"spaced\", \"ui\", \"verticalAlign\", \"wrapped\"];\nImage.Group = ImageGroup;\nImage.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An image may be formatted to appear inline with text as an avatar. */\n avatar: PropTypes.bool,\n\n /** An image may include a border to emphasize the edges of white or transparent content. */\n bordered: PropTypes.bool,\n\n /** An image can appear centered in a content block. */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** An image may appear circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** An image can show that it is disabled and cannot be selected. */\n disabled: PropTypes.bool,\n\n /** Shorthand for Dimmer. */\n dimmer: customPropTypes.itemShorthand,\n\n /** An image can sit to the left or right of other content. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** An image can take up the width of its container. */\n fluid: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['size'])]),\n\n /** An image can be hidden. */\n hidden: PropTypes.bool,\n\n /** Renders the Image as an <a> tag with this href. */\n href: PropTypes.string,\n\n /** An image may appear inline. */\n inline: PropTypes.bool,\n\n /** Shorthand for Label. */\n label: customPropTypes.itemShorthand,\n\n /** An image may appear rounded. */\n rounded: PropTypes.bool,\n\n /** An image may appear at different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** An image can specify that it needs an additional spacing to separate it from nearby content. */\n spaced: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n\n /** Whether or not to add the ui className. */\n ui: PropTypes.bool,\n\n /** An image can specify its vertical alignment. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS),\n\n /** An image can render wrapped in a `div.ui.image` as alternative HTML markup. */\n wrapped: PropTypes.bool\n} : {};\nImage.defaultProps = {\n as: 'img',\n ui: true\n};\nImage.create = createShorthandFactory(Image, function (value) {\n return {\n src: value\n };\n});\nexport default Image;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI } from '../../lib';\n/**\n * A group of images.\n */\n\nfunction ImageGroup(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n size = props.size;\n var classes = cx('ui', size, className, 'images');\n var rest = getUnhandledProps(ImageGroup, props);\n var ElementType = getElementType(ImageGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nImageGroup.handledProps = [\"as\", \"children\", \"className\", \"content\", \"size\"];\nImageGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A group of images can be formatted to have the same size. */\n size: PropTypes.oneOf(SUI.SIZES)\n} : {};\nexport default ImageGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey } from '../../lib';\nimport Icon from '../Icon/Icon';\nimport Image from '../Image/Image';\nimport LabelDetail from './LabelDetail';\nimport LabelGroup from './LabelGroup';\n/**\n * A label displays content classification.\n */\n\nvar Label = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Label, _Component);\n\n function Label() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n if (onClick) onClick(e, _this.props);\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e);\n\n _invoke(_this.props, 'onRemove', e, _this.props);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = Label.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n attached = _this$props.attached,\n basic = _this$props.basic,\n children = _this$props.children,\n circular = _this$props.circular,\n className = _this$props.className,\n color = _this$props.color,\n content = _this$props.content,\n corner = _this$props.corner,\n detail = _this$props.detail,\n empty = _this$props.empty,\n floating = _this$props.floating,\n horizontal = _this$props.horizontal,\n icon = _this$props.icon,\n image = _this$props.image,\n onRemove = _this$props.onRemove,\n pointing = _this$props.pointing,\n prompt = _this$props.prompt,\n removeIcon = _this$props.removeIcon,\n ribbon = _this$props.ribbon,\n size = _this$props.size,\n tag = _this$props.tag;\n var pointingClass = pointing === true && 'pointing' || (pointing === 'left' || pointing === 'right') && pointing + \" pointing\" || (pointing === 'above' || pointing === 'below') && \"pointing \" + pointing;\n var classes = cx('ui', color, pointingClass, size, useKeyOnly(active, 'active'), useKeyOnly(basic, 'basic'), useKeyOnly(circular, 'circular'), useKeyOnly(empty, 'empty'), useKeyOnly(floating, 'floating'), useKeyOnly(horizontal, 'horizontal'), useKeyOnly(image === true, 'image'), useKeyOnly(prompt, 'prompt'), useKeyOnly(tag, 'tag'), useKeyOrValueAndKey(corner, 'corner'), useKeyOrValueAndKey(ribbon, 'ribbon'), useValueAndKey(attached, 'attached'), 'label', className);\n var rest = getUnhandledProps(Label, this.props);\n var ElementType = getElementType(Label, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick\n }), children);\n }\n\n var removeIconShorthand = _isUndefined(removeIcon) ? 'delete' : removeIcon;\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n className: classes,\n onClick: this.handleClick\n }, rest), Icon.create(icon, {\n autoGenerateKey: false\n }), typeof image !== 'boolean' && Image.create(image, {\n autoGenerateKey: false\n }), content, LabelDetail.create(detail, {\n autoGenerateKey: false\n }), onRemove && Icon.create(removeIconShorthand, {\n autoGenerateKey: false,\n overrideProps: this.handleIconOverrides\n }));\n };\n\n return Label;\n}(Component);\n\nLabel.handledProps = [\"active\", \"as\", \"attached\", \"basic\", \"children\", \"circular\", \"className\", \"color\", \"content\", \"corner\", \"detail\", \"empty\", \"floating\", \"horizontal\", \"icon\", \"image\", \"onClick\", \"onRemove\", \"pointing\", \"prompt\", \"removeIcon\", \"ribbon\", \"size\", \"tag\"];\nexport { Label as default };\nLabel.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A label can be active. */\n active: PropTypes.bool,\n\n /** A label can attach to a content segment. */\n attached: PropTypes.oneOf(['top', 'bottom', 'top right', 'top left', 'bottom left', 'bottom right']),\n\n /** A label can reduce its complexity. */\n basic: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** A label can be circular. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Color of the label. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A label can position itself in the corner of an element. */\n corner: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n\n /** Shorthand for LabelDetail. */\n detail: customPropTypes.itemShorthand,\n\n /** Formats the label as a dot. */\n empty: customPropTypes.every([PropTypes.bool, customPropTypes.demand(['circular'])]),\n\n /** Float above another element in the upper right corner. */\n floating: PropTypes.bool,\n\n /** A horizontal label is formatted to label content along-side it horizontally. */\n horizontal: PropTypes.bool,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand,\n\n /** A label can be formatted to emphasize an image or prop can be used as shorthand for Image. */\n image: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Adds an \"x\" icon, called when \"x\" is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onRemove: PropTypes.func,\n\n /** A label can point to content next to it. */\n pointing: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['above', 'below', 'left', 'right'])]),\n\n /** A label can prompt for an error in your forms. */\n prompt: PropTypes.bool,\n\n /** Shorthand for Icon to appear as the last child and trigger onRemove. */\n removeIcon: customPropTypes.itemShorthand,\n\n /** A label can appear as a ribbon attaching itself to an element. */\n ribbon: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['right'])]),\n\n /** A label can have different sizes. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** A label can appear as a tag. */\n tag: PropTypes.bool\n} : {};\nLabel.Detail = LabelDetail;\nLabel.Group = LabelGroup;\nLabel.create = createShorthandFactory(Label, function (value) {\n return {\n content: value\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n\nfunction LabelDetail(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('detail', className);\n var rest = getUnhandledProps(LabelDetail, props);\n var ElementType = getElementType(LabelDetail, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nLabelDetail.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nLabelDetail.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nLabelDetail.create = createShorthandFactory(LabelDetail, function (val) {\n return {\n content: val\n };\n});\nexport default LabelDetail;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly } from '../../lib';\n/**\n * A label can be grouped.\n */\n\nfunction LabelGroup(props) {\n var children = props.children,\n circular = props.circular,\n className = props.className,\n color = props.color,\n content = props.content,\n size = props.size,\n tag = props.tag;\n var classes = cx('ui', color, size, useKeyOnly(circular, 'circular'), useKeyOnly(tag, 'tag'), 'labels', className);\n var rest = getUnhandledProps(LabelGroup, props);\n var ElementType = getElementType(LabelGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nLabelGroup.handledProps = [\"as\", \"children\", \"circular\", \"className\", \"color\", \"content\", \"size\", \"tag\"];\nLabelGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Labels can share shapes. */\n circular: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Label group can share colors together. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Label group can share sizes together. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** Label group can share tag formatting. */\n tag: PropTypes.bool\n} : {};\nexport default LabelGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _startsWith from \"lodash-es/startsWith\";\nimport _filter from \"lodash-es/filter\";\nimport _isEmpty from \"lodash-es/isEmpty\";\nimport _keys from \"lodash-es/keys\";\nimport _intersection from \"lodash-es/intersection\";\nimport _has from \"lodash-es/has\";\nimport _each from \"lodash-es/each\";\nimport _invoke from \"lodash-es/invoke\";\nimport React from 'react';\n\nvar getDefaultPropName = function getDefaultPropName(prop) {\n return \"default\" + (prop[0].toUpperCase() + prop.slice(1));\n};\n/**\n * Return the auto controlled state value for a give prop. The initial value is chosen in this order:\n * - regular props\n * - then, default props\n * - then, initial state\n * - then, `checked` defaults to false\n * - then, `value` defaults to '' or [] if props.multiple\n * - else, undefined\n *\n * @param {string} propName A prop name\n * @param {object} [props] A props object\n * @param {object} [state] A state object\n * @param {boolean} [includeDefaults=false] Whether or not to heed the default props or initial state\n */\n\n\nvar getAutoControlledStateValue = function getAutoControlledStateValue(propName, props, state, includeDefaults) {\n if (includeDefaults === void 0) {\n includeDefaults = false;\n }\n\n // regular props\n var propValue = props[propName];\n if (propValue !== undefined) return propValue;\n\n if (includeDefaults) {\n // defaultProps\n var defaultProp = props[getDefaultPropName(propName)];\n if (defaultProp !== undefined) return defaultProp; // initial state - state may be null or undefined\n\n if (state) {\n var initialState = state[propName];\n if (initialState !== undefined) return initialState;\n }\n } // React doesn't allow changing from uncontrolled to controlled components,\n // default checked/value if they were not present.\n\n\n if (propName === 'checked') return false;\n if (propName === 'value') return props.multiple ? [] : ''; // otherwise, undefined\n};\n\nvar ModernAutoControlledComponent = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ModernAutoControlledComponent, _React$Component);\n\n function ModernAutoControlledComponent() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n var _this$constructor = _this.constructor,\n autoControlledProps = _this$constructor.autoControlledProps,\n getAutoControlledStateFromProps = _this$constructor.getAutoControlledStateFromProps;\n var state = _invoke(_assertThisInitialized(_this), 'getInitialAutoControlledState', _this.props) || {};\n\n if (process.env.NODE_ENV !== 'production') {\n var _this$constructor2 = _this.constructor,\n defaultProps = _this$constructor2.defaultProps,\n name = _this$constructor2.name,\n propTypes = _this$constructor2.propTypes,\n getDerivedStateFromProps = _this$constructor2.getDerivedStateFromProps; // require usage of getAutoControlledStateFromProps()\n\n if (getDerivedStateFromProps !== ModernAutoControlledComponent.getDerivedStateFromProps) {\n /* eslint-disable-next-line no-console */\n console.error(\"Auto controlled \" + name + \" must specify a static getAutoControlledStateFromProps() instead of getDerivedStateFromProps().\");\n } // require propTypes\n\n\n _each(autoControlledProps, function (prop) {\n var defaultProp = getDefaultPropName(prop); // regular prop\n\n if (!_has(propTypes, defaultProp)) {\n console.error(name + \" is missing \\\"\" + defaultProp + \"\\\" propTypes validation for auto controlled prop \\\"\" + prop + \"\\\".\");\n } // its default prop\n\n\n if (!_has(propTypes, prop)) {\n console.error(name + \" is missing propTypes validation for auto controlled prop \\\"\" + prop + \"\\\".\");\n }\n }); // prevent autoControlledProps in defaultProps\n //\n // When setting state, auto controlled props values always win (so the parent can manage them).\n // It is not reasonable to decipher the difference between props from the parent and defaultProps.\n // Allowing defaultProps results in trySetState always deferring to the defaultProp value.\n // Auto controlled props also listed in defaultProps can never be updated.\n //\n // To set defaults for an AutoControlled prop, you can set the initial state in the\n // constructor or by using an ES7 property initializer:\n // https://babeljs.io/blog/2015/06/07/react-on-es6-plus#property-initializers\n\n\n var illegalDefaults = _intersection(autoControlledProps, _keys(defaultProps));\n\n if (!_isEmpty(illegalDefaults)) {\n console.error(['Do not set defaultProps for autoControlledProps. You can set defaults by', 'setting state in the constructor or using an ES7 property initializer', '(https://babeljs.io/blog/2015/06/07/react-on-es6-plus#property-initializers)', \"See \" + name + \" props: \\\"\" + illegalDefaults + \"\\\".\"].join(' '));\n } // prevent listing defaultProps in autoControlledProps\n //\n // Default props are automatically handled.\n // Listing defaults in autoControlledProps would result in allowing defaultDefaultValue props.\n\n\n var illegalAutoControlled = _filter(autoControlledProps, function (prop) {\n return _startsWith(prop, 'default');\n });\n\n if (!_isEmpty(illegalAutoControlled)) {\n console.error(['Do not add default props to autoControlledProps.', 'Default props are automatically handled.', \"See \" + name + \" autoControlledProps: \\\"\" + illegalAutoControlled + \"\\\".\"].join(' '));\n }\n } // Auto controlled props are copied to state.\n // Set initial state by copying auto controlled props to state.\n // Also look for the default prop for any auto controlled props (foo => defaultFoo)\n // so we can set initial values from defaults.\n\n\n var initialAutoControlledState = autoControlledProps.reduce(function (acc, prop) {\n acc[prop] = getAutoControlledStateValue(prop, _this.props, state, true);\n\n if (process.env.NODE_ENV !== 'production') {\n var defaultPropName = getDefaultPropName(prop);\n var _name = _this.constructor.name; // prevent defaultFoo={} along side foo={}\n\n if (!_isUndefined(_this.props[defaultPropName]) && !_isUndefined(_this.props[prop])) {\n console.error(_name + \" prop \\\"\" + prop + \"\\\" is auto controlled. Specify either \" + defaultPropName + \" or \" + prop + \", but not both.\");\n }\n }\n\n return acc;\n }, {});\n _this.state = _extends({}, state, initialAutoControlledState, {\n autoControlledProps: autoControlledProps,\n getAutoControlledStateFromProps: getAutoControlledStateFromProps\n });\n return _this;\n }\n\n ModernAutoControlledComponent.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var autoControlledProps = state.autoControlledProps,\n getAutoControlledStateFromProps = state.getAutoControlledStateFromProps; // Solve the next state for autoControlledProps\n\n var newStateFromProps = autoControlledProps.reduce(function (acc, prop) {\n var isNextDefined = !_isUndefined(props[prop]); // if next is defined then use its value\n\n if (isNextDefined) acc[prop] = props[prop];\n return acc;\n }, {}); // Due to the inheritance of the AutoControlledComponent we should call its\n // getAutoControlledStateFromProps() and merge it with the existing state\n\n if (getAutoControlledStateFromProps) {\n var computedState = getAutoControlledStateFromProps(props, _extends({}, state, newStateFromProps), state); // We should follow the idea of getDerivedStateFromProps() and return only modified state\n\n return _extends({}, newStateFromProps, computedState);\n }\n\n return newStateFromProps;\n }\n /**\n * Override this method to use getDerivedStateFromProps() in child components.\n */\n ;\n\n ModernAutoControlledComponent.getAutoControlledStateFromProps = function getAutoControlledStateFromProps() {\n return null;\n };\n\n return ModernAutoControlledComponent;\n}(React.Component);\n\nexport { ModernAutoControlledComponent as default };","import _find from \"lodash-es/find\";\nimport _some from \"lodash-es/some\";\nimport { Children } from 'react';\n/**\n * Determine if child by type exists in children.\n * @param {Object} children The children prop of a component.\n * @param {string|Function} type An html tag name string or React component.\n * @returns {Boolean}\n */\n\nexport var someByType = function someByType(children, type) {\n return _some(Children.toArray(children), {\n type: type\n });\n};\n/**\n * Find child by type.\n * @param {Object} children The children prop of a component.\n * @param {string|Function} type An html tag name string or React component.\n * @returns {undefined|Object}\n */\n\nexport var findByType = function findByType(children, type) {\n return _find(Children.toArray(children), {\n type: type\n });\n};\n/**\n * Tests if children are nil in React and Preact.\n * @param {Object} children The children prop of a component.\n * @returns {Boolean}\n */\n\nexport var isNil = function isNil(children) {\n return children === null || children === undefined || Array.isArray(children) && children.length === 0;\n};","import { numberToWord } from './numberToWord';\n/*\n * There are 3 prop patterns used to build up the className for a component.\n * Each utility here is meant for use in a classnames() argument.\n *\n * There is no util for valueOnly() because it would simply return val.\n * Use the prop value inline instead.\n * <Label size='big' />\n * <div class=\"ui big label\"></div>\n */\n\n/**\n * Props where only the prop key is used in the className.\n * @param {*} val A props value\n * @param {string} key A props key\n *\n * @example\n * <Label tag />\n * <div class=\"ui tag label\"></div>\n */\n\nexport var useKeyOnly = function useKeyOnly(val, key) {\n return val && key;\n};\n/**\n * Props that require both a key and value to create a className.\n * @param {*} val A props value\n * @param {string} key A props key\n *\n * @example\n * <Label corner='left' />\n * <div class=\"ui left corner label\"></div>\n */\n\nexport var useValueAndKey = function useValueAndKey(val, key) {\n return val && val !== true && val + \" \" + key;\n};\n/**\n * Props whose key will be used in className, or value and key.\n * @param {*} val A props value\n * @param {string} key A props key\n *\n * @example Key Only\n * <Label pointing />\n * <div class=\"ui pointing label\"></div>\n *\n * @example Key and Value\n * <Label pointing='left' />\n * <div class=\"ui left pointing label\"></div>\n */\n\nexport var useKeyOrValueAndKey = function useKeyOrValueAndKey(val, key) {\n return val && (val === true ? key : val + \" \" + key);\n}; //\n// Prop to className exceptions\n//\n\n/**\n * The \"multiple\" prop implements control of visibility and reserved classes for Grid subcomponents.\n *\n * @param {*} val The value of the \"multiple\" prop\n * @param {*} key A props key\n *\n * @example\n * <Grid.Row only='mobile' />\n * <Grid.Row only='mobile tablet' />\n * <div class=\"mobile only row\"></div>\n * <div class=\"mobile only tablet only row\"></div>\n */\n\nexport var useMultipleProp = function useMultipleProp(val, key) {\n if (!val || val === true) return null;\n return val.replace('large screen', 'large-screen').replace(/ vertically/g, '-vertically').split(' ').map(function (prop) {\n return prop.replace('-', ' ') + \" \" + key;\n }).join(' ');\n};\n/**\n * The \"textAlign\" prop follows the useValueAndKey except when the value is \"justified'.\n * In this case, only the class \"justified\" is used, ignoring the \"aligned\" class.\n * @param {*} val The value of the \"textAlign\" prop\n *\n * @example\n * <Container textAlign='justified' />\n * <div class=\"ui justified container\"></div>\n *\n * @example\n * <Container textAlign='left' />\n * <div class=\"ui left aligned container\"></div>\n */\n\nexport var useTextAlignProp = function useTextAlignProp(val) {\n return val === 'justified' ? 'justified' : useValueAndKey(val, 'aligned');\n};\n/**\n * The \"verticalAlign\" prop follows the useValueAndKey.\n *\n * @param {*} val The value of the \"verticalAlign\" prop\n *\n * @example\n * <Grid verticalAlign='middle' />\n * <div class=\"ui middle aligned grid\"></div>\n */\n\nexport var useVerticalAlignProp = function useVerticalAlignProp(val) {\n return useValueAndKey(val, 'aligned');\n};\n/**\n * Create \"X\", \"X wide\" and \"equal width\" classNames.\n * \"X\" is a numberToWord value and \"wide\" is configurable.\n * @param {*} val The prop value\n * @param {string} [widthClass=''] The class\n * @param {boolean} [canEqual=false] Flag that indicates possibility of \"equal\" value\n *\n * @example\n * <Grid columns='equal' />\n * <div class=\"ui equal width grid\"></div>\n *\n * <Form widths='equal' />\n * <div class=\"ui equal width form\"></div>\n *\n * <FieldGroup widths='equal' />\n * <div class=\"equal width fields\"></div>\n *\n * @example\n * <Grid columns={4} />\n * <div class=\"ui four column grid\"></div>\n */\n\nexport var useWidthProp = function useWidthProp(val, widthClass, canEqual) {\n if (widthClass === void 0) {\n widthClass = '';\n }\n\n if (canEqual === void 0) {\n canEqual = false;\n }\n\n if (canEqual && val === 'equal') {\n return 'equal width';\n }\n\n var valType = typeof val;\n\n if ((valType === 'string' || valType === 'number') && widthClass) {\n return numberToWord(val) + \" \" + widthClass;\n }\n\n return numberToWord(val);\n};","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nexport default head;\n","import _inRange from \"lodash-es/inRange\";\nimport _first from \"lodash-es/first\";\nimport _invoke from \"lodash-es/invoke\";\nimport _isNil from \"lodash-es/isNil\";\nimport _some from \"lodash-es/some\";\n\n/**\n * Determines if a click's coordinates are within the bounds of a node.\n *\n * @see https://github.com/Semantic-Org/Semantic-UI-React/pull/2384\n *\n * @param {object} node - A DOM node.\n * @param {object} e - A SyntheticEvent or DOM Event.\n * @returns {boolean}\n */\nvar doesNodeContainClick = function doesNodeContainClick(node, e) {\n if (_some([e, node], _isNil)) return false; // if there is an e.target and it is in the document, use a simple node.contains() check\n\n if (e.target) {\n _invoke(e.target, 'setAttribute', 'data-suir-click-target', true);\n\n if (document.querySelector('[data-suir-click-target=true]')) {\n _invoke(e.target, 'removeAttribute', 'data-suir-click-target');\n\n return node.contains(e.target);\n }\n } // Below logic handles cases where the e.target is no longer in the document.\n // The result of the click likely has removed the e.target node.\n // Instead of node.contains(), we'll identify the click by X/Y position.\n // return early if the event properties aren't available\n // prevent measuring the node and repainting if we don't need to\n\n\n var clientX = e.clientX,\n clientY = e.clientY;\n if (_some([clientX, clientY], _isNil)) return false; // false if the node is not visible\n\n var clientRects = node.getClientRects(); // Heads Up!\n // getClientRects returns a DOMRectList, not an array nor a plain object\n // We explicitly avoid _.isEmpty and check .length to cover all possible shapes\n\n if (!node.offsetWidth || !node.offsetHeight || !clientRects || !clientRects.length) return false; // false if the node doesn't have a valid bounding rect\n\n var _first2 = _first(clientRects),\n top = _first2.top,\n bottom = _first2.bottom,\n left = _first2.left,\n right = _first2.right;\n\n if (_some([top, bottom, left, right], _isNil)) return false; // we add a small decimal to the upper bound just to make it inclusive\n // don't add an whole pixel (1) as the event/node values may be decimal sensitive\n\n return _inRange(clientY, top, bottom + 0.001) && _inRange(clientX, left, right + 0.001);\n};\n\nexport default doesNodeContainClick;","import { instance } from '@semantic-ui-react/event-stack';\nexport default instance;","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nexport default isBoolean;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _uniq from \"lodash-es/uniq\";\nimport _isArray from \"lodash-es/isArray\";\nimport _isPlainObject from \"lodash-es/isPlainObject\";\nimport _isFunction from \"lodash-es/isFunction\";\nimport _isNumber from \"lodash-es/isNumber\";\nimport _isString from \"lodash-es/isString\";\nimport _isBoolean from \"lodash-es/isBoolean\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport * as React from 'react';\nvar DEPRECATED_CALLS = {}; // ============================================================\n// Factories\n// ============================================================\n\n/**\n * A more robust React.createElement. It can create elements from primitive values.\n *\n * @param {function|string} Component A ReactClass or string\n * @param {function} mapValueToProps A function that maps a primitive value to the Component props\n * @param {string|object|function} val The value to create a ReactElement from\n * @param {Object} [options={}]\n * @param {object} [options.defaultProps={}] Default props object\n * @param {object|function} [options.overrideProps={}] Override props object or function (called with regular props)\n * @param {boolean} [options.autoGenerateKey=true] Whether or not automatic key generation is allowed\n * @returns {object|null}\n */\n\nexport function createShorthand(Component, mapValueToProps, val, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof Component !== 'function' && typeof Component !== 'string') {\n throw new Error('createShorthand() Component must be a string or function.');\n } // short circuit noop values\n\n\n if (_isNil(val) || _isBoolean(val)) {\n return null;\n }\n\n var valIsString = _isString(val);\n\n var valIsNumber = _isNumber(val);\n\n var valIsFunction = _isFunction(val);\n\n var valIsReactElement = /*#__PURE__*/React.isValidElement(val);\n\n var valIsPropsObject = _isPlainObject(val);\n\n var valIsPrimitiveValue = valIsString || valIsNumber || _isArray(val); // unhandled type return null\n\n /* eslint-disable no-console */\n\n\n if (!valIsFunction && !valIsReactElement && !valIsPropsObject && !valIsPrimitiveValue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Shorthand value must be a string|number|array|object|ReactElement|function.', ' Use null|undefined|boolean for none', \" Received \" + typeof val + \".\"].join(''));\n }\n\n return null;\n }\n /* eslint-enable no-console */\n // ----------------------------------------\n // Build up props\n // ----------------------------------------\n\n\n var _options = options,\n _options$defaultProps = _options.defaultProps,\n defaultProps = _options$defaultProps === void 0 ? {} : _options$defaultProps; // User's props\n\n var usersProps = valIsReactElement && val.props || valIsPropsObject && val || valIsPrimitiveValue && mapValueToProps(val); // Override props\n\n var _options2 = options,\n _options2$overridePro = _options2.overrideProps,\n overrideProps = _options2$overridePro === void 0 ? {} : _options2$overridePro;\n overrideProps = _isFunction(overrideProps) ? overrideProps(_extends({}, defaultProps, usersProps)) : overrideProps; // Merge props\n\n /* eslint-disable react/prop-types */\n\n var props = _extends({}, defaultProps, usersProps, overrideProps); // Merge className\n\n\n if (defaultProps.className || overrideProps.className || usersProps.className) {\n var mergedClassesNames = cx(defaultProps.className, overrideProps.className, usersProps.className);\n props.className = _uniq(mergedClassesNames.split(' ')).join(' ');\n } // Merge style\n\n\n if (defaultProps.style || overrideProps.style || usersProps.style) {\n props.style = _extends({}, defaultProps.style, usersProps.style, overrideProps.style);\n } // ----------------------------------------\n // Get key\n // ----------------------------------------\n // Use key, childKey, or generate key\n\n\n if (_isNil(props.key)) {\n var childKey = props.childKey;\n var _options3 = options,\n _options3$autoGenerat = _options3.autoGenerateKey,\n autoGenerateKey = _options3$autoGenerat === void 0 ? true : _options3$autoGenerat;\n\n if (!_isNil(childKey)) {\n // apply and consume the childKey\n props.key = typeof childKey === 'function' ? childKey(props) : childKey;\n delete props.childKey;\n } else if (autoGenerateKey && (valIsString || valIsNumber)) {\n // use string/number shorthand values as the key\n props.key = val;\n }\n } // ----------------------------------------\n // Create Element\n // ----------------------------------------\n // Clone ReactElements\n\n\n if (valIsReactElement) {\n return /*#__PURE__*/React.cloneElement(val, props);\n }\n\n if (typeof props.children === 'function') {\n return props.children(Component, _extends({}, props, {\n children: undefined\n }));\n } // Create ReactElements from built up props\n\n\n if (valIsPrimitiveValue || valIsPropsObject) {\n return /*#__PURE__*/React.createElement(Component, props);\n } // Call functions with args similar to createElement()\n // TODO: V3 remove the implementation\n\n\n if (valIsFunction) {\n if (process.env.NODE_ENV !== 'production') {\n if (!DEPRECATED_CALLS[Component]) {\n DEPRECATED_CALLS[Component] = true; // eslint-disable-next-line no-console\n\n console.warn(\"Warning: There is a deprecated shorthand function usage for \\\"\" + Component + \"\\\". It is deprecated and will be removed in v3 release. Please follow our upgrade guide: https://github.com/Semantic-Org/Semantic-UI-React/pull/4029\");\n }\n }\n\n return val(Component, props, props.children);\n }\n /* eslint-enable react/prop-types */\n\n} // ============================================================\n// Factory Creators\n// ============================================================\n\n/**\n * Creates a `createShorthand` function that is waiting for a value and options.\n *\n * @param {function|string} Component A ReactClass or string\n * @param {function} mapValueToProps A function that maps a primitive value to the Component props\n * @returns {function} A shorthand factory function waiting for `val` and `defaultProps`.\n */\n\nexport function createShorthandFactory(Component, mapValueToProps) {\n if (typeof Component !== 'function' && typeof Component !== 'string') {\n throw new Error('createShorthandFactory() Component must be a string or function.');\n }\n\n return function (val, options) {\n return createShorthand(Component, mapValueToProps, val, options);\n };\n} // ============================================================\n// HTML Factories\n// ============================================================\n\nexport var createHTMLDivision = /* #__PURE__ */createShorthandFactory('div', function (val) {\n return {\n children: val\n };\n});\nexport var createHTMLIframe = /* #__PURE__ */createShorthandFactory('iframe', function (src) {\n return {\n src: src\n };\n});\nexport var createHTMLImage = /* #__PURE__ */createShorthandFactory('img', function (val) {\n return {\n src: val\n };\n});\nexport var createHTMLInput = /* #__PURE__ */createShorthandFactory('input', function (val) {\n return {\n type: val\n };\n});\nexport var createHTMLLabel = /* #__PURE__ */createShorthandFactory('label', function (val) {\n return {\n children: val\n };\n});\nexport var createHTMLParagraph = /* #__PURE__ */createShorthandFactory('p', function (val) {\n return {\n children: val\n };\n});","/**\n * Returns a createElement() type based on the props of the Component.\n * Useful for calculating what type a component should render as.\n *\n * @param {function} Component A function or ReactClass.\n * @param {object} props A ReactElement props object\n * @param {function} [getDefault] A function that returns a default element type.\n * @returns {string|function} A ReactElement type\n */\nfunction getElementType(Component, props, getDefault) {\n var _Component$defaultPro = Component.defaultProps,\n defaultProps = _Component$defaultPro === void 0 ? {} : _Component$defaultPro; // ----------------------------------------\n // user defined \"as\" element type\n\n if (props.as && props.as !== defaultProps.as) return props.as; // ----------------------------------------\n // computed default element type\n\n if (getDefault) {\n var computedDefault = getDefault();\n if (computedDefault) return computedDefault;\n } // ----------------------------------------\n // infer anchor links\n\n\n if (props.href) return 'a'; // ----------------------------------------\n // use defaultProp or 'div'\n\n return defaultProps.as || 'div';\n}\n\nexport default getElementType;","/**\n * Returns an object consisting of props beyond the scope of the Component.\n * Useful for getting and spreading unknown props from the user.\n * @param {function} Component A function or ReactClass.\n * @param {object} props A ReactElement props object\n * @returns {{}} A shallow copy of the prop object\n */\nvar getUnhandledProps = function getUnhandledProps(Component, props) {\n // Note that `handledProps` are generated automatically during build with `babel-plugin-transform-react-handled-props`\n var _Component$handledPro = Component.handledProps,\n handledProps = _Component$handledPro === void 0 ? [] : _Component$handledPro;\n return Object.keys(props).reduce(function (acc, prop) {\n if (prop === 'childKey') return acc;\n if (handledProps.indexOf(prop) === -1) acc[prop] = props[prop];\n return acc;\n }, {});\n};\n\nexport default getUnhandledProps;","import _includes from \"lodash-es/includes\";\nimport _forEach from \"lodash-es/forEach\";\nexport var htmlInputAttrs = [// REACT\n'selected', 'defaultValue', 'defaultChecked', // LIMITED HTML PROPS\n'accept', 'autoCapitalize', 'autoComplete', 'autoCorrect', 'autoFocus', 'checked', 'disabled', 'enterKeyHint', 'form', 'id', 'inputMode', 'lang', 'list', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'step', 'title', 'type', 'value'];\nexport var htmlInputEvents = [// EVENTS\n// keyboard\n'onKeyDown', 'onKeyPress', 'onKeyUp', // focus\n'onFocus', 'onBlur', // form\n'onChange', 'onInput', // mouse\n'onClick', 'onContextMenu', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', // selection\n'onSelect', // touch\n'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var htmlInputProps = [].concat(htmlInputAttrs, htmlInputEvents);\nexport var htmlImageProps = ['alt', 'height', 'src', 'srcSet', 'width', 'loading'];\n/**\n * Returns an array of objects consisting of: props of html input element and rest.\n * @param {object} props A ReactElement props object\n * @param {Object} [options={}]\n * @param {Array} [options.htmlProps] An array of html input props\n * @param {boolean} [options.includeAria] Includes all input props that starts with \"aria-\"\n * @returns {[{}, {}]} An array of objects\n */\n\nexport var partitionHTMLProps = function partitionHTMLProps(props, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$htmlProps = _options.htmlProps,\n htmlProps = _options$htmlProps === void 0 ? htmlInputProps : _options$htmlProps,\n _options$includeAria = _options.includeAria,\n includeAria = _options$includeAria === void 0 ? true : _options$includeAria;\n var inputProps = {};\n var rest = {};\n\n _forEach(props, function (val, prop) {\n var possibleAria = includeAria && (/^aria-.*$/.test(prop) || prop === 'role');\n var target = _includes(htmlProps, prop) || possibleAria ? inputProps : rest;\n target[prop] = val;\n });\n\n return [inputProps, rest];\n};","import _isNil from \"lodash-es/isNil\";\nvar hasDocument = typeof document === 'object' && document !== null;\nvar hasWindow = typeof window === 'object' && window !== null && window.self === window; // eslint-disable-next-line no-confusing-arrow\n\nvar isBrowser = function isBrowser() {\n return !_isNil(isBrowser.override) ? isBrowser.override : hasDocument && hasWindow;\n};\n\nexport default isBrowser;","export var numberToWordMap = {\n 1: 'one',\n 2: 'two',\n 3: 'three',\n 4: 'four',\n 5: 'five',\n 6: 'six',\n 7: 'seven',\n 8: 'eight',\n 9: 'nine',\n 10: 'ten',\n 11: 'eleven',\n 12: 'twelve',\n 13: 'thirteen',\n 14: 'fourteen',\n 15: 'fifteen',\n 16: 'sixteen'\n};\n/**\n * Return the number word for numbers 1-16.\n * Returns strings or numbers as is if there is no corresponding word.\n * Returns an empty string if value is not a string or number.\n * @param {string|number} value The value to convert to a word.\n * @returns {string}\n */\n\nexport function numberToWord(value) {\n var type = typeof value;\n\n if (type === 'string' || type === 'number') {\n return numberToWordMap[value] || value;\n }\n\n return '';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { createShorthandFactory, getUnhandledProps, isBrowser } from '../../lib';\nimport Portal from '../../addons/Portal';\nimport DimmerDimmable from './DimmerDimmable';\nimport DimmerInner from './DimmerInner';\n/**\n * A dimmer hides distractions to focus attention on particular content.\n */\n\nvar Dimmer = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Dimmer, _Component);\n\n function Dimmer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handlePortalMount = function () {\n if (!isBrowser()) return; // Heads up, IE doesn't support second argument in add()\n\n document.body.classList.add('dimmed');\n document.body.classList.add('dimmable');\n };\n\n _this.handlePortalUnmount = function () {\n if (!isBrowser()) return; // Heads up, IE doesn't support second argument in add()\n\n document.body.classList.remove('dimmed');\n document.body.classList.remove('dimmable');\n };\n\n return _this;\n }\n\n var _proto = Dimmer.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n page = _this$props.page;\n var rest = getUnhandledProps(Dimmer, this.props);\n\n if (page) {\n return /*#__PURE__*/React.createElement(Portal, {\n closeOnEscape: false,\n closeOnDocumentClick: false,\n onMount: this.handlePortalMount,\n onUnmount: this.handlePortalUnmount,\n open: active,\n openOnTriggerClick: false\n }, /*#__PURE__*/React.createElement(DimmerInner, _extends({}, rest, {\n active: active,\n page: page\n })));\n }\n\n return /*#__PURE__*/React.createElement(DimmerInner, _extends({}, rest, {\n active: active,\n page: page\n }));\n };\n\n return Dimmer;\n}(Component);\n\nDimmer.handledProps = [\"active\", \"page\"];\nexport { Dimmer as default };\nDimmer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An active dimmer will dim its parent container. */\n active: PropTypes.bool,\n\n /** A dimmer can be formatted to be fixed to the page. */\n page: PropTypes.bool\n} : {};\nDimmer.Dimmable = DimmerDimmable;\nDimmer.Inner = DimmerInner;\nDimmer.create = createShorthandFactory(Dimmer, function (value) {\n return {\n content: value\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A dimmable sub-component for Dimmer.\n */\n\nfunction DimmerDimmable(props) {\n var blurring = props.blurring,\n className = props.className,\n children = props.children,\n content = props.content,\n dimmed = props.dimmed;\n var classes = cx(useKeyOnly(blurring, 'blurring'), useKeyOnly(dimmed, 'dimmed'), 'dimmable', className);\n var rest = getUnhandledProps(DimmerDimmable, props);\n var ElementType = getElementType(DimmerDimmable, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDimmerDimmable.handledProps = [\"as\", \"blurring\", \"children\", \"className\", \"content\", \"dimmed\"];\nDimmerDimmable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A dimmable element can blur its contents. */\n blurring: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Controls whether or not the dim is displayed. */\n dimmed: PropTypes.bool\n} : {};\nexport default DimmerDimmable;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { childrenUtils, customPropTypes, doesNodeContainClick, getElementType, getUnhandledProps, useKeyOnly, useVerticalAlignProp } from '../../lib';\n/**\n * An inner element for a Dimmer.\n */\n\nvar DimmerInner = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DimmerInner, _Component);\n\n function DimmerInner() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.containerRef = /*#__PURE__*/createRef();\n _this.contentRef = /*#__PURE__*/createRef();\n\n _this.handleClick = function (e) {\n var contentRef = _this.contentRef.current;\n\n _invoke(_this.props, 'onClick', e, _this.props);\n\n if (contentRef && contentRef !== e.target && doesNodeContainClick(contentRef, e)) {\n return;\n }\n\n _invoke(_this.props, 'onClickOutside', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = DimmerInner.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var active = this.props.active;\n this.toggleStyles(active);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var currentActive = this.props.active;\n var prevActive = prevProps.active;\n if (prevActive !== currentActive) this.toggleStyles(currentActive);\n };\n\n _proto.toggleStyles = function toggleStyles(active) {\n var containerRef = this.containerRef.current;\n if (!containerRef || !containerRef.style) return;\n\n if (active) {\n containerRef.style.setProperty('display', 'flex', 'important');\n } else {\n containerRef.style.removeProperty('display');\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n disabled = _this$props.disabled,\n inverted = _this$props.inverted,\n page = _this$props.page,\n simple = _this$props.simple,\n verticalAlign = _this$props.verticalAlign;\n var classes = cx('ui', useKeyOnly(active, 'active transition visible'), useKeyOnly(disabled, 'disabled'), useKeyOnly(inverted, 'inverted'), useKeyOnly(page, 'page'), useKeyOnly(simple, 'simple'), useVerticalAlignProp(verticalAlign), 'dimmer', className);\n var rest = getUnhandledProps(DimmerInner, this.props);\n var ElementType = getElementType(DimmerInner, this.props);\n var childrenContent = childrenUtils.isNil(children) ? content : children;\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.containerRef\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick\n }), childrenContent && /*#__PURE__*/React.createElement(\"div\", {\n className: \"content\",\n ref: this.contentRef\n }, childrenContent)));\n };\n\n return DimmerInner;\n}(Component);\n\nDimmerInner.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"disabled\", \"inverted\", \"onClick\", \"onClickOutside\", \"page\", \"simple\", \"verticalAlign\"];\nexport { DimmerInner as default };\nDimmerInner.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An active dimmer will dim its parent container. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A disabled dimmer cannot be activated */\n disabled: PropTypes.bool,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Handles click outside Dimmer's content, but inside Dimmer area.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClickOutside: PropTypes.func,\n\n /** A dimmer can be formatted to have its colors inverted. */\n inverted: PropTypes.bool,\n\n /** A dimmer can be formatted to be fixed to the page. */\n page: PropTypes.bool,\n\n /** A dimmer can be controlled with simple prop. */\n simple: PropTypes.bool,\n\n /** A dimmer can have its content top or bottom aligned. */\n verticalAlign: PropTypes.oneOf(['bottom', 'top'])\n} : {};","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default compact;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nexport default arrayEvery;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nexport default baseEvery;\n","import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n","import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n","import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n","import _some from \"lodash-es/some\";\nimport _escapeRegExp from \"lodash-es/escapeRegExp\";\nimport _deburr from \"lodash-es/deburr\";\nimport _isFunction from \"lodash-es/isFunction\";\nimport _includes from \"lodash-es/includes\";\nimport _filter from \"lodash-es/filter\";\nimport React from 'react'; // There are times when we need to calculate the options based on a value\n// that hasn't yet been persisted to state.\n\nexport default function getMenuOptions(config) {\n var additionLabel = config.additionLabel,\n additionPosition = config.additionPosition,\n allowAdditions = config.allowAdditions,\n deburr = config.deburr,\n multiple = config.multiple,\n options = config.options,\n search = config.search,\n searchQuery = config.searchQuery,\n value = config.value;\n var filteredOptions = options; // filter out active options\n\n if (multiple) {\n filteredOptions = _filter(filteredOptions, function (opt) {\n return !_includes(value, opt.value);\n });\n } // filter by search query\n\n\n if (search && searchQuery) {\n if (_isFunction(search)) {\n filteredOptions = search(filteredOptions, searchQuery);\n } else {\n // remove diacritics on search input and options, if deburr prop is set\n var strippedQuery = deburr ? _deburr(searchQuery) : searchQuery;\n var re = new RegExp(_escapeRegExp(strippedQuery), 'i');\n filteredOptions = _filter(filteredOptions, function (opt) {\n return re.test(deburr ? _deburr(opt.text) : opt.text);\n });\n }\n } // insert the \"add\" item\n\n\n if (allowAdditions && search && searchQuery && !_some(filteredOptions, {\n text: searchQuery\n })) {\n var additionLabelElement = /*#__PURE__*/React.isValidElement(additionLabel) ? /*#__PURE__*/React.cloneElement(additionLabel, {\n key: 'addition-label'\n }) : additionLabel || '';\n var addItem = {\n key: 'addition',\n // by using an array, we can pass multiple elements, but when doing so\n // we must specify a `key` for React to know which one is which\n text: [additionLabelElement, /*#__PURE__*/React.createElement(\"b\", {\n key: \"addition-query\"\n }, searchQuery)],\n value: searchQuery,\n className: 'addition',\n 'data-additional': true\n };\n if (additionPosition === 'top') filteredOptions.unshift(addItem);else filteredOptions.push(addItem);\n }\n\n return filteredOptions;\n}\ngetMenuOptions.handledProps = [];","import _includes from \"lodash-es/includes\";\nimport _find from \"lodash-es/find\";\nimport _findIndex from \"lodash-es/findIndex\";\nimport _reduce from \"lodash-es/reduce\";\nimport getMenuOptions from './getMenuOptions';\nexport default function getSelectedIndex(config) {\n var additionLabel = config.additionLabel,\n additionPosition = config.additionPosition,\n allowAdditions = config.allowAdditions,\n deburr = config.deburr,\n multiple = config.multiple,\n options = config.options,\n search = config.search,\n searchQuery = config.searchQuery,\n selectedIndex = config.selectedIndex,\n value = config.value;\n var menuOptions = getMenuOptions({\n value: value,\n options: options,\n searchQuery: searchQuery,\n additionLabel: additionLabel,\n additionPosition: additionPosition,\n allowAdditions: allowAdditions,\n deburr: deburr,\n multiple: multiple,\n search: search\n });\n\n var enabledIndexes = _reduce(menuOptions, function (memo, item, index) {\n if (!item.disabled) memo.push(index);\n return memo;\n }, []);\n\n var newSelectedIndex; // update the selected index\n\n if (!selectedIndex || selectedIndex < 0) {\n var firstIndex = enabledIndexes[0]; // Select the currently active item, if none, use the first item.\n // Multiple selects remove active items from the list,\n // their initial selected index should be 0.\n\n newSelectedIndex = multiple ? firstIndex : _findIndex(menuOptions, ['value', value]) || enabledIndexes[0];\n } else if (multiple) {\n newSelectedIndex = _find(enabledIndexes, function (index) {\n return index >= selectedIndex;\n }); // multiple selects remove options from the menu as they are made active\n // keep the selected index within range of the remaining items\n\n if (selectedIndex >= menuOptions.length - 1) {\n newSelectedIndex = enabledIndexes[enabledIndexes.length - 1];\n }\n } else {\n var activeIndex = _findIndex(menuOptions, ['value', value]); // regular selects can only have one active item\n // set the selected index to the currently active item\n\n\n newSelectedIndex = _includes(enabledIndexes, activeIndex) ? activeIndex : undefined;\n }\n\n if (!newSelectedIndex || newSelectedIndex < 0) {\n newSelectedIndex = enabledIndexes[0];\n }\n\n return newSelectedIndex;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _includes from \"lodash-es/includes\";\nimport _compact from \"lodash-es/compact\";\nimport _map from \"lodash-es/map\";\nimport _every from \"lodash-es/every\";\nimport _without from \"lodash-es/without\";\nimport _find from \"lodash-es/find\";\nimport _dropRight from \"lodash-es/dropRight\";\nimport _isEmpty from \"lodash-es/isEmpty\";\nimport _size from \"lodash-es/size\";\nimport _difference from \"lodash-es/difference\";\nimport _union from \"lodash-es/union\";\nimport _get from \"lodash-es/get\";\nimport _noop from \"lodash-es/noop\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _invoke from \"lodash-es/invoke\";\nimport _has from \"lodash-es/has\";\nimport _isEqual from \"lodash-es/isEqual\";\nimport _isFunction from \"lodash-es/isFunction\";\nimport _pick from \"lodash-es/pick\";\nimport _isNil from \"lodash-es/isNil\";\nimport EventStack from '@semantic-ui-react/event-stack';\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport keyboardKey from 'keyboard-key';\nimport PropTypes from 'prop-types';\nimport React, { Children, cloneElement, createRef } from 'react';\nimport shallowEqual from 'shallowequal';\nimport { ModernAutoControlledComponent as Component, childrenUtils, customPropTypes, doesNodeContainClick, getElementType, getUnhandledProps, objectDiff, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\nimport Icon from '../../elements/Icon';\nimport Label from '../../elements/Label';\nimport Flag from '../../elements/Flag';\nimport Image from '../../elements/Image';\nimport DropdownDivider from './DropdownDivider';\nimport DropdownItem from './DropdownItem';\nimport DropdownHeader from './DropdownHeader';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownSearchInput from './DropdownSearchInput';\nimport DropdownText from './DropdownText';\nimport getMenuOptions from './utils/getMenuOptions';\nimport getSelectedIndex from './utils/getSelectedIndex';\n\nvar getKeyOrValue = function getKeyOrValue(key, value) {\n return _isNil(key) ? value : key;\n};\n\nvar getKeyAndValues = function getKeyAndValues(options) {\n return options ? options.map(function (option) {\n return _pick(option, ['key', 'value']);\n }) : options;\n};\n\nfunction renderItemContent(item) {\n var flag = item.flag,\n image = item.image,\n text = item.text; // TODO: remove this in v3\n // This maintains compatibility with Shorthand API in v1 as this might be called in \"Label.create()\"\n\n if (_isFunction(text)) {\n return text;\n }\n\n return {\n content: /*#__PURE__*/React.createElement(React.Fragment, null, Flag.create(flag), Image.create(image), text)\n };\n}\n/**\n * A dropdown allows a user to select a value from a series of options.\n * @see Form\n * @see Select\n * @see Menu\n */\n\n\nvar Dropdown = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Dropdown, _Component);\n\n function Dropdown() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.searchRef = /*#__PURE__*/createRef();\n _this.sizerRef = /*#__PURE__*/createRef();\n _this.ref = /*#__PURE__*/createRef();\n\n _this.handleChange = function (e, value) {\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.closeOnChange = function (e) {\n var _this$props = _this.props,\n closeOnChange = _this$props.closeOnChange,\n multiple = _this$props.multiple;\n var shouldClose = _isUndefined(closeOnChange) ? !multiple : closeOnChange;\n\n if (shouldClose) {\n _this.close(e, _noop);\n }\n };\n\n _this.closeOnEscape = function (e) {\n if (!_this.props.closeOnEscape) return;\n if (keyboardKey.getCode(e) !== keyboardKey.Escape) return;\n e.preventDefault();\n\n _this.close(e);\n };\n\n _this.moveSelectionOnKeyDown = function (e) {\n var _moves;\n\n var _this$props2 = _this.props,\n multiple = _this$props2.multiple,\n selectOnNavigation = _this$props2.selectOnNavigation;\n var open = _this.state.open;\n\n if (!open) {\n return;\n }\n\n var moves = (_moves = {}, _moves[keyboardKey.ArrowDown] = 1, _moves[keyboardKey.ArrowUp] = -1, _moves);\n var move = moves[keyboardKey.getCode(e)];\n\n if (move === undefined) {\n return;\n }\n\n e.preventDefault();\n\n var nextIndex = _this.getSelectedIndexAfterMove(move);\n\n if (!multiple && selectOnNavigation) {\n _this.makeSelectedItemActive(e, nextIndex);\n }\n\n _this.setState({\n selectedIndex: nextIndex\n });\n };\n\n _this.openOnSpace = function (e) {\n var _e$target, _e$target2, _e$target3;\n\n var shouldHandleEvent = _this.state.focus && !_this.state.open && keyboardKey.getCode(e) === keyboardKey.Spacebar;\n var shouldPreventDefault = ((_e$target = e.target) == null ? void 0 : _e$target.tagName) !== 'INPUT' && ((_e$target2 = e.target) == null ? void 0 : _e$target2.tagName) !== 'TEXTAREA' && ((_e$target3 = e.target) == null ? void 0 : _e$target3.isContentEditable) !== true;\n\n if (shouldHandleEvent) {\n if (shouldPreventDefault) {\n e.preventDefault();\n }\n\n _this.open(e);\n }\n };\n\n _this.openOnArrow = function (e) {\n var _this$state = _this.state,\n focus = _this$state.focus,\n open = _this$state.open;\n\n if (focus && !open) {\n var code = keyboardKey.getCode(e);\n\n if (code === keyboardKey.ArrowDown || code === keyboardKey.ArrowUp) {\n e.preventDefault();\n\n _this.open(e);\n }\n }\n };\n\n _this.makeSelectedItemActive = function (e, selectedIndex) {\n var _this$state2 = _this.state,\n open = _this$state2.open,\n value = _this$state2.value;\n var multiple = _this.props.multiple;\n\n var item = _this.getSelectedItem(selectedIndex);\n\n var selectedValue = _get(item, 'value');\n\n var disabled = _get(item, 'disabled'); // prevent selecting null if there was no selected item value\n // prevent selecting duplicate items when the dropdown is closed\n // prevent selecting disabled items\n\n\n if (_isNil(selectedValue) || !open || disabled) {\n return value;\n } // state value may be undefined\n\n\n var newValue = multiple ? _union(value, [selectedValue]) : selectedValue;\n var valueHasChanged = multiple ? !!_difference(newValue, value).length : newValue !== value;\n\n if (valueHasChanged) {\n // notify the onChange prop that the user is trying to change value\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue); // Heads up! This event handler should be called after `onChange`\n // Notify the onAddItem prop if this is a new value\n\n\n if (item['data-additional']) {\n _invoke(_this.props, 'onAddItem', e, _extends({}, _this.props, {\n value: selectedValue\n }));\n }\n }\n\n return value;\n };\n\n _this.selectItemOnEnter = function (e) {\n var search = _this.props.search;\n var _this$state3 = _this.state,\n open = _this$state3.open,\n selectedIndex = _this$state3.selectedIndex;\n\n if (!open) {\n return;\n }\n\n var shouldSelect = keyboardKey.getCode(e) === keyboardKey.Enter || // https://github.com/Semantic-Org/Semantic-UI-React/pull/3766\n !search && keyboardKey.getCode(e) === keyboardKey.Spacebar;\n\n if (!shouldSelect) {\n return;\n }\n\n e.preventDefault();\n\n var optionSize = _size(getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n }));\n\n if (search && optionSize === 0) {\n return;\n }\n\n var nextValue = _this.makeSelectedItemActive(e, selectedIndex); // This is required as selected value may be the same\n\n\n _this.setState({\n selectedIndex: getSelectedIndex({\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search,\n selectedIndex: selectedIndex,\n value: nextValue,\n options: _this.props.options,\n searchQuery: ''\n })\n });\n\n _this.closeOnChange(e);\n\n _this.clearSearchQuery();\n\n if (search) {\n _invoke(_this.searchRef.current, 'focus');\n }\n };\n\n _this.removeItemOnBackspace = function (e) {\n var _this$props3 = _this.props,\n multiple = _this$props3.multiple,\n search = _this$props3.search;\n var _this$state4 = _this.state,\n searchQuery = _this$state4.searchQuery,\n value = _this$state4.value;\n if (keyboardKey.getCode(e) !== keyboardKey.Backspace) return;\n if (searchQuery || !search || !multiple || _isEmpty(value)) return;\n e.preventDefault(); // remove most recent value\n\n var newValue = _dropRight(value);\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.closeOnDocumentClick = function (e) {\n if (!_this.props.closeOnBlur) return; // If event happened in the dropdown, ignore it\n\n if (_this.ref.current && doesNodeContainClick(_this.ref.current, e)) return;\n\n _this.close();\n };\n\n _this.handleMouseDown = function (e) {\n _this.isMouseDown = true;\n\n _invoke(_this.props, 'onMouseDown', e, _this.props);\n\n document.addEventListener('mouseup', _this.handleDocumentMouseUp);\n };\n\n _this.handleDocumentMouseUp = function () {\n _this.isMouseDown = false;\n document.removeEventListener('mouseup', _this.handleDocumentMouseUp);\n };\n\n _this.handleClick = function (e) {\n var _this$props4 = _this.props,\n minCharacters = _this$props4.minCharacters,\n search = _this$props4.search;\n var _this$state5 = _this.state,\n open = _this$state5.open,\n searchQuery = _this$state5.searchQuery;\n\n _invoke(_this.props, 'onClick', e, _this.props); // prevent closeOnDocumentClick()\n\n\n e.stopPropagation();\n if (!search) return _this.toggle(e);\n\n if (open) {\n _invoke(_this.searchRef.current, 'focus');\n\n return;\n }\n\n if (searchQuery.length >= minCharacters || minCharacters === 1) {\n _this.open(e);\n\n return;\n }\n\n _invoke(_this.searchRef.current, 'focus');\n };\n\n _this.handleIconClick = function (e) {\n var clearable = _this.props.clearable;\n\n var hasValue = _this.hasValue();\n\n _invoke(_this.props, 'onClick', e, _this.props); // prevent handleClick()\n\n\n e.stopPropagation();\n\n if (clearable && hasValue) {\n _this.clearValue(e);\n } else {\n _this.toggle(e);\n }\n };\n\n _this.handleItemClick = function (e, item) {\n var _this$props5 = _this.props,\n multiple = _this$props5.multiple,\n search = _this$props5.search;\n var currentValue = _this.state.value;\n var value = item.value; // prevent toggle() in handleClick()\n\n e.stopPropagation(); // prevent closeOnDocumentClick() if multiple or item is disabled\n\n if (multiple || item.disabled) {\n e.nativeEvent.stopImmediatePropagation();\n }\n\n if (item.disabled) {\n return;\n }\n\n var isAdditionItem = item['data-additional'];\n var newValue = multiple ? _union(_this.state.value, [value]) : value;\n var valueHasChanged = multiple ? !!_difference(newValue, currentValue).length : newValue !== currentValue; // notify the onChange prop that the user is trying to change value\n\n if (valueHasChanged) {\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n }\n\n _this.clearSearchQuery();\n\n if (search) {\n _invoke(_this.searchRef.current, 'focus');\n } else {\n _invoke(_this.ref.current, 'focus');\n }\n\n _this.closeOnChange(e); // Heads up! This event handler should be called after `onChange`\n // Notify the onAddItem prop if this is a new value\n\n\n if (isAdditionItem) {\n _invoke(_this.props, 'onAddItem', e, _extends({}, _this.props, {\n value: value\n }));\n }\n };\n\n _this.handleFocus = function (e) {\n var focus = _this.state.focus;\n if (focus) return;\n\n _invoke(_this.props, 'onFocus', e, _this.props);\n\n _this.setState({\n focus: true\n });\n };\n\n _this.handleBlur = function (e) {\n // Heads up! Don't remove this.\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/1315\n var currentTarget = _get(e, 'currentTarget');\n\n if (currentTarget && currentTarget.contains(document.activeElement)) return;\n var _this$props6 = _this.props,\n closeOnBlur = _this$props6.closeOnBlur,\n multiple = _this$props6.multiple,\n selectOnBlur = _this$props6.selectOnBlur; // do not \"blur\" when the mouse is down inside of the Dropdown\n\n if (_this.isMouseDown) return;\n\n _invoke(_this.props, 'onBlur', e, _this.props);\n\n if (selectOnBlur && !multiple) {\n _this.makeSelectedItemActive(e, _this.state.selectedIndex);\n\n if (closeOnBlur) _this.close();\n }\n\n _this.setState({\n focus: false\n });\n\n _this.clearSearchQuery();\n };\n\n _this.handleSearchChange = function (e, _ref) {\n var value = _ref.value;\n // prevent propagating to this.props.onChange()\n e.stopPropagation();\n var minCharacters = _this.props.minCharacters;\n var open = _this.state.open;\n var newQuery = value;\n\n _invoke(_this.props, 'onSearchChange', e, _extends({}, _this.props, {\n searchQuery: newQuery\n }));\n\n _this.setState({\n searchQuery: newQuery,\n selectedIndex: 0\n }); // open search dropdown on search query\n\n\n if (!open && newQuery.length >= minCharacters) {\n _this.open();\n\n return;\n } // close search dropdown if search query is too small\n\n\n if (open && minCharacters !== 1 && newQuery.length < minCharacters) _this.close();\n };\n\n _this.handleKeyDown = function (e) {\n _this.moveSelectionOnKeyDown(e);\n\n _this.openOnArrow(e);\n\n _this.openOnSpace(e);\n\n _this.selectItemOnEnter(e);\n\n _invoke(_this.props, 'onKeyDown', e);\n };\n\n _this.getSelectedItem = function (selectedIndex) {\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n });\n return _get(options, \"[\" + selectedIndex + \"]\");\n };\n\n _this.getItemByValue = function (value) {\n var options = _this.props.options;\n return _find(options, {\n value: value\n });\n };\n\n _this.getDropdownAriaOptions = function () {\n var _this$props7 = _this.props,\n loading = _this$props7.loading,\n disabled = _this$props7.disabled,\n search = _this$props7.search,\n multiple = _this$props7.multiple;\n var open = _this.state.open;\n var ariaOptions = {\n role: search ? 'combobox' : 'listbox',\n 'aria-busy': loading,\n 'aria-disabled': disabled,\n 'aria-expanded': !!open\n };\n\n if (ariaOptions.role === 'listbox') {\n ariaOptions['aria-multiselectable'] = multiple;\n }\n\n return ariaOptions;\n };\n\n _this.clearSearchQuery = function () {\n var searchQuery = _this.state.searchQuery;\n if (searchQuery === undefined || searchQuery === '') return;\n\n _this.setState({\n searchQuery: ''\n });\n };\n\n _this.handleLabelClick = function (e, labelProps) {\n // prevent focusing search input on click\n e.stopPropagation();\n\n _this.setState({\n selectedLabel: labelProps.value\n });\n\n _invoke(_this.props, 'onLabelClick', e, labelProps);\n };\n\n _this.handleLabelRemove = function (e, labelProps) {\n // prevent focusing search input on click\n e.stopPropagation();\n var value = _this.state.value;\n\n var newValue = _without(value, labelProps.value);\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.getSelectedIndexAfterMove = function (offset, startIndex) {\n if (startIndex === void 0) {\n startIndex = _this.state.selectedIndex;\n }\n\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n }); // Prevent infinite loop\n // TODO: remove left part of condition after children API will be removed\n\n if (options === undefined || _every(options, 'disabled')) return;\n var lastIndex = options.length - 1;\n var wrapSelection = _this.props.wrapSelection; // next is after last, wrap to beginning\n // next is before first, wrap to end\n\n var nextIndex = startIndex + offset; // if 'wrapSelection' is set to false and selection is after last or before first, it just does not change\n\n if (!wrapSelection && (nextIndex > lastIndex || nextIndex < 0)) {\n nextIndex = startIndex;\n } else if (nextIndex > lastIndex) {\n nextIndex = 0;\n } else if (nextIndex < 0) {\n nextIndex = lastIndex;\n }\n\n if (options[nextIndex].disabled) {\n return _this.getSelectedIndexAfterMove(offset, nextIndex);\n }\n\n return nextIndex;\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n var clearable = _this.props.clearable;\n var classes = cx(clearable && _this.hasValue() && 'clear', predefinedProps.className);\n return {\n className: classes,\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e, predefinedProps);\n\n _this.handleIconClick(e);\n }\n };\n };\n\n _this.clearValue = function (e) {\n var multiple = _this.props.multiple;\n var newValue = multiple ? [] : '';\n\n _this.setState({\n value: newValue\n });\n\n _this.handleChange(e, newValue);\n };\n\n _this.computeSearchInputTabIndex = function () {\n var _this$props8 = _this.props,\n disabled = _this$props8.disabled,\n tabIndex = _this$props8.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n return disabled ? -1 : 0;\n };\n\n _this.computeSearchInputWidth = function () {\n var searchQuery = _this.state.searchQuery;\n\n if (_this.sizerRef.current && searchQuery) {\n // resize the search input, temporarily show the sizer so we can measure it\n _this.sizerRef.current.style.display = 'inline';\n _this.sizerRef.current.textContent = searchQuery;\n var searchWidth = Math.ceil(_this.sizerRef.current.getBoundingClientRect().width);\n\n _this.sizerRef.current.style.removeProperty('display');\n\n return searchWidth;\n }\n };\n\n _this.computeTabIndex = function () {\n var _this$props9 = _this.props,\n disabled = _this$props9.disabled,\n search = _this$props9.search,\n tabIndex = _this$props9.tabIndex; // don't set a root node tabIndex as the search input has its own tabIndex\n\n if (search) return undefined;\n if (disabled) return -1;\n return _isNil(tabIndex) ? 0 : tabIndex;\n };\n\n _this.handleSearchInputOverrides = function (predefinedProps) {\n return {\n onChange: function onChange(e, inputProps) {\n _invoke(predefinedProps, 'onChange', e, inputProps);\n\n _this.handleSearchChange(e, inputProps);\n }\n };\n };\n\n _this.hasValue = function () {\n var multiple = _this.props.multiple;\n var value = _this.state.value;\n return multiple ? !_isEmpty(value) : !_isNil(value) && value !== '';\n };\n\n _this.scrollSelectedItemIntoView = function () {\n if (!_this.ref.current) return;\n\n var menu = _this.ref.current.querySelector('.menu.visible');\n\n if (!menu) return;\n var item = menu.querySelector('.item.selected');\n if (!item) return;\n var isOutOfUpperView = item.offsetTop < menu.scrollTop;\n var isOutOfLowerView = item.offsetTop + item.clientHeight > menu.scrollTop + menu.clientHeight;\n\n if (isOutOfUpperView) {\n menu.scrollTop = item.offsetTop;\n } else if (isOutOfLowerView) {\n // eslint-disable-next-line no-mixed-operators\n menu.scrollTop = item.offsetTop + item.clientHeight - menu.clientHeight;\n }\n };\n\n _this.setOpenDirection = function () {\n if (!_this.ref.current) return;\n\n var menu = _this.ref.current.querySelector('.menu.visible');\n\n if (!menu) return;\n\n var dropdownRect = _this.ref.current.getBoundingClientRect();\n\n var menuHeight = menu.clientHeight;\n var spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - menuHeight;\n var spaceAtTheTop = dropdownRect.top - menuHeight;\n var upward = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom; // set state only if there's a relevant difference\n\n if (!upward !== !_this.state.upward) {\n _this.setState({\n upward: upward\n });\n }\n };\n\n _this.open = function (e, triggerSetState) {\n if (e === void 0) {\n e = null;\n }\n\n if (triggerSetState === void 0) {\n triggerSetState = true;\n }\n\n var _this$props10 = _this.props,\n disabled = _this$props10.disabled,\n search = _this$props10.search;\n if (disabled) return;\n if (search) _invoke(_this.searchRef.current, 'focus');\n\n _invoke(_this.props, 'onOpen', e, _this.props);\n\n if (triggerSetState) {\n _this.setState({\n open: true\n });\n }\n\n _this.scrollSelectedItemIntoView();\n };\n\n _this.close = function (e, callback) {\n if (callback === void 0) {\n callback = _this.handleClose;\n }\n\n if (_this.state.open) {\n _invoke(_this.props, 'onClose', e, _this.props);\n\n _this.setState({\n open: false\n }, callback);\n }\n };\n\n _this.handleClose = function () {\n var hasSearchFocus = document.activeElement === _this.searchRef.current; // https://github.com/Semantic-Org/Semantic-UI-React/issues/627\n // Blur the Dropdown on close so it is blurred after selecting an item.\n // This is to prevent it from re-opening when switching tabs after selecting an item.\n\n if (!hasSearchFocus && _this.ref.current) {\n _this.ref.current.blur();\n }\n\n var hasDropdownFocus = document.activeElement === _this.ref.current;\n var hasFocus = hasSearchFocus || hasDropdownFocus; // We need to keep the virtual model in sync with the browser focus change\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/692\n\n _this.setState({\n focus: hasFocus\n });\n };\n\n _this.toggle = function (e) {\n return _this.state.open ? _this.close(e) : _this.open(e);\n };\n\n _this.renderText = function () {\n var _this$props11 = _this.props,\n multiple = _this$props11.multiple,\n placeholder = _this$props11.placeholder,\n search = _this$props11.search,\n text = _this$props11.text;\n var _this$state6 = _this.state,\n searchQuery = _this$state6.searchQuery,\n selectedIndex = _this$state6.selectedIndex,\n value = _this$state6.value,\n open = _this$state6.open;\n\n var hasValue = _this.hasValue();\n\n var classes = cx(placeholder && !hasValue && 'default', 'text', search && searchQuery && 'filtered');\n var _text = placeholder;\n var selectedItem;\n\n if (text) {\n _text = text;\n } else if (open && !multiple) {\n selectedItem = _this.getSelectedItem(selectedIndex);\n } else if (hasValue) {\n selectedItem = _this.getItemByValue(value);\n }\n\n return DropdownText.create(selectedItem ? renderItemContent(selectedItem) : _text, {\n defaultProps: {\n className: classes\n }\n });\n };\n\n _this.renderSearchInput = function () {\n var _this$props12 = _this.props,\n search = _this$props12.search,\n searchInput = _this$props12.searchInput;\n var searchQuery = _this.state.searchQuery;\n return search && /*#__PURE__*/React.createElement(Ref, {\n innerRef: _this.searchRef\n }, DropdownSearchInput.create(searchInput, {\n defaultProps: {\n style: {\n width: _this.computeSearchInputWidth()\n },\n tabIndex: _this.computeSearchInputTabIndex(),\n value: searchQuery\n },\n overrideProps: _this.handleSearchInputOverrides\n }));\n };\n\n _this.renderSearchSizer = function () {\n var _this$props13 = _this.props,\n search = _this$props13.search,\n multiple = _this$props13.multiple;\n return search && multiple && /*#__PURE__*/React.createElement(\"span\", {\n className: \"sizer\",\n ref: _this.sizerRef\n });\n };\n\n _this.renderLabels = function () {\n var _this$props14 = _this.props,\n multiple = _this$props14.multiple,\n renderLabel = _this$props14.renderLabel;\n var _this$state7 = _this.state,\n selectedLabel = _this$state7.selectedLabel,\n value = _this$state7.value;\n\n if (!multiple || _isEmpty(value)) {\n return;\n }\n\n var selectedItems = _map(value, _this.getItemByValue);\n\n // if no item could be found for a given state value the selected item will be undefined\n // compact the selectedItems so we only have actual objects left\n return _map(_compact(selectedItems), function (item, index) {\n var defaultProps = {\n active: item.value === selectedLabel,\n as: 'a',\n key: getKeyOrValue(item.key, item.value),\n onClick: _this.handleLabelClick,\n onRemove: _this.handleLabelRemove,\n value: item.value\n };\n return Label.create(renderLabel(item, index, defaultProps), {\n defaultProps: defaultProps\n });\n });\n };\n\n _this.renderOptions = function () {\n var _this$props15 = _this.props,\n lazyLoad = _this$props15.lazyLoad,\n multiple = _this$props15.multiple,\n search = _this$props15.search,\n noResultsMessage = _this$props15.noResultsMessage;\n var _this$state8 = _this.state,\n open = _this$state8.open,\n selectedIndex = _this$state8.selectedIndex,\n value = _this$state8.value; // lazy load, only render options when open\n\n if (lazyLoad && !open) return null;\n var options = getMenuOptions({\n value: _this.state.value,\n options: _this.props.options,\n searchQuery: _this.state.searchQuery,\n additionLabel: _this.props.additionLabel,\n additionPosition: _this.props.additionPosition,\n allowAdditions: _this.props.allowAdditions,\n deburr: _this.props.deburr,\n multiple: _this.props.multiple,\n search: _this.props.search\n });\n\n if (noResultsMessage !== null && search && _isEmpty(options)) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"message\"\n }, noResultsMessage);\n }\n\n var isActive = multiple ? function (optValue) {\n return _includes(value, optValue);\n } : function (optValue) {\n return optValue === value;\n };\n return _map(options, function (opt, i) {\n return DropdownItem.create(_extends({\n active: isActive(opt.value),\n selected: selectedIndex === i\n }, opt, {\n key: getKeyOrValue(opt.key, opt.value),\n // Needed for handling click events on disabled items\n style: _extends({}, opt.style, {\n pointerEvents: 'all'\n })\n }), {\n generateKey: false,\n overrideProps: function overrideProps(predefinedProps) {\n return {\n onClick: function onClick(e, item) {\n predefinedProps.onClick == null ? void 0 : predefinedProps.onClick(e, item);\n\n _this.handleItemClick(e, item);\n }\n };\n }\n });\n });\n };\n\n _this.renderMenu = function () {\n var _this$props16 = _this.props,\n children = _this$props16.children,\n direction = _this$props16.direction,\n header = _this$props16.header;\n var open = _this.state.open;\n\n var ariaOptions = _this.getDropdownMenuAriaOptions(); // single menu child\n\n\n if (!childrenUtils.isNil(children)) {\n var menuChild = Children.only(children);\n var className = cx(direction, useKeyOnly(open, 'visible'), menuChild.props.className);\n return /*#__PURE__*/cloneElement(menuChild, _extends({\n className: className\n }, ariaOptions));\n }\n\n return /*#__PURE__*/React.createElement(DropdownMenu, _extends({}, ariaOptions, {\n direction: direction,\n open: open\n }), DropdownHeader.create(header, {\n autoGenerateKey: false\n }), _this.renderOptions());\n };\n\n return _this;\n }\n\n var _proto = Dropdown.prototype;\n\n _proto.getInitialAutoControlledState = function getInitialAutoControlledState() {\n return {\n focus: false,\n searchQuery: ''\n };\n };\n\n Dropdown.getAutoControlledStateFromProps = function getAutoControlledStateFromProps(nextProps, computedState, prevState) {\n // These values are stored only for a comparison on next getAutoControlledStateFromProps()\n var derivedState = {\n __options: nextProps.options,\n __value: computedState.value\n }; // The selected index is only dependent:\n\n var shouldComputeSelectedIndex = // On value change\n !shallowEqual(prevState.__value, computedState.value) || // On option keys/values, we only check those properties to avoid recursive performance impacts.\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/3000\n !_isEqual(getKeyAndValues(nextProps.options), getKeyAndValues(prevState.__options));\n\n if (shouldComputeSelectedIndex) {\n derivedState.selectedIndex = getSelectedIndex({\n additionLabel: nextProps.additionLabel,\n additionPosition: nextProps.additionPosition,\n allowAdditions: nextProps.allowAdditions,\n deburr: nextProps.deburr,\n multiple: nextProps.multiple,\n search: nextProps.search,\n selectedIndex: computedState.selectedIndex,\n value: computedState.value,\n options: nextProps.options,\n searchQuery: computedState.searchQuery\n });\n }\n\n return derivedState;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var open = this.state.open;\n\n if (open) {\n this.open(null, false);\n }\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // eslint-disable-line complexity\n var _this$props17 = this.props,\n closeOnBlur = _this$props17.closeOnBlur,\n minCharacters = _this$props17.minCharacters,\n openOnFocus = _this$props17.openOnFocus,\n search = _this$props17.search;\n /* eslint-disable no-console */\n\n if (process.env.NODE_ENV !== 'production') {\n // in development, validate value type matches dropdown type\n var isNextValueArray = Array.isArray(this.props.value);\n\n var hasValue = _has(this.props, 'value');\n\n if (hasValue && this.props.multiple && !isNextValueArray) {\n console.error('Dropdown `value` must be an array when `multiple` is set.' + (\" Received type: `\" + Object.prototype.toString.call(this.props.value) + \"`.\"));\n } else if (hasValue && !this.props.multiple && isNextValueArray) {\n console.error('Dropdown `value` must not be an array when `multiple` is not set.' + ' Either set `multiple={true}` or use a string or number value.');\n }\n }\n /* eslint-enable no-console */\n // focused / blurred\n\n\n if (!prevState.focus && this.state.focus) {\n if (!this.isMouseDown) {\n var openable = !search || search && minCharacters === 1 && !this.state.open;\n if (openOnFocus && openable) this.open();\n }\n } else if (prevState.focus && !this.state.focus) {\n if (!this.isMouseDown && closeOnBlur) {\n this.close();\n }\n } // opened / closed\n\n\n if (!prevState.open && this.state.open) {\n this.setOpenDirection();\n this.scrollSelectedItemIntoView();\n } else if (prevState.open && !this.state.open) {}\n\n if (prevState.selectedIndex !== this.state.selectedIndex) {\n this.scrollSelectedItemIntoView();\n }\n } // ----------------------------------------\n // Document Event Handlers\n // ----------------------------------------\n // onChange needs to receive a value\n // can't rely on props.value if we are controlled\n ;\n\n _proto.getDropdownMenuAriaOptions = function getDropdownMenuAriaOptions() {\n var _this$props18 = this.props,\n search = _this$props18.search,\n multiple = _this$props18.multiple;\n var ariaOptions = {};\n\n if (search) {\n ariaOptions['aria-multiselectable'] = multiple;\n ariaOptions.role = 'listbox';\n }\n\n return ariaOptions;\n } // ----------------------------------------\n // Setters\n // ----------------------------------------\n ;\n\n _proto.render = function render() {\n var _this$props19 = this.props,\n basic = _this$props19.basic,\n button = _this$props19.button,\n className = _this$props19.className,\n compact = _this$props19.compact,\n disabled = _this$props19.disabled,\n error = _this$props19.error,\n fluid = _this$props19.fluid,\n floating = _this$props19.floating,\n icon = _this$props19.icon,\n inline = _this$props19.inline,\n item = _this$props19.item,\n labeled = _this$props19.labeled,\n loading = _this$props19.loading,\n multiple = _this$props19.multiple,\n pointing = _this$props19.pointing,\n search = _this$props19.search,\n selection = _this$props19.selection,\n scrolling = _this$props19.scrolling,\n simple = _this$props19.simple,\n trigger = _this$props19.trigger;\n var _this$state9 = this.state,\n focus = _this$state9.focus,\n open = _this$state9.open,\n upward = _this$state9.upward; // Classes\n\n var classes = cx('ui', useKeyOnly(open, 'active visible'), useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(loading, 'loading'), useKeyOnly(basic, 'basic'), useKeyOnly(button, 'button'), useKeyOnly(compact, 'compact'), useKeyOnly(fluid, 'fluid'), useKeyOnly(floating, 'floating'), useKeyOnly(inline, 'inline'), // TODO: consider augmentation to render Dropdowns as Button/Menu, solves icon/link item issues\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/401#issuecomment-240487229\n // TODO: the icon class is only required when a dropdown is a button\n // useKeyOnly(icon, 'icon'),\n useKeyOnly(labeled, 'labeled'), useKeyOnly(item, 'item'), useKeyOnly(multiple, 'multiple'), useKeyOnly(search, 'search'), useKeyOnly(selection, 'selection'), useKeyOnly(simple, 'simple'), useKeyOnly(scrolling, 'scrolling'), useKeyOnly(upward, 'upward'), useKeyOrValueAndKey(pointing, 'pointing'), 'dropdown', className);\n var rest = getUnhandledProps(Dropdown, this.props);\n var ElementType = getElementType(Dropdown, this.props);\n var ariaOptions = this.getDropdownAriaOptions(ElementType, this.props);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n tabIndex: this.computeTabIndex()\n }), this.renderLabels(), this.renderSearchInput(), this.renderSearchSizer(), trigger || this.renderText(), Icon.create(icon, {\n overrideProps: this.handleIconOverrides,\n autoGenerateKey: false\n }), this.renderMenu(), open && /*#__PURE__*/React.createElement(EventStack, {\n name: \"keydown\",\n on: this.closeOnEscape\n }), open && /*#__PURE__*/React.createElement(EventStack, {\n name: \"click\",\n on: this.closeOnDocumentClick\n }), focus && /*#__PURE__*/React.createElement(EventStack, {\n name: \"keydown\",\n on: this.removeItemOnBackspace\n })));\n };\n\n return Dropdown;\n}(Component);\n\nDropdown.handledProps = [\"additionLabel\", \"additionPosition\", \"allowAdditions\", \"as\", \"basic\", \"button\", \"children\", \"className\", \"clearable\", \"closeOnBlur\", \"closeOnChange\", \"closeOnEscape\", \"compact\", \"deburr\", \"defaultOpen\", \"defaultSearchQuery\", \"defaultSelectedLabel\", \"defaultUpward\", \"defaultValue\", \"direction\", \"disabled\", \"error\", \"floating\", \"fluid\", \"header\", \"icon\", \"inline\", \"item\", \"labeled\", \"lazyLoad\", \"loading\", \"minCharacters\", \"multiple\", \"noResultsMessage\", \"onAddItem\", \"onBlur\", \"onChange\", \"onClick\", \"onClose\", \"onFocus\", \"onLabelClick\", \"onMouseDown\", \"onOpen\", \"onSearchChange\", \"open\", \"openOnFocus\", \"options\", \"placeholder\", \"pointing\", \"renderLabel\", \"scrolling\", \"search\", \"searchInput\", \"searchQuery\", \"selectOnBlur\", \"selectOnNavigation\", \"selectedLabel\", \"selection\", \"simple\", \"tabIndex\", \"text\", \"trigger\", \"upward\", \"value\", \"wrapSelection\"];\nexport { Dropdown as default };\nDropdown.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Label prefixed to an option added by a user. */\n additionLabel: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n\n /** Position of the `Add: ...` option in the dropdown list ('top' or 'bottom'). */\n additionPosition: PropTypes.oneOf(['top', 'bottom']),\n\n /**\n * Allow user additions to the list of options (boolean).\n * Requires the use of `selection`, `options` and `search`.\n */\n allowAdditions: customPropTypes.every([customPropTypes.demand(['options', 'selection', 'search']), PropTypes.bool]),\n\n /** A Dropdown can reduce its complexity. */\n basic: PropTypes.bool,\n\n /** Format the Dropdown to appear as a button. */\n button: PropTypes.bool,\n\n /** Primary content. */\n children: customPropTypes.every([customPropTypes.disallow(['options', 'selection']), customPropTypes.givenProps({\n children: PropTypes.any.isRequired\n }, PropTypes.element.isRequired)]),\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Using the clearable setting will let users remove their selection from a dropdown. */\n clearable: PropTypes.bool,\n\n /** Whether or not the menu should close when the dropdown is blurred. */\n closeOnBlur: PropTypes.bool,\n\n /** Whether or not the dropdown should close when the escape key is pressed. */\n closeOnEscape: PropTypes.bool,\n\n /**\n * Whether or not the menu should close when a value is selected from the dropdown.\n * By default, multiple selection dropdowns will remain open on change, while single\n * selection dropdowns will close on change.\n */\n closeOnChange: PropTypes.bool,\n\n /** A compact dropdown has no minimum width. */\n compact: PropTypes.bool,\n\n /** Whether or not the dropdown should strip diacritics in options and input search */\n deburr: PropTypes.bool,\n\n /** Initial value of open. */\n defaultOpen: PropTypes.bool,\n\n /** Initial value of searchQuery. */\n defaultSearchQuery: PropTypes.string,\n\n /** Currently selected label in multi-select. */\n defaultSelectedLabel: customPropTypes.every([customPropTypes.demand(['multiple']), PropTypes.oneOfType([PropTypes.number, PropTypes.string])]),\n\n /** Initial value of upward. */\n defaultUpward: PropTypes.bool,\n\n /** Initial value or value array if multiple. */\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]))]),\n\n /** A dropdown menu can open to the left or to the right. */\n direction: PropTypes.oneOf(['left', 'right']),\n\n /** A disabled dropdown menu or item does not allow user interaction. */\n disabled: PropTypes.bool,\n\n /** An errored dropdown can alert a user to a problem. */\n error: PropTypes.bool,\n\n /** A dropdown menu can contain floated content. */\n floating: PropTypes.bool,\n\n /** A dropdown can take the full width of its parent */\n fluid: PropTypes.bool,\n\n /** A dropdown menu can contain a header. */\n header: PropTypes.node,\n\n /** Shorthand for Icon. */\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.object]),\n\n /** A dropdown can be formatted to appear inline in other content. */\n inline: PropTypes.bool,\n\n /** A dropdown can be formatted as a Menu item. */\n item: PropTypes.bool,\n\n /** A dropdown can be labeled. */\n labeled: PropTypes.bool,\n\n /** A dropdown can defer rendering its options until it is open. */\n lazyLoad: PropTypes.bool,\n\n /** A dropdown can show that it is currently loading data. */\n loading: PropTypes.bool,\n\n /** The minimum characters for a search to begin showing results. */\n minCharacters: PropTypes.number,\n\n /** A selection dropdown can allow multiple selections. */\n multiple: PropTypes.bool,\n\n /** Message to display when there are no results. */\n noResultsMessage: PropTypes.node,\n\n /**\n * Called when a user adds a new item. Use this to update the options list.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and the new item's value.\n */\n onAddItem: PropTypes.func,\n\n /**\n * Called on blur.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onBlur: PropTypes.func,\n\n /**\n * Called when the user attempts to change the value.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and proposed value.\n */\n onChange: PropTypes.func,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * Called when a close event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called on focus.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onFocus: PropTypes.func,\n\n /**\n * Called when a multi-select label is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All label props.\n */\n onLabelClick: PropTypes.func,\n\n /**\n * Called on mousedown.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onMouseDown: PropTypes.func,\n\n /**\n * Called when an open event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called on search input change.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props, includes current value of searchQuery.\n */\n onSearchChange: PropTypes.func,\n\n /** Controls whether or not the dropdown menu is displayed. */\n open: PropTypes.bool,\n\n /** Whether or not the menu should open when the dropdown is focused. */\n openOnFocus: PropTypes.bool,\n\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: customPropTypes.every([customPropTypes.disallow(['children']), PropTypes.arrayOf(PropTypes.shape(DropdownItem.propTypes))]),\n\n /** Placeholder text. */\n placeholder: PropTypes.string,\n\n /** A dropdown can be formatted so that its menu is pointing. */\n pointing: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right', 'top', 'top left', 'top right', 'bottom', 'bottom left', 'bottom right'])]),\n\n /**\n * Mapped over the active items and returns shorthand for the active item Labels.\n * Only applies to `multiple` Dropdowns.\n *\n * @param {object} item - A currently active dropdown item.\n * @param {number} index - The current index.\n * @param {object} defaultLabelProps - The default props for an active item Label.\n * @returns {*} Shorthand for a Label.\n */\n renderLabel: PropTypes.func,\n\n /** A dropdown can have its menu scroll. */\n scrolling: PropTypes.bool,\n\n /**\n * A selection dropdown can allow a user to search through a large list of choices.\n * Pass a function here to replace the default search.\n */\n search: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n\n /** A shorthand for a search input. */\n searchInput: PropTypes.oneOfType([PropTypes.array, PropTypes.node, PropTypes.object]),\n\n /** Current value of searchQuery. Creates a controlled component. */\n searchQuery: PropTypes.string,\n // TODO 'searchInMenu' or 'search='in menu' or ??? How to handle this markup and functionality?\n\n /** Define whether the highlighted item should be selected on blur. */\n selectOnBlur: PropTypes.bool,\n\n /**\n * Whether or not to change the value when navigating the menu using arrow keys.\n * Setting to false will require enter or left click to confirm a choice.\n */\n selectOnNavigation: PropTypes.bool,\n\n /** Currently selected label in multi-select. */\n selectedLabel: customPropTypes.every([customPropTypes.demand(['multiple']), PropTypes.oneOfType([PropTypes.string, PropTypes.number])]),\n\n /** A dropdown can be used to select between choices in a form. */\n selection: customPropTypes.every([customPropTypes.disallow(['children']), customPropTypes.demand(['options']), PropTypes.bool]),\n\n /** A simple dropdown can open without Javascript. */\n simple: PropTypes.bool,\n\n /** A dropdown can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The text displayed in the dropdown, usually for the active item. */\n text: PropTypes.string,\n\n /** Custom element to trigger the menu to become visible. Takes place of 'text'. */\n trigger: customPropTypes.every([customPropTypes.disallow(['selection', 'text']), PropTypes.node]),\n\n /** Current value or value array if multiple. Creates a controlled component. */\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number]))]),\n\n /** Controls whether the dropdown will open upward. */\n upward: PropTypes.bool,\n\n /**\n * A dropdown will go to the last element when ArrowUp is pressed on the first,\n * or go to the first when ArrowDown is pressed on the last( aka infinite selection )\n */\n wrapSelection: PropTypes.bool\n} : {};\nDropdown.defaultProps = {\n additionLabel: 'Add ',\n additionPosition: 'top',\n closeOnBlur: true,\n closeOnEscape: true,\n deburr: false,\n icon: 'dropdown',\n minCharacters: 1,\n noResultsMessage: 'No results found.',\n openOnFocus: true,\n renderLabel: renderItemContent,\n searchInput: 'text',\n selectOnBlur: true,\n selectOnNavigation: true,\n wrapSelection: true\n};\nDropdown.autoControlledProps = ['open', 'searchQuery', 'selectedLabel', 'value', 'upward'];\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.Menu = DropdownMenu;\nDropdown.SearchInput = DropdownSearchInput;\nDropdown.Text = DropdownText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * A dropdown menu can contain dividers to separate related content.\n */\n\nfunction DropdownDivider(props) {\n var className = props.className;\n var classes = cx('divider', className);\n var rest = getUnhandledProps(DropdownDivider, props);\n var ElementType = getElementType(DropdownDivider, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }));\n}\n\nDropdownDivider.handledProps = [\"as\", \"className\"];\nDropdownDivider.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Additional classes. */\n className: PropTypes.string\n} : {};\nexport default DropdownDivider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nimport Icon from '../../elements/Icon';\n/**\n * A dropdown menu can contain a header.\n */\n\nfunction DropdownHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n icon = props.icon;\n var classes = cx('header', className);\n var rest = getUnhandledProps(DropdownHeader, props);\n var ElementType = getElementType(DropdownHeader, props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), Icon.create(icon, {\n autoGenerateKey: false\n }), content);\n}\n\nDropdownHeader.handledProps = [\"as\", \"children\", \"className\", \"content\", \"icon\"];\nDropdownHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function) */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand\n} : {};\nDropdownHeader.create = createShorthandFactory(DropdownHeader, function (content) {\n return {\n content: content\n };\n});\nexport default DropdownHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isNil from \"lodash-es/isNil\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthand, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\nimport Flag from '../../elements/Flag';\nimport Icon from '../../elements/Icon';\nimport Image from '../../elements/Image';\nimport Label from '../../elements/Label';\n/**\n * An item sub-component for Dropdown component.\n */\n\nvar DropdownItem = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DropdownItem, _Component);\n\n function DropdownItem() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = DropdownItem.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n disabled = _this$props.disabled,\n description = _this$props.description,\n flag = _this$props.flag,\n icon = _this$props.icon,\n image = _this$props.image,\n label = _this$props.label,\n selected = _this$props.selected,\n text = _this$props.text;\n var classes = cx(useKeyOnly(active, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(selected, 'selected'), 'item', className); // add default dropdown icon if item contains another menu\n\n var iconName = _isNil(icon) ? childrenUtils.someByType(children, 'DropdownMenu') && 'dropdown' : icon;\n var rest = getUnhandledProps(DropdownItem, this.props);\n var ElementType = getElementType(DropdownItem, this.props);\n var ariaOptions = {\n role: 'option',\n 'aria-disabled': disabled,\n 'aria-checked': active,\n 'aria-selected': selected\n };\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onClick: this.handleClick\n }), children);\n }\n\n var flagElement = Flag.create(flag, {\n autoGenerateKey: false\n });\n var iconElement = Icon.create(iconName, {\n autoGenerateKey: false\n });\n var imageElement = Image.create(image, {\n autoGenerateKey: false\n });\n var labelElement = Label.create(label, {\n autoGenerateKey: false\n });\n var descriptionElement = createShorthand('span', function (val) {\n return {\n children: val\n };\n }, description, {\n defaultProps: {\n className: 'description'\n },\n autoGenerateKey: false\n });\n var textElement = createShorthand('span', function (val) {\n return {\n children: val\n };\n }, childrenUtils.isNil(content) ? text : content, {\n defaultProps: {\n className: 'text'\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, ariaOptions, {\n className: classes,\n onClick: this.handleClick\n }), imageElement, iconElement, flagElement, labelElement, descriptionElement, textElement);\n };\n\n return DropdownItem;\n}(Component);\n\nDropdownItem.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"description\", \"disabled\", \"flag\", \"icon\", \"image\", \"label\", \"onClick\", \"selected\", \"text\", \"value\"];\nDropdownItem.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Style as the currently chosen item. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Additional text with less emphasis. */\n description: customPropTypes.itemShorthand,\n\n /** A dropdown item can be disabled. */\n disabled: PropTypes.bool,\n\n /** Shorthand for Flag. */\n flag: customPropTypes.itemShorthand,\n\n /** Shorthand for Icon. */\n icon: customPropTypes.itemShorthand,\n\n /** Shorthand for Image. */\n image: customPropTypes.itemShorthand,\n\n /** Shorthand for Label. */\n label: customPropTypes.itemShorthand,\n\n /**\n * Called on click.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClick: PropTypes.func,\n\n /**\n * The item currently selected by keyboard shortcut.\n * This is not the active item.\n */\n selected: PropTypes.bool,\n\n /** Display text. */\n text: customPropTypes.contentShorthand,\n\n /** Stored value. */\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string])\n} : {};\nDropdownItem.create = createShorthandFactory(DropdownItem, function (opts) {\n return opts;\n});\nexport default DropdownItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A dropdown menu can contain a menu.\n */\n\nfunction DropdownMenu(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n direction = props.direction,\n open = props.open,\n scrolling = props.scrolling;\n var classes = cx(direction, useKeyOnly(open, 'visible'), useKeyOnly(scrolling, 'scrolling'), 'menu transition', className);\n var rest = getUnhandledProps(DropdownMenu, props);\n var ElementType = getElementType(DropdownMenu, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDropdownMenu.handledProps = [\"as\", \"children\", \"className\", \"content\", \"direction\", \"open\", \"scrolling\"];\nDropdownMenu.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A dropdown menu can open to the left or to the right. */\n direction: PropTypes.oneOf(['left', 'right']),\n\n /** Whether or not the dropdown menu is displayed. */\n open: PropTypes.bool,\n\n /** A dropdown menu can scroll. */\n scrolling: PropTypes.bool\n} : {};\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { createShorthandFactory, getUnhandledProps } from '../../lib';\n/**\n * A search item sub-component for Dropdown component.\n */\n\nvar DropdownSearchInput = /*#__PURE__*/function (_Component) {\n _inheritsLoose(DropdownSearchInput, _Component);\n\n function DropdownSearchInput() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n return _this;\n }\n\n var _proto = DropdownSearchInput.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n autoComplete = _this$props.autoComplete,\n className = _this$props.className,\n tabIndex = _this$props.tabIndex,\n type = _this$props.type,\n value = _this$props.value;\n var classes = cx('search', className);\n var rest = getUnhandledProps(DropdownSearchInput, this.props);\n return /*#__PURE__*/React.createElement(\"input\", _extends({}, rest, {\n \"aria-autocomplete\": \"list\",\n autoComplete: autoComplete,\n className: classes,\n onChange: this.handleChange,\n tabIndex: tabIndex,\n type: type,\n value: value\n }));\n };\n\n return DropdownSearchInput;\n}(Component);\n\nDropdownSearchInput.handledProps = [\"as\", \"autoComplete\", \"className\", \"tabIndex\", \"type\", \"value\"];\nDropdownSearchInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An input can have the auto complete. */\n autoComplete: PropTypes.string,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** An input can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The HTML input type. */\n type: PropTypes.string,\n\n /** Stored value. */\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nDropdownSearchInput.defaultProps = {\n autoComplete: 'off',\n type: 'text'\n};\nDropdownSearchInput.create = createShorthandFactory(DropdownSearchInput, function (type) {\n return {\n type: type\n };\n});\nexport default DropdownSearchInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A dropdown contains a selected value.\n */\n\nfunction DropdownText(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('divider', className);\n var rest = getUnhandledProps(DropdownText, props);\n var ElementType = getElementType(DropdownText, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n \"aria-atomic\": true,\n \"aria-live\": \"polite\",\n role: \"alert\"\n }, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nDropdownText.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nDropdownText.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nDropdownText.create = createShorthandFactory(DropdownText, function (val) {\n return {\n content: val\n };\n});\nexport default DropdownText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isPlainObject from \"lodash-es/isPlainObject\";\nimport _pick from \"lodash-es/pick\";\nimport _includes from \"lodash-es/includes\";\nimport _reduce from \"lodash-es/reduce\";\nimport _isEmpty from \"lodash-es/isEmpty\";\nimport _invoke from \"lodash-es/invoke\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createRef, isValidElement } from 'react';\nimport shallowEqual from 'shallowequal';\nimport { ModernAutoControlledComponent as Component, childrenUtils, customPropTypes, doesNodeContainClick, eventStack, getElementType, getUnhandledProps, isBrowser, useKeyOnly } from '../../lib';\nimport Icon from '../../elements/Icon';\nimport Portal from '../../addons/Portal';\nimport ModalActions from './ModalActions';\nimport ModalContent from './ModalContent';\nimport ModalDescription from './ModalDescription';\nimport ModalDimmer from './ModalDimmer';\nimport ModalHeader from './ModalHeader';\nimport { canFit, getLegacyStyles, isLegacy } from './utils';\n\n/**\n * A modal displays content that temporarily blocks interactions with the main view of a site.\n * @see Confirm\n * @see Portal\n */\nvar Modal = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Modal, _Component);\n\n function Modal() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.legacy = isBrowser() && isLegacy();\n _this.ref = /*#__PURE__*/createRef();\n _this.dimmerRef = /*#__PURE__*/createRef();\n _this.latestDocumentMouseDownEvent = null;\n\n _this.getMountNode = function () {\n return isBrowser() ? _this.props.mountNode || document.body : null;\n };\n\n _this.handleActionsOverrides = function (predefinedProps) {\n return {\n onActionClick: function onActionClick(e, actionProps) {\n _invoke(predefinedProps, 'onActionClick', e, actionProps);\n\n _invoke(_this.props, 'onActionClick', e, _this.props);\n\n _this.handleClose(e);\n }\n };\n };\n\n _this.handleClose = function (e) {\n _this.setState({\n open: false\n });\n\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.handleDocumentMouseDown = function (e) {\n _this.latestDocumentMouseDownEvent = e;\n };\n\n _this.handleDocumentClick = function (e) {\n var closeOnDimmerClick = _this.props.closeOnDimmerClick;\n var currentDocumentMouseDownEvent = _this.latestDocumentMouseDownEvent;\n _this.latestDocumentMouseDownEvent = null;\n if (!closeOnDimmerClick || doesNodeContainClick(_this.ref.current, currentDocumentMouseDownEvent) || doesNodeContainClick(_this.ref.current, e)) return;\n\n _this.setState({\n open: false\n });\n\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.handleIconOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e) {\n _invoke(predefinedProps, 'onClick', e);\n\n _this.handleClose(e);\n }\n };\n };\n\n _this.handleOpen = function (e) {\n _invoke(_this.props, 'onOpen', e, _extends({}, _this.props, {\n open: true\n }));\n\n _this.setState({\n open: true\n });\n };\n\n _this.handlePortalMount = function (e) {\n var eventPool = _this.props.eventPool;\n\n _this.setState({\n scrolling: false\n });\n\n _this.setPositionAndClassNames();\n\n eventStack.sub('mousedown', _this.handleDocumentMouseDown, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n eventStack.sub('click', _this.handleDocumentClick, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n\n _invoke(_this.props, 'onMount', e, _this.props);\n };\n\n _this.handlePortalUnmount = function (e) {\n var eventPool = _this.props.eventPool;\n cancelAnimationFrame(_this.animationRequestId);\n eventStack.unsub('mousedown', _this.handleDocumentMouseDown, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n eventStack.unsub('click', _this.handleDocumentClick, {\n pool: eventPool,\n target: _this.dimmerRef.current\n });\n\n _invoke(_this.props, 'onUnmount', e, _this.props);\n };\n\n _this.setPositionAndClassNames = function () {\n var centered = _this.props.centered;\n var scrolling;\n var newState = {};\n\n if (_this.ref.current) {\n var rect = _this.ref.current.getBoundingClientRect();\n\n var isFitted = canFit(rect);\n scrolling = !isFitted; // Styles should be computed for IE11\n\n var legacyStyles = _this.legacy ? getLegacyStyles(isFitted, centered, rect) : {};\n\n if (!shallowEqual(_this.state.legacyStyles, legacyStyles)) {\n newState.legacyStyles = legacyStyles;\n }\n\n if (_this.state.scrolling !== scrolling) {\n newState.scrolling = scrolling;\n }\n }\n\n if (!_isEmpty(newState)) _this.setState(newState);\n _this.animationRequestId = requestAnimationFrame(_this.setPositionAndClassNames);\n };\n\n _this.renderContent = function (rest) {\n var _this$props = _this.props,\n actions = _this$props.actions,\n basic = _this$props.basic,\n children = _this$props.children,\n className = _this$props.className,\n closeIcon = _this$props.closeIcon,\n content = _this$props.content,\n header = _this$props.header,\n size = _this$props.size,\n style = _this$props.style;\n var _this$state = _this.state,\n legacyStyles = _this$state.legacyStyles,\n scrolling = _this$state.scrolling;\n var classes = cx('ui', size, useKeyOnly(basic, 'basic'), useKeyOnly(_this.legacy, 'legacy'), useKeyOnly(scrolling, 'scrolling'), 'modal transition visible active', className);\n var ElementType = getElementType(Modal, _this.props);\n var closeIconName = closeIcon === true ? 'close' : closeIcon;\n var closeIconJSX = Icon.create(closeIconName, {\n overrideProps: _this.handleIconOverrides\n });\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: _this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n style: _extends({}, legacyStyles, style)\n }), closeIconJSX, childrenUtils.isNil(children) ? /*#__PURE__*/React.createElement(React.Fragment, null, ModalHeader.create(header, {\n autoGenerateKey: false\n }), ModalContent.create(content, {\n autoGenerateKey: false\n }), ModalActions.create(actions, {\n overrideProps: _this.handleActionsOverrides\n })) : children));\n };\n\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.handlePortalUnmount();\n } // Do not access document when server side rendering\n ;\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n centered = _this$props2.centered,\n closeOnDocumentClick = _this$props2.closeOnDocumentClick,\n dimmer = _this$props2.dimmer,\n eventPool = _this$props2.eventPool,\n trigger = _this$props2.trigger;\n var _this$state2 = this.state,\n open = _this$state2.open,\n scrolling = _this$state2.scrolling;\n var mountNode = this.getMountNode(); // Short circuit when server side rendering\n\n if (!isBrowser()) {\n return /*#__PURE__*/isValidElement(trigger) ? trigger : null;\n }\n\n var unhandled = getUnhandledProps(Modal, this.props);\n var portalPropNames = Portal.handledProps;\n\n var rest = _reduce(unhandled, function (acc, val, key) {\n if (!_includes(portalPropNames, key)) acc[key] = val;\n return acc;\n }, {});\n\n var portalProps = _pick(unhandled, portalPropNames); // Heads up!\n //\n // The SUI CSS selector to prevent the modal itself from blurring requires an immediate .dimmer child:\n // .blurring.dimmed.dimmable>:not(.dimmer) { ... }\n //\n // The .blurring.dimmed.dimmable is the body, so that all body content inside is blurred.\n // We need the immediate child to be the dimmer to :not() blur the modal itself!\n // Otherwise, the portal div is also blurred, blurring the modal.\n //\n // We cannot them wrap the modalJSX in an actual <Dimmer /> instead, we apply the dimmer classes to the <Portal />.\n\n\n return /*#__PURE__*/React.createElement(Portal, _extends({\n closeOnDocumentClick: closeOnDocumentClick\n }, portalProps, {\n trigger: trigger,\n eventPool: eventPool,\n mountNode: mountNode,\n open: open,\n onClose: this.handleClose,\n onMount: this.handlePortalMount,\n onOpen: this.handleOpen,\n onUnmount: this.handlePortalUnmount\n }), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.dimmerRef\n }, ModalDimmer.create(_isPlainObject(dimmer) ? dimmer : {}, {\n autoGenerateKey: false,\n defaultProps: {\n blurring: dimmer === 'blurring',\n inverted: dimmer === 'inverted'\n },\n overrideProps: {\n children: this.renderContent(rest),\n centered: centered,\n mountNode: mountNode,\n scrolling: scrolling\n }\n })));\n };\n\n return Modal;\n}(Component);\n\nModal.handledProps = [\"actions\", \"as\", \"basic\", \"centered\", \"children\", \"className\", \"closeIcon\", \"closeOnDimmerClick\", \"closeOnDocumentClick\", \"content\", \"defaultOpen\", \"dimmer\", \"eventPool\", \"header\", \"mountNode\", \"onActionClick\", \"onClose\", \"onMount\", \"onOpen\", \"onUnmount\", \"open\", \"size\", \"style\", \"trigger\"];\nModal.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Shorthand for Modal.Actions. Typically an array of button shorthand. */\n actions: customPropTypes.itemShorthand,\n\n /** A modal can reduce its complexity */\n basic: PropTypes.bool,\n\n /** A modal can be vertically centered in the viewport */\n centered: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for the close icon. Closes the modal on click. */\n closeIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.object, PropTypes.bool]),\n\n /** Whether or not the Modal should close when the dimmer is clicked. */\n closeOnDimmerClick: PropTypes.bool,\n\n /** Whether or not the Modal should close when the document is clicked. */\n closeOnDocumentClick: PropTypes.bool,\n\n /** Simple text content for the Modal. */\n content: customPropTypes.itemShorthand,\n\n /** Initial value of open. */\n defaultOpen: PropTypes.bool,\n\n /** A Modal can appear in a dimmer. */\n dimmer: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object, PropTypes.oneOf(['inverted', 'blurring'])]),\n\n /** Event pool namespace that is used to handle component events */\n eventPool: PropTypes.string,\n\n /** Modal displayed above the content in bold. */\n header: customPropTypes.itemShorthand,\n\n /** The node where the modal should mount. Defaults to document.body. */\n mountNode: PropTypes.any,\n\n /**\n * Action onClick handler when using shorthand `actions`.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onActionClick: PropTypes.func,\n\n /**\n * Called when a close event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called when the modal is mounted on the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onMount: PropTypes.func,\n\n /**\n * Called when an open event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called when the modal is unmounted from the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onUnmount: PropTypes.func,\n\n /** Controls whether or not the Modal is displayed. */\n open: PropTypes.bool,\n\n /** A modal can vary in size */\n size: PropTypes.oneOf(['mini', 'tiny', 'small', 'large', 'fullscreen']),\n\n /** Custom styles. */\n style: PropTypes.object,\n\n /** Element to be rendered in-place where the modal is defined. */\n trigger: PropTypes.node\n /**\n * NOTE: Any unhandled props that are defined in Modal are passed-through\n * to the inner Portal.\n */\n\n} : {};\nModal.defaultProps = {\n centered: true,\n dimmer: true,\n closeOnDimmerClick: true,\n closeOnDocumentClick: false,\n eventPool: 'Modal'\n};\nModal.autoControlledProps = ['open'];\nModal.Actions = ModalActions;\nModal.Content = ModalContent;\nModal.Description = ModalDescription;\nModal.Dimmer = ModalDimmer;\nModal.Header = ModalHeader;\nexport default Modal;","// https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L956\nvar OFFSET = 0; // https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L990\n\nvar PADDING = 50;\n/**\n * Ensures that modal can fit viewport without scroll.\n *\n * @param modalRect {DOMRect}\n *\n * @see https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L608\n */\n\nexport var canFit = function canFit(modalRect) {\n // original: scrollHeight = $module.prop('scrollHeight'),\n // is replaced by .height because scrollHeight provides integer which produces glitches\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/2221\n var scrollHeight = modalRect.height + OFFSET; // $module.outerHeight() + settings.offset\n\n var height = modalRect.height + OFFSET; // original: $(window).height()\n\n var contextHeight = window.innerHeight;\n var verticalCenter = contextHeight / 2;\n var topOffset = -(height / 2); // padding with edge of page\n\n var paddingHeight = PADDING;\n var startPosition = verticalCenter + topOffset; // 0\n // original: scrollHeight > height\n // ? startPosition + scrollHeight + paddingHeight < contextHeight\n // : height + paddingHeight * 2 < contextHeight\n\n return startPosition + scrollHeight + paddingHeight < contextHeight;\n};\n/**\n * Creates legacy styles for IE11.\n *\n * @param isFitted {Boolean}\n * @param centered {Boolean}\n * @param modalRect {DOMRect}\n *\n * @see https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L718\n */\n\nexport var getLegacyStyles = function getLegacyStyles(isFitted, centered, modalRect) {\n var marginTop = centered && isFitted ? -(modalRect.height / 2) : 0;\n var marginLeft = -(modalRect.width / 2);\n return {\n marginLeft: marginLeft,\n marginTop: marginTop\n };\n}; // https://github.com/Semantic-Org/Semantic-UI/blob/2.4.1/src/definitions/modules/modal.js#L631\n\n/* istanbul ignore next */\n\nexport var isLegacy = function isLegacy() {\n return !window.ActiveXObject && 'ActiveXObject' in window;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _map from \"lodash-es/map\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nimport Button from '../../elements/Button';\n/**\n * A modal can contain a row of actions.\n */\n\nvar ModalActions = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalActions, _Component);\n\n function ModalActions() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleButtonOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e, buttonProps) {\n _invoke(predefinedProps, 'onClick', e, buttonProps);\n\n _invoke(_this.props, 'onActionClick', e, buttonProps);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = ModalActions.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n actions = _this$props.actions,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content;\n var classes = cx('actions', className);\n var rest = getUnhandledProps(ModalActions, this.props);\n var ElementType = getElementType(ModalActions, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n if (!childrenUtils.isNil(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), content);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), _map(actions, function (action) {\n return Button.create(action, {\n overrideProps: _this2.handleButtonOverrides\n });\n }));\n };\n\n return ModalActions;\n}(Component);\n\nModalActions.handledProps = [\"actions\", \"as\", \"children\", \"className\", \"content\", \"onActionClick\"];\nexport { ModalActions as default };\nModalActions.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Array of shorthand buttons. */\n actions: customPropTypes.collectionShorthand,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /**\n * Action onClick handler when using shorthand `actions`.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props from the clicked action.\n */\n onActionClick: customPropTypes.every([customPropTypes.disallow(['children']), PropTypes.func])\n} : {};\nModalActions.create = createShorthandFactory(ModalActions, function (actions) {\n return {\n actions: actions\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A modal can contain content.\n */\n\nfunction ModalContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n image = props.image,\n scrolling = props.scrolling;\n var classes = cx(className, useKeyOnly(image, 'image'), useKeyOnly(scrolling, 'scrolling'), 'content');\n var rest = getUnhandledProps(ModalContent, props);\n var ElementType = getElementType(ModalContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalContent.handledProps = [\"as\", \"children\", \"className\", \"content\", \"image\", \"scrolling\"];\nModalContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A modal can contain image content. */\n image: PropTypes.bool,\n\n /** A modal can use the entire size of the screen. */\n scrolling: PropTypes.bool\n} : {};\nModalContent.create = createShorthandFactory(ModalContent, function (content) {\n return {\n content: content\n };\n});\nexport default ModalContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A modal can contain a description with one or more paragraphs.\n */\n\nfunction ModalDescription(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('description', className);\n var rest = getUnhandledProps(ModalDescription, props);\n var ElementType = getElementType(ModalDescription, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalDescription.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nModalDescription.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nexport default ModalDescription;","import React from 'react';\nimport isBrowser from '../isBrowser'; // useLayoutEffect() produces a warning with SSR rendering\n// https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a\n\nvar useIsomorphicLayoutEffect = isBrowser() && process.env.NODE_ENV !== 'test' ? React.useLayoutEffect : React.useEffect;\nexport default useIsomorphicLayoutEffect;","import { isRefObject } from '@fluentui/react-component-ref';\nimport React from 'react';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar CLASS_NAME_DELITIMITER = /\\s+/;\n/**\n * Accepts a set of ref objects that contain classnames as a string and returns an array of unique\n * classNames.\n *\n * @param {Set<React.RefObject>|undefined} classNameRefs\n * @returns String[]\n */\n\nexport function computeClassNames(classNameRefs) {\n var classNames = [];\n\n if (classNameRefs) {\n classNameRefs.forEach(function (classNameRef) {\n if (typeof classNameRef.current === 'string') {\n var classNamesForRef = classNameRef.current.split(CLASS_NAME_DELITIMITER);\n classNamesForRef.forEach(function (className) {\n classNames.push(className);\n });\n }\n });\n return classNames.filter(function (className, i, array) {\n return className.length > 0 && array.indexOf(className) === i;\n });\n }\n\n return [];\n}\n/**\n * Computes classnames that should be removed and added to a node based on input differences.\n *\n * @param {String[]} prevClassNames\n * @param {String[]} currentClassNames\n */\n\nexport function computeClassNamesDifference(prevClassNames, currentClassNames) {\n return [currentClassNames.filter(function (className) {\n return prevClassNames.indexOf(className) === -1;\n }), prevClassNames.filter(function (className) {\n return currentClassNames.indexOf(className) === -1;\n })];\n}\nvar prevClassNames = new Map();\n/**\n * @param {HTMLElement} node\n * @param {Set<React.RefObject>|undefined} classNameRefs\n */\n\nexport var handleClassNamesChange = function handleClassNamesChange(node, classNameRefs) {\n var currentClassNames = computeClassNames(classNameRefs);\n\n var _computeClassNamesDif = computeClassNamesDifference(prevClassNames.get(node) || [], currentClassNames),\n forAdd = _computeClassNamesDif[0],\n forRemoval = _computeClassNamesDif[1];\n\n if (node) {\n forAdd.forEach(function (className) {\n return node.classList.add(className);\n });\n forRemoval.forEach(function (className) {\n return node.classList.remove(className);\n });\n }\n\n prevClassNames.set(node, currentClassNames);\n};\nexport var NodeRegistry = function NodeRegistry() {\n var _this = this;\n\n this.add = function (node, classNameRef) {\n if (_this.nodes.has(node)) {\n var _set = _this.nodes.get(node);\n\n _set.add(classNameRef);\n\n return;\n } // IE11 does not support constructor params\n\n\n var set = new Set();\n set.add(classNameRef);\n\n _this.nodes.set(node, set);\n };\n\n this.del = function (node, classNameRef) {\n if (!_this.nodes.has(node)) {\n return;\n }\n\n var set = _this.nodes.get(node);\n\n if (set.size === 1) {\n _this.nodes.delete(node);\n\n return;\n }\n\n set.delete(classNameRef);\n };\n\n this.emit = function (node, callback) {\n callback(node, _this.nodes.get(node));\n };\n\n this.nodes = new Map();\n};\nvar nodeRegistry = new NodeRegistry();\n/**\n * A React hooks that allows to manage classNames on a DOM node in declarative manner. Accepts\n * a HTML element or React ref objects with it.\n *\n * @param {HTMLElement|React.RefObject} node\n * @param {String} className\n */\n\nexport default function useClassNamesOnNode(node, className) {\n var classNameRef = React.useRef();\n var isMounted = React.useRef(false);\n useIsomorphicLayoutEffect(function () {\n classNameRef.current = className;\n\n if (isMounted.current) {\n var element = isRefObject(node) ? node.current : node;\n nodeRegistry.emit(element, handleClassNamesChange);\n }\n\n isMounted.current = true;\n }, [className]);\n useIsomorphicLayoutEffect(function () {\n var element = isRefObject(node) ? node.current : node;\n nodeRegistry.add(element, classNameRef);\n nodeRegistry.emit(element, handleClassNamesChange);\n return function () {\n nodeRegistry.del(element, classNameRef);\n nodeRegistry.emit(element, handleClassNamesChange);\n };\n }, [node]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useClassNamesOnNode, useKeyOnly } from '../../lib';\n/**\n * A modal has a dimmer.\n */\n\nfunction ModalDimmer(props) {\n var blurring = props.blurring,\n children = props.children,\n className = props.className,\n centered = props.centered,\n content = props.content,\n inverted = props.inverted,\n mountNode = props.mountNode,\n scrolling = props.scrolling;\n var ref = React.useRef();\n var classes = cx('ui', useKeyOnly(inverted, 'inverted'), useKeyOnly(!centered, 'top aligned'), 'page modals dimmer transition visible active', className);\n var bodyClasses = cx('dimmable dimmed', useKeyOnly(blurring, 'blurring'), useKeyOnly(scrolling, 'scrolling'));\n var rest = getUnhandledProps(ModalDimmer, props);\n var ElementType = getElementType(ModalDimmer, props);\n useClassNamesOnNode(mountNode, bodyClasses);\n React.useEffect(function () {\n if (ref.current && ref.current.style) {\n ref.current.style.setProperty('display', 'flex', 'important');\n }\n }, []);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children));\n}\n\nModalDimmer.handledProps = [\"as\", \"blurring\", \"centered\", \"children\", \"className\", \"content\", \"inverted\", \"mountNode\", \"scrolling\"];\nModalDimmer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A dimmer can be blurred. */\n blurring: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A dimmer can center its contents in the viewport. */\n centered: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A dimmer can be inverted. */\n inverted: PropTypes.bool,\n\n /** The node where the modal should mount. Defaults to document.body. */\n mountNode: PropTypes.any,\n\n /** A dimmer can make body scrollable. */\n scrolling: PropTypes.bool\n} : {};\nModalDimmer.create = createShorthandFactory(ModalDimmer, function (content) {\n return {\n content: content\n };\n});\nexport default ModalDimmer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A modal can have a header.\n */\n\nfunction ModalHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('header', className);\n var rest = getUnhandledProps(ModalHeader, props);\n var ElementType = getElementType(ModalHeader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nModalHeader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nModalHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nModalHeader.create = createShorthandFactory(ModalHeader, function (content) {\n return {\n content: content\n };\n});\nexport default ModalHeader;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var env=require(\"exenv\");require(\"prop-types\");var React=require(\"react\");function _typeof(e){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _inherits(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function _possibleConstructorReturn(e,t){return!t||\"object\"!=typeof t&&\"function\"!=typeof t?_assertThisInitialized(e):t}var EventSet=function(){function e(t){_classCallCheck(this,e),_defineProperty(this,\"handlers\",void 0),this.handlers=t.slice(0)}return _createClass(e,[{key:\"addHandlers\",value:function(t){for(var n=this.handlers.slice(0),r=t.length,o=0;o<r;o+=1)n.push(t[o]);return new e(n)}},{key:\"dispatchEvent\",value:function(e,t){var n=this.handlers.length-1;if(t){for(var r=n;r>=0;r-=1)this.handlers[r].called||(this.handlers[r].called=!0,this.handlers[r](e));for(var o=n;o>=0;o-=1)this.handlers[o].called=!1}else{(0,this.handlers[n])(e)}}},{key:\"hasHandlers\",value:function(){return this.handlers.length>0}},{key:\"removeHandlers\",value:function(t){for(var n=[],r=this.handlers.length,o=0;o<r;o+=1){var a=this.handlers[o];-1===t.indexOf(a)&&n.push(a)}return new e(n)}}]),e}();function cloneMap(e){var t=new Map;return e.forEach(function(e,n){t.set(n,e)}),t}function normalizeHandlers(e){return Array.isArray(e)?e:[e]}var isRefObject=function(e){return null!==e&&\"object\"===_typeof(e)&&e.hasOwnProperty(\"current\")};function normalizeTarget(e){return\"document\"===e?document:\"window\"===e?window:isRefObject(e)?e.current||document:e||document}var EventPool=function(){function e(t,n){_classCallCheck(this,e),_defineProperty(this,\"handlerSets\",void 0),_defineProperty(this,\"poolName\",void 0),this.handlerSets=n,this.poolName=t}return _createClass(e,[{key:\"addHandlers\",value:function(t,n){var r=cloneMap(this.handlerSets);if(r.has(t)){var o=r.get(t);r.set(t,o.addHandlers(n))}else r.set(t,new EventSet(n));return new e(this.poolName,r)}},{key:\"dispatchEvent\",value:function(e,t){var n=this.handlerSets.get(e),r=\"default\"===this.poolName;n&&n.dispatchEvent(t,r)}},{key:\"hasHandlers\",value:function(e){if(!e)return this.handlerSets.size>0;var t=this.handlerSets.get(e);return!!t&&t.hasHandlers()}},{key:\"removeHandlers\",value:function(t,n){var r=cloneMap(this.handlerSets);if(!r.has(t))return new e(this.poolName,r);var o=r.get(t).removeHandlers(n);return o.hasHandlers()?r.set(t,o):r.delete(t),new e(this.poolName,r)}}]),e}();_defineProperty(EventPool,\"createByType\",function(e,t,n){var r=new Map;return r.set(t,new EventSet(n)),new EventPool(e,r)});var EventTarget=function(){function e(t){var n=this;_classCallCheck(this,e),_defineProperty(this,\"handlers\",new Map),_defineProperty(this,\"pools\",new Map),_defineProperty(this,\"target\",void 0),_defineProperty(this,\"createEmitter\",function(e){return function(t){n.pools.forEach(function(n){n.dispatchEvent(e,t)})}}),this.target=t}return _createClass(e,[{key:\"addHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e);this.pools.set(e,r.addHandlers(t,n))}else this.pools.set(e,EventPool.createByType(e,t,n));this.handlers.has(t)||this.addTargetHandler(t)}},{key:\"hasHandlers\",value:function(){return this.handlers.size>0}},{key:\"removeHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e).removeHandlers(t,n);r.hasHandlers()?this.pools.set(e,r):this.pools.delete(e);var o=!1;this.pools.forEach(function(e){return o=o||e.hasHandlers(t)}),o||this.removeTargetHandler(t)}}},{key:\"addTargetHandler\",value:function(e){var t=this.createEmitter(e);this.handlers.set(e,t),this.target.addEventListener(e,t,!0)}},{key:\"removeTargetHandler\",value:function(e){this.handlers.has(e)&&(this.target.removeEventListener(e,this.handlers.get(e),!0),this.handlers.delete(e))}}]),e}(),EventStack=function(){function e(){var t=this;_classCallCheck(this,e),_defineProperty(this,\"targets\",new Map),_defineProperty(this,\"getTarget\",function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=normalizeTarget(e);if(t.targets.has(r))return t.targets.get(r);if(!n)return null;var o=new EventTarget(r);return t.targets.set(r,o),o}),_defineProperty(this,\"removeTarget\",function(e){t.targets.delete(normalizeTarget(e))})}return _createClass(e,[{key:\"sub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a;this.getTarget(o).addHandlers(s,e,normalizeHandlers(t))}}},{key:\"unsub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a,i=this.getTarget(o,!1);i&&(i.removeHandlers(s,e,normalizeHandlers(t)),i.hasHandlers()||this.removeTarget(o))}}}]),e}(),instance=new EventStack,EventStack$1=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,React.PureComponent),_createClass(t,[{key:\"componentDidMount\",value:function(){this.subscribe(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.unsubscribe(e),this.subscribe(this.props)}},{key:\"componentWillUnmount\",value:function(){this.unsubscribe(this.props)}},{key:\"subscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.sub(t,n,{pool:r,target:o})}},{key:\"unsubscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.unsub(t,n,{pool:r,target:o})}},{key:\"render\",value:function(){return null}}]),t}();_defineProperty(EventStack$1,\"defaultProps\",{pool:\"default\",target:\"document\"}),EventStack$1.propTypes={},exports.instance=instance,exports.default=EventStack$1;\n","\n'use strict';\n\nvar stack;\n\nif (process.env.NODE_ENV === 'production') {\n stack = require('./cjs/event-stack.production.js');\n} else {\n stack = require('./cjs/event-stack.development.js');\n}\n\nmodule.exports = stack.default;\nmodule.exports.instance = stack.instance;\n","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqualArrays;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","export default __webpack_public_path__ + \"static/bee-abe79af9a00f0e5d090ee31fa2083694.png\";","export default __webpack_public_path__ + \"static/bluejay-db77d8c52e730eea143987ccc7b56eed.png\";","export default __webpack_public_path__ + \"static/butterfly-08063f4dd8c002acc57db79ebd17f24d.png\";","export default __webpack_public_path__ + \"static/eagle-4c1e6acc5c98bce837a39018564f88f2.png\";","export default __webpack_public_path__ + \"static/heron-acfdd1237acd64fcce5a23afd1b3859c.png\";","export default __webpack_public_path__ + \"static/hummingbird-3822e7d5c46f4ee3bc7ff89098d5fe14.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAACKCAYAAABb56TfAAAATmVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAAAAAAAAAAAEgAAAABAAAASAAAAAFvySO6AAAQP0lEQVR4Ae2dT37TSBbHS0omCSvi/QDhBGROgLehF2RO0O4TtKdh1pj1wLT7BDgnmLAYshxzg+QEHaD3wasO+USqeU+WseNIllQlWa8qPy8SWSpJr7719FzS+yOl8AEBEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABJwgETkgJIUGgQQL93/Xu5ublPp8iCDa+/uuvW6cNnq7RQ//zj6t9raNdPsn1tTofPr533sQJYTiaoIpjOkGADcbGxtWQhP3xhsCB+qS06r99uH18Y73gL4nBiOOhVsHTRTEDpT9eR7pXtwGB4Vik3MDyxoeLQx0EAzr0k/TwE/pdO45VPFAHnfN0nfx//7nYDXdUn2TvkbCPUoHPlNLH8aUaqr93vsrvxFzC1GiMac1sXOYb0yW6CH/698Ot0a0Nwla8/PJnV+vwfyvEmoRh0K1zJiXKcKQAemQl9xhCrIKvYRAP3zy4N+bvrn3Ck8mILqybv2bzTkziWHfVD53T+SqhS4nRCMYkXd5FdhZfUl8cMh4vPn9j7nn9+T4QURQ/rvvX+vvBa1jgmQbp0ZgOdX/V4Xjm8ebhTndVmyrbxBiOF19oyqj1z1nCa6Xex9EWTbcCZ37VwpOLAf06v8rqz8K6CV1we6IvuGKjkXSHFOljdLDbXeib2MUSv9Bz2YPgt7cPtvrzFXKWklnT5tUp3VY9KiMVzTr+VtesIyxzwqbbvPz0bZBnNPjcpJTP03vRpkWp5/j/vdgvYTT4XPen0/96TtvEUcKdcEjHLfxl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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAACeCAYAAACB45fFAAAATmVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAAAAAAAAAAAEgAAAABAAAASAAAAAFvySO6AAAhlElEQVR4Ae1dTXocuZHNTGokekVyP26yTyDOCUgv1V40+wSiTmD22LMWtR7brT5BUyewtLC4dPEEQ57ARXv2JFdm94iV8wL5U8hM/EQWiWK1+uX3kYXfQOQDEAgAAWSW8SECRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACGgRyLUJmY4I/BwQ+P0/fjwAn8f4e46/i7zM3v9x+5n4l/b81//+tHs3K4/Rub5GoTf4e3939/To7Zf59dKY+EwKooBasCL/8M9/7UvWT5+y6dsvfzUV99Kfv1xtrq3n78ss26vLvsmz8ujuxdbJMnkpTq+Osyw/Qpkbptwy/3724+w4+2ZrqR3yP//x0yHe/4fBu+f593/69VPhL/kjwmk2KycoqMJiXuLFn754tjv30qVBgAJKg5KVxjTAsnyfldl2G7zEDtCWCeFUrOcT+EVT6Dx5WX5z99XW+05gIk9xenOSZeXLAXkRUl9tLEUoNGVDeyobd/8XGsxWag3m6O/l5tqTn847bcNipMzyV3/+4umJFURnBIEiEs9oCwFpgGZ0tIWTxJfl7/5w+eOxlTS5s1jPpPMPhJMpODfaTHIe1k6vDp3CSUrOy99lp1c74kz6/PVqt+IjXMqTJ7fJtZe1tZ8mPuEk3BVluRPmkrF9BCig+ogE/MXa/x0guq+6mxxlnklc8gdawkmsEKgRe7E0941f+3h1AI3ghxCdJ1m2E4q/d5xokYWZ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3UFYL3jmrqEjvyI0Y2ciBwLKb5dikzbkg1My7YcYhFJts9EvIOp3b38Ps4XXA+Ijwjhha0bF4yEXw5AwX8P0bQi0ncZie8zI2OafOy7rIyAH8yCHCw22+dBBvVt56UgVCYLWBG03aNQ3p/B87nS7FhHufUp6s4LFBlBtu3FdqaJaYA5rvd3XFaGjWCKAgnLWzTj0ifYrR1kgRF8hNji4DXNL/8jO5FiUHDCOLet0dvGEWJHP3kOriGpRSHPiKrwJEzURTLxp/L5fMDuNMenLqy0jRB8jMdTfsCre/9KEj58mXFRqGE1+i5rYbMKcvwusudl06jWcSYlFXvlmnawPNAvavQZ+A5zPJa+M6oI5LJgnY6cskh71fgQyRxmmRkWRwW6o2BVrcJS3i/BmKngpZchgJzc13N3iquBvNq+l/OhjFqzj7SY8DYmWUiUw9RMva9EBVNqNqg84bxKJ8FVfsaJ8U5Os2mmO9O3AR207ZaHtog2dIMx8SmwtQ/vDnWxi24W2sIPwbfyZB23hDDua13k5mxizkoCG1uThLxEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEfg4I/D+2qo60JeC1DgAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/portfolio-profile-default-50b7acd7a5f672305392bffc55eed651.jpg\";","var __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/**\n * Interprets an encoded string and returns either the string or null/undefined if not available.\n * Ignores array inputs (takes just first element in array)\n * @param input encoded string\n */\nfunction getEncodedValue(input, allowEmptyString) {\n if (input == null) {\n return input;\n }\n // '' or []\n if (input.length === 0 &&\n (!allowEmptyString || (allowEmptyString && input !== ''))) {\n return null;\n }\n var str = input instanceof Array ? input[0] : input;\n if (str == null) {\n return str;\n }\n if (!allowEmptyString && str === '') {\n return null;\n }\n return str;\n}\n/**\n * Interprets an encoded string and return null/undefined or an array with\n * the encoded string contents\n * @param input encoded string\n */\nfunction getEncodedValueArray(input) {\n if (input == null) {\n return input;\n }\n return input instanceof Array ? input : input === '' ? [] : [input];\n}\n/**\n * Encodes a date as a string in YYYY-MM-DD format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDate(date) {\n if (date == null) {\n return date;\n }\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n return year + \"-\" + (month < 10 ? \"0\" + month : month) + \"-\" + (day < 10 ? \"0\" + day : day);\n}\n/**\n * Converts a date in the format 'YYYY-mm-dd...' into a proper date, because\n * new Date() does not do that correctly. The date can be as complete or incomplete\n * as necessary (aka, '2015', '2015-10', '2015-10-01').\n * It will not work for dates that have times included in them.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '2015-10-01'\n * @return {Date} parsed date\n */\nexport function decodeDate(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null)\n return dateString;\n var parts = dateString.split('-');\n // may only be a year so won't even have a month\n if (parts[1] != null) {\n parts[1] -= 1; // Note: months are 0-based\n }\n else {\n // just a year, set the month and day to the first\n parts[1] = 0;\n parts[2] = 1;\n }\n var decoded = new (Date.bind.apply(Date, __spreadArray([void 0], parts)))();\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a date as a string in ISO 8601 (\"2019-05-28T10:58:40Z\") format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDateTime(date) {\n if (date == null) {\n return date;\n }\n return date.toISOString();\n}\n/**\n * Converts a date in the https://en.wikipedia.org/wiki/ISO_8601 format.\n * For allowed inputs see specs:\n * - https://tools.ietf.org/html/rfc2822#page-14\n * - http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '1995-12-17T03:24:00'\n * @return {Date} parsed date\n */\nexport function decodeDateTime(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null)\n return dateString;\n var decoded = new Date(dateString);\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a boolean as a string. true -> \"1\", false -> \"0\".\n *\n * @param {Boolean} bool\n * @return {String} the encoded boolean\n */\nexport function encodeBoolean(bool) {\n if (bool == null) {\n return bool;\n }\n return bool ? '1' : '0';\n}\n/**\n * Decodes a boolean from a string. \"1\" -> true, \"0\" -> false.\n * Everything else maps to undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded boolean string\n * @return {Boolean} the boolean value\n */\nexport function decodeBoolean(input) {\n var boolStr = getEncodedValue(input);\n if (boolStr == null)\n return boolStr;\n if (boolStr === '1') {\n return true;\n }\n else if (boolStr === '0') {\n return false;\n }\n return null;\n}\n/**\n * Encodes a number as a string.\n *\n * @param {Number} num\n * @return {String} the encoded number\n */\nexport function encodeNumber(num) {\n if (num == null) {\n return num;\n }\n return String(num);\n}\n/**\n * Decodes a number from a string. If the number is invalid,\n * it returns undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded number string\n * @return {Number} the number value\n */\nexport function decodeNumber(input) {\n var numStr = getEncodedValue(input);\n if (numStr == null)\n return numStr;\n if (numStr === '')\n return null;\n var result = +numStr;\n return result;\n}\n/**\n * Encodes a string while safely handling null and undefined values.\n *\n * @param {String} str a string to encode\n * @return {String} the encoded string\n */\nexport function encodeString(str) {\n if (str == null) {\n return str;\n }\n return String(str);\n}\n/**\n * Decodes a string while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @return {String} the string value\n */\nexport function decodeString(input) {\n var str = getEncodedValue(input, true);\n if (str == null)\n return str;\n return String(str);\n}\n/**\n * Decodes an enum value while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @param {String[]} enumValues allowed enum values\n * @return {String} the string value from enumValues\n */\nexport function decodeEnum(input, enumValues) {\n var str = decodeString(input);\n if (str == null)\n return str;\n return enumValues.includes(str) ? str : undefined;\n}\n/**\n * Encodes anything as a JSON string.\n *\n * @param {Any} any The thing to be encoded\n * @return {String} The JSON string representation of any\n */\nexport function encodeJson(any) {\n if (any == null) {\n return any;\n }\n return JSON.stringify(any);\n}\n/**\n * Decodes a JSON string into javascript\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @return {Any} The javascript representation\n */\nexport function decodeJson(input) {\n var jsonStr = getEncodedValue(input);\n if (jsonStr == null)\n return jsonStr;\n var result = null;\n try {\n result = JSON.parse(jsonStr);\n }\n catch (e) {\n /* ignore errors, returning undefined */\n }\n return result;\n}\n/**\n * Encodes an array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeArray(array) {\n if (array == null) {\n return array;\n }\n return array;\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeArray(input) {\n var arr = getEncodedValueArray(input);\n if (arr == null)\n return arr;\n return arr;\n}\n/**\n * Encodes a numeric array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeNumericArray(array) {\n if (array == null) {\n return array;\n }\n return array.map(String);\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined and NaN values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeNumericArray(input) {\n var arr = decodeArray(input);\n if (arr == null)\n return arr;\n return arr.map(function (d) { return (d === '' || d == null ? null : +d); });\n}\n/**\n * Encodes an array as a delimited string. For example,\n * ['a', 'b'] -> 'a_b' with entrySeparator='_'\n *\n * @param array The array to be encoded\n * @param entrySeparator The string used to delimit entries\n * @return The array as a string with elements joined by the\n * entry separator\n */\nexport function encodeDelimitedArray(array, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n if (array == null) {\n return array;\n }\n return array.join(entrySeparator);\n}\n/**\n * Decodes a delimited string into javascript array. For example,\n * 'a_b' -> ['a', 'b'] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedArray(input, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var arrayStr = getEncodedValue(input, true);\n if (arrayStr == null)\n return arrayStr;\n if (arrayStr === '')\n return [];\n return arrayStr.split(entrySeparator);\n}\n/**\n * Encodes a numeric array as a delimited string. (alias of encodeDelimitedArray)\n * For example, [1, 2] -> '1_2' with entrySeparator='_'\n *\n * @param {Array} array The array to be encoded\n * @return {String} The JSON string representation of array\n */\nexport var encodeDelimitedNumericArray = encodeDelimitedArray;\n/**\n * Decodes a delimited string into javascript array where all entries are numbers\n * For example, '1_2' -> [1, 2] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} jsonStr The JSON string representation\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedNumericArray(arrayStr, entrySeparator) {\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var decoded = decodeDelimitedArray(arrayStr, entrySeparator);\n if (decoded == null)\n return decoded;\n return decoded.map(function (d) { return (d === '' || d == null ? null : +d); });\n}\n/**\n * Encode simple objects as readable strings. Works only for simple,\n * flat objects where values are numbers, strings.\n *\n * For example { foo: bar, boo: baz } -> \"foo-bar_boo-baz\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport function encodeObject(obj, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n if (obj == null)\n return obj; // null or undefined\n if (!Object.keys(obj).length)\n return ''; // {} case\n return Object.keys(obj)\n .map(function (key) { return \"\" + key + keyValSeparator + obj[key]; })\n .join(entrySeparator);\n}\n/**\n * Decodes a simple object to javascript. Currently works only for simple,\n * flat objects where values are strings.\n *\n * For example \"foo-bar_boo-baz\" -> { foo: bar, boo: baz }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var objStr = getEncodedValue(input, true);\n if (objStr == null)\n return objStr;\n if (objStr === '')\n return {};\n var obj = {};\n var keyValSeparatorRegExp = new RegExp(keyValSeparator + \"(.*)\");\n objStr.split(entrySeparator).forEach(function (entryStr) {\n var _a = entryStr.split(keyValSeparatorRegExp), key = _a[0], value = _a[1];\n obj[key] = value;\n });\n return obj;\n}\n/**\n * Encode simple objects as readable strings. Alias of encodeObject.\n *\n * For example { foo: 123, boo: 521 } -> \"foo-123_boo-521\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport var encodeNumericObject = encodeObject;\n/**\n * Decodes a simple object to javascript where all values are numbers.\n * Currently works only for simple, flat objects.\n *\n * For example \"foo-123_boo-521\" -> { foo: 123, boo: 521 }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeNumericObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n if (entrySeparator === void 0) { entrySeparator = '_'; }\n var decoded = decodeObject(input, keyValSeparator, entrySeparator);\n if (decoded == null)\n return decoded;\n // convert to numbers\n var decodedNumberObj = {};\n for (var _i = 0, _a = Object.keys(decoded); _i < _a.length; _i++) {\n var key = _a[_i];\n decodedNumberObj[key] = decodeNumber(decoded[key]);\n }\n return decodedNumberObj;\n}\n","import * as Serialize from './serialize';\n/**\n * String values\n */\nexport var StringParam = {\n encode: Serialize.encodeString,\n decode: Serialize.decodeString,\n};\n/**\n * String enum\n */\nexport var createEnumParam = function (enumValues) { return ({\n encode: Serialize.encodeString,\n decode: function (input) { return Serialize.decodeEnum(input, enumValues); },\n}); };\n/**\n * Numbers (integers or floats)\n */\nexport var NumberParam = {\n encode: Serialize.encodeNumber,\n decode: Serialize.decodeNumber,\n};\n/**\n * For flat objects where values are strings\n */\nexport var ObjectParam = {\n encode: Serialize.encodeObject,\n decode: Serialize.decodeObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var ArrayParam = {\n encode: Serialize.encodeArray,\n decode: Serialize.decodeArray,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var NumericArrayParam = {\n encode: Serialize.encodeNumericArray,\n decode: Serialize.decodeNumericArray,\n};\n/**\n * For any type of data, encoded via JSON.stringify\n */\nexport var JsonParam = {\n encode: Serialize.encodeJson,\n decode: Serialize.decodeJson,\n};\n/**\n * For simple dates (YYYY-MM-DD)\n */\nexport var DateParam = {\n encode: Serialize.encodeDate,\n decode: Serialize.decodeDate,\n equals: function (valueA, valueB) {\n if (valueA === valueB)\n return true;\n if (valueA == null || valueB == null)\n return valueA === valueB;\n // ignore time of day\n return (valueA.getFullYear() === valueB.getFullYear() &&\n valueA.getMonth() === valueB.getMonth() &&\n valueA.getDate() === valueB.getDate());\n },\n};\n/**\n * For dates in simplified extended ISO format (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ)\n */\nexport var DateTimeParam = {\n encode: Serialize.encodeDateTime,\n decode: Serialize.decodeDateTime,\n equals: function (valueA, valueB) {\n if (valueA === valueB)\n return true;\n if (valueA == null || valueB == null)\n return valueA === valueB;\n return valueA.valueOf() === valueB.valueOf();\n },\n};\n/**\n * For boolean values: 1 = true, 0 = false\n */\nexport var BooleanParam = {\n encode: Serialize.encodeBoolean,\n decode: Serialize.decodeBoolean,\n};\n/**\n * For flat objects where the values are numbers\n */\nexport var NumericObjectParam = {\n encode: Serialize.encodeNumericObject,\n decode: Serialize.decodeNumericObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var DelimitedArrayParam = {\n encode: Serialize.encodeDelimitedArray,\n decode: Serialize.decodeDelimitedArray,\n};\n/**\n * For flat arrays where the values are numbers, filters out undefined values during decode\n */\nexport var DelimitedNumericArrayParam = {\n encode: Serialize.encodeDelimitedNumericArray,\n decode: Serialize.decodeDelimitedNumericArray,\n};\n","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};\nimport { stringify, parse as parseQueryString, parseUrl, } from 'query-string';\n/**\n * An example of a transformSearchString function that undoes encoding of\n * common JSON characters that are technically allowed in URLs.\n */\nvar JSON_SAFE_CHARS = \"{}[],\\\":\"\n .split('')\n .map(function (d) { return [d, encodeURIComponent(d)]; });\nexport function transformSearchStringJsonSafe(searchString) {\n var str = searchString;\n for (var _i = 0, JSON_SAFE_CHARS_1 = JSON_SAFE_CHARS; _i < JSON_SAFE_CHARS_1.length; _i++) {\n var _a = JSON_SAFE_CHARS_1[_i], char = _a[0], code = _a[1];\n str = str.replace(new RegExp('\\\\' + code, 'g'), char);\n }\n return str;\n}\n/**\n * Update a location, wiping out parameters not included in encodedQuery\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateLocation(encodedQuery, location, stringifyOptions) {\n var encodedSearchString = stringify(encodedQuery, stringifyOptions);\n if (stringifyOptions && stringifyOptions.transformSearchString) {\n encodedSearchString = stringifyOptions.transformSearchString(encodedSearchString);\n }\n var search = encodedSearchString.length ? \"?\" + encodedSearchString : '';\n var href = parseUrl(location.href || '').url + search;\n var newLocation = __assign(__assign({}, location), { key: \"\" + Date.now(), // needed for some routers (e.g. react-router)\n href: href,\n search: search, query: encodedQuery });\n return newLocation;\n}\n/**\n * Update a location while retaining existing parameters.\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateInLocation(encodedQueryReplacements, location, stringifyOptions) {\n // explicitly avoid parsing numbers to ensure the\n // return type has the same shape as EncodeQuery\n var currQuery = parseQueryString(location.search, { parseNumbers: false });\n var newQuery = __assign(__assign({}, currQuery), encodedQueryReplacements);\n return updateLocation(newQuery, location, stringifyOptions);\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license at\n * https://github.com/facebook/fbjs/blob/master/LICENSE\n */\n/*eslint-disable no-self-compare */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n }\n else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n\n * @pbeshai modification of shallowEqual to take into consideration a map providing\n * equals functions\n */\nexport default function shallowEqual(objA, objB, equalMap) {\n var _a, _b;\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n var isEqual = (_b = (_a = equalMap === null || equalMap === void 0 ? void 0 : equalMap[keysA[i]]) === null || _a === void 0 ? void 0 : _a.equals) !== null && _b !== void 0 ? _b : is;\n if (!hasOwnProperty.call(objB, keysA[i]) ||\n !isEqual(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n","import * as React from 'react';\nimport { extract } from 'query-string';\nimport shallowEqual from './shallowEqual';\nexport function useUpdateRefIfShallowNew(ref, newValue, isEqual) {\n if (isEqual === void 0) { isEqual = shallowEqual; }\n var hasNew = ((ref.current == null || newValue == null) && ref.current === newValue) ||\n !isEqual(ref.current, newValue);\n React.useEffect(function () {\n if (hasNew) {\n ref.current = newValue;\n }\n }, [ref, newValue, hasNew]);\n}\nexport function getSSRSafeSearchString(location) {\n // handle checking SSR (#13)\n if (typeof location === 'object') {\n // in browser\n if (typeof window !== 'undefined') {\n return location.search;\n }\n else {\n return extract(\"\" + location.pathname + (location.search ? location.search : ''));\n }\n }\n return '';\n}\n","import { updateLocation, updateInLocation, } from 'serialize-query-params';\n/**\n * Creates a new location object containing the specified query changes.\n * If replaceIn or pushIn are used as the updateType, then parameters\n * not specified in queryReplacements are retained. If replace or push\n * are used, only the values in queryReplacements will be available.\n * The default is pushIn.\n */\nexport function createLocationWithChanges(queryReplacements, location, updateType, stringifyOptions) {\n if (updateType === void 0) { updateType = 'pushIn'; }\n switch (updateType) {\n case 'replace':\n case 'push':\n return updateLocation(queryReplacements, location, stringifyOptions);\n case 'replaceIn':\n case 'pushIn':\n default:\n return updateInLocation(queryReplacements, location, stringifyOptions);\n }\n}\n/**\n * Updates the URL to the new location.\n */\nexport function updateUrlQuery(history, location, updateType) {\n if (updateType === void 0) { updateType = 'pushIn'; }\n switch (updateType) {\n case 'pushIn':\n case 'push':\n history.push(location);\n break;\n case 'replaceIn':\n case 'replace':\n default:\n history.replace(location);\n break;\n }\n}\n","import * as React from 'react';\nimport { updateUrlQuery, createLocationWithChanges } from './updateUrlQuery';\nvar providerlessContextValue = {\n location: {},\n getLocation: function () { return ({}); },\n setLocation: function () { },\n};\nexport var LocationContext = React.createContext(providerlessContextValue);\nexport function useLocationContext() {\n var context = React.useContext(LocationContext);\n if (process.env.NODE_ENV !== 'production' &&\n (context === undefined || context === providerlessContextValue)) {\n throw new Error('useQueryParams must be used within a QueryParamProvider');\n }\n return context;\n}\n/**\n * An internal-only context provider which provides down the most\n * recent location object and a callback to update the history.\n */\nexport function LocationProvider(_a) {\n var history = _a.history, location = _a.location, children = _a.children, stringifyOptions = _a.stringifyOptions;\n var locationRef = React.useRef(location);\n React.useEffect(function () {\n locationRef.current = location;\n }, [location]);\n // TODO: we can probably simplify this now that we are reading location from history\n var getLocation = React.useCallback(function () { return locationRef.current; }, [\n locationRef,\n ]);\n var setLocation = React.useCallback(function (queryReplacements, updateType) {\n // A ref is needed here to stop setLocation updating constantly (see #46)\n locationRef.current = createLocationWithChanges(queryReplacements, history == null || history.location == null\n ? locationRef.current\n : history.location, updateType, stringifyOptions);\n if (history) {\n updateUrlQuery(history, locationRef.current, updateType);\n }\n }, [history, stringifyOptions]);\n return (React.createElement(LocationContext.Provider, { value: { location: location, getLocation: getLocation, setLocation: setLocation } }, children));\n}\n","import { parse as parseQueryString } from 'query-string';\nexport var makeMemoizedQueryParser = function (initialSearchString) {\n var cachedSearchString = initialSearchString;\n var cachedParsedQuery = parseQueryString(cachedSearchString || '');\n return function (newSearchString) {\n if (cachedSearchString !== newSearchString) {\n cachedSearchString = newSearchString;\n cachedParsedQuery = parseQueryString(cachedSearchString);\n }\n return cachedParsedQuery;\n };\n};\nexport var sharedMemoizedQueryParser = makeMemoizedQueryParser();\n","import * as React from 'react';\nimport { StringParam } from 'serialize-query-params';\nimport { getSSRSafeSearchString, useUpdateRefIfShallowNew } from './helpers';\nimport { useLocationContext } from './LocationProvider';\nimport { sharedMemoizedQueryParser } from './memoizedQueryParser';\nimport shallowEqual from './shallowEqual';\n/**\n * Helper to get the latest decoded value with smart caching.\n * Abstracted into its own function to allow re-use in a functional setter (#26)\n */\nfunction getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef) {\n var _a;\n // check if we have a new param config\n var hasNewParamConfig = !shallowEqual(paramConfigRef.current, paramConfig);\n var isValueEqual = (_a = paramConfig.equals) !== null && _a !== void 0 ? _a : shallowEqual;\n // read in the parsed query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location) // get the latest location object\n );\n // read in the encoded string value (we have to check cache if available because\n // sometimes the query string changes so we get a new parsedQuery but this value\n // didn't change, so we should avoid generating a new array or whatever value)\n var hasNewEncodedValue = !shallowEqual(encodedValueCacheRef.current, parsedQuery[name]);\n var encodedValue = hasNewEncodedValue\n ? parsedQuery[name]\n : encodedValueCacheRef.current;\n // only decode if we have changes to encoded value or the config.\n // check for undefined to handle initial case\n if (!hasNewEncodedValue &&\n !hasNewParamConfig &&\n decodedValueCacheRef.current !== undefined) {\n return decodedValueCacheRef.current;\n }\n var newDecodedValue = paramConfig.decode(encodedValue);\n var hasNewDecodedValue = ((decodedValueCacheRef.current == null || newDecodedValue == null) &&\n decodedValueCacheRef.current === newDecodedValue) ||\n !isValueEqual(decodedValueCacheRef.current, newDecodedValue);\n // if we have a new decoded value use it, otherwise use cached\n return hasNewDecodedValue\n ? newDecodedValue\n : decodedValueCacheRef.current;\n}\n/**\n * Given a query param name and query parameter configuration ({ encode, decode })\n * return the decoded value and a setter for updating it.\n *\n * The setter takes two arguments (newValue, updateType) where updateType\n * is one of 'replace' | 'replaceIn' | 'push' | 'pushIn', defaulting to\n * 'pushIn'.\n *\n * You may optionally pass in a rawQuery object, otherwise the query is derived\n * from the location available in the context.\n *\n * D = decoded type\n * D2 = return value from decode (typically same as D)\n */\nexport var useQueryParam = function (name, paramConfig) {\n if (paramConfig === void 0) { paramConfig = StringParam; }\n var _a = useLocationContext(), location = _a.location, getLocation = _a.getLocation, setLocation = _a.setLocation;\n // read in the raw query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location));\n // make caches\n var encodedValueCacheRef = React.useRef();\n var paramConfigRef = React.useRef(paramConfig);\n var decodedValueCacheRef = React.useRef();\n var decodedValue = getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n // update cached values in a useEffect\n useUpdateRefIfShallowNew(encodedValueCacheRef, parsedQuery[name]);\n useUpdateRefIfShallowNew(paramConfigRef, paramConfig);\n useUpdateRefIfShallowNew(decodedValueCacheRef, decodedValue, paramConfig.equals);\n // create the setter, memoizing via useCallback\n var setValueDeps = {\n paramConfig: paramConfig,\n name: name,\n setLocation: setLocation,\n getLocation: getLocation,\n };\n var setValueDepsRef = React.useRef(setValueDeps);\n setValueDepsRef.current = setValueDeps;\n var setValue = React.useCallback(function setValueCallback(newValue, updateType) {\n var _a;\n var deps = setValueDepsRef.current;\n var newEncodedValue;\n // allow functional updates #26\n if (typeof newValue === 'function') {\n // get latest decoded value to pass as a fresh arg to the setter fn\n var latestValue = getLatestDecodedValue(deps.getLocation(), deps.name, deps.paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n decodedValueCacheRef.current = latestValue; // keep cache in sync\n newEncodedValue = deps.paramConfig.encode(newValue(latestValue));\n }\n else {\n newEncodedValue = deps.paramConfig.encode(newValue);\n }\n // update the URL\n deps.setLocation((_a = {}, _a[deps.name] = newEncodedValue, _a), updateType);\n }, []);\n return [decodedValue, setValue];\n};\n","import useQueryParams from './useQueryParams';\nexport var QueryParams = function (_a) {\n var config = _a.config, children = _a.children;\n var _b = useQueryParams(config), query = _b[0], setQuery = _b[1];\n return children({ query: query, setQuery: setQuery });\n};\nexport default QueryParams;\n","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};\nimport * as React from 'react';\nimport { LocationProvider } from './LocationProvider';\nimport shallowEqual from './shallowEqual';\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedWindowHistory;\nvar cachedAdaptedWindowHistory;\n/**\n * Adapts standard DOM window history to work with our\n * { replace, push } interface.\n *\n * @param history Standard history provided by DOM\n */\nfunction adaptWindowHistory(history) {\n if (history === cachedWindowHistory && cachedAdaptedWindowHistory != null) {\n return cachedAdaptedWindowHistory;\n }\n var adaptedWindowHistory = {\n replace: function (location) {\n history.replaceState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n push: function (location) {\n history.pushState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n get location() {\n return window.location;\n },\n };\n cachedWindowHistory = history;\n cachedAdaptedWindowHistory = adaptedWindowHistory;\n return adaptedWindowHistory;\n}\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedReachHistory;\nvar cachedAdaptedReachHistory;\n/**\n * Adapts @reach/router history to work with our\n * { replace, push } interface.\n *\n * @param history globalHistory from @reach/router\n */\nfunction adaptReachHistory(history) {\n if (history === cachedReachHistory && cachedAdaptedReachHistory != null) {\n return cachedAdaptedReachHistory;\n }\n var adaptedReachHistory = {\n replace: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: true });\n },\n push: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: false });\n },\n get location() {\n return history.location;\n },\n };\n cachedReachHistory = history;\n cachedAdaptedReachHistory = adaptedReachHistory;\n return adaptedReachHistory;\n}\n/**\n * Helper to produce the context value falling back to\n * window history and location if not provided.\n */\nexport function getLocationProps(_a) {\n var _b = _a === void 0 ? {} : _a, history = _b.history, location = _b.location;\n var hasWindow = typeof window !== 'undefined';\n if (hasWindow) {\n if (!history) {\n history = adaptWindowHistory(window.history);\n }\n if (!location) {\n location = window.location;\n }\n }\n if (!location) {\n throw new Error(\"\\n Could not read the location. Is the router wired up correctly?\\n \");\n }\n return { history: history, location: location };\n}\n/**\n * Context provider for query params to have access to the\n * active routing system, enabling updates to the URL.\n */\nexport function QueryParamProvider(_a) {\n var children = _a.children, ReactRouterRoute = _a.ReactRouterRoute, reachHistory = _a.reachHistory, history = _a.history, location = _a.location, stringifyOptions = _a.stringifyOptions;\n // cache the stringify options object so we users can just do\n // <QueryParamProvider stringifyOptions={{ encode: false }} />\n var stringifyOptionsRef = React.useRef(stringifyOptions);\n var hasNewStringifyOptions = !shallowEqual(stringifyOptionsRef.current, stringifyOptions);\n var stringifyOptionsCached = hasNewStringifyOptions\n ? stringifyOptions\n : stringifyOptionsRef.current;\n React.useEffect(function () {\n stringifyOptionsRef.current = stringifyOptionsCached;\n }, [stringifyOptionsCached]);\n // if we have React Router, use it to get the context value\n if (ReactRouterRoute) {\n return (React.createElement(ReactRouterRoute, null, function (routeProps) {\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps(routeProps)), children));\n }));\n }\n // if we are using reach router, use its history\n if (reachHistory) {\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps({\n history: adaptReachHistory(reachHistory),\n location: location,\n })), children));\n }\n // neither reach nor react-router, so allow manual overrides\n return (React.createElement(LocationProvider, __assign({ stringifyOptions: stringifyOptionsCached }, getLocationProps({ history: history, location: location })), children));\n}\nexport default QueryParamProvider;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tcache['$' + typedArray] = callBind(arr.slice);\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, typedArray) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nvar trySlices = function tryAllSlices(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, name) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tgetter(value);\n\t\t\t\tfound = $slice(name, 1);\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener(\\\"pt0\\\",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n<s.length;n++)(r=e.createElement(\\\"script\\\")).innerHTML=s[n].innerHTML,e.head.appendChild(r);c&&c.parentNode.removeChild(c)}function w(){clearTimeout(d)}o=t.partytown||{},i==t&&(o.forward||[]).map((function(e){p=t,e.split(\\\".\\\").map((function(e,n,i){p=p[i[n]]=n+1<i.length?\\\"push\\\"==i[n+1]?[]:p[i[n]]||{}:function(){(t._ptf=t._ptf||[]).push(i,arguments)}}))})),\\\"complete\\\"==e.readyState?u():(t.addEventListener(\\\"DOMContentLoaded\\\",u),t.addEventListener(\\\"load\\\",u))}(window,document,navigator,top,window.crossOriginIsolated);\";\n\nconst createSnippet = (config, snippetCode) => {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `<script>` from executing on the main thread.\n * 2. Is used as a selector so the Partytown library can find all scripts to execute in a web worker.\n *\n * @public\n */\nconst SCRIPT_TYPE = `text/partytown`;\n\n/**\n * Function that returns the Partytown snippet as a string, which can be\n * used as the innerHTML of the inlined Partytown script in the head.\n *\n * @public\n */\nconst partytownSnippet = (config) => createSnippet(config, PartytownSnippet);\n\nexports.SCRIPT_TYPE = SCRIPT_TYPE;\nexports.partytownSnippet = partytownSnippet;\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import { ErrorFactory, contains, deepExtend, createSubscribe, isBrowser } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport * as modularAPIs from '@firebase/app';\nimport { _addComponent, deleteApp, _DEFAULT_ENTRY_NAME, _addOrOverwriteComponent, registerVersion } from '@firebase/app';\nimport { Logger } from '@firebase/logger';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Global context object for a collection of services using\r\n * a shared authentication state.\r\n *\r\n * marked as internal because it references internal types exported from @firebase/app\r\n * @internal\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(_delegate, firebase) {\r\n this._delegate = _delegate;\r\n this.firebase = firebase;\r\n // add itself to container\r\n _addComponent(_delegate, new Component('app-compat', () => this, \"PUBLIC\" /* ComponentType.PUBLIC */));\r\n this.container = _delegate.container;\r\n }\r\n get automaticDataCollectionEnabled() {\r\n return this._delegate.automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this._delegate.automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n return this._delegate.name;\r\n }\r\n get options() {\r\n return this._delegate.options;\r\n }\r\n delete() {\r\n return new Promise(resolve => {\r\n this._delegate.checkDestroyed();\r\n resolve();\r\n }).then(() => {\r\n this.firebase.INTERNAL.removeApp(this.name);\r\n return deleteApp(this._delegate);\r\n });\r\n }\r\n /**\r\n * Return a service instance associated with this app (creating it\r\n * on demand), identified by the passed instanceIdentifier.\r\n *\r\n * NOTE: Currently storage and functions are the only ones that are leveraging this\r\n * functionality. They invoke it by calling:\r\n *\r\n * ```javascript\r\n * firebase.app().storage('STORAGE BUCKET ID')\r\n * ```\r\n *\r\n * The service name is passed to this already\r\n * @internal\r\n */\r\n _getService(name, instanceIdentifier = _DEFAULT_ENTRY_NAME) {\r\n var _a;\r\n this._delegate.checkDestroyed();\r\n // Initialize instance if InstatiationMode is `EXPLICIT`.\r\n const provider = this._delegate.container.getProvider(name);\r\n if (!provider.isInitialized() &&\r\n ((_a = provider.getComponent()) === null || _a === void 0 ? void 0 : _a.instantiationMode) === \"EXPLICIT\" /* InstantiationMode.EXPLICIT */) {\r\n provider.initialize();\r\n }\r\n // getImmediate will always succeed because _getService is only called for registered components.\r\n return provider.getImmediate({\r\n identifier: instanceIdentifier\r\n });\r\n }\r\n /**\r\n * Remove a service instance from the cache, so we will create a new instance for this service\r\n * when people try to get it again.\r\n *\r\n * NOTE: currently only firestore uses this functionality to support firestore shutdown.\r\n *\r\n * @param name The service name\r\n * @param instanceIdentifier instance identifier in case multiple instances are allowed\r\n * @internal\r\n */\r\n _removeServiceInstance(name, instanceIdentifier = _DEFAULT_ENTRY_NAME) {\r\n this._delegate.container\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .getProvider(name)\r\n .clearInstance(instanceIdentifier);\r\n }\r\n /**\r\n * @param component the component being added to this app's container\r\n * @internal\r\n */\r\n _addComponent(component) {\r\n _addComponent(this._delegate, component);\r\n }\r\n _addOrOverwriteComponent(component) {\r\n _addOrOverwriteComponent(this._delegate, component);\r\n }\r\n toJSON() {\r\n return {\r\n name: this.name,\r\n automaticDataCollectionEnabled: this.automaticDataCollectionEnabled,\r\n options: this.options\r\n };\r\n }\r\n}\r\n// TODO: investigate why the following needs to be commented out\r\n// Prevent dead-code elimination of these methods w/o invalid property\r\n// copying.\r\n// (FirebaseAppImpl.prototype.name && FirebaseAppImpl.prototype.options) ||\r\n// FirebaseAppImpl.prototype.delete ||\r\n// console.log('dc');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* AppError.NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app-compat', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Because auth can't share code with other components, we attach the utility functions\r\n * in an internal namespace to share code.\r\n * This function return a firebase namespace object without\r\n * any utility functions, so it can be shared between the regular firebaseNamespace and\r\n * the lite version.\r\n */\r\nfunction createFirebaseNamespaceCore(firebaseAppImpl) {\r\n const apps = {};\r\n // // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n // const components = new Map<string, Component<any>>();\r\n // A namespace is a plain JavaScript Object.\r\n const namespace = {\r\n // Hack to prevent Babel from modifying the object returned\r\n // as the firebase namespace.\r\n // @ts-ignore\r\n __esModule: true,\r\n initializeApp: initializeAppCompat,\r\n // @ts-ignore\r\n app,\r\n registerVersion: modularAPIs.registerVersion,\r\n setLogLevel: modularAPIs.setLogLevel,\r\n onLog: modularAPIs.onLog,\r\n // @ts-ignore\r\n apps: null,\r\n SDK_VERSION: modularAPIs.SDK_VERSION,\r\n INTERNAL: {\r\n registerComponent: registerComponentCompat,\r\n removeApp,\r\n useAsService,\r\n modularAPIs\r\n }\r\n };\r\n // Inject a circular default export to allow Babel users who were previously\r\n // using:\r\n //\r\n // import firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase').default;\r\n //\r\n // instead of\r\n //\r\n // import * as firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace['default'] = namespace;\r\n // firebase.apps is a read-only getter.\r\n Object.defineProperty(namespace, 'apps', {\r\n get: getApps\r\n });\r\n /**\r\n * Called by App.delete() - but before any services associated with the App\r\n * are deleted.\r\n */\r\n function removeApp(name) {\r\n delete apps[name];\r\n }\r\n /**\r\n * Get the App object for a given name (or DEFAULT).\r\n */\r\n function app(name) {\r\n name = name || modularAPIs._DEFAULT_ENTRY_NAME;\r\n if (!contains(apps, name)) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* AppError.NO_APP */, { appName: name });\r\n }\r\n return apps[name];\r\n }\r\n // @ts-ignore\r\n app['App'] = firebaseAppImpl;\r\n /**\r\n * Create a new App instance (name must be unique).\r\n *\r\n * This function is idempotent. It can be called more than once and return the same instance using the same options and config.\r\n */\r\n function initializeAppCompat(options, rawConfig = {}) {\r\n const app = modularAPIs.initializeApp(options, rawConfig);\r\n if (contains(apps, app.name)) {\r\n return apps[app.name];\r\n }\r\n const appCompat = new firebaseAppImpl(app, namespace);\r\n apps[app.name] = appCompat;\r\n return appCompat;\r\n }\r\n /*\r\n * Return an array of all the non-deleted FirebaseApps.\r\n */\r\n function getApps() {\r\n // Make a copy so caller cannot mutate the apps list.\r\n return Object.keys(apps).map(name => apps[name]);\r\n }\r\n function registerComponentCompat(component) {\r\n const componentName = component.name;\r\n const componentNameWithoutCompat = componentName.replace('-compat', '');\r\n if (modularAPIs._registerComponent(component) &&\r\n component.type === \"PUBLIC\" /* ComponentType.PUBLIC */) {\r\n // create service namespace for public components\r\n // The Service namespace is an accessor function ...\r\n const serviceNamespace = (appArg = app()) => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof appArg[componentNameWithoutCompat] !== 'function') {\r\n // Invalid argument.\r\n // This happens in the following case: firebase.storage('gs:/')\r\n throw ERROR_FACTORY.create(\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */, {\r\n appName: componentName\r\n });\r\n }\r\n // Forward service instance lookup to the FirebaseApp.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return appArg[componentNameWithoutCompat]();\r\n };\r\n // ... and a container for service-level properties.\r\n if (component.serviceProps !== undefined) {\r\n deepExtend(serviceNamespace, component.serviceProps);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentNameWithoutCompat] = serviceNamespace;\r\n // Patch the FirebaseAppImpl prototype\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n firebaseAppImpl.prototype[componentNameWithoutCompat] =\r\n // TODO: The eslint disable can be removed and the 'ignoreRestArgs'\r\n // option added to the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function (...args) {\r\n const serviceFxn = this._getService.bind(this, componentName);\r\n return serviceFxn.apply(this, component.multipleInstances ? args : []);\r\n };\r\n }\r\n return component.type === \"PUBLIC\" /* ComponentType.PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentNameWithoutCompat]\r\n : null;\r\n }\r\n // Map the requested service to a registered service name\r\n // (used to map auth to serverAuth service when needed).\r\n function useAsService(app, name) {\r\n if (name === 'serverAuth') {\r\n return null;\r\n }\r\n const useService = name;\r\n return useService;\r\n }\r\n return namespace;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Return a firebase namespace object.\r\n *\r\n * In production, this will be called exactly once and the result\r\n * assigned to the 'firebase' global. It may be called multiple times\r\n * in unit tests.\r\n */\r\nfunction createFirebaseNamespace() {\r\n const namespace = createFirebaseNamespaceCore(FirebaseAppImpl);\r\n namespace.INTERNAL = Object.assign(Object.assign({}, namespace.INTERNAL), { createFirebaseNamespace,\r\n extendNamespace,\r\n createSubscribe,\r\n ErrorFactory,\r\n deepExtend });\r\n /**\r\n * Patch the top-level firebase namespace with additional properties.\r\n *\r\n * firebase.INTERNAL.extendNamespace()\r\n */\r\n function extendNamespace(props) {\r\n deepExtend(namespace, props);\r\n }\r\n return namespace;\r\n}\r\nconst firebase$1 = createFirebaseNamespace();\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app-compat');\n\nconst name = \"@firebase/app-compat\";\nconst version = \"0.2.13\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n // Register `app` package.\r\n registerVersion(name, version, variant);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Firebase Lite detection\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nif (isBrowser() && self.firebase !== undefined) {\r\n logger.warn(`\n Warning: Firebase is already defined in the global scope. Please make sure\n Firebase library is only loaded once.\n `);\r\n // eslint-disable-next-line\r\n const sdkVersion = self.firebase.SDK_VERSION;\r\n if (sdkVersion && sdkVersion.indexOf('LITE') >= 0) {\r\n logger.warn(`\n Warning: You are trying to load Firebase while using Firebase Performance standalone script.\n You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.\n `);\r\n }\r\n}\r\nconst firebase = firebase$1;\r\nregisterCoreComponents();\n\nexport { firebase as default };\n//# sourceMappingURL=index.esm2017.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, getDefaultAppConfig, deepEqual, FirebaseError, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* ComponentType.VERSION */;\r\n}\n\nconst name$o = \"@firebase/app\";\nconst version$1 = \"0.9.13\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$n = \"@firebase/app-compat\";\n\nconst name$m = \"@firebase/analytics-compat\";\n\nconst name$l = \"@firebase/analytics\";\n\nconst name$k = \"@firebase/app-check-compat\";\n\nconst name$j = \"@firebase/app-check\";\n\nconst name$i = \"@firebase/auth\";\n\nconst name$h = \"@firebase/auth-compat\";\n\nconst name$g = \"@firebase/database\";\n\nconst name$f = \"@firebase/database-compat\";\n\nconst name$e = \"@firebase/functions\";\n\nconst name$d = \"@firebase/functions-compat\";\n\nconst name$c = \"@firebase/installations\";\n\nconst name$b = \"@firebase/installations-compat\";\n\nconst name$a = \"@firebase/messaging\";\n\nconst name$9 = \"@firebase/messaging-compat\";\n\nconst name$8 = \"@firebase/performance\";\n\nconst name$7 = \"@firebase/performance-compat\";\n\nconst name$6 = \"@firebase/remote-config\";\n\nconst name$5 = \"@firebase/remote-config-compat\";\n\nconst name$4 = \"@firebase/storage\";\n\nconst name$3 = \"@firebase/storage-compat\";\n\nconst name$2 = \"@firebase/firestore\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"9.23.0\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$o]: 'fire-core',\r\n [name$n]: 'fire-core-compat',\r\n [name$l]: 'fire-analytics',\r\n [name$m]: 'fire-analytics-compat',\r\n [name$j]: 'fire-app-check',\r\n [name$k]: 'fire-app-check-compat',\r\n [name$i]: 'fire-auth',\r\n [name$h]: 'fire-auth-compat',\r\n [name$g]: 'fire-rtdb',\r\n [name$f]: 'fire-rtdb-compat',\r\n [name$e]: 'fire-fn',\r\n [name$d]: 'fire-fn-compat',\r\n [name$c]: 'fire-iid',\r\n [name$b]: 'fire-iid-compat',\r\n [name$a]: 'fire-fcm',\r\n [name$9]: 'fire-fcm-compat',\r\n [name$8]: 'fire-perf',\r\n [name$7]: 'fire-perf-compat',\r\n [name$6]: 'fire-rc',\r\n [name$5]: 'fire-rc-compat',\r\n [name$4]: 'fire-gcs',\r\n [name$3]: 'fire-gcs-compat',\r\n [name$2]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n const heartbeatController = app.container\r\n .getProvider('heartbeat')\r\n .getImmediate({ optional: true });\r\n if (heartbeatController) {\r\n void heartbeatController.triggerHeartbeat();\r\n }\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* AppError.NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call initializeApp() first',\r\n [\"bad-app-name\" /* AppError.BAD_APP_NAME */]: \"Illegal App name: '{$appName}\",\r\n [\"duplicate-app\" /* AppError.DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* AppError.APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"no-options\" /* AppError.NO_OPTIONS */]: 'Need to provide options, when not being deployed to hosting via source.',\r\n [\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\r\n [\"idb-open\" /* AppError.IDB_OPEN */]: 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-get\" /* AppError.IDB_GET */]: 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-set\" /* AppError.IDB_WRITE */]: 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\r\n [\"idb-delete\" /* AppError.IDB_DELETE */]: 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* ComponentType.PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* AppError.APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(_options, rawConfig = {}) {\r\n let options = _options;\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* AppError.BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n options || (options = getDefaultAppConfig());\r\n if (!options) {\r\n throw ERROR_FACTORY.create(\"no-options\" /* AppError.NO_OPTIONS */);\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* AppError.DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\r\n return initializeApp();\r\n }\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* AppError.NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n _apps.delete(name);\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* ComponentType.VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-heartbeat-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-heartbeat-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DB_NAME, DB_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME);\r\n }\r\n }\r\n }).catch(e => {\r\n throw ERROR_FACTORY.create(\"idb-open\" /* AppError.IDB_OPEN */, {\r\n originalErrorMessage: e.message\r\n });\r\n });\r\n }\r\n return dbPromise;\r\n}\r\nasync function readHeartbeatsFromIndexedDB(app) {\r\n try {\r\n const db = await getDbPromise();\r\n const result = await db\r\n .transaction(STORE_NAME)\r\n .objectStore(STORE_NAME)\r\n .get(computeKey(app));\r\n return result;\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError) {\r\n logger.warn(e.message);\r\n }\r\n else {\r\n const idbGetError = ERROR_FACTORY.create(\"idb-get\" /* AppError.IDB_GET */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n });\r\n logger.warn(idbGetError.message);\r\n }\r\n }\r\n}\r\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(STORE_NAME);\r\n await objectStore.put(heartbeatObject, computeKey(app));\r\n await tx.done;\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError) {\r\n logger.warn(e.message);\r\n }\r\n else {\r\n const idbGetError = ERROR_FACTORY.create(\"idb-set\" /* AppError.IDB_WRITE */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n });\r\n logger.warn(idbGetError.message);\r\n }\r\n }\r\n}\r\nfunction computeKey(app) {\r\n return `${app.name}!${app.options.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst MAX_HEADER_BYTES = 1024;\r\n// 30 days\r\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\r\nclass HeartbeatServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n /**\r\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\r\n * the header string.\r\n * Stores one record per date. This will be consolidated into the standard\r\n * format of one record per user agent string before being sent as a header.\r\n * Populated from indexedDB when the controller is instantiated and should\r\n * be kept in sync with indexedDB.\r\n * Leave public for easier testing.\r\n */\r\n this._heartbeatsCache = null;\r\n const app = this.container.getProvider('app').getImmediate();\r\n this._storage = new HeartbeatStorageImpl(app);\r\n this._heartbeatsCachePromise = this._storage.read().then(result => {\r\n this._heartbeatsCache = result;\r\n return result;\r\n });\r\n }\r\n /**\r\n * Called to report a heartbeat. The function will generate\r\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\r\n * to IndexedDB.\r\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\r\n * already logged, subsequent calls to this function in the same day will be ignored.\r\n */\r\n async triggerHeartbeat() {\r\n const platformLogger = this.container\r\n .getProvider('platform-logger')\r\n .getImmediate();\r\n // This is the \"Firebase user agent\" string from the platform logger\r\n // service, not the browser user agent.\r\n const agent = platformLogger.getPlatformInfoString();\r\n const date = getUTCDateString();\r\n if (this._heartbeatsCache === null) {\r\n this._heartbeatsCache = await this._heartbeatsCachePromise;\r\n }\r\n // Do not store a heartbeat if one is already stored for this day\r\n // or if a header has already been sent today.\r\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\r\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\r\n return;\r\n }\r\n else {\r\n // There is no entry for this date. Create one.\r\n this._heartbeatsCache.heartbeats.push({ date, agent });\r\n }\r\n // Remove entries older than 30 days.\r\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\r\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\r\n const now = Date.now();\r\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\r\n });\r\n return this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n /**\r\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\r\n * It also clears all heartbeats from memory as well as in IndexedDB.\r\n *\r\n * NOTE: Consuming product SDKs should not send the header if this method\r\n * returns an empty string.\r\n */\r\n async getHeartbeatsHeader() {\r\n if (this._heartbeatsCache === null) {\r\n await this._heartbeatsCachePromise;\r\n }\r\n // If it's still null or the array is empty, there is no data to send.\r\n if (this._heartbeatsCache === null ||\r\n this._heartbeatsCache.heartbeats.length === 0) {\r\n return '';\r\n }\r\n const date = getUTCDateString();\r\n // Extract as many heartbeats from the cache as will fit under the size limit.\r\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\r\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\r\n // Store last sent date to prevent another being logged/sent for the same day.\r\n this._heartbeatsCache.lastSentHeartbeatDate = date;\r\n if (unsentEntries.length > 0) {\r\n // Store any unsent entries if they exist.\r\n this._heartbeatsCache.heartbeats = unsentEntries;\r\n // This seems more likely than emptying the array (below) to lead to some odd state\r\n // since the cache isn't empty and this will be called again on the next request,\r\n // and is probably safest if we await it.\r\n await this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n else {\r\n this._heartbeatsCache.heartbeats = [];\r\n // Do not wait for this, to reduce latency.\r\n void this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n return headerString;\r\n }\r\n}\r\nfunction getUTCDateString() {\r\n const today = new Date();\r\n // Returns date format 'YYYY-MM-DD'\r\n return today.toISOString().substring(0, 10);\r\n}\r\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\r\n // Heartbeats grouped by user agent in the standard format to be sent in\r\n // the header.\r\n const heartbeatsToSend = [];\r\n // Single date format heartbeats that are not sent.\r\n let unsentEntries = heartbeatsCache.slice();\r\n for (const singleDateHeartbeat of heartbeatsCache) {\r\n // Look for an existing entry with the same user agent.\r\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\r\n if (!heartbeatEntry) {\r\n // If no entry for this user agent exists, create one.\r\n heartbeatsToSend.push({\r\n agent: singleDateHeartbeat.agent,\r\n dates: [singleDateHeartbeat.date]\r\n });\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n // If the header would exceed max size, remove the added heartbeat\r\n // entry and stop adding to the header.\r\n heartbeatsToSend.pop();\r\n break;\r\n }\r\n }\r\n else {\r\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\r\n // If the header would exceed max size, remove the added date\r\n // and stop adding to the header.\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n heartbeatEntry.dates.pop();\r\n break;\r\n }\r\n }\r\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\r\n // quota and the loop breaks early.)\r\n unsentEntries = unsentEntries.slice(1);\r\n }\r\n return {\r\n heartbeatsToSend,\r\n unsentEntries\r\n };\r\n}\r\nclass HeartbeatStorageImpl {\r\n constructor(app) {\r\n this.app = app;\r\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\r\n }\r\n async runIndexedDBEnvironmentCheck() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n else {\r\n return validateIndexedDBOpenable()\r\n .then(() => true)\r\n .catch(() => false);\r\n }\r\n }\r\n /**\r\n * Read all heartbeats.\r\n */\r\n async read() {\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return { heartbeats: [] };\r\n }\r\n else {\r\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\r\n return idbHeartbeatObject || { heartbeats: [] };\r\n }\r\n }\r\n // overwrite the storage with the provided heartbeats\r\n async overwrite(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: heartbeatsObject.heartbeats\r\n });\r\n }\r\n }\r\n // add heartbeats\r\n async add(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: [\r\n ...existingHeartbeatsObject.heartbeats,\r\n ...heartbeatsObject.heartbeats\r\n ]\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\r\n * in a platform logging header JSON object, stringified, and converted\r\n * to base 64.\r\n */\r\nfunction countBytes(heartbeatsCache) {\r\n // base64 has a restricted set of characters, all of which should be 1 byte.\r\n return base64urlEncodeWithoutPadding(\r\n // heartbeatsCache wrapper properties\r\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$o, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$o, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _registerComponent, _removeServiceInstance, deleteApp, getApp, getApps, initializeApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* InstantiationMode.LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* InstantiationMode.EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* InstantiationMode.EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nconst instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nconst levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nconst defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nconst ConsoleMethod = {\r\n [LogLevel.DEBUG]: 'log',\r\n [LogLevel.VERBOSE]: 'log',\r\n [LogLevel.INFO]: 'info',\r\n [LogLevel.WARN]: 'warn',\r\n [LogLevel.ERROR]: 'error'\r\n};\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nconst defaultLogHandler = (instance, logType, ...args) => {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar esm = {};\n\n/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nvar k,goog=goog||{},l=commonjsGlobal||self;function aa(a){var b=typeof a;b=\"object\"!=b?b:a?Array.isArray(a)?\"array\":b:\"null\";return \"array\"==b||\"object\"==b&&\"number\"==typeof a.length}function p(a){var b=typeof a;return \"object\"==b&&null!=a||\"function\"==b}function ba(a){return Object.prototype.hasOwnProperty.call(a,ca)&&a[ca]||(a[ca]=++da)}var ca=\"closure_uid_\"+(1E9*Math.random()>>>0),da=0;function ea(a,b,c){return a.call.apply(a.bind,arguments)}\nfunction fa(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function q(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?q=ea:q=fa;return q.apply(null,arguments)}\nfunction ha(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}function r(a,b){function c(){}c.prototype=b.prototype;a.$=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.ac=function(d,e,f){for(var h=Array(arguments.length-2),n=2;n<arguments.length;n++)h[n-2]=arguments[n];return b.prototype[e].apply(d,h)};}function v(){this.s=this.s;this.o=this.o;}var ia=0;v.prototype.s=!1;v.prototype.sa=function(){if(!this.s&&(this.s=!0,this.N(),0!=ia)){ba(this);}};v.prototype.N=function(){if(this.o)for(;this.o.length;)this.o.shift()();};const ka=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return \"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(let c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return -1};function ma(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return []}\nfunction na(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(aa(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let h=0;h<f;h++)a[e+h]=d[h];}else a.push(d);}}function w(a,b){this.type=a;this.g=this.target=b;this.defaultPrevented=!1;}w.prototype.h=function(){this.defaultPrevented=!0;};var oa=function(){if(!l.addEventListener||!Object.defineProperty)return !1;var a=!1,b=Object.defineProperty({},\"passive\",{get:function(){a=!0;}});try{l.addEventListener(\"test\",()=>{},b),l.removeEventListener(\"test\",()=>{},b);}catch(c){}return a}();function x(a){return /^[\\s\\xa0]*$/.test(a)}function pa(){var a=l.navigator;return a&&(a=a.userAgent)?a:\"\"}function y(a){return -1!=pa().indexOf(a)}function qa(a){qa[\" \"](a);return a}qa[\" \"]=function(){};function ra(a,b){var c=sa;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)}var ta=y(\"Opera\"),z=y(\"Trident\")||y(\"MSIE\"),ua=y(\"Edge\"),va=ua||z,wa=y(\"Gecko\")&&!(-1!=pa().toLowerCase().indexOf(\"webkit\")&&!y(\"Edge\"))&&!(y(\"Trident\")||y(\"MSIE\"))&&!y(\"Edge\"),xa=-1!=pa().toLowerCase().indexOf(\"webkit\")&&!y(\"Edge\");function ya(){var a=l.document;return a?a.documentMode:void 0}var za;\na:{var Aa=\"\",Ba=function(){var a=pa();if(wa)return /rv:([^\\);]+)(\\)|;)/.exec(a);if(ua)return /Edge\\/([\\d\\.]+)/.exec(a);if(z)return /\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(xa)return /WebKit\\/(\\S+)/.exec(a);if(ta)return /(?:Version)[ \\/]?(\\S+)/.exec(a)}();Ba&&(Aa=Ba?Ba[1]:\"\");if(z){var Ca=ya();if(null!=Ca&&Ca>parseFloat(Aa)){za=String(Ca);break a}}za=Aa;}var Da;if(l.document&&z){var Ea=ya();Da=Ea?Ea:parseInt(za,10)||void 0;}else Da=void 0;var Fa=Da;function A(a,b){w.call(this,a?a.type:\"\");this.relatedTarget=this.g=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key=\"\";this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType=\"\";this.i=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.g=b;if(b=a.relatedTarget){if(wa){a:{try{qa(b.nodeName);var e=!0;break a}catch(f){}e=\n!1;}e||(b=null);}}else \"mouseover\"==c?b=a.fromElement:\"mouseout\"==c&&(b=a.toElement);this.relatedTarget=b;d?(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.key=a.key||\"\";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=\na.shiftKey;this.metaKey=a.metaKey;this.pointerId=a.pointerId||0;this.pointerType=\"string\"===typeof a.pointerType?a.pointerType:Ga[a.pointerType]||\"\";this.state=a.state;this.i=a;a.defaultPrevented&&A.$.h.call(this);}}r(A,w);var Ga={2:\"touch\",3:\"pen\",4:\"mouse\"};A.prototype.h=function(){A.$.h.call(this);var a=this.i;a.preventDefault?a.preventDefault():a.returnValue=!1;};var Ha=\"closure_listenable_\"+(1E6*Math.random()|0);var Ia=0;function Ja(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.la=e;this.key=++Ia;this.fa=this.ia=!1;}function Ka(a){a.fa=!0;a.listener=null;a.proxy=null;a.src=null;a.la=null;}function Na(a,b,c){for(const d in a)b.call(c,a[d],d,a);}function Oa(a,b){for(const c in a)b.call(void 0,a[c],c,a);}function Pa(a){const b={};for(const c in a)b[c]=a[c];return b}const Qa=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");function Ra(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<Qa.length;f++)c=Qa[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c]);}}function Sa(a){this.src=a;this.g={};this.h=0;}Sa.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.g[f];a||(a=this.g[f]=[],this.h++);var h=Ta(a,b,d,e);-1<h?(b=a[h],c||(b.ia=!1)):(b=new Ja(b,this.src,f,!!d,e),b.ia=c,a.push(b));return b};function Ua(a,b){var c=b.type;if(c in a.g){var d=a.g[c],e=ka(d,b),f;(f=0<=e)&&Array.prototype.splice.call(d,e,1);f&&(Ka(b),0==a.g[c].length&&(delete a.g[c],a.h--));}}\nfunction Ta(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.fa&&f.listener==b&&f.capture==!!c&&f.la==d)return e}return -1}var Va=\"closure_lm_\"+(1E6*Math.random()|0),Wa={};function Ya(a,b,c,d,e){if(d&&d.once)return Za(a,b,c,d,e);if(Array.isArray(b)){for(var f=0;f<b.length;f++)Ya(a,b[f],c,d,e);return null}c=$a(c);return a&&a[Ha]?a.O(b,c,p(d)?!!d.capture:!!d,e):ab(a,b,c,!1,d,e)}\nfunction ab(a,b,c,d,e,f){if(!b)throw Error(\"Invalid event type\");var h=p(e)?!!e.capture:!!e,n=bb(a);n||(a[Va]=n=new Sa(a));c=n.add(b,c,d,h,f);if(c.proxy)return c;d=cb();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)oa||(e=h),void 0===e&&(e=!1),a.addEventListener(b.toString(),d,e);else if(a.attachEvent)a.attachEvent(db(b.toString()),d);else if(a.addListener&&a.removeListener)a.addListener(d);else throw Error(\"addEventListener and attachEvent are unavailable.\");return c}\nfunction cb(){function a(c){return b.call(a.src,a.listener,c)}const b=eb;return a}function Za(a,b,c,d,e){if(Array.isArray(b)){for(var f=0;f<b.length;f++)Za(a,b[f],c,d,e);return null}c=$a(c);return a&&a[Ha]?a.P(b,c,p(d)?!!d.capture:!!d,e):ab(a,b,c,!0,d,e)}\nfunction fb(a,b,c,d,e){if(Array.isArray(b))for(var f=0;f<b.length;f++)fb(a,b[f],c,d,e);else (d=p(d)?!!d.capture:!!d,c=$a(c),a&&a[Ha])?(a=a.i,b=String(b).toString(),b in a.g&&(f=a.g[b],c=Ta(f,c,d,e),-1<c&&(Ka(f[c]),Array.prototype.splice.call(f,c,1),0==f.length&&(delete a.g[b],a.h--)))):a&&(a=bb(a))&&(b=a.g[b.toString()],a=-1,b&&(a=Ta(b,c,d,e)),(c=-1<a?b[a]:null)&&gb(c));}\nfunction gb(a){if(\"number\"!==typeof a&&a&&!a.fa){var b=a.src;if(b&&b[Ha])Ua(b.i,a);else {var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent?b.detachEvent(db(c),d):b.addListener&&b.removeListener&&b.removeListener(d);(c=bb(b))?(Ua(c,a),0==c.h&&(c.src=null,b[Va]=null)):Ka(a);}}}function db(a){return a in Wa?Wa[a]:Wa[a]=\"on\"+a}function eb(a,b){if(a.fa)a=!0;else {b=new A(b,this);var c=a.listener,d=a.la||a.src;a.ia&&gb(a);a=c.call(d,b);}return a}\nfunction bb(a){a=a[Va];return a instanceof Sa?a:null}var hb=\"__closure_events_fn_\"+(1E9*Math.random()>>>0);function $a(a){if(\"function\"===typeof a)return a;a[hb]||(a[hb]=function(b){return a.handleEvent(b)});return a[hb]}function B(){v.call(this);this.i=new Sa(this);this.S=this;this.J=null;}r(B,v);B.prototype[Ha]=!0;B.prototype.removeEventListener=function(a,b,c,d){fb(this,a,b,c,d);};\nfunction C(a,b){var c,d=a.J;if(d)for(c=[];d;d=d.J)c.push(d);a=a.S;d=b.type||b;if(\"string\"===typeof b)b=new w(b,a);else if(b instanceof w)b.target=b.target||a;else {var e=b;b=new w(d,a);Ra(b,e);}e=!0;if(c)for(var f=c.length-1;0<=f;f--){var h=b.g=c[f];e=ib(h,d,!0,b)&&e;}h=b.g=a;e=ib(h,d,!0,b)&&e;e=ib(h,d,!1,b)&&e;if(c)for(f=0;f<c.length;f++)h=b.g=c[f],e=ib(h,d,!1,b)&&e;}\nB.prototype.N=function(){B.$.N.call(this);if(this.i){var a=this.i,c;for(c in a.g){for(var d=a.g[c],e=0;e<d.length;e++)Ka(d[e]);delete a.g[c];a.h--;}}this.J=null;};B.prototype.O=function(a,b,c,d){return this.i.add(String(a),b,!1,c,d)};B.prototype.P=function(a,b,c,d){return this.i.add(String(a),b,!0,c,d)};\nfunction ib(a,b,c,d){b=a.i.g[String(b)];if(!b)return !0;b=b.concat();for(var e=!0,f=0;f<b.length;++f){var h=b[f];if(h&&!h.fa&&h.capture==c){var n=h.listener,t=h.la||h.src;h.ia&&Ua(a.i,h);e=!1!==n.call(t,d)&&e;}}return e&&!d.defaultPrevented}var jb=l.JSON.stringify;class kb{constructor(a,b){this.i=a;this.j=b;this.h=0;this.g=null;}get(){let a;0<this.h?(this.h--,a=this.g,this.g=a.next,a.next=null):a=this.i();return a}}function lb(){var a=mb;let b=null;a.g&&(b=a.g,a.g=a.g.next,a.g||(a.h=null),b.next=null);return b}class nb{constructor(){this.h=this.g=null;}add(a,b){const c=ob.get();c.set(a,b);this.h?this.h.next=c:this.g=c;this.h=c;}}var ob=new kb(()=>new pb,a=>a.reset());class pb{constructor(){this.next=this.g=this.h=null;}set(a,b){this.h=a;this.g=b;this.next=null;}reset(){this.next=this.g=this.h=null;}}function qb(a){var b=1;a=a.split(\":\");const c=[];for(;0<b&&a.length;)c.push(a.shift()),b--;a.length&&c.push(a.join(\":\"));return c}function rb(a){l.setTimeout(()=>{throw a;},0);}let sb,tb=!1,mb=new nb,vb=()=>{const a=l.Promise.resolve(void 0);sb=()=>{a.then(ub);};};var ub=()=>{for(var a;a=lb();){try{a.h.call(a.g);}catch(c){rb(c);}var b=ob;b.j(a);100>b.h&&(b.h++,a.next=b.g,b.g=a);}tb=!1;};function wb(a,b){B.call(this);this.h=a||1;this.g=b||l;this.j=q(this.qb,this);this.l=Date.now();}r(wb,B);k=wb.prototype;k.ga=!1;k.T=null;k.qb=function(){if(this.ga){var a=Date.now()-this.l;0<a&&a<.8*this.h?this.T=this.g.setTimeout(this.j,this.h-a):(this.T&&(this.g.clearTimeout(this.T),this.T=null),C(this,\"tick\"),this.ga&&(xb(this),this.start()));}};k.start=function(){this.ga=!0;this.T||(this.T=this.g.setTimeout(this.j,this.h),this.l=Date.now());};\nfunction xb(a){a.ga=!1;a.T&&(a.g.clearTimeout(a.T),a.T=null);}k.N=function(){wb.$.N.call(this);xb(this);delete this.g;};function yb(a,b,c){if(\"function\"===typeof a)c&&(a=q(a,c));else if(a&&\"function\"==typeof a.handleEvent)a=q(a.handleEvent,a);else throw Error(\"Invalid listener argument\");return 2147483647<Number(b)?-1:l.setTimeout(a,b||0)}function zb(a){a.g=yb(()=>{a.g=null;a.i&&(a.i=!1,zb(a));},a.j);const b=a.h;a.h=null;a.m.apply(null,b);}class Ab extends v{constructor(a,b){super();this.m=a;this.j=b;this.h=null;this.i=!1;this.g=null;}l(a){this.h=arguments;this.g?this.i=!0:zb(this);}N(){super.N();this.g&&(l.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null);}}function Bb(a){v.call(this);this.h=a;this.g={};}r(Bb,v);var Cb=[];function Db(a,b,c,d){Array.isArray(c)||(c&&(Cb[0]=c.toString()),c=Cb);for(var e=0;e<c.length;e++){var f=Ya(b,c[e],d||a.handleEvent,!1,a.h||a);if(!f)break;a.g[f.key]=f;}}function Fb(a){Na(a.g,function(b,c){this.g.hasOwnProperty(c)&&gb(b);},a);a.g={};}Bb.prototype.N=function(){Bb.$.N.call(this);Fb(this);};Bb.prototype.handleEvent=function(){throw Error(\"EventHandler.handleEvent not implemented\");};function Gb(){this.g=!0;}Gb.prototype.Ea=function(){this.g=!1;};function Hb(a,b,c,d,e,f){a.info(function(){if(a.g)if(f){var h=\"\";for(var n=f.split(\"&\"),t=0;t<n.length;t++){var m=n[t].split(\"=\");if(1<m.length){var u=m[0];m=m[1];var L=u.split(\"_\");h=2<=L.length&&\"type\"==L[1]?h+(u+\"=\"+m+\"&\"):h+(u+\"=redacted&\");}}}else h=null;else h=f;return \"XMLHTTP REQ (\"+d+\") [attempt \"+e+\"]: \"+b+\"\\n\"+c+\"\\n\"+h});}\nfunction Ib(a,b,c,d,e,f,h){a.info(function(){return \"XMLHTTP RESP (\"+d+\") [ attempt \"+e+\"]: \"+b+\"\\n\"+c+\"\\n\"+f+\" \"+h});}function D(a,b,c,d){a.info(function(){return \"XMLHTTP TEXT (\"+b+\"): \"+Jb(a,c)+(d?\" \"+d:\"\")});}function Kb(a,b){a.info(function(){return \"TIMEOUT: \"+b});}Gb.prototype.info=function(){};\nfunction Jb(a,b){if(!a.g)return b;if(!b)return null;try{var c=JSON.parse(b);if(c)for(a=0;a<c.length;a++)if(Array.isArray(c[a])){var d=c[a];if(!(2>d.length)){var e=d[1];if(Array.isArray(e)&&!(1>e.length)){var f=e[0];if(\"noop\"!=f&&\"stop\"!=f&&\"close\"!=f)for(var h=1;h<e.length;h++)e[h]=\"\";}}}return jb(c)}catch(n){return b}}var E={},Lb=null;function Mb(){return Lb=Lb||new B}E.Ta=\"serverreachability\";function Nb(a){w.call(this,E.Ta,a);}r(Nb,w);function Ob(a){const b=Mb();C(b,new Nb(b));}E.STAT_EVENT=\"statevent\";function Pb(a,b){w.call(this,E.STAT_EVENT,a);this.stat=b;}r(Pb,w);function F(a){const b=Mb();C(b,new Pb(b,a));}E.Ua=\"timingevent\";function Qb(a,b){w.call(this,E.Ua,a);this.size=b;}r(Qb,w);\nfunction Rb(a,b){if(\"function\"!==typeof a)throw Error(\"Fn must not be null and must be a function\");return l.setTimeout(function(){a();},b)}var Sb={NO_ERROR:0,rb:1,Eb:2,Db:3,yb:4,Cb:5,Fb:6,Qa:7,TIMEOUT:8,Ib:9};var Tb={wb:\"complete\",Sb:\"success\",Ra:\"error\",Qa:\"abort\",Kb:\"ready\",Lb:\"readystatechange\",TIMEOUT:\"timeout\",Gb:\"incrementaldata\",Jb:\"progress\",zb:\"downloadprogress\",$b:\"uploadprogress\"};function Ub(){}Ub.prototype.h=null;function Vb(a){return a.h||(a.h=a.i())}function Wb(){}var Xb={OPEN:\"a\",vb:\"b\",Ra:\"c\",Hb:\"d\"};function Yb(){w.call(this,\"d\");}r(Yb,w);function Zb(){w.call(this,\"c\");}r(Zb,w);var $b;function ac(){}r(ac,Ub);ac.prototype.g=function(){return new XMLHttpRequest};ac.prototype.i=function(){return {}};$b=new ac;function bc(a,b,c,d){this.l=a;this.j=b;this.m=c;this.W=d||1;this.U=new Bb(this);this.P=cc;a=va?125:void 0;this.V=new wb(a);this.I=null;this.i=!1;this.s=this.A=this.v=this.L=this.G=this.Y=this.B=null;this.F=[];this.g=null;this.C=0;this.o=this.u=null;this.ca=-1;this.J=!1;this.O=0;this.M=null;this.ba=this.K=this.aa=this.S=!1;this.h=new dc;}function dc(){this.i=null;this.g=\"\";this.h=!1;}var cc=45E3,ec={},fc={};k=bc.prototype;k.setTimeout=function(a){this.P=a;};\nfunction gc(a,b,c){a.L=1;a.v=hc(G(b));a.s=c;a.S=!0;ic(a,null);}function ic(a,b){a.G=Date.now();jc(a);a.A=G(a.v);var c=a.A,d=a.W;Array.isArray(d)||(d=[String(d)]);kc(c.i,\"t\",d);a.C=0;c=a.l.J;a.h=new dc;a.g=lc(a.l,c?b:null,!a.s);0<a.O&&(a.M=new Ab(q(a.Pa,a,a.g),a.O));Db(a.U,a.g,\"readystatechange\",a.nb);b=a.I?Pa(a.I):{};a.s?(a.u||(a.u=\"POST\"),b[\"Content-Type\"]=\"application/x-www-form-urlencoded\",a.g.ha(a.A,a.u,a.s,b)):(a.u=\"GET\",a.g.ha(a.A,a.u,null,b));Ob();Hb(a.j,a.u,a.A,a.m,a.W,a.s);}\nk.nb=function(a){a=a.target;const b=this.M;b&&3==H(a)?b.l():this.Pa(a);};\nk.Pa=function(a){try{if(a==this.g)a:{const u=H(this.g);var b=this.g.Ia();const L=this.g.da();if(!(3>u)&&(3!=u||va||this.g&&(this.h.h||this.g.ja()||mc(this.g)))){this.J||4!=u||7==b||(8==b||0>=L?Ob(3):Ob(2));nc(this);var c=this.g.da();this.ca=c;b:if(oc(this)){var d=mc(this.g);a=\"\";var e=d.length,f=4==H(this.g);if(!this.h.i){if(\"undefined\"===typeof TextDecoder){I(this);pc(this);var h=\"\";break b}this.h.i=new l.TextDecoder;}for(b=0;b<e;b++)this.h.h=!0,a+=this.h.i.decode(d[b],{stream:f&&b==e-1});d.splice(0,\ne);this.h.g+=a;this.C=0;h=this.h.g;}else h=this.g.ja();this.i=200==c;Ib(this.j,this.u,this.A,this.m,this.W,u,c);if(this.i){if(this.aa&&!this.K){b:{if(this.g){var n,t=this.g;if((n=t.g?t.g.getResponseHeader(\"X-HTTP-Initial-Response\"):null)&&!x(n)){var m=n;break b}}m=null;}if(c=m)D(this.j,this.m,c,\"Initial handshake response via X-HTTP-Initial-Response\"),this.K=!0,qc(this,c);else {this.i=!1;this.o=3;F(12);I(this);pc(this);break a}}this.S?(rc(this,u,h),va&&this.i&&3==u&&(Db(this.U,this.V,\"tick\",this.mb),\nthis.V.start())):(D(this.j,this.m,h,null),qc(this,h));4==u&&I(this);this.i&&!this.J&&(4==u?sc(this.l,this):(this.i=!1,jc(this)));}else tc(this.g),400==c&&0<h.indexOf(\"Unknown SID\")?(this.o=3,F(12)):(this.o=0,F(13)),I(this),pc(this);}}}catch(u){}finally{}};function oc(a){return a.g?\"GET\"==a.u&&2!=a.L&&a.l.Ha:!1}\nfunction rc(a,b,c){let d=!0,e;for(;!a.J&&a.C<c.length;)if(e=uc(a,c),e==fc){4==b&&(a.o=4,F(14),d=!1);D(a.j,a.m,null,\"[Incomplete Response]\");break}else if(e==ec){a.o=4;F(15);D(a.j,a.m,c,\"[Invalid Chunk]\");d=!1;break}else D(a.j,a.m,e,null),qc(a,e);oc(a)&&e!=fc&&e!=ec&&(a.h.g=\"\",a.C=0);4!=b||0!=c.length||a.h.h||(a.o=1,F(16),d=!1);a.i=a.i&&d;d?0<c.length&&!a.ba&&(a.ba=!0,b=a.l,b.g==a&&b.ca&&!b.M&&(b.l.info(\"Great, no buffering proxy detected. Bytes received: \"+c.length),vc(b),b.M=!0,F(11))):(D(a.j,a.m,\nc,\"[Invalid Chunked Response]\"),I(a),pc(a));}k.mb=function(){if(this.g){var a=H(this.g),b=this.g.ja();this.C<b.length&&(nc(this),rc(this,a,b),this.i&&4!=a&&jc(this));}};function uc(a,b){var c=a.C,d=b.indexOf(\"\\n\",c);if(-1==d)return fc;c=Number(b.substring(c,d));if(isNaN(c))return ec;d+=1;if(d+c>b.length)return fc;b=b.slice(d,d+c);a.C=d+c;return b}k.cancel=function(){this.J=!0;I(this);};function jc(a){a.Y=Date.now()+a.P;wc(a,a.P);}\nfunction wc(a,b){if(null!=a.B)throw Error(\"WatchDog timer not null\");a.B=Rb(q(a.lb,a),b);}function nc(a){a.B&&(l.clearTimeout(a.B),a.B=null);}k.lb=function(){this.B=null;const a=Date.now();0<=a-this.Y?(Kb(this.j,this.A),2!=this.L&&(Ob(),F(17)),I(this),this.o=2,pc(this)):wc(this,this.Y-a);};function pc(a){0==a.l.H||a.J||sc(a.l,a);}function I(a){nc(a);var b=a.M;b&&\"function\"==typeof b.sa&&b.sa();a.M=null;xb(a.V);Fb(a.U);a.g&&(b=a.g,a.g=null,b.abort(),b.sa());}\nfunction qc(a,b){try{var c=a.l;if(0!=c.H&&(c.g==a||xc(c.i,a)))if(!a.K&&xc(c.i,a)&&3==c.H){try{var d=c.Ja.g.parse(b);}catch(m){d=null;}if(Array.isArray(d)&&3==d.length){var e=d;if(0==e[0])a:{if(!c.u){if(c.g)if(c.g.G+3E3<a.G)yc(c),zc(c);else break a;Ac(c);F(18);}}else c.Fa=e[1],0<c.Fa-c.V&&37500>e[2]&&c.G&&0==c.A&&!c.v&&(c.v=Rb(q(c.ib,c),6E3));if(1>=Bc(c.i)&&c.oa){try{c.oa();}catch(m){}c.oa=void 0;}}else J(c,11);}else if((a.K||c.g==a)&&yc(c),!x(b))for(e=c.Ja.g.parse(b),b=0;b<e.length;b++){let m=e[b];c.V=\nm[0];m=m[1];if(2==c.H)if(\"c\"==m[0]){c.K=m[1];c.pa=m[2];const u=m[3];null!=u&&(c.ra=u,c.l.info(\"VER=\"+c.ra));const L=m[4];null!=L&&(c.Ga=L,c.l.info(\"SVER=\"+c.Ga));const La=m[5];null!=La&&\"number\"===typeof La&&0<La&&(d=1.5*La,c.L=d,c.l.info(\"backChannelRequestTimeoutMs_=\"+d));d=c;const la=a.g;if(la){const Ma=la.g?la.g.getResponseHeader(\"X-Client-Wire-Protocol\"):null;if(Ma){var f=d.i;f.g||-1==Ma.indexOf(\"spdy\")&&-1==Ma.indexOf(\"quic\")&&-1==Ma.indexOf(\"h2\")||(f.j=f.l,f.g=new Set,f.h&&(Cc(f,f.h),f.h=null));}if(d.F){const Eb=\nla.g?la.g.getResponseHeader(\"X-HTTP-Session-Id\"):null;Eb&&(d.Da=Eb,K(d.I,d.F,Eb));}}c.H=3;c.h&&c.h.Ba();c.ca&&(c.S=Date.now()-a.G,c.l.info(\"Handshake RTT: \"+c.S+\"ms\"));d=c;var h=a;d.wa=Dc(d,d.J?d.pa:null,d.Y);if(h.K){Ec(d.i,h);var n=h,t=d.L;t&&n.setTimeout(t);n.B&&(nc(n),jc(n));d.g=h;}else Fc(d);0<c.j.length&&Gc(c);}else \"stop\"!=m[0]&&\"close\"!=m[0]||J(c,7);else 3==c.H&&(\"stop\"==m[0]||\"close\"==m[0]?\"stop\"==m[0]?J(c,7):Hc(c):\"noop\"!=m[0]&&c.h&&c.h.Aa(m),c.A=0);}Ob(4);}catch(m){}}function Ic(a){if(a.Z&&\"function\"==typeof a.Z)return a.Z();if(\"undefined\"!==typeof Map&&a instanceof Map||\"undefined\"!==typeof Set&&a instanceof Set)return Array.from(a.values());if(\"string\"===typeof a)return a.split(\"\");if(aa(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}b=[];c=0;for(d in a)b[c++]=a[d];return b}\nfunction Jc(a){if(a.ta&&\"function\"==typeof a.ta)return a.ta();if(!a.Z||\"function\"!=typeof a.Z){if(\"undefined\"!==typeof Map&&a instanceof Map)return Array.from(a.keys());if(!(\"undefined\"!==typeof Set&&a instanceof Set)){if(aa(a)||\"string\"===typeof a){var b=[];a=a.length;for(var c=0;c<a;c++)b.push(c);return b}b=[];c=0;for(const d in a)b[c++]=d;return b}}}\nfunction Kc(a,b){if(a.forEach&&\"function\"==typeof a.forEach)a.forEach(b,void 0);else if(aa(a)||\"string\"===typeof a)Array.prototype.forEach.call(a,b,void 0);else for(var c=Jc(a),d=Ic(a),e=d.length,f=0;f<e;f++)b.call(void 0,d[f],c&&c[f],a);}var Lc=RegExp(\"^(?:([^:/?#.]+):)?(?://(?:([^\\\\\\\\/?#]*)@)?([^\\\\\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\\\\\/?#]|$))?([^?#]+)?(?:\\\\?([^#]*))?(?:#([\\\\s\\\\S]*))?$\");function Mc(a,b){if(a){a=a.split(\"&\");for(var c=0;c<a.length;c++){var d=a[c].indexOf(\"=\"),e=null;if(0<=d){var f=a[c].substring(0,d);e=a[c].substring(d+1);}else f=a[c];b(f,e?decodeURIComponent(e.replace(/\\+/g,\" \")):\"\");}}}function M(a){this.g=this.s=this.j=\"\";this.m=null;this.o=this.l=\"\";this.h=!1;if(a instanceof M){this.h=a.h;Nc(this,a.j);this.s=a.s;this.g=a.g;Oc(this,a.m);this.l=a.l;var b=a.i;var c=new Pc;c.i=b.i;b.g&&(c.g=new Map(b.g),c.h=b.h);Qc(this,c);this.o=a.o;}else a&&(b=String(a).match(Lc))?(this.h=!1,Nc(this,b[1]||\"\",!0),this.s=Rc(b[2]||\"\"),this.g=Rc(b[3]||\"\",!0),Oc(this,b[4]),this.l=Rc(b[5]||\"\",!0),Qc(this,b[6]||\"\",!0),this.o=Rc(b[7]||\"\")):(this.h=!1,this.i=new Pc(null,this.h));}\nM.prototype.toString=function(){var a=[],b=this.j;b&&a.push(Sc(b,Tc,!0),\":\");var c=this.g;if(c||\"file\"==b)a.push(\"//\"),(b=this.s)&&a.push(Sc(b,Tc,!0),\"@\"),a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),c=this.m,null!=c&&a.push(\":\",String(c));if(c=this.l)this.g&&\"/\"!=c.charAt(0)&&a.push(\"/\"),a.push(Sc(c,\"/\"==c.charAt(0)?Uc:Vc,!0));(c=this.i.toString())&&a.push(\"?\",c);(c=this.o)&&a.push(\"#\",Sc(c,Wc));return a.join(\"\")};function G(a){return new M(a)}\nfunction Nc(a,b,c){a.j=c?Rc(b,!0):b;a.j&&(a.j=a.j.replace(/:$/,\"\"));}function Oc(a,b){if(b){b=Number(b);if(isNaN(b)||0>b)throw Error(\"Bad port number \"+b);a.m=b;}else a.m=null;}function Qc(a,b,c){b instanceof Pc?(a.i=b,Xc(a.i,a.h)):(c||(b=Sc(b,Yc)),a.i=new Pc(b,a.h));}function K(a,b,c){a.i.set(b,c);}function hc(a){K(a,\"zx\",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36));return a}\nfunction Rc(a,b){return a?b?decodeURI(a.replace(/%25/g,\"%2525\")):decodeURIComponent(a):\"\"}function Sc(a,b,c){return \"string\"===typeof a?(a=encodeURI(a).replace(b,Zc),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),a):null}function Zc(a){a=a.charCodeAt(0);return \"%\"+(a>>4&15).toString(16)+(a&15).toString(16)}var Tc=/[#\\/\\?@]/g,Vc=/[#\\?:]/g,Uc=/[#\\?]/g,Yc=/[#\\?@]/g,Wc=/#/g;function Pc(a,b){this.h=this.g=null;this.i=a||null;this.j=!!b;}\nfunction N(a){a.g||(a.g=new Map,a.h=0,a.i&&Mc(a.i,function(b,c){a.add(decodeURIComponent(b.replace(/\\+/g,\" \")),c);}));}k=Pc.prototype;k.add=function(a,b){N(this);this.i=null;a=O(this,a);var c=this.g.get(a);c||this.g.set(a,c=[]);c.push(b);this.h+=1;return this};function $c(a,b){N(a);b=O(a,b);a.g.has(b)&&(a.i=null,a.h-=a.g.get(b).length,a.g.delete(b));}function ad(a,b){N(a);b=O(a,b);return a.g.has(b)}\nk.forEach=function(a,b){N(this);this.g.forEach(function(c,d){c.forEach(function(e){a.call(b,e,d,this);},this);},this);};k.ta=function(){N(this);const a=Array.from(this.g.values()),b=Array.from(this.g.keys()),c=[];for(let d=0;d<b.length;d++){const e=a[d];for(let f=0;f<e.length;f++)c.push(b[d]);}return c};k.Z=function(a){N(this);let b=[];if(\"string\"===typeof a)ad(this,a)&&(b=b.concat(this.g.get(O(this,a))));else {a=Array.from(this.g.values());for(let c=0;c<a.length;c++)b=b.concat(a[c]);}return b};\nk.set=function(a,b){N(this);this.i=null;a=O(this,a);ad(this,a)&&(this.h-=this.g.get(a).length);this.g.set(a,[b]);this.h+=1;return this};k.get=function(a,b){if(!a)return b;a=this.Z(a);return 0<a.length?String(a[0]):b};function kc(a,b,c){$c(a,b);0<c.length&&(a.i=null,a.g.set(O(a,b),ma(c)),a.h+=c.length);}\nk.toString=function(){if(this.i)return this.i;if(!this.g)return \"\";const a=[],b=Array.from(this.g.keys());for(var c=0;c<b.length;c++){var d=b[c];const f=encodeURIComponent(String(d)),h=this.Z(d);for(d=0;d<h.length;d++){var e=f;\"\"!==h[d]&&(e+=\"=\"+encodeURIComponent(String(h[d])));a.push(e);}}return this.i=a.join(\"&\")};function O(a,b){b=String(b);a.j&&(b=b.toLowerCase());return b}\nfunction Xc(a,b){b&&!a.j&&(N(a),a.i=null,a.g.forEach(function(c,d){var e=d.toLowerCase();d!=e&&($c(this,d),kc(this,e,c));},a));a.j=b;}var bd=class{constructor(a,b){this.g=a;this.map=b;}};function cd(a){this.l=a||dd;l.PerformanceNavigationTiming?(a=l.performance.getEntriesByType(\"navigation\"),a=0<a.length&&(\"hq\"==a[0].nextHopProtocol||\"h2\"==a[0].nextHopProtocol)):a=!!(l.g&&l.g.Ka&&l.g.Ka()&&l.g.Ka().ec);this.j=a?this.l:1;this.g=null;1<this.j&&(this.g=new Set);this.h=null;this.i=[];}var dd=10;function ed(a){return a.h?!0:a.g?a.g.size>=a.j:!1}function Bc(a){return a.h?1:a.g?a.g.size:0}function xc(a,b){return a.h?a.h==b:a.g?a.g.has(b):!1}function Cc(a,b){a.g?a.g.add(b):a.h=b;}\nfunction Ec(a,b){a.h&&a.h==b?a.h=null:a.g&&a.g.has(b)&&a.g.delete(b);}cd.prototype.cancel=function(){this.i=fd(this);if(this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const a of this.g.values())a.cancel();this.g.clear();}};function fd(a){if(null!=a.h)return a.i.concat(a.h.F);if(null!=a.g&&0!==a.g.size){let b=a.i;for(const c of a.g.values())b=b.concat(c.F);return b}return ma(a.i)}var gd=class{stringify(a){return l.JSON.stringify(a,void 0)}parse(a){return l.JSON.parse(a,void 0)}};function hd(){this.g=new gd;}function id(a,b,c){const d=c||\"\";try{Kc(a,function(e,f){let h=e;p(e)&&(h=jb(e));b.push(d+f+\"=\"+encodeURIComponent(h));});}catch(e){throw b.push(d+\"type=\"+encodeURIComponent(\"_badmap\")),e;}}function jd(a,b){const c=new Gb;if(l.Image){const d=new Image;d.onload=ha(kd,c,d,\"TestLoadImage: loaded\",!0,b);d.onerror=ha(kd,c,d,\"TestLoadImage: error\",!1,b);d.onabort=ha(kd,c,d,\"TestLoadImage: abort\",!1,b);d.ontimeout=ha(kd,c,d,\"TestLoadImage: timeout\",!1,b);l.setTimeout(function(){if(d.ontimeout)d.ontimeout();},1E4);d.src=a;}else b(!1);}function kd(a,b,c,d,e){try{b.onload=null,b.onerror=null,b.onabort=null,b.ontimeout=null,e(d);}catch(f){}}function ld(a){this.l=a.fc||null;this.j=a.ob||!1;}r(ld,Ub);ld.prototype.g=function(){return new md(this.l,this.j)};ld.prototype.i=function(a){return function(){return a}}({});function md(a,b){B.call(this);this.F=a;this.u=b;this.m=void 0;this.readyState=nd;this.status=0;this.responseType=this.responseText=this.response=this.statusText=\"\";this.onreadystatechange=null;this.v=new Headers;this.h=null;this.C=\"GET\";this.B=\"\";this.g=!1;this.A=this.j=this.l=null;}r(md,B);var nd=0;k=md.prototype;\nk.open=function(a,b){if(this.readyState!=nd)throw this.abort(),Error(\"Error reopening a connection\");this.C=a;this.B=b;this.readyState=1;od(this);};k.send=function(a){if(1!=this.readyState)throw this.abort(),Error(\"need to call open() first. \");this.g=!0;const b={headers:this.v,method:this.C,credentials:this.m,cache:void 0};a&&(b.body=a);(this.F||l).fetch(new Request(this.B,b)).then(this.$a.bind(this),this.ka.bind(this));};\nk.abort=function(){this.response=this.responseText=\"\";this.v=new Headers;this.status=0;this.j&&this.j.cancel(\"Request was aborted.\").catch(()=>{});1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,pd(this));this.readyState=nd;};\nk.$a=function(a){if(this.g&&(this.l=a,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=a.headers,this.readyState=2,od(this)),this.g&&(this.readyState=3,od(this),this.g)))if(\"arraybuffer\"===this.responseType)a.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(\"undefined\"!==typeof l.ReadableStream&&\"body\"in a){this.j=a.body.getReader();if(this.u){if(this.responseType)throw Error('responseType must be empty for \"streamBinaryChunks\" mode responses.');this.response=\n[];}else this.response=this.responseText=\"\",this.A=new TextDecoder;qd(this);}else a.text().then(this.Za.bind(this),this.ka.bind(this));};function qd(a){a.j.read().then(a.Xa.bind(a)).catch(a.ka.bind(a));}k.Xa=function(a){if(this.g){if(this.u&&a.value)this.response.push(a.value);else if(!this.u){var b=a.value?a.value:new Uint8Array(0);if(b=this.A.decode(b,{stream:!a.done}))this.response=this.responseText+=b;}a.done?pd(this):od(this);3==this.readyState&&qd(this);}};\nk.Za=function(a){this.g&&(this.response=this.responseText=a,pd(this));};k.Ya=function(a){this.g&&(this.response=a,pd(this));};k.ka=function(){this.g&&pd(this);};function pd(a){a.readyState=4;a.l=null;a.j=null;a.A=null;od(a);}k.setRequestHeader=function(a,b){this.v.append(a,b);};k.getResponseHeader=function(a){return this.h?this.h.get(a.toLowerCase())||\"\":\"\"};\nk.getAllResponseHeaders=function(){if(!this.h)return \"\";const a=[],b=this.h.entries();for(var c=b.next();!c.done;)c=c.value,a.push(c[0]+\": \"+c[1]),c=b.next();return a.join(\"\\r\\n\")};function od(a){a.onreadystatechange&&a.onreadystatechange.call(a);}Object.defineProperty(md.prototype,\"withCredentials\",{get:function(){return \"include\"===this.m},set:function(a){this.m=a?\"include\":\"same-origin\";}});var rd=l.JSON.parse;function P(a){B.call(this);this.headers=new Map;this.u=a||null;this.h=!1;this.C=this.g=null;this.I=\"\";this.m=0;this.j=\"\";this.l=this.G=this.v=this.F=!1;this.B=0;this.A=null;this.K=sd;this.L=this.M=!1;}r(P,B);var sd=\"\",td=/^https?$/i,ud=[\"POST\",\"PUT\"];k=P.prototype;k.Oa=function(a){this.M=a;};\nk.ha=function(a,b,c,d){if(this.g)throw Error(\"[goog.net.XhrIo] Object is active with another request=\"+this.I+\"; newUri=\"+a);b=b?b.toUpperCase():\"GET\";this.I=a;this.j=\"\";this.m=0;this.F=!1;this.h=!0;this.g=this.u?this.u.g():$b.g();this.C=this.u?Vb(this.u):Vb($b);this.g.onreadystatechange=q(this.La,this);try{this.G=!0,this.g.open(b,String(a),!0),this.G=!1;}catch(f){vd(this,f);return}a=c||\"\";c=new Map(this.headers);if(d)if(Object.getPrototypeOf(d)===Object.prototype)for(var e in d)c.set(e,d[e]);else if(\"function\"===\ntypeof d.keys&&\"function\"===typeof d.get)for(const f of d.keys())c.set(f,d.get(f));else throw Error(\"Unknown input type for opt_headers: \"+String(d));d=Array.from(c.keys()).find(f=>\"content-type\"==f.toLowerCase());e=l.FormData&&a instanceof l.FormData;!(0<=ka(ud,b))||d||e||c.set(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\");for(const [f,h]of c)this.g.setRequestHeader(f,h);this.K&&(this.g.responseType=this.K);\"withCredentials\"in this.g&&this.g.withCredentials!==this.M&&(this.g.withCredentials=\nthis.M);try{wd(this),0<this.B&&((this.L=xd(this.g))?(this.g.timeout=this.B,this.g.ontimeout=q(this.ua,this)):this.A=yb(this.ua,this.B,this)),this.v=!0,this.g.send(a),this.v=!1;}catch(f){vd(this,f);}};function xd(a){return z&&\"number\"===typeof a.timeout&&void 0!==a.ontimeout}k.ua=function(){\"undefined\"!=typeof goog&&this.g&&(this.j=\"Timed out after \"+this.B+\"ms, aborting\",this.m=8,C(this,\"timeout\"),this.abort(8));};function vd(a,b){a.h=!1;a.g&&(a.l=!0,a.g.abort(),a.l=!1);a.j=b;a.m=5;yd(a);zd(a);}\nfunction yd(a){a.F||(a.F=!0,C(a,\"complete\"),C(a,\"error\"));}k.abort=function(a){this.g&&this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1,this.m=a||7,C(this,\"complete\"),C(this,\"abort\"),zd(this));};k.N=function(){this.g&&(this.h&&(this.h=!1,this.l=!0,this.g.abort(),this.l=!1),zd(this,!0));P.$.N.call(this);};k.La=function(){this.s||(this.G||this.v||this.l?Ad(this):this.kb());};k.kb=function(){Ad(this);};\nfunction Ad(a){if(a.h&&\"undefined\"!=typeof goog&&(!a.C[1]||4!=H(a)||2!=a.da()))if(a.v&&4==H(a))yb(a.La,0,a);else if(C(a,\"readystatechange\"),4==H(a)){a.h=!1;try{const h=a.da();a:switch(h){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var b=!0;break a;default:b=!1;}var c;if(!(c=b)){var d;if(d=0===h){var e=String(a.I).match(Lc)[1]||null;!e&&l.self&&l.self.location&&(e=l.self.location.protocol.slice(0,-1));d=!td.test(e?e.toLowerCase():\"\");}c=d;}if(c)C(a,\"complete\"),C(a,\"success\");else {a.m=\n6;try{var f=2<H(a)?a.g.statusText:\"\";}catch(n){f=\"\";}a.j=f+\" [\"+a.da()+\"]\";yd(a);}}finally{zd(a);}}}function zd(a,b){if(a.g){wd(a);const c=a.g,d=a.C[0]?()=>{}:null;a.g=null;a.C=null;b||C(a,\"ready\");try{c.onreadystatechange=d;}catch(e){}}}function wd(a){a.g&&a.L&&(a.g.ontimeout=null);a.A&&(l.clearTimeout(a.A),a.A=null);}k.isActive=function(){return !!this.g};function H(a){return a.g?a.g.readyState:0}k.da=function(){try{return 2<H(this)?this.g.status:-1}catch(a){return -1}};\nk.ja=function(){try{return this.g?this.g.responseText:\"\"}catch(a){return \"\"}};k.Wa=function(a){if(this.g){var b=this.g.responseText;a&&0==b.indexOf(a)&&(b=b.substring(a.length));return rd(b)}};function mc(a){try{if(!a.g)return null;if(\"response\"in a.g)return a.g.response;switch(a.K){case sd:case \"text\":return a.g.responseText;case \"arraybuffer\":if(\"mozResponseArrayBuffer\"in a.g)return a.g.mozResponseArrayBuffer}return null}catch(b){return null}}\nfunction tc(a){const b={};a=(a.g&&2<=H(a)?a.g.getAllResponseHeaders()||\"\":\"\").split(\"\\r\\n\");for(let d=0;d<a.length;d++){if(x(a[d]))continue;var c=qb(a[d]);const e=c[0];c=c[1];if(\"string\"!==typeof c)continue;c=c.trim();const f=b[e]||[];b[e]=f;f.push(c);}Oa(b,function(d){return d.join(\", \")});}k.Ia=function(){return this.m};k.Sa=function(){return \"string\"===typeof this.j?this.j:String(this.j)};function Bd(a){let b=\"\";Na(a,function(c,d){b+=d;b+=\":\";b+=c;b+=\"\\r\\n\";});return b}function Cd(a,b,c){a:{for(d in c){var d=!1;break a}d=!0;}d||(c=Bd(c),\"string\"===typeof a?(null!=c&&encodeURIComponent(String(c))):K(a,b,c));}function Dd(a,b,c){return c&&c.internalChannelParams?c.internalChannelParams[a]||b:b}\nfunction Ed(a){this.Ga=0;this.j=[];this.l=new Gb;this.pa=this.wa=this.I=this.Y=this.g=this.Da=this.F=this.na=this.o=this.U=this.s=null;this.fb=this.W=0;this.cb=Dd(\"failFast\",!1,a);this.G=this.v=this.u=this.m=this.h=null;this.aa=!0;this.Fa=this.V=-1;this.ba=this.A=this.C=0;this.ab=Dd(\"baseRetryDelayMs\",5E3,a);this.hb=Dd(\"retryDelaySeedMs\",1E4,a);this.eb=Dd(\"forwardChannelMaxRetries\",2,a);this.xa=Dd(\"forwardChannelRequestTimeoutMs\",2E4,a);this.va=a&&a.xmlHttpFactory||void 0;this.Ha=a&&a.dc||!1;this.L=\nvoid 0;this.J=a&&a.supportsCrossDomainXhr||!1;this.K=\"\";this.i=new cd(a&&a.concurrentRequestLimit);this.Ja=new hd;this.P=a&&a.fastHandshake||!1;this.O=a&&a.encodeInitMessageHeaders||!1;this.P&&this.O&&(this.O=!1);this.bb=a&&a.bc||!1;a&&a.Ea&&this.l.Ea();a&&a.forceLongPolling&&(this.aa=!1);this.ca=!this.P&&this.aa&&a&&a.detectBufferingProxy||!1;this.qa=void 0;a&&a.longPollingTimeout&&0<a.longPollingTimeout&&(this.qa=a.longPollingTimeout);this.oa=void 0;this.S=0;this.M=!1;this.ma=this.B=null;}k=Ed.prototype;\nk.ra=8;k.H=1;function Hc(a){Fd(a);if(3==a.H){var b=a.W++,c=G(a.I);K(c,\"SID\",a.K);K(c,\"RID\",b);K(c,\"TYPE\",\"terminate\");Gd(a,c);b=new bc(a,a.l,b);b.L=2;b.v=hc(G(c));c=!1;if(l.navigator&&l.navigator.sendBeacon)try{c=l.navigator.sendBeacon(b.v.toString(),\"\");}catch(d){}!c&&l.Image&&((new Image).src=b.v,c=!0);c||(b.g=lc(b.l,null),b.g.ha(b.v));b.G=Date.now();jc(b);}Hd(a);}function zc(a){a.g&&(vc(a),a.g.cancel(),a.g=null);}\nfunction Fd(a){zc(a);a.u&&(l.clearTimeout(a.u),a.u=null);yc(a);a.i.cancel();a.m&&(\"number\"===typeof a.m&&l.clearTimeout(a.m),a.m=null);}function Gc(a){if(!ed(a.i)&&!a.m){a.m=!0;var b=a.Na;sb||vb();tb||(sb(),tb=!0);mb.add(b,a);a.C=0;}}function Id(a,b){if(Bc(a.i)>=a.i.j-(a.m?1:0))return !1;if(a.m)return a.j=b.F.concat(a.j),!0;if(1==a.H||2==a.H||a.C>=(a.cb?0:a.eb))return !1;a.m=Rb(q(a.Na,a,b),Jd(a,a.C));a.C++;return !0}\nk.Na=function(a){if(this.m)if(this.m=null,1==this.H){if(!a){this.W=Math.floor(1E5*Math.random());a=this.W++;const e=new bc(this,this.l,a);let f=this.s;this.U&&(f?(f=Pa(f),Ra(f,this.U)):f=this.U);null!==this.o||this.O||(e.I=f,f=null);if(this.P)a:{var b=0;for(var c=0;c<this.j.length;c++){b:{var d=this.j[c];if(\"__data__\"in d.map&&(d=d.map.__data__,\"string\"===typeof d)){d=d.length;break b}d=void 0;}if(void 0===d)break;b+=d;if(4096<b){b=c;break a}if(4096===b||c===this.j.length-1){b=c+1;break a}}b=1E3;}else b=\n1E3;b=Kd(this,e,b);c=G(this.I);K(c,\"RID\",a);K(c,\"CVER\",22);this.F&&K(c,\"X-HTTP-Session-Id\",this.F);Gd(this,c);f&&(this.O?b=\"headers=\"+encodeURIComponent(String(Bd(f)))+\"&\"+b:this.o&&Cd(c,this.o,f));Cc(this.i,e);this.bb&&K(c,\"TYPE\",\"init\");this.P?(K(c,\"$req\",b),K(c,\"SID\",\"null\"),e.aa=!0,gc(e,c,null)):gc(e,c,b);this.H=2;}}else 3==this.H&&(a?Ld(this,a):0==this.j.length||ed(this.i)||Ld(this));};\nfunction Ld(a,b){var c;b?c=b.m:c=a.W++;const d=G(a.I);K(d,\"SID\",a.K);K(d,\"RID\",c);K(d,\"AID\",a.V);Gd(a,d);a.o&&a.s&&Cd(d,a.o,a.s);c=new bc(a,a.l,c,a.C+1);null===a.o&&(c.I=a.s);b&&(a.j=b.F.concat(a.j));b=Kd(a,c,1E3);c.setTimeout(Math.round(.5*a.xa)+Math.round(.5*a.xa*Math.random()));Cc(a.i,c);gc(c,d,b);}function Gd(a,b){a.na&&Na(a.na,function(c,d){K(b,d,c);});a.h&&Kc({},function(c,d){K(b,d,c);});}\nfunction Kd(a,b,c){c=Math.min(a.j.length,c);var d=a.h?q(a.h.Va,a.h,a):null;a:{var e=a.j;let f=-1;for(;;){const h=[\"count=\"+c];-1==f?0<c?(f=e[0].g,h.push(\"ofs=\"+f)):f=0:h.push(\"ofs=\"+f);let n=!0;for(let t=0;t<c;t++){let m=e[t].g;const u=e[t].map;m-=f;if(0>m)f=Math.max(0,e[t].g-100),n=!1;else try{id(u,h,\"req\"+m+\"_\");}catch(L){d&&d(u);}}if(n){d=h.join(\"&\");break a}}}a=a.j.splice(0,c);b.F=a;return d}function Fc(a){if(!a.g&&!a.u){a.ba=1;var b=a.Ma;sb||vb();tb||(sb(),tb=!0);mb.add(b,a);a.A=0;}}\nfunction Ac(a){if(a.g||a.u||3<=a.A)return !1;a.ba++;a.u=Rb(q(a.Ma,a),Jd(a,a.A));a.A++;return !0}k.Ma=function(){this.u=null;Md(this);if(this.ca&&!(this.M||null==this.g||0>=this.S)){var a=2*this.S;this.l.info(\"BP detection timer enabled: \"+a);this.B=Rb(q(this.jb,this),a);}};k.jb=function(){this.B&&(this.B=null,this.l.info(\"BP detection timeout reached.\"),this.l.info(\"Buffering proxy detected and switch to long-polling!\"),this.G=!1,this.M=!0,F(10),zc(this),Md(this));};\nfunction vc(a){null!=a.B&&(l.clearTimeout(a.B),a.B=null);}function Md(a){a.g=new bc(a,a.l,\"rpc\",a.ba);null===a.o&&(a.g.I=a.s);a.g.O=0;var b=G(a.wa);K(b,\"RID\",\"rpc\");K(b,\"SID\",a.K);K(b,\"AID\",a.V);K(b,\"CI\",a.G?\"0\":\"1\");!a.G&&a.qa&&K(b,\"TO\",a.qa);K(b,\"TYPE\",\"xmlhttp\");Gd(a,b);a.o&&a.s&&Cd(b,a.o,a.s);a.L&&a.g.setTimeout(a.L);var c=a.g;a=a.pa;c.L=1;c.v=hc(G(b));c.s=null;c.S=!0;ic(c,a);}k.ib=function(){null!=this.v&&(this.v=null,zc(this),Ac(this),F(19));};\nfunction yc(a){null!=a.v&&(l.clearTimeout(a.v),a.v=null);}function sc(a,b){var c=null;if(a.g==b){yc(a);vc(a);a.g=null;var d=2;}else if(xc(a.i,b))c=b.F,Ec(a.i,b),d=1;else return;if(0!=a.H)if(b.i)if(1==d){c=b.s?b.s.length:0;b=Date.now()-b.G;var e=a.C;d=Mb();C(d,new Qb(d,c));Gc(a);}else Fc(a);else if(e=b.o,3==e||0==e&&0<b.ca||!(1==d&&Id(a,b)||2==d&&Ac(a)))switch(c&&0<c.length&&(b=a.i,b.i=b.i.concat(c)),e){case 1:J(a,5);break;case 4:J(a,10);break;case 3:J(a,6);break;default:J(a,2);}}\nfunction Jd(a,b){let c=a.ab+Math.floor(Math.random()*a.hb);a.isActive()||(c*=2);return c*b}function J(a,b){a.l.info(\"Error code \"+b);if(2==b){var c=null;a.h&&(c=null);var d=q(a.pb,a);c||(c=new M(\"//www.google.com/images/cleardot.gif\"),l.location&&\"http\"==l.location.protocol||Nc(c,\"https\"),hc(c));jd(c.toString(),d);}else F(2);a.H=0;a.h&&a.h.za(b);Hd(a);Fd(a);}k.pb=function(a){a?(this.l.info(\"Successfully pinged google.com\"),F(2)):(this.l.info(\"Failed to ping google.com\"),F(1));};\nfunction Hd(a){a.H=0;a.ma=[];if(a.h){const b=fd(a.i);if(0!=b.length||0!=a.j.length)na(a.ma,b),na(a.ma,a.j),a.i.i.length=0,ma(a.j),a.j.length=0;a.h.ya();}}function Dc(a,b,c){var d=c instanceof M?G(c):new M(c);if(\"\"!=d.g)b&&(d.g=b+\".\"+d.g),Oc(d,d.m);else {var e=l.location;d=e.protocol;b=b?b+\".\"+e.hostname:e.hostname;e=+e.port;var f=new M(null);d&&Nc(f,d);b&&(f.g=b);e&&Oc(f,e);c&&(f.l=c);d=f;}c=a.F;b=a.Da;c&&b&&K(d,c,b);K(d,\"VER\",a.ra);Gd(a,d);return d}\nfunction lc(a,b,c){if(b&&!a.J)throw Error(\"Can't create secondary domain capable XhrIo object.\");b=c&&a.Ha&&!a.va?new P(new ld({ob:!0})):new P(a.va);b.Oa(a.J);return b}k.isActive=function(){return !!this.h&&this.h.isActive(this)};function Nd(){}k=Nd.prototype;k.Ba=function(){};k.Aa=function(){};k.za=function(){};k.ya=function(){};k.isActive=function(){return !0};k.Va=function(){};function Od(){if(z&&!(10<=Number(Fa)))throw Error(\"Environmental error: no available transport.\");}Od.prototype.g=function(a,b){return new Q(a,b)};\nfunction Q(a,b){B.call(this);this.g=new Ed(b);this.l=a;this.h=b&&b.messageUrlParams||null;a=b&&b.messageHeaders||null;b&&b.clientProtocolHeaderRequired&&(a?a[\"X-Client-Protocol\"]=\"webchannel\":a={\"X-Client-Protocol\":\"webchannel\"});this.g.s=a;a=b&&b.initMessageHeaders||null;b&&b.messageContentType&&(a?a[\"X-WebChannel-Content-Type\"]=b.messageContentType:a={\"X-WebChannel-Content-Type\":b.messageContentType});b&&b.Ca&&(a?a[\"X-WebChannel-Client-Profile\"]=b.Ca:a={\"X-WebChannel-Client-Profile\":b.Ca});this.g.U=\na;(a=b&&b.cc)&&!x(a)&&(this.g.o=a);this.A=b&&b.supportsCrossDomainXhr||!1;this.v=b&&b.sendRawJson||!1;(b=b&&b.httpSessionIdParam)&&!x(b)&&(this.g.F=b,a=this.h,null!==a&&b in a&&(a=this.h,b in a&&delete a[b]));this.j=new R(this);}r(Q,B);Q.prototype.m=function(){this.g.h=this.j;this.A&&(this.g.J=!0);var a=this.g,b=this.l,c=this.h||void 0;F(0);a.Y=b;a.na=c||{};a.G=a.aa;a.I=Dc(a,null,a.Y);Gc(a);};Q.prototype.close=function(){Hc(this.g);};\nQ.prototype.u=function(a){var b=this.g;if(\"string\"===typeof a){var c={};c.__data__=a;a=c;}else this.v&&(c={},c.__data__=jb(a),a=c);b.j.push(new bd(b.fb++,a));3==b.H&&Gc(b);};Q.prototype.N=function(){this.g.h=null;delete this.j;Hc(this.g);delete this.g;Q.$.N.call(this);};\nfunction Pd(a){Yb.call(this);a.__headers__&&(this.headers=a.__headers__,this.statusCode=a.__status__,delete a.__headers__,delete a.__status__);var b=a.__sm__;if(b){a:{for(const c in b){a=c;break a}a=void 0;}if(this.i=a)a=this.i,b=null!==b&&a in b?b[a]:void 0;this.data=b;}else this.data=a;}r(Pd,Yb);function Qd(){Zb.call(this);this.status=1;}r(Qd,Zb);function R(a){this.g=a;}r(R,Nd);R.prototype.Ba=function(){C(this.g,\"a\");};R.prototype.Aa=function(a){C(this.g,new Pd(a));};\nR.prototype.za=function(a){C(this.g,new Qd());};R.prototype.ya=function(){C(this.g,\"b\");};function Rd(){this.blockSize=-1;}function S(){this.blockSize=-1;this.blockSize=64;this.g=Array(4);this.m=Array(this.blockSize);this.i=this.h=0;this.reset();}r(S,Rd);S.prototype.reset=function(){this.g[0]=1732584193;this.g[1]=4023233417;this.g[2]=2562383102;this.g[3]=271733878;this.i=this.h=0;};\nfunction Sd(a,b,c){c||(c=0);var d=Array(16);if(\"string\"===typeof b)for(var e=0;16>e;++e)d[e]=b.charCodeAt(c++)|b.charCodeAt(c++)<<8|b.charCodeAt(c++)<<16|b.charCodeAt(c++)<<24;else for(e=0;16>e;++e)d[e]=b[c++]|b[c++]<<8|b[c++]<<16|b[c++]<<24;b=a.g[0];c=a.g[1];e=a.g[2];var f=a.g[3];var h=b+(f^c&(e^f))+d[0]+3614090360&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[1]+3905402710&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[2]+606105819&4294967295;e=f+(h<<17&4294967295|h>>>15);\nh=c+(b^e&(f^b))+d[3]+3250441966&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[4]+4118548399&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[5]+1200080426&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[6]+2821735955&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[7]+4249261313&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[8]+1770035416&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[9]+2336552879&4294967295;f=b+(h<<12&4294967295|\nh>>>20);h=e+(c^f&(b^c))+d[10]+4294925233&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[11]+2304563134&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[12]+1804603682&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[13]+4254626195&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[14]+2792965006&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[15]+1236535329&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(e^f&(c^e))+d[1]+4129170786&4294967295;b=c+(h<<\n5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[6]+3225465664&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[11]+643717713&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[0]+3921069994&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[5]+3593408605&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[10]+38016083&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[15]+3634488961&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[4]+3889429448&4294967295;c=\ne+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[9]+568446438&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[14]+3275163606&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[3]+4107603335&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[8]+1163531501&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[13]+2850285829&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[2]+4243563512&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[7]+1735328473&4294967295;\ne=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[12]+2368359562&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(c^e^f)+d[5]+4294588738&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[8]+2272392833&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[11]+1839030562&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[14]+4259657740&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[1]+2763975236&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[4]+1272893353&4294967295;f=b+(h<<11&4294967295|\nh>>>21);h=e+(f^b^c)+d[7]+4139469664&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[10]+3200236656&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[13]+681279174&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[0]+3936430074&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[3]+3572445317&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[6]+76029189&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[9]+3654602809&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[12]+\n3873151461&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[15]+530742520&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[2]+3299628645&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(e^(c|~f))+d[0]+4096336452&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[7]+1126891415&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[14]+2878612391&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[5]+4237533241&4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[12]+1700485571&\n4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[3]+2399980690&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[10]+4293915773&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[1]+2240044497&4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[8]+1873313359&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[15]+4264355552&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[6]+2734768916&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[13]+1309151649&\n4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[4]+4149444226&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[11]+3174756917&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[2]+718787259&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[9]+3951481745&4294967295;a.g[0]=a.g[0]+b&4294967295;a.g[1]=a.g[1]+(e+(h<<21&4294967295|h>>>11))&4294967295;a.g[2]=a.g[2]+e&4294967295;a.g[3]=a.g[3]+f&4294967295;}\nS.prototype.j=function(a,b){void 0===b&&(b=a.length);for(var c=b-this.blockSize,d=this.m,e=this.h,f=0;f<b;){if(0==e)for(;f<=c;)Sd(this,a,f),f+=this.blockSize;if(\"string\"===typeof a)for(;f<b;){if(d[e++]=a.charCodeAt(f++),e==this.blockSize){Sd(this,d);e=0;break}}else for(;f<b;)if(d[e++]=a[f++],e==this.blockSize){Sd(this,d);e=0;break}}this.h=e;this.i+=b;};\nS.prototype.l=function(){var a=Array((56>this.h?this.blockSize:2*this.blockSize)-this.h);a[0]=128;for(var b=1;b<a.length-8;++b)a[b]=0;var c=8*this.i;for(b=a.length-8;b<a.length;++b)a[b]=c&255,c/=256;this.j(a);a=Array(16);for(b=c=0;4>b;++b)for(var d=0;32>d;d+=8)a[c++]=this.g[b]>>>d&255;return a};function T(a,b){this.h=b;for(var c=[],d=!0,e=a.length-1;0<=e;e--){var f=a[e]|0;d&&f==b||(c[e]=f,d=!1);}this.g=c;}var sa={};function Td(a){return -128<=a&&128>a?ra(a,function(b){return new T([b|0],0>b?-1:0)}):new T([a|0],0>a?-1:0)}function U(a){if(isNaN(a)||!isFinite(a))return V;if(0>a)return W(U(-a));for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=Ud;return new T(b,0)}\nfunction Vd(a,b){if(0==a.length)throw Error(\"number format error: empty string\");b=b||10;if(2>b||36<b)throw Error(\"radix out of range: \"+b);if(\"-\"==a.charAt(0))return W(Vd(a.substring(1),b));if(0<=a.indexOf(\"-\"))throw Error('number format error: interior \"-\" character');for(var c=U(Math.pow(b,8)),d=V,e=0;e<a.length;e+=8){var f=Math.min(8,a.length-e),h=parseInt(a.substring(e,e+f),b);8>f?(f=U(Math.pow(b,f)),d=d.R(f).add(U(h))):(d=d.R(c),d=d.add(U(h)));}return d}\nvar Ud=4294967296,V=Td(0),Wd=Td(1),Xd=Td(16777216);k=T.prototype;k.ea=function(){if(X(this))return -W(this).ea();for(var a=0,b=1,c=0;c<this.g.length;c++){var d=this.D(c);a+=(0<=d?d:Ud+d)*b;b*=Ud;}return a};\nk.toString=function(a){a=a||10;if(2>a||36<a)throw Error(\"radix out of range: \"+a);if(Y(this))return \"0\";if(X(this))return \"-\"+W(this).toString(a);for(var b=U(Math.pow(a,6)),c=this,d=\"\";;){var e=Yd(c,b).g;c=Zd(c,e.R(b));var f=((0<c.g.length?c.g[0]:c.h)>>>0).toString(a);c=e;if(Y(c))return f+d;for(;6>f.length;)f=\"0\"+f;d=f+d;}};k.D=function(a){return 0>a?0:a<this.g.length?this.g[a]:this.h};function Y(a){if(0!=a.h)return !1;for(var b=0;b<a.g.length;b++)if(0!=a.g[b])return !1;return !0}\nfunction X(a){return -1==a.h}k.X=function(a){a=Zd(this,a);return X(a)?-1:Y(a)?0:1};function W(a){for(var b=a.g.length,c=[],d=0;d<b;d++)c[d]=~a.g[d];return (new T(c,~a.h)).add(Wd)}k.abs=function(){return X(this)?W(this):this};k.add=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0,e=0;e<=b;e++){var f=d+(this.D(e)&65535)+(a.D(e)&65535),h=(f>>>16)+(this.D(e)>>>16)+(a.D(e)>>>16);d=h>>>16;f&=65535;h&=65535;c[e]=h<<16|f;}return new T(c,c[c.length-1]&-2147483648?-1:0)};\nfunction Zd(a,b){return a.add(W(b))}\nk.R=function(a){if(Y(this)||Y(a))return V;if(X(this))return X(a)?W(this).R(W(a)):W(W(this).R(a));if(X(a))return W(this.R(W(a)));if(0>this.X(Xd)&&0>a.X(Xd))return U(this.ea()*a.ea());for(var b=this.g.length+a.g.length,c=[],d=0;d<2*b;d++)c[d]=0;for(d=0;d<this.g.length;d++)for(var e=0;e<a.g.length;e++){var f=this.D(d)>>>16,h=this.D(d)&65535,n=a.D(e)>>>16,t=a.D(e)&65535;c[2*d+2*e]+=h*t;$d(c,2*d+2*e);c[2*d+2*e+1]+=f*t;$d(c,2*d+2*e+1);c[2*d+2*e+1]+=h*n;$d(c,2*d+2*e+1);c[2*d+2*e+2]+=f*n;$d(c,2*d+2*e+2);}for(d=\n0;d<b;d++)c[d]=c[2*d+1]<<16|c[2*d];for(d=b;d<2*b;d++)c[d]=0;return new T(c,0)};function $d(a,b){for(;(a[b]&65535)!=a[b];)a[b+1]+=a[b]>>>16,a[b]&=65535,b++;}function ae(a,b){this.g=a;this.h=b;}\nfunction Yd(a,b){if(Y(b))throw Error(\"division by zero\");if(Y(a))return new ae(V,V);if(X(a))return b=Yd(W(a),b),new ae(W(b.g),W(b.h));if(X(b))return b=Yd(a,W(b)),new ae(W(b.g),b.h);if(30<a.g.length){if(X(a)||X(b))throw Error(\"slowDivide_ only works with positive integers.\");for(var c=Wd,d=b;0>=d.X(a);)c=be(c),d=be(d);var e=Z(c,1),f=Z(d,1);d=Z(d,2);for(c=Z(c,2);!Y(d);){var h=f.add(d);0>=h.X(a)&&(e=e.add(c),f=h);d=Z(d,1);c=Z(c,1);}b=Zd(a,e.R(b));return new ae(e,b)}for(e=V;0<=a.X(b);){c=Math.max(1,Math.floor(a.ea()/\nb.ea()));d=Math.ceil(Math.log(c)/Math.LN2);d=48>=d?1:Math.pow(2,d-48);f=U(c);for(h=f.R(b);X(h)||0<h.X(a);)c-=d,f=U(c),h=f.R(b);Y(f)&&(f=Wd);e=e.add(f);a=Zd(a,h);}return new ae(e,a)}k.gb=function(a){return Yd(this,a).h};k.and=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=this.D(d)&a.D(d);return new T(c,this.h&a.h)};k.or=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=this.D(d)|a.D(d);return new T(c,this.h|a.h)};\nk.xor=function(a){for(var b=Math.max(this.g.length,a.g.length),c=[],d=0;d<b;d++)c[d]=this.D(d)^a.D(d);return new T(c,this.h^a.h)};function be(a){for(var b=a.g.length+1,c=[],d=0;d<b;d++)c[d]=a.D(d)<<1|a.D(d-1)>>>31;return new T(c,a.h)}function Z(a,b){var c=b>>5;b%=32;for(var d=a.g.length-c,e=[],f=0;f<d;f++)e[f]=0<b?a.D(f+c)>>>b|a.D(f+c+1)<<32-b:a.D(f+c);return new T(e,a.h)}Od.prototype.createWebChannel=Od.prototype.g;Q.prototype.send=Q.prototype.u;Q.prototype.open=Q.prototype.m;Q.prototype.close=Q.prototype.close;Sb.NO_ERROR=0;Sb.TIMEOUT=8;Sb.HTTP_ERROR=6;Tb.COMPLETE=\"complete\";Wb.EventType=Xb;Xb.OPEN=\"a\";Xb.CLOSE=\"b\";Xb.ERROR=\"c\";Xb.MESSAGE=\"d\";B.prototype.listen=B.prototype.O;P.prototype.listenOnce=P.prototype.P;P.prototype.getLastError=P.prototype.Sa;P.prototype.getLastErrorCode=P.prototype.Ia;P.prototype.getStatus=P.prototype.da;P.prototype.getResponseJson=P.prototype.Wa;\nP.prototype.getResponseText=P.prototype.ja;P.prototype.send=P.prototype.ha;P.prototype.setWithCredentials=P.prototype.Oa;S.prototype.digest=S.prototype.l;S.prototype.reset=S.prototype.reset;S.prototype.update=S.prototype.j;T.prototype.add=T.prototype.add;T.prototype.multiply=T.prototype.R;T.prototype.modulo=T.prototype.gb;T.prototype.compare=T.prototype.X;T.prototype.toNumber=T.prototype.ea;T.prototype.toString=T.prototype.toString;T.prototype.getBits=T.prototype.D;T.fromNumber=U;T.fromString=Vd;\nvar createWebChannelTransport = esm.createWebChannelTransport=function(){return new Od};var getStatEventTarget = esm.getStatEventTarget=function(){return Mb()};var ErrorCode = esm.ErrorCode=Sb;var EventType = esm.EventType=Tb;var Event = esm.Event=E;var Stat = esm.Stat={xb:0,Ab:1,Bb:2,Ub:3,Zb:4,Wb:5,Xb:6,Vb:7,Tb:8,Yb:9,PROXY:10,NOPROXY:11,Rb:12,Nb:13,Ob:14,Mb:15,Pb:16,Qb:17,tb:18,sb:19,ub:20};var FetchXmlHttpFactory = esm.FetchXmlHttpFactory=ld;var WebChannel = esm.WebChannel=Wb;var XhrIo = esm.XhrIo=P;var Md5 = esm.Md5=S;var Integer = esm.Integer=T;\n\nexport { ErrorCode, Event, EventType, FetchXmlHttpFactory, Integer, Md5, Stat, WebChannel, XhrIo, createWebChannelTransport, esm as default, getStatEventTarget };\n//# sourceMappingURL=index.esm2017.js.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import*as e from\"react\";import t from\"react\";import r from\"prop-types\";import n from\"invariant\";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(this,arguments)}function a(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t.indexOf(r=a[n])>=0||(o[r]=e[r]);return o}const s=e=>{const{search:t,hash:r,href:n,origin:o,protocol:a,host:s,hostname:i,port:c}=e.location;let{pathname:l}=e.location;return!l&&n&&u&&(l=new URL(n).pathname),{pathname:encodeURI(decodeURI(l)),search:t,hash:r,href:n,origin:o,protocol:a,host:s,hostname:i,port:c,state:e.history.state,key:e.history.state&&e.history.state.key||\"initial\"}},i=(e,t)=>{let r=[],n=s(e),a=!1,i=()=>{};return{get location(){return n},get transitioning(){return a},_onTransitionComplete(){a=!1,i()},listen(t){r.push(t);const o=()=>{n=s(e),t({location:n,action:\"POP\"})};return e.addEventListener(\"popstate\",o),()=>{e.removeEventListener(\"popstate\",o),r=r.filter(e=>e!==t)}},navigate(t,{state:c,replace:u=!1}={}){if(\"number\"==typeof t)e.history.go(t);else{c=o({},c,{key:Date.now()+\"\"});try{a||u?e.history.replaceState(c,null,t):e.history.pushState(c,null,t)}catch(r){e.location[u?\"replace\":\"assign\"](t)}}n=s(e),a=!0;const l=new Promise(e=>i=e);return r.forEach(e=>e({location:n,action:\"PUSH\"})),l}}},c=(e=\"/\")=>{const t=e.indexOf(\"?\"),r={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):\"\"};let n=0;const o=[r],a=[null];return{get location(){return o[n]},addEventListener(e,t){},removeEventListener(e,t){},history:{get entries(){return o},get index(){return n},get state(){return a[n]},pushState(e,t,r){const[s,i=\"\"]=r.split(\"?\");n++,o.push({pathname:s,search:i.length?`?${i}`:i}),a.push(e)},replaceState(e,t,r){const[s,i=\"\"]=r.split(\"?\");o[n]={pathname:s,search:i},a[n]=e},go(e){const t=n+e;t<0||t>a.length-1||(n=t)}}}},u=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),l=i(u?window:c()),{navigate:p}=l;function h(e,r){return t.createServerContext?((e,r=null)=>(globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=t.createServerContext(e,r)),globalThis.__SERVER_CONTEXT[e]))(e,r):t.createContext(r)}const m=h(\"Base\",{baseuri:\"/\",basepath:\"/\"}),d=h(\"Location\"),f=()=>e.useContext(m),y=()=>e.useContext(d);function E(e){this.uri=e}const g=e=>e instanceof E,v=e=>{throw new E(e)};function b(t){const{to:r,replace:n=!0,state:o,noThrow:a,baseuri:s}=t;e.useEffect(()=>{Promise.resolve().then(()=>{const e=k(r,s);p(P(e,t),{replace:n,state:o})})},[]);const i=k(r,s);return a||v(P(i,t)),null}const R=t=>{const r=y(),{baseuri:n}=f();/*#__PURE__*/return e.createElement(b,o({},r,{baseuri:n},t))};R.propTypes={from:r.string,to:r.string.isRequired};const C=(e,t)=>e.substr(0,t.length)===t,w=(e,t)=>{let r,o;const[a]=t.split(\"?\"),s=N(a),i=\"\"===s[0],c=j(e);for(let e=0,a=c.length;e<a;e++){let a=!1;const u=c[e].route;if(u.default){o={route:u,params:{},uri:t};continue}const l=N(u.path),p={},h=Math.max(s.length,l.length);let m=0;for(;m<h;m++){const e=l[m],t=s[m];if($(e)){p[e.slice(1)||\"*\"]=s.slice(m).map(decodeURIComponent).join(\"/\");break}if(void 0===t){a=!0;break}const r=O.exec(e);if(r&&!i){const e=-1===U.indexOf(r[1]);n(e,`<Router> dynamic segment \"${r[1]}\" is a reserved name. Please use a different name in path \"${u.path}\".`);const o=decodeURIComponent(t);p[r[1]]=o}else if(e!==t){a=!0;break}}if(!a){r={route:u,params:p,uri:\"/\"+s.slice(0,m).join(\"/\")};break}}return r||o||null},x=(e,t)=>w([{path:e}],t),k=(e,t)=>{if(C(e,\"/\"))return e;const[r,n]=e.split(\"?\"),[o]=t.split(\"?\"),a=N(r),s=N(o);if(\"\"===a[0])return L(o,n);if(!C(a[0],\".\")){const e=s.concat(a).join(\"/\");return L((\"/\"===o?\"\":\"/\")+e,n)}const i=s.concat(a),c=[];for(let e=0,t=i.length;e<t;e++){const t=i[e];\"..\"===t?c.pop():\".\"!==t&&c.push(t)}return L(\"/\"+c.join(\"/\"),n)},P=(e,t)=>{const[r,n=\"\"]=e.split(\"?\");let o=\"/\"+N(r).map(e=>{const r=O.exec(e);return r?t[r[1]]:e}).join(\"/\");const{location:{search:a=\"\"}={}}=t,s=a.split(\"?\")[1]||\"\";return o=L(o,n,s),o},T=(e,t)=>{const r=e=>_(e);return N(e).filter(r).sort().join(\"/\")===N(t).filter(r).sort().join(\"/\")},O=/^:(.+)/,_=e=>O.test(e),$=e=>e&&\"*\"===e[0],S=(e,t)=>({route:e,score:e.default?0:N(e.path).reduce((e,t)=>(e+=4,(e=>\"\"===e)(t)?e+=1:_(t)?e+=2:$(t)?e-=5:e+=3,e),0),index:t}),j=e=>e.map(S).sort((e,t)=>e.score<t.score?1:e.score>t.score?-1:e.index-t.index),N=e=>e.replace(/(^\\/+|\\/+$)/g,\"\").split(\"/\"),L=(e,...t)=>e+((t=t.filter(e=>e&&e.length>0))&&t.length>0?`?${t.join(\"&\")}`:\"\"),U=[\"uri\",\"path\"],D=(e,t)=>{const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(r=>t.hasOwnProperty(r)&&e[r]===t[r])},M=e=>e.replace(/(^\\/+|\\/+$)/g,\"\"),I=t=>r=>{if(!r)return null;if(r.type===e.Fragment&&r.props.children)return e.Children.map(r.props.children,I(t));if(n(r.props.path||r.props.default||r.type===R,`<Router>: Children of <Router> must have a \\`path\\` or \\`default\\` prop, or be a \\`<Redirect>\\`. None found on element type \\`${r.type}\\``),n(!!(r.type!==R||r.props.from&&r.props.to),`<Redirect from=\"${r.props.from}\" to=\"${r.props.to}\"/> requires both \"from\" and \"to\" props when inside a <Router>.`),n(!(r.type===R&&!T(r.props.from,r.props.to)),`<Redirect from=\"${r.props.from} to=\"${r.props.to}\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.`),r.props.default)return{value:r,default:!0};const o=r.type===R?r.props.from:r.props.path,a=\"/\"===o?t:`${M(t)}/${M(o)}`;return{value:r,default:r.props.default,path:r.props.children?`${M(a)}/*`:a}},V=[\"innerRef\"],q=[\"to\",\"state\",\"replace\",\"getProps\"],X=[\"key\"];let{forwardRef:B}=e;void 0===B&&(B=e=>e);const K=()=>{},A=B((t,r)=>{let{innerRef:n}=t,s=a(t,V);const{baseuri:i}=f(),{location:c}=y(),{to:u,state:l,replace:h,getProps:m=K}=s,d=a(s,q),E=k(u,i),g=encodeURI(E),v=c.pathname===g,b=C(c.pathname,g);/*#__PURE__*/return e.createElement(\"a\",o({ref:r||n,\"aria-current\":v?\"page\":void 0},d,m({isCurrent:v,isPartiallyCurrent:b,href:E,location:c}),{href:E,onClick:e=>{if(d.onClick&&d.onClick(e),(e=>!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(e)){e.preventDefault();let t=h;if(\"boolean\"!=typeof h&&v){const e=a(o({},c.state),X);t=D(o({},l),e)}p(E,{state:l,replace:t})}}}))});A.displayName=\"Link\",A.propTypes={to:r.string.isRequired};class F extends e.Component{constructor(...e){super(...e),this.displayName=\"ReactUseErrorBoundary\"}componentDidCatch(...e){this.setState({}),this.props.onError(...e)}render(){return this.props.children}}const W=e.createContext({componentDidCatch:{current:void 0},error:void 0,setError:()=>!1});function H({children:t}){const[r,n]=e.useState(),o=e.useRef(),a=e.useMemo(()=>({componentDidCatch:o,error:r,setError:n}),[r]);/*#__PURE__*/return e.createElement(W.Provider,{value:a},/*#__PURE__*/e.createElement(F,{error:r,onError:(e,t)=>{n(e),null==o.current||o.current(e,t)}},t))}H.displayName=\"ReactUseErrorBoundaryContext\";const z=function(t){var r,n;function a(r){/*#__PURE__*/return e.createElement(H,null,/*#__PURE__*/e.createElement(t,o({key:\"WrappedComponent\"},r)))}return a.displayName=`WithErrorBoundary(${null!=(r=null!=(n=t.displayName)?n:t.name)?r:\"Component\"})`,a}(({history:t=l,children:r})=>{const{location:n}=t,[o,a]=e.useState({location:n}),[s]=function(t){const r=e.useContext(W);r.componentDidCatch.current=void 0;const n=e.useCallback(()=>{r.setError(void 0)},[]);return[r.error,n]}();if(e.useEffect(()=>{t._onTransitionComplete()},[o.location]),e.useEffect(()=>{let e=!1;const r=t.listen(({location:t})=>{Promise.resolve().then(()=>{requestAnimationFrame(()=>{e||a({location:t})})})});return()=>{e=!0,r()}},[]),s){if(!g(s))throw s;p(s.uri,{replace:!0})}/*#__PURE__*/return e.createElement(d.Provider,{value:o},\"function\"==typeof r?r(o):r||null)}),G=({children:t})=>{const r=y();return r?t(r):/*#__PURE__*/e.createElement(z,null,t)},J=({url:t,children:r})=>{const n=t.indexOf(\"?\");let o,a=\"\";return n>-1?(o=t.substring(0,n),a=t.substring(n)):o=t,/*#__PURE__*/e.createElement(d.Provider,{value:{location:{pathname:o,search:a,hash:\"\"}}},r)},Q=({path:e,children:t})=>{const{baseuri:r}=f(),{location:n}=y(),a=k(e,r),s=x(a,n.pathname);return t({location:n,match:s?o({},s.params,{uri:s.uri,path:e}):null})},Y=[\"uri\",\"location\",\"component\"],Z=[\"children\",\"style\",\"component\",\"uri\",\"location\"],ee=t=>{let{uri:r,location:n,component:s}=t,i=a(t,Y);/*#__PURE__*/return e.createElement(re,o({},i,{component:s,uri:r,location:n}))};let te=0;const re=t=>{let{children:r,style:n,component:s=\"div\",uri:i,location:c}=t,u=a(t,Z);const l=e.useRef(),p=e.useRef(!0),h=e.useRef(i),m=e.useRef(c.pathname),d=e.useRef(!1);e.useEffect(()=>(te++,f(),()=>{te--,0===te&&(p.current=!0)}),[]),e.useEffect(()=>{let e=!1,t=!1;i!==h.current&&(h.current=i,e=!0),c.pathname!==m.current&&(m.current=c.pathname,t=!0),d.current=e||t&&c.pathname===i,d.current&&f()},[i,c]);const f=e.useCallback(()=>{var e;\"test\"!==process.env.NODE_ENV&&(p.current?p.current=!1:(e=l.current,d.current&&e&&e.focus()))},[]);/*#__PURE__*/return e.createElement(s,o({style:o({outline:\"none\"},n),tabIndex:\"-1\",ref:l},u),r)},ne=[\"location\",\"primary\",\"children\",\"basepath\",\"baseuri\",\"component\"],oe=t=>{const r=f(),n=y();/*#__PURE__*/return e.createElement(ae,o({},r,n,t))};function ae(t){const{location:r,primary:n=!0,children:s,basepath:i,component:c=\"div\"}=t,u=a(t,ne),l=e.Children.toArray(s).reduce((e,t)=>{const r=I(i)(t);return e.concat(r)},[]),{pathname:p}=r,h=w(l,p);if(h){const{params:t,uri:a,route:s,route:{value:l}}=h,p=s.default?i:s.path.replace(/\\*$/,\"\"),d=o({},t,{uri:a,location:r}),f=e.cloneElement(l,d,l.props.children?/*#__PURE__*/e.createElement(oe,{location:r,primary:n},l.props.children):void 0),y=n?ee:c,E=n?o({uri:a,location:r,component:c},u):u;/*#__PURE__*/return e.createElement(m.Provider,{value:{baseuri:a,basepath:p}},/*#__PURE__*/e.createElement(y,E,f))}return null}const se=()=>{const e=y();if(!e)throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");return e.location},ie=()=>{throw new Error(\"useNavigate is removed. Use import { navigate } from 'gatsby' instead\")},ce=()=>{const e=f();if(!e)throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");const t=se(),r=x(e.basepath,t.pathname);return r?r.params:null},ue=e=>{if(!e)throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");const t=f();if(!t)throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");const r=se(),n=k(e,t.baseuri),a=x(n,r.pathname);return a?o({},a.params,{uri:a.uri,path:e}):null};export{m as BaseContext,A as Link,G as Location,d as LocationContext,z as LocationProvider,Q as Match,R as Redirect,oe as Router,J as ServerLocation,i as createHistory,c as createMemorySource,l as globalHistory,P as insertParams,g as isRedirect,x as match,p as navigate,w as pick,v as redirectTo,k as resolve,D as shallowCompare,C as startsWith,f as useBaseContext,se as useLocation,y as useLocationContext,ue as useMatch,ie as useNavigate,ce as useParams,T as validateRedirect};\n//# sourceMappingURL=index.modern.mjs.map\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","import firebase from '@firebase/app-compat';\nexport { default } from '@firebase/app-compat';\n\nvar name = \"firebase\";\nvar version = \"9.23.0\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfirebase.registerVersion(name, version, 'app-compat');\n//# sourceMappingURL=index.esm.js.map\n","import { as as debugAssert, at as _isIOS, au as _isAndroid, av as _fail, aw as _getRedirectUrl, ax as _getProjectConfig, ay as _isIOS7Or8, az as _createError, aA as _assert, aB as AuthEventManager, aC as _getInstance, b as browserLocalPersistence, aD as _persistenceKeyName, a as browserSessionPersistence, aE as _getRedirectResult, aF as _overrideRedirectResult, aG as _clearRedirectOutcomes, aH as _castAuth } from './index-e3d5d3f4.js';\nexport { A as ActionCodeOperation, ag as ActionCodeURL, J as AuthCredential, G as AuthErrorCodes, aJ as AuthImpl, aM as AuthPopup, K as EmailAuthCredential, Q as EmailAuthProvider, U as FacebookAuthProvider, F as FactorId, aN as FetchProvider, W as GithubAuthProvider, V as GoogleAuthProvider, L as OAuthCredential, X as OAuthProvider, O as OperationType, M as PhoneAuthCredential, P as PhoneAuthProvider, m as PhoneMultiFactorGenerator, p as ProviderId, R as RecaptchaVerifier, aO as SAMLAuthCredential, Y as SAMLAuthProvider, S as SignInMethod, T as TotpMultiFactorGenerator, n as TotpSecret, Z as TwitterAuthProvider, aI as UserImpl, aA as _assert, aH as _castAuth, av as _fail, aL as _generateEventId, aK as _getClientVersion, aC as _getInstance, aE as _getRedirectResult, aF as _overrideRedirectResult, aD as _persistenceKeyName, a5 as applyActionCode, w as beforeAuthStateChanged, b as browserLocalPersistence, k as browserPopupRedirectResolver, a as browserSessionPersistence, a6 as checkActionCode, a4 as confirmPasswordReset, I as connectAuthEmulator, a8 as createUserWithEmailAndPassword, D as debugErrorMap, C as deleteUser, ad as fetchSignInMethodsForEmail, ao as getAdditionalUserInfo, o as getAuth, al as getIdToken, am as getIdTokenResult, aq as getMultiFactorResolver, j as getRedirectResult, N as inMemoryPersistence, i as indexedDBLocalPersistence, H as initializeAuth, t as initializeRecaptchaConfig, ab as isSignInWithEmailLink, a0 as linkWithCredential, l as linkWithPhoneNumber, d as linkWithPopup, g as linkWithRedirect, ar as multiFactor, x as onAuthStateChanged, v as onIdTokenChanged, ah as parseActionCodeURL, E as prodErrorMap, a1 as reauthenticateWithCredential, r as reauthenticateWithPhoneNumber, e as reauthenticateWithPopup, h as reauthenticateWithRedirect, ap as reload, ae as sendEmailVerification, a3 as sendPasswordResetEmail, aa as sendSignInLinkToEmail, q as setPersistence, _ as signInAnonymously, $ as signInWithCredential, a2 as signInWithCustomToken, a9 as signInWithEmailAndPassword, ac as signInWithEmailLink, s as signInWithPhoneNumber, c as signInWithPopup, f as signInWithRedirect, B as signOut, an as unlink, z as updateCurrentUser, aj as updateEmail, ak as updatePassword, u as updatePhoneNumber, ai as updateProfile, y as useDeviceLanguage, af as verifyBeforeUpdateEmail, a7 as verifyPasswordResetCode } from './index-e3d5d3f4.js';\nimport { querystringDecode } from '@firebase/util';\nimport '@firebase/app';\nimport 'tslib';\nimport '@firebase/logger';\nimport '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _cordovaWindow() {\r\n return window;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * How long to wait after the app comes back into focus before concluding that\r\n * the user closed the sign in tab.\r\n */\r\nconst REDIRECT_TIMEOUT_MS = 2000;\r\n/**\r\n * Generates the URL for the OAuth handler.\r\n */\r\nasync function _generateHandlerUrl(auth, event, provider) {\r\n var _a;\r\n // Get the cordova plugins\r\n const { BuildInfo } = _cordovaWindow();\r\n debugAssert(event.sessionId, 'AuthEvent did not contain a session ID');\r\n const sessionDigest = await computeSha256(event.sessionId);\r\n const additionalParams = {};\r\n if (_isIOS()) {\r\n // iOS app identifier\r\n additionalParams['ibi'] = BuildInfo.packageName;\r\n }\r\n else if (_isAndroid()) {\r\n // Android app identifier\r\n additionalParams['apn'] = BuildInfo.packageName;\r\n }\r\n else {\r\n _fail(auth, \"operation-not-supported-in-this-environment\" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n }\r\n // Add the display name if available\r\n if (BuildInfo.displayName) {\r\n additionalParams['appDisplayName'] = BuildInfo.displayName;\r\n }\r\n // Attached the hashed session ID\r\n additionalParams['sessionId'] = sessionDigest;\r\n return _getRedirectUrl(auth, provider, event.type, undefined, (_a = event.eventId) !== null && _a !== void 0 ? _a : undefined, additionalParams);\r\n}\r\n/**\r\n * Validates that this app is valid for this project configuration\r\n */\r\nasync function _validateOrigin(auth) {\r\n const { BuildInfo } = _cordovaWindow();\r\n const request = {};\r\n if (_isIOS()) {\r\n request.iosBundleId = BuildInfo.packageName;\r\n }\r\n else if (_isAndroid()) {\r\n request.androidPackageName = BuildInfo.packageName;\r\n }\r\n else {\r\n _fail(auth, \"operation-not-supported-in-this-environment\" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n }\r\n // Will fail automatically if package name is not authorized\r\n await _getProjectConfig(auth, request);\r\n}\r\nfunction _performRedirect(handlerUrl) {\r\n // Get the cordova plugins\r\n const { cordova } = _cordovaWindow();\r\n return new Promise(resolve => {\r\n cordova.plugins.browsertab.isAvailable(browserTabIsAvailable => {\r\n let iabRef = null;\r\n if (browserTabIsAvailable) {\r\n cordova.plugins.browsertab.openUrl(handlerUrl);\r\n }\r\n else {\r\n // TODO: Return the inappbrowser ref that's returned from the open call\r\n iabRef = cordova.InAppBrowser.open(handlerUrl, _isIOS7Or8() ? '_blank' : '_system', 'location=yes');\r\n }\r\n resolve(iabRef);\r\n });\r\n });\r\n}\r\n/**\r\n * This function waits for app activity to be seen before resolving. It does\r\n * this by attaching listeners to various dom events. Once the app is determined\r\n * to be visible, this promise resolves. AFTER that resolution, the listeners\r\n * are detached and any browser tabs left open will be closed.\r\n */\r\nasync function _waitForAppResume(auth, eventListener, iabRef) {\r\n // Get the cordova plugins\r\n const { cordova } = _cordovaWindow();\r\n let cleanup = () => { };\r\n try {\r\n await new Promise((resolve, reject) => {\r\n let onCloseTimer = null;\r\n // DEFINE ALL THE CALLBACKS =====\r\n function authEventSeen() {\r\n var _a;\r\n // Auth event was detected. Resolve this promise and close the extra\r\n // window if it's still open.\r\n resolve();\r\n const closeBrowserTab = (_a = cordova.plugins.browsertab) === null || _a === void 0 ? void 0 : _a.close;\r\n if (typeof closeBrowserTab === 'function') {\r\n closeBrowserTab();\r\n }\r\n // Close inappbrowser emebedded webview in iOS7 and 8 case if still\r\n // open.\r\n if (typeof (iabRef === null || iabRef === void 0 ? void 0 : iabRef.close) === 'function') {\r\n iabRef.close();\r\n }\r\n }\r\n function resumed() {\r\n if (onCloseTimer) {\r\n // This code already ran; do not rerun.\r\n return;\r\n }\r\n onCloseTimer = window.setTimeout(() => {\r\n // Wait two seeconds after resume then reject.\r\n reject(_createError(auth, \"redirect-cancelled-by-user\" /* AuthErrorCode.REDIRECT_CANCELLED_BY_USER */));\r\n }, REDIRECT_TIMEOUT_MS);\r\n }\r\n function visibilityChanged() {\r\n if ((document === null || document === void 0 ? void 0 : document.visibilityState) === 'visible') {\r\n resumed();\r\n }\r\n }\r\n // ATTACH ALL THE LISTENERS =====\r\n // Listen for the auth event\r\n eventListener.addPassiveListener(authEventSeen);\r\n // Listen for resume and visibility events\r\n document.addEventListener('resume', resumed, false);\r\n if (_isAndroid()) {\r\n document.addEventListener('visibilitychange', visibilityChanged, false);\r\n }\r\n // SETUP THE CLEANUP FUNCTION =====\r\n cleanup = () => {\r\n eventListener.removePassiveListener(authEventSeen);\r\n document.removeEventListener('resume', resumed, false);\r\n document.removeEventListener('visibilitychange', visibilityChanged, false);\r\n if (onCloseTimer) {\r\n window.clearTimeout(onCloseTimer);\r\n }\r\n };\r\n });\r\n }\r\n finally {\r\n cleanup();\r\n }\r\n}\r\n/**\r\n * Checks the configuration of the Cordova environment. This has no side effect\r\n * if the configuration is correct; otherwise it throws an error with the\r\n * missing plugin.\r\n */\r\nfunction _checkCordovaConfiguration(auth) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\r\n const win = _cordovaWindow();\r\n // Check all dependencies installed.\r\n // https://github.com/nordnet/cordova-universal-links-plugin\r\n // Note that cordova-universal-links-plugin has been abandoned.\r\n // A fork with latest fixes is available at:\r\n // https://www.npmjs.com/package/cordova-universal-links-plugin-fix\r\n _assert(typeof ((_a = win === null || win === void 0 ? void 0 : win.universalLinks) === null || _a === void 0 ? void 0 : _a.subscribe) === 'function', auth, \"invalid-cordova-configuration\" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {\r\n missingPlugin: 'cordova-universal-links-plugin-fix'\r\n });\r\n // https://www.npmjs.com/package/cordova-plugin-buildinfo\r\n _assert(typeof ((_b = win === null || win === void 0 ? void 0 : win.BuildInfo) === null || _b === void 0 ? void 0 : _b.packageName) !== 'undefined', auth, \"invalid-cordova-configuration\" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {\r\n missingPlugin: 'cordova-plugin-buildInfo'\r\n });\r\n // https://github.com/google/cordova-plugin-browsertab\r\n _assert(typeof ((_e = (_d = (_c = win === null || win === void 0 ? void 0 : win.cordova) === null || _c === void 0 ? void 0 : _c.plugins) === null || _d === void 0 ? void 0 : _d.browsertab) === null || _e === void 0 ? void 0 : _e.openUrl) === 'function', auth, \"invalid-cordova-configuration\" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {\r\n missingPlugin: 'cordova-plugin-browsertab'\r\n });\r\n _assert(typeof ((_h = (_g = (_f = win === null || win === void 0 ? void 0 : win.cordova) === null || _f === void 0 ? void 0 : _f.plugins) === null || _g === void 0 ? void 0 : _g.browsertab) === null || _h === void 0 ? void 0 : _h.isAvailable) === 'function', auth, \"invalid-cordova-configuration\" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {\r\n missingPlugin: 'cordova-plugin-browsertab'\r\n });\r\n // https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/\r\n _assert(typeof ((_k = (_j = win === null || win === void 0 ? void 0 : win.cordova) === null || _j === void 0 ? void 0 : _j.InAppBrowser) === null || _k === void 0 ? void 0 : _k.open) === 'function', auth, \"invalid-cordova-configuration\" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {\r\n missingPlugin: 'cordova-plugin-inappbrowser'\r\n });\r\n}\r\n/**\r\n * Computes the SHA-256 of a session ID. The SubtleCrypto interface is only\r\n * available in \"secure\" contexts, which covers Cordova (which is served on a file\r\n * protocol).\r\n */\r\nasync function computeSha256(sessionId) {\r\n const bytes = stringToArrayBuffer(sessionId);\r\n // TODO: For IE11 crypto has a different name and this operation comes back\r\n // as an object, not a promise. This is the old proposed standard that\r\n // is used by IE11:\r\n // https://www.w3.org/TR/2013/WD-WebCryptoAPI-20130108/#cryptooperation-interface\r\n const buf = await crypto.subtle.digest('SHA-256', bytes);\r\n const arr = Array.from(new Uint8Array(buf));\r\n return arr.map(num => num.toString(16).padStart(2, '0')).join('');\r\n}\r\nfunction stringToArrayBuffer(str) {\r\n // This function is only meant to deal with an ASCII charset and makes\r\n // certain simplifying assumptions.\r\n debugAssert(/[0-9a-zA-Z]+/.test(str), 'Can only convert alpha-numeric strings');\r\n if (typeof TextEncoder !== 'undefined') {\r\n return new TextEncoder().encode(str);\r\n }\r\n const buff = new ArrayBuffer(str.length);\r\n const view = new Uint8Array(buff);\r\n for (let i = 0; i < str.length; i++) {\r\n view[i] = str.charCodeAt(i);\r\n }\r\n return view;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst SESSION_ID_LENGTH = 20;\r\n/** Custom AuthEventManager that adds passive listeners to events */\r\nclass CordovaAuthEventManager extends AuthEventManager {\r\n constructor() {\r\n super(...arguments);\r\n this.passiveListeners = new Set();\r\n this.initPromise = new Promise(resolve => {\r\n this.resolveInialized = resolve;\r\n });\r\n }\r\n addPassiveListener(cb) {\r\n this.passiveListeners.add(cb);\r\n }\r\n removePassiveListener(cb) {\r\n this.passiveListeners.delete(cb);\r\n }\r\n // In a Cordova environment, this manager can live through multiple redirect\r\n // operations\r\n resetRedirect() {\r\n this.queuedRedirectEvent = null;\r\n this.hasHandledPotentialRedirect = false;\r\n }\r\n /** Override the onEvent method */\r\n onEvent(event) {\r\n this.resolveInialized();\r\n this.passiveListeners.forEach(cb => cb(event));\r\n return super.onEvent(event);\r\n }\r\n async initialized() {\r\n await this.initPromise;\r\n }\r\n}\r\n/**\r\n * Generates a (partial) {@link AuthEvent}.\r\n */\r\nfunction _generateNewEvent(auth, type, eventId = null) {\r\n return {\r\n type,\r\n eventId,\r\n urlResponse: null,\r\n sessionId: generateSessionId(),\r\n postBody: null,\r\n tenantId: auth.tenantId,\r\n error: _createError(auth, \"no-auth-event\" /* AuthErrorCode.NO_AUTH_EVENT */)\r\n };\r\n}\r\nfunction _savePartialEvent(auth, event) {\r\n return storage()._set(persistenceKey(auth), event);\r\n}\r\nasync function _getAndRemoveEvent(auth) {\r\n const event = (await storage()._get(persistenceKey(auth)));\r\n if (event) {\r\n await storage()._remove(persistenceKey(auth));\r\n }\r\n return event;\r\n}\r\nfunction _eventFromPartialAndUrl(partialEvent, url) {\r\n var _a, _b;\r\n // Parse the deep link within the dynamic link URL.\r\n const callbackUrl = _getDeepLinkFromCallback(url);\r\n // Confirm it is actually a callback URL.\r\n // Currently the universal link will be of this format:\r\n // https://<AUTH_DOMAIN>/__/auth/callback<OAUTH_RESPONSE>\r\n // This is a fake URL but is not intended to take the user anywhere\r\n // and just redirect to the app.\r\n if (callbackUrl.includes('/__/auth/callback')) {\r\n // Check if there is an error in the URL.\r\n // This mechanism is also used to pass errors back to the app:\r\n // https://<AUTH_DOMAIN>/__/auth/callback?firebaseError=<STRINGIFIED_ERROR>\r\n const params = searchParamsOrEmpty(callbackUrl);\r\n // Get the error object corresponding to the stringified error if found.\r\n const errorObject = params['firebaseError']\r\n ? parseJsonOrNull(decodeURIComponent(params['firebaseError']))\r\n : null;\r\n const code = (_b = (_a = errorObject === null || errorObject === void 0 ? void 0 : errorObject['code']) === null || _a === void 0 ? void 0 : _a.split('auth/')) === null || _b === void 0 ? void 0 : _b[1];\r\n const error = code ? _createError(code) : null;\r\n if (error) {\r\n return {\r\n type: partialEvent.type,\r\n eventId: partialEvent.eventId,\r\n tenantId: partialEvent.tenantId,\r\n error,\r\n urlResponse: null,\r\n sessionId: null,\r\n postBody: null\r\n };\r\n }\r\n else {\r\n return {\r\n type: partialEvent.type,\r\n eventId: partialEvent.eventId,\r\n tenantId: partialEvent.tenantId,\r\n sessionId: partialEvent.sessionId,\r\n urlResponse: callbackUrl,\r\n postBody: null\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\nfunction generateSessionId() {\r\n const chars = [];\r\n const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n for (let i = 0; i < SESSION_ID_LENGTH; i++) {\r\n const idx = Math.floor(Math.random() * allowedChars.length);\r\n chars.push(allowedChars.charAt(idx));\r\n }\r\n return chars.join('');\r\n}\r\nfunction storage() {\r\n return _getInstance(browserLocalPersistence);\r\n}\r\nfunction persistenceKey(auth) {\r\n return _persistenceKeyName(\"authEvent\" /* KeyName.AUTH_EVENT */, auth.config.apiKey, auth.name);\r\n}\r\nfunction parseJsonOrNull(json) {\r\n try {\r\n return JSON.parse(json);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n}\r\n// Exported for testing\r\nfunction _getDeepLinkFromCallback(url) {\r\n const params = searchParamsOrEmpty(url);\r\n const link = params['link'] ? decodeURIComponent(params['link']) : undefined;\r\n // Double link case (automatic redirect)\r\n const doubleDeepLink = searchParamsOrEmpty(link)['link'];\r\n // iOS custom scheme links.\r\n const iOSDeepLink = params['deep_link_id']\r\n ? decodeURIComponent(params['deep_link_id'])\r\n : undefined;\r\n const iOSDoubleDeepLink = searchParamsOrEmpty(iOSDeepLink)['link'];\r\n return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;\r\n}\r\n/**\r\n * Optimistically tries to get search params from a string, or else returns an\r\n * empty search params object.\r\n */\r\nfunction searchParamsOrEmpty(url) {\r\n if (!(url === null || url === void 0 ? void 0 : url.includes('?'))) {\r\n return {};\r\n }\r\n const [_, ...rest] = url.split('?');\r\n return querystringDecode(rest.join('?'));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * How long to wait for the initial auth event before concluding no\r\n * redirect pending\r\n */\r\nconst INITIAL_EVENT_TIMEOUT_MS = 500;\r\nclass CordovaPopupRedirectResolver {\r\n constructor() {\r\n this._redirectPersistence = browserSessionPersistence;\r\n this._shouldInitProactively = true; // This is lightweight for Cordova\r\n this.eventManagers = new Map();\r\n this.originValidationPromises = {};\r\n this._completeRedirectFn = _getRedirectResult;\r\n this._overrideRedirectResult = _overrideRedirectResult;\r\n }\r\n async _initialize(auth) {\r\n const key = auth._key();\r\n let manager = this.eventManagers.get(key);\r\n if (!manager) {\r\n manager = new CordovaAuthEventManager(auth);\r\n this.eventManagers.set(key, manager);\r\n this.attachCallbackListeners(auth, manager);\r\n }\r\n return manager;\r\n }\r\n _openPopup(auth) {\r\n _fail(auth, \"operation-not-supported-in-this-environment\" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n }\r\n async _openRedirect(auth, provider, authType, eventId) {\r\n _checkCordovaConfiguration(auth);\r\n const manager = await this._initialize(auth);\r\n await manager.initialized();\r\n // Reset the persisted redirect states. This does not matter on Web where\r\n // the redirect always blows away application state entirely. On Cordova,\r\n // the app maintains control flow through the redirect.\r\n manager.resetRedirect();\r\n _clearRedirectOutcomes();\r\n await this._originValidation(auth);\r\n const event = _generateNewEvent(auth, authType, eventId);\r\n await _savePartialEvent(auth, event);\r\n const url = await _generateHandlerUrl(auth, event, provider);\r\n const iabRef = await _performRedirect(url);\r\n return _waitForAppResume(auth, manager, iabRef);\r\n }\r\n _isIframeWebStorageSupported(_auth, _cb) {\r\n throw new Error('Method not implemented.');\r\n }\r\n _originValidation(auth) {\r\n const key = auth._key();\r\n if (!this.originValidationPromises[key]) {\r\n this.originValidationPromises[key] = _validateOrigin(auth);\r\n }\r\n return this.originValidationPromises[key];\r\n }\r\n attachCallbackListeners(auth, manager) {\r\n // Get the global plugins\r\n const { universalLinks, handleOpenURL, BuildInfo } = _cordovaWindow();\r\n const noEventTimeout = setTimeout(async () => {\r\n // We didn't see that initial event. Clear any pending object and\r\n // dispatch no event\r\n await _getAndRemoveEvent(auth);\r\n manager.onEvent(generateNoEvent());\r\n }, INITIAL_EVENT_TIMEOUT_MS);\r\n const universalLinksCb = async (eventData) => {\r\n // We have an event so we can clear the no event timeout\r\n clearTimeout(noEventTimeout);\r\n const partialEvent = await _getAndRemoveEvent(auth);\r\n let finalEvent = null;\r\n if (partialEvent && (eventData === null || eventData === void 0 ? void 0 : eventData['url'])) {\r\n finalEvent = _eventFromPartialAndUrl(partialEvent, eventData['url']);\r\n }\r\n // If finalEvent is never filled, trigger with no event\r\n manager.onEvent(finalEvent || generateNoEvent());\r\n };\r\n // Universal links subscriber doesn't exist for iOS, so we need to check\r\n if (typeof universalLinks !== 'undefined' &&\r\n typeof universalLinks.subscribe === 'function') {\r\n universalLinks.subscribe(null, universalLinksCb);\r\n }\r\n // iOS 7 or 8 custom URL schemes.\r\n // This is also the current default behavior for iOS 9+.\r\n // For this to work, cordova-plugin-customurlscheme needs to be installed.\r\n // https://github.com/EddyVerbruggen/Custom-URL-scheme\r\n // Do not overwrite the existing developer's URL handler.\r\n const existingHandleOpenURL = handleOpenURL;\r\n const packagePrefix = `${BuildInfo.packageName.toLowerCase()}://`;\r\n _cordovaWindow().handleOpenURL = async (url) => {\r\n if (url.toLowerCase().startsWith(packagePrefix)) {\r\n // We want this intentionally to float\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n universalLinksCb({ url });\r\n }\r\n // Call the developer's handler if it is present.\r\n if (typeof existingHandleOpenURL === 'function') {\r\n try {\r\n existingHandleOpenURL(url);\r\n }\r\n catch (e) {\r\n // This is a developer error. Don't stop the flow of the SDK.\r\n console.error(e);\r\n }\r\n }\r\n };\r\n }\r\n}\r\n/**\r\n * An implementation of {@link PopupRedirectResolver} suitable for Cordova\r\n * based applications.\r\n *\r\n * @public\r\n */\r\nconst cordovaPopupRedirectResolver = CordovaPopupRedirectResolver;\r\nfunction generateNoEvent() {\r\n return {\r\n type: \"unknown\" /* AuthEventType.UNKNOWN */,\r\n eventId: null,\r\n sessionId: null,\r\n urlResponse: null,\r\n postBody: null,\r\n tenantId: null,\r\n error: _createError(\"no-auth-event\" /* AuthErrorCode.NO_AUTH_EVENT */)\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// This function should only be called by frameworks (e.g. FirebaseUI-web) to log their usage.\r\n// It is not intended for direct use by developer apps. NO jsdoc here to intentionally leave it out\r\n// of autogenerated documentation pages to reduce accidental misuse.\r\nfunction addFrameworkForLogging(auth, framework) {\r\n _castAuth(auth)._logFramework(framework);\r\n}\n\nexport { addFrameworkForLogging, cordovaPopupRedirectResolver };\n//# sourceMappingURL=internal.js.map\n","import firebase from '@firebase/app-compat';\nimport * as exp from '@firebase/auth/internal';\nimport { Component } from '@firebase/component';\nimport { isBrowserExtension, getUA, isReactNative, isNode, isIndexedDBAvailable, isIE, FirebaseError } from '@firebase/util';\n\nvar name = \"@firebase/auth-compat\";\nvar version = \"0.4.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst CORDOVA_ONDEVICEREADY_TIMEOUT_MS = 1000;\r\nfunction _getCurrentScheme() {\r\n var _a;\r\n return ((_a = self === null || self === void 0 ? void 0 : self.location) === null || _a === void 0 ? void 0 : _a.protocol) || null;\r\n}\r\n/**\r\n * @return {boolean} Whether the current environment is http or https.\r\n */\r\nfunction _isHttpOrHttps() {\r\n return _getCurrentScheme() === 'http:' || _getCurrentScheme() === 'https:';\r\n}\r\n/**\r\n * @param {?string=} ua The user agent.\r\n * @return {boolean} Whether the app is rendered in a mobile iOS or Android\r\n * Cordova environment.\r\n */\r\nfunction _isAndroidOrIosCordovaScheme(ua = getUA()) {\r\n return !!((_getCurrentScheme() === 'file:' ||\r\n _getCurrentScheme() === 'ionic:' ||\r\n _getCurrentScheme() === 'capacitor:') &&\r\n ua.toLowerCase().match(/iphone|ipad|ipod|android/));\r\n}\r\n/**\r\n * @return {boolean} Whether the environment is a native environment, where\r\n * CORS checks do not apply.\r\n */\r\nfunction _isNativeEnvironment() {\r\n return isReactNative() || isNode();\r\n}\r\n/**\r\n * Checks whether the user agent is IE11.\r\n * @return {boolean} True if it is IE11.\r\n */\r\nfunction _isIe11() {\r\n return isIE() && (document === null || document === void 0 ? void 0 : document.documentMode) === 11;\r\n}\r\n/**\r\n * Checks whether the user agent is Edge.\r\n * @param {string} userAgent The browser user agent string.\r\n * @return {boolean} True if it is Edge.\r\n */\r\nfunction _isEdge(ua = getUA()) {\r\n return /Edge\\/\\d+/.test(ua);\r\n}\r\n/**\r\n * @param {?string=} opt_userAgent The navigator user agent.\r\n * @return {boolean} Whether local storage is not synchronized between an iframe\r\n * and a popup of the same domain.\r\n */\r\nfunction _isLocalStorageNotSynchronized(ua = getUA()) {\r\n return _isIe11() || _isEdge(ua);\r\n}\r\n/** @return {boolean} Whether web storage is supported. */\r\nfunction _isWebStorageSupported() {\r\n try {\r\n const storage = self.localStorage;\r\n const key = exp._generateEventId();\r\n if (storage) {\r\n // setItem will throw an exception if we cannot access WebStorage (e.g.,\r\n // Safari in private mode).\r\n storage['setItem'](key, '1');\r\n storage['removeItem'](key);\r\n // For browsers where iframe web storage does not synchronize with a popup\r\n // of the same domain, indexedDB is used for persistent storage. These\r\n // browsers include IE11 and Edge.\r\n // Make sure it is supported (IE11 and Edge private mode does not support\r\n // that).\r\n if (_isLocalStorageNotSynchronized()) {\r\n // In such browsers, if indexedDB is not supported, an iframe cannot be\r\n // notified of the popup sign in result.\r\n return isIndexedDBAvailable();\r\n }\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n // localStorage is not available from a worker. Test availability of\r\n // indexedDB.\r\n return _isWorker() && isIndexedDBAvailable();\r\n }\r\n return false;\r\n}\r\n/**\r\n * @param {?Object=} global The optional global scope.\r\n * @return {boolean} Whether current environment is a worker.\r\n */\r\nfunction _isWorker() {\r\n // WorkerGlobalScope only defined in worker environment.\r\n return (typeof global !== 'undefined' &&\r\n 'WorkerGlobalScope' in global &&\r\n 'importScripts' in global);\r\n}\r\nfunction _isPopupRedirectSupported() {\r\n return ((_isHttpOrHttps() ||\r\n isBrowserExtension() ||\r\n _isAndroidOrIosCordovaScheme()) &&\r\n // React Native with remote debugging reports its location.protocol as\r\n // http.\r\n !_isNativeEnvironment() &&\r\n // Local storage has to be supported for browser popup and redirect\r\n // operations to work.\r\n _isWebStorageSupported() &&\r\n // DOM, popups and redirects are not supported within a worker.\r\n !_isWorker());\r\n}\r\n/** Quick check that indicates the platform *may* be Cordova */\r\nfunction _isLikelyCordova() {\r\n return _isAndroidOrIosCordovaScheme() && typeof document !== 'undefined';\r\n}\r\nasync function _isCordova() {\r\n if (!_isLikelyCordova()) {\r\n return false;\r\n }\r\n return new Promise(resolve => {\r\n const timeoutId = setTimeout(() => {\r\n // We've waited long enough; the telltale Cordova event didn't happen\r\n resolve(false);\r\n }, CORDOVA_ONDEVICEREADY_TIMEOUT_MS);\r\n document.addEventListener('deviceready', () => {\r\n clearTimeout(timeoutId);\r\n resolve(true);\r\n });\r\n });\r\n}\r\nfunction _getSelfWindow() {\r\n return typeof window !== 'undefined' ? window : null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst Persistence = {\r\n LOCAL: 'local',\r\n NONE: 'none',\r\n SESSION: 'session'\r\n};\r\nconst _assert$3 = exp._assert;\r\nconst PERSISTENCE_KEY = 'persistence';\r\n/**\r\n * Validates that an argument is a valid persistence value. If an invalid type\r\n * is specified, an error is thrown synchronously.\r\n */\r\nfunction _validatePersistenceArgument(auth, persistence) {\r\n _assert$3(Object.values(Persistence).includes(persistence), auth, \"invalid-persistence-type\" /* exp.AuthErrorCode.INVALID_PERSISTENCE */);\r\n // Validate if the specified type is supported in the current environment.\r\n if (isReactNative()) {\r\n // This is only supported in a browser.\r\n _assert$3(persistence !== Persistence.SESSION, auth, \"unsupported-persistence-type\" /* exp.AuthErrorCode.UNSUPPORTED_PERSISTENCE */);\r\n return;\r\n }\r\n if (isNode()) {\r\n // Only none is supported in Node.js.\r\n _assert$3(persistence === Persistence.NONE, auth, \"unsupported-persistence-type\" /* exp.AuthErrorCode.UNSUPPORTED_PERSISTENCE */);\r\n return;\r\n }\r\n if (_isWorker()) {\r\n // In a worker environment, either LOCAL or NONE are supported.\r\n // If indexedDB not supported and LOCAL provided, throw an error\r\n _assert$3(persistence === Persistence.NONE ||\r\n (persistence === Persistence.LOCAL && isIndexedDBAvailable()), auth, \"unsupported-persistence-type\" /* exp.AuthErrorCode.UNSUPPORTED_PERSISTENCE */);\r\n return;\r\n }\r\n // This is restricted by what the browser supports.\r\n _assert$3(persistence === Persistence.NONE || _isWebStorageSupported(), auth, \"unsupported-persistence-type\" /* exp.AuthErrorCode.UNSUPPORTED_PERSISTENCE */);\r\n}\r\nasync function _savePersistenceForRedirect(auth) {\r\n await auth._initializationPromise;\r\n const session = getSessionStorageIfAvailable();\r\n const key = exp._persistenceKeyName(PERSISTENCE_KEY, auth.config.apiKey, auth.name);\r\n if (session) {\r\n session.setItem(key, auth._getPersistence());\r\n }\r\n}\r\nfunction _getPersistencesFromRedirect(apiKey, appName) {\r\n const session = getSessionStorageIfAvailable();\r\n if (!session) {\r\n return [];\r\n }\r\n const key = exp._persistenceKeyName(PERSISTENCE_KEY, apiKey, appName);\r\n const persistence = session.getItem(key);\r\n switch (persistence) {\r\n case Persistence.NONE:\r\n return [exp.inMemoryPersistence];\r\n case Persistence.LOCAL:\r\n return [exp.indexedDBLocalPersistence, exp.browserSessionPersistence];\r\n case Persistence.SESSION:\r\n return [exp.browserSessionPersistence];\r\n default:\r\n return [];\r\n }\r\n}\r\n/** Returns session storage, or null if the property access errors */\r\nfunction getSessionStorageIfAvailable() {\r\n var _a;\r\n try {\r\n return ((_a = _getSelfWindow()) === null || _a === void 0 ? void 0 : _a.sessionStorage) || null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst _assert$2 = exp._assert;\r\n/** Platform-agnostic popup-redirect resolver */\r\nclass CompatPopupRedirectResolver {\r\n constructor() {\r\n // Create both resolvers for dynamic resolution later\r\n this.browserResolver = exp._getInstance(exp.browserPopupRedirectResolver);\r\n this.cordovaResolver = exp._getInstance(exp.cordovaPopupRedirectResolver);\r\n // The actual resolver in use: either browserResolver or cordovaResolver.\r\n this.underlyingResolver = null;\r\n this._redirectPersistence = exp.browserSessionPersistence;\r\n this._completeRedirectFn = exp._getRedirectResult;\r\n this._overrideRedirectResult = exp._overrideRedirectResult;\r\n }\r\n async _initialize(auth) {\r\n await this.selectUnderlyingResolver();\r\n return this.assertedUnderlyingResolver._initialize(auth);\r\n }\r\n async _openPopup(auth, provider, authType, eventId) {\r\n await this.selectUnderlyingResolver();\r\n return this.assertedUnderlyingResolver._openPopup(auth, provider, authType, eventId);\r\n }\r\n async _openRedirect(auth, provider, authType, eventId) {\r\n await this.selectUnderlyingResolver();\r\n return this.assertedUnderlyingResolver._openRedirect(auth, provider, authType, eventId);\r\n }\r\n _isIframeWebStorageSupported(auth, cb) {\r\n this.assertedUnderlyingResolver._isIframeWebStorageSupported(auth, cb);\r\n }\r\n _originValidation(auth) {\r\n return this.assertedUnderlyingResolver._originValidation(auth);\r\n }\r\n get _shouldInitProactively() {\r\n return _isLikelyCordova() || this.browserResolver._shouldInitProactively;\r\n }\r\n get assertedUnderlyingResolver() {\r\n _assert$2(this.underlyingResolver, \"internal-error\" /* exp.AuthErrorCode.INTERNAL_ERROR */);\r\n return this.underlyingResolver;\r\n }\r\n async selectUnderlyingResolver() {\r\n if (this.underlyingResolver) {\r\n return;\r\n }\r\n // We haven't yet determined whether or not we're in Cordova; go ahead\r\n // and determine that state now.\r\n const isCordova = await _isCordova();\r\n this.underlyingResolver = isCordova\r\n ? this.cordovaResolver\r\n : this.browserResolver;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction unwrap(object) {\r\n return object.unwrap();\r\n}\r\nfunction wrapped(object) {\r\n return object.wrapped();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction credentialFromResponse(userCredential) {\r\n return credentialFromObject(userCredential);\r\n}\r\nfunction attachExtraErrorFields(auth, e) {\r\n var _a;\r\n // The response contains all fields from the server which may or may not\r\n // actually match the underlying type\r\n const response = (_a = e.customData) === null || _a === void 0 ? void 0 : _a._tokenResponse;\r\n if ((e === null || e === void 0 ? void 0 : e.code) === 'auth/multi-factor-auth-required') {\r\n const mfaErr = e;\r\n mfaErr.resolver = new MultiFactorResolver(auth, exp.getMultiFactorResolver(auth, e));\r\n }\r\n else if (response) {\r\n const credential = credentialFromObject(e);\r\n const credErr = e;\r\n if (credential) {\r\n credErr.credential = credential;\r\n credErr.tenantId = response.tenantId || undefined;\r\n credErr.email = response.email || undefined;\r\n credErr.phoneNumber = response.phoneNumber || undefined;\r\n }\r\n }\r\n}\r\nfunction credentialFromObject(object) {\r\n const { _tokenResponse } = (object instanceof FirebaseError ? object.customData : object);\r\n if (!_tokenResponse) {\r\n return null;\r\n }\r\n // Handle phone Auth credential responses, as they have a different format\r\n // from other backend responses (i.e. no providerId). This is also only the\r\n // case for user credentials (does not work for errors).\r\n if (!(object instanceof FirebaseError)) {\r\n if ('temporaryProof' in _tokenResponse && 'phoneNumber' in _tokenResponse) {\r\n return exp.PhoneAuthProvider.credentialFromResult(object);\r\n }\r\n }\r\n const providerId = _tokenResponse.providerId;\r\n // Email and password is not supported as there is no situation where the\r\n // server would return the password to the client.\r\n if (!providerId || providerId === exp.ProviderId.PASSWORD) {\r\n return null;\r\n }\r\n let provider;\r\n switch (providerId) {\r\n case exp.ProviderId.GOOGLE:\r\n provider = exp.GoogleAuthProvider;\r\n break;\r\n case exp.ProviderId.FACEBOOK:\r\n provider = exp.FacebookAuthProvider;\r\n break;\r\n case exp.ProviderId.GITHUB:\r\n provider = exp.GithubAuthProvider;\r\n break;\r\n case exp.ProviderId.TWITTER:\r\n provider = exp.TwitterAuthProvider;\r\n break;\r\n default:\r\n const { oauthIdToken, oauthAccessToken, oauthTokenSecret, pendingToken, nonce } = _tokenResponse;\r\n if (!oauthAccessToken &&\r\n !oauthTokenSecret &&\r\n !oauthIdToken &&\r\n !pendingToken) {\r\n return null;\r\n }\r\n // TODO(avolkovi): uncomment this and get it working with SAML & OIDC\r\n if (pendingToken) {\r\n if (providerId.startsWith('saml.')) {\r\n return exp.SAMLAuthCredential._create(providerId, pendingToken);\r\n }\r\n else {\r\n // OIDC and non-default providers excluding Twitter.\r\n return exp.OAuthCredential._fromParams({\r\n providerId,\r\n signInMethod: providerId,\r\n pendingToken,\r\n idToken: oauthIdToken,\r\n accessToken: oauthAccessToken\r\n });\r\n }\r\n }\r\n return new exp.OAuthProvider(providerId).credential({\r\n idToken: oauthIdToken,\r\n accessToken: oauthAccessToken,\r\n rawNonce: nonce\r\n });\r\n }\r\n return object instanceof FirebaseError\r\n ? provider.credentialFromError(object)\r\n : provider.credentialFromResult(object);\r\n}\r\nfunction convertCredential(auth, credentialPromise) {\r\n return credentialPromise\r\n .catch(e => {\r\n if (e instanceof FirebaseError) {\r\n attachExtraErrorFields(auth, e);\r\n }\r\n throw e;\r\n })\r\n .then(credential => {\r\n const operationType = credential.operationType;\r\n const user = credential.user;\r\n return {\r\n operationType,\r\n credential: credentialFromResponse(credential),\r\n additionalUserInfo: exp.getAdditionalUserInfo(credential),\r\n user: User.getOrCreate(user)\r\n };\r\n });\r\n}\r\nasync function convertConfirmationResult(auth, confirmationResultPromise) {\r\n const confirmationResultExp = await confirmationResultPromise;\r\n return {\r\n verificationId: confirmationResultExp.verificationId,\r\n confirm: (verificationCode) => convertCredential(auth, confirmationResultExp.confirm(verificationCode))\r\n };\r\n}\r\nclass MultiFactorResolver {\r\n constructor(auth, resolver) {\r\n this.resolver = resolver;\r\n this.auth = wrapped(auth);\r\n }\r\n get session() {\r\n return this.resolver.session;\r\n }\r\n get hints() {\r\n return this.resolver.hints;\r\n }\r\n resolveSignIn(assertion) {\r\n return convertCredential(unwrap(this.auth), this.resolver.resolveSignIn(assertion));\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass User {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n this.multiFactor = exp.multiFactor(_delegate);\r\n }\r\n static getOrCreate(user) {\r\n if (!User.USER_MAP.has(user)) {\r\n User.USER_MAP.set(user, new User(user));\r\n }\r\n return User.USER_MAP.get(user);\r\n }\r\n delete() {\r\n return this._delegate.delete();\r\n }\r\n reload() {\r\n return this._delegate.reload();\r\n }\r\n toJSON() {\r\n return this._delegate.toJSON();\r\n }\r\n getIdTokenResult(forceRefresh) {\r\n return this._delegate.getIdTokenResult(forceRefresh);\r\n }\r\n getIdToken(forceRefresh) {\r\n return this._delegate.getIdToken(forceRefresh);\r\n }\r\n linkAndRetrieveDataWithCredential(credential) {\r\n return this.linkWithCredential(credential);\r\n }\r\n async linkWithCredential(credential) {\r\n return convertCredential(this.auth, exp.linkWithCredential(this._delegate, credential));\r\n }\r\n async linkWithPhoneNumber(phoneNumber, applicationVerifier) {\r\n return convertConfirmationResult(this.auth, exp.linkWithPhoneNumber(this._delegate, phoneNumber, applicationVerifier));\r\n }\r\n async linkWithPopup(provider) {\r\n return convertCredential(this.auth, exp.linkWithPopup(this._delegate, provider, CompatPopupRedirectResolver));\r\n }\r\n async linkWithRedirect(provider) {\r\n await _savePersistenceForRedirect(exp._castAuth(this.auth));\r\n return exp.linkWithRedirect(this._delegate, provider, CompatPopupRedirectResolver);\r\n }\r\n reauthenticateAndRetrieveDataWithCredential(credential) {\r\n return this.reauthenticateWithCredential(credential);\r\n }\r\n async reauthenticateWithCredential(credential) {\r\n return convertCredential(this.auth, exp.reauthenticateWithCredential(this._delegate, credential));\r\n }\r\n reauthenticateWithPhoneNumber(phoneNumber, applicationVerifier) {\r\n return convertConfirmationResult(this.auth, exp.reauthenticateWithPhoneNumber(this._delegate, phoneNumber, applicationVerifier));\r\n }\r\n reauthenticateWithPopup(provider) {\r\n return convertCredential(this.auth, exp.reauthenticateWithPopup(this._delegate, provider, CompatPopupRedirectResolver));\r\n }\r\n async reauthenticateWithRedirect(provider) {\r\n await _savePersistenceForRedirect(exp._castAuth(this.auth));\r\n return exp.reauthenticateWithRedirect(this._delegate, provider, CompatPopupRedirectResolver);\r\n }\r\n sendEmailVerification(actionCodeSettings) {\r\n return exp.sendEmailVerification(this._delegate, actionCodeSettings);\r\n }\r\n async unlink(providerId) {\r\n await exp.unlink(this._delegate, providerId);\r\n return this;\r\n }\r\n updateEmail(newEmail) {\r\n return exp.updateEmail(this._delegate, newEmail);\r\n }\r\n updatePassword(newPassword) {\r\n return exp.updatePassword(this._delegate, newPassword);\r\n }\r\n updatePhoneNumber(phoneCredential) {\r\n return exp.updatePhoneNumber(this._delegate, phoneCredential);\r\n }\r\n updateProfile(profile) {\r\n return exp.updateProfile(this._delegate, profile);\r\n }\r\n verifyBeforeUpdateEmail(newEmail, actionCodeSettings) {\r\n return exp.verifyBeforeUpdateEmail(this._delegate, newEmail, actionCodeSettings);\r\n }\r\n get emailVerified() {\r\n return this._delegate.emailVerified;\r\n }\r\n get isAnonymous() {\r\n return this._delegate.isAnonymous;\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get phoneNumber() {\r\n return this._delegate.phoneNumber;\r\n }\r\n get providerData() {\r\n return this._delegate.providerData;\r\n }\r\n get refreshToken() {\r\n return this._delegate.refreshToken;\r\n }\r\n get tenantId() {\r\n return this._delegate.tenantId;\r\n }\r\n get displayName() {\r\n return this._delegate.displayName;\r\n }\r\n get email() {\r\n return this._delegate.email;\r\n }\r\n get photoURL() {\r\n return this._delegate.photoURL;\r\n }\r\n get providerId() {\r\n return this._delegate.providerId;\r\n }\r\n get uid() {\r\n return this._delegate.uid;\r\n }\r\n get auth() {\r\n return this._delegate.auth;\r\n }\r\n}\r\n// Maintain a map so that there's always a 1:1 mapping between new User and\r\n// legacy compat users\r\nUser.USER_MAP = new WeakMap();\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst _assert$1 = exp._assert;\r\nclass Auth {\r\n constructor(app, provider) {\r\n this.app = app;\r\n if (provider.isInitialized()) {\r\n this._delegate = provider.getImmediate();\r\n this.linkUnderlyingAuth();\r\n return;\r\n }\r\n const { apiKey } = app.options;\r\n // TODO: platform needs to be determined using heuristics\r\n _assert$1(apiKey, \"invalid-api-key\" /* exp.AuthErrorCode.INVALID_API_KEY */, {\r\n appName: app.name\r\n });\r\n // TODO: platform needs to be determined using heuristics\r\n _assert$1(apiKey, \"invalid-api-key\" /* exp.AuthErrorCode.INVALID_API_KEY */, {\r\n appName: app.name\r\n });\r\n // Only use a popup/redirect resolver in browser environments\r\n const resolver = typeof window !== 'undefined' ? CompatPopupRedirectResolver : undefined;\r\n this._delegate = provider.initialize({\r\n options: {\r\n persistence: buildPersistenceHierarchy(apiKey, app.name),\r\n popupRedirectResolver: resolver\r\n }\r\n });\r\n this._delegate._updateErrorMap(exp.debugErrorMap);\r\n this.linkUnderlyingAuth();\r\n }\r\n get emulatorConfig() {\r\n return this._delegate.emulatorConfig;\r\n }\r\n get currentUser() {\r\n if (!this._delegate.currentUser) {\r\n return null;\r\n }\r\n return User.getOrCreate(this._delegate.currentUser);\r\n }\r\n get languageCode() {\r\n return this._delegate.languageCode;\r\n }\r\n set languageCode(languageCode) {\r\n this._delegate.languageCode = languageCode;\r\n }\r\n get settings() {\r\n return this._delegate.settings;\r\n }\r\n get tenantId() {\r\n return this._delegate.tenantId;\r\n }\r\n set tenantId(tid) {\r\n this._delegate.tenantId = tid;\r\n }\r\n useDeviceLanguage() {\r\n this._delegate.useDeviceLanguage();\r\n }\r\n signOut() {\r\n return this._delegate.signOut();\r\n }\r\n useEmulator(url, options) {\r\n exp.connectAuthEmulator(this._delegate, url, options);\r\n }\r\n applyActionCode(code) {\r\n return exp.applyActionCode(this._delegate, code);\r\n }\r\n checkActionCode(code) {\r\n return exp.checkActionCode(this._delegate, code);\r\n }\r\n confirmPasswordReset(code, newPassword) {\r\n return exp.confirmPasswordReset(this._delegate, code, newPassword);\r\n }\r\n async createUserWithEmailAndPassword(email, password) {\r\n return convertCredential(this._delegate, exp.createUserWithEmailAndPassword(this._delegate, email, password));\r\n }\r\n fetchProvidersForEmail(email) {\r\n return this.fetchSignInMethodsForEmail(email);\r\n }\r\n fetchSignInMethodsForEmail(email) {\r\n return exp.fetchSignInMethodsForEmail(this._delegate, email);\r\n }\r\n isSignInWithEmailLink(emailLink) {\r\n return exp.isSignInWithEmailLink(this._delegate, emailLink);\r\n }\r\n async getRedirectResult() {\r\n _assert$1(_isPopupRedirectSupported(), this._delegate, \"operation-not-supported-in-this-environment\" /* exp.AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n const credential = await exp.getRedirectResult(this._delegate, CompatPopupRedirectResolver);\r\n if (!credential) {\r\n return {\r\n credential: null,\r\n user: null\r\n };\r\n }\r\n return convertCredential(this._delegate, Promise.resolve(credential));\r\n }\r\n // This function should only be called by frameworks (e.g. FirebaseUI-web) to log their usage.\r\n // It is not intended for direct use by developer apps. NO jsdoc here to intentionally leave it\r\n // out of autogenerated documentation pages to reduce accidental misuse.\r\n addFrameworkForLogging(framework) {\r\n exp.addFrameworkForLogging(this._delegate, framework);\r\n }\r\n onAuthStateChanged(nextOrObserver, errorFn, completed) {\r\n const { next, error, complete } = wrapObservers(nextOrObserver, errorFn, completed);\r\n return this._delegate.onAuthStateChanged(next, error, complete);\r\n }\r\n onIdTokenChanged(nextOrObserver, errorFn, completed) {\r\n const { next, error, complete } = wrapObservers(nextOrObserver, errorFn, completed);\r\n return this._delegate.onIdTokenChanged(next, error, complete);\r\n }\r\n sendSignInLinkToEmail(email, actionCodeSettings) {\r\n return exp.sendSignInLinkToEmail(this._delegate, email, actionCodeSettings);\r\n }\r\n sendPasswordResetEmail(email, actionCodeSettings) {\r\n return exp.sendPasswordResetEmail(this._delegate, email, actionCodeSettings || undefined);\r\n }\r\n async setPersistence(persistence) {\r\n _validatePersistenceArgument(this._delegate, persistence);\r\n let converted;\r\n switch (persistence) {\r\n case Persistence.SESSION:\r\n converted = exp.browserSessionPersistence;\r\n break;\r\n case Persistence.LOCAL:\r\n // Not using isIndexedDBAvailable() since it only checks if indexedDB is defined.\r\n const isIndexedDBFullySupported = await exp\r\n ._getInstance(exp.indexedDBLocalPersistence)\r\n ._isAvailable();\r\n converted = isIndexedDBFullySupported\r\n ? exp.indexedDBLocalPersistence\r\n : exp.browserLocalPersistence;\r\n break;\r\n case Persistence.NONE:\r\n converted = exp.inMemoryPersistence;\r\n break;\r\n default:\r\n return exp._fail(\"argument-error\" /* exp.AuthErrorCode.ARGUMENT_ERROR */, {\r\n appName: this._delegate.name\r\n });\r\n }\r\n return this._delegate.setPersistence(converted);\r\n }\r\n signInAndRetrieveDataWithCredential(credential) {\r\n return this.signInWithCredential(credential);\r\n }\r\n signInAnonymously() {\r\n return convertCredential(this._delegate, exp.signInAnonymously(this._delegate));\r\n }\r\n signInWithCredential(credential) {\r\n return convertCredential(this._delegate, exp.signInWithCredential(this._delegate, credential));\r\n }\r\n signInWithCustomToken(token) {\r\n return convertCredential(this._delegate, exp.signInWithCustomToken(this._delegate, token));\r\n }\r\n signInWithEmailAndPassword(email, password) {\r\n return convertCredential(this._delegate, exp.signInWithEmailAndPassword(this._delegate, email, password));\r\n }\r\n signInWithEmailLink(email, emailLink) {\r\n return convertCredential(this._delegate, exp.signInWithEmailLink(this._delegate, email, emailLink));\r\n }\r\n signInWithPhoneNumber(phoneNumber, applicationVerifier) {\r\n return convertConfirmationResult(this._delegate, exp.signInWithPhoneNumber(this._delegate, phoneNumber, applicationVerifier));\r\n }\r\n async signInWithPopup(provider) {\r\n _assert$1(_isPopupRedirectSupported(), this._delegate, \"operation-not-supported-in-this-environment\" /* exp.AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n return convertCredential(this._delegate, exp.signInWithPopup(this._delegate, provider, CompatPopupRedirectResolver));\r\n }\r\n async signInWithRedirect(provider) {\r\n _assert$1(_isPopupRedirectSupported(), this._delegate, \"operation-not-supported-in-this-environment\" /* exp.AuthErrorCode.OPERATION_NOT_SUPPORTED */);\r\n await _savePersistenceForRedirect(this._delegate);\r\n return exp.signInWithRedirect(this._delegate, provider, CompatPopupRedirectResolver);\r\n }\r\n updateCurrentUser(user) {\r\n // remove ts-ignore once overloads are defined for exp functions to accept compat objects\r\n // @ts-ignore\r\n return this._delegate.updateCurrentUser(user);\r\n }\r\n verifyPasswordResetCode(code) {\r\n return exp.verifyPasswordResetCode(this._delegate, code);\r\n }\r\n unwrap() {\r\n return this._delegate;\r\n }\r\n _delete() {\r\n return this._delegate._delete();\r\n }\r\n linkUnderlyingAuth() {\r\n this._delegate.wrapped = () => this;\r\n }\r\n}\r\nAuth.Persistence = Persistence;\r\nfunction wrapObservers(nextOrObserver, error, complete) {\r\n let next = nextOrObserver;\r\n if (typeof nextOrObserver !== 'function') {\r\n ({ next, error, complete } = nextOrObserver);\r\n }\r\n // We know 'next' is now a function\r\n const oldNext = next;\r\n const newNext = (user) => oldNext(user && User.getOrCreate(user));\r\n return {\r\n next: newNext,\r\n error: error,\r\n complete\r\n };\r\n}\r\nfunction buildPersistenceHierarchy(apiKey, appName) {\r\n // Note this is slightly different behavior: in this case, the stored\r\n // persistence is checked *first* rather than last. This is because we want\r\n // to prefer stored persistence type in the hierarchy. This is an empty\r\n // array if window is not available or there is no pending redirect\r\n const persistences = _getPersistencesFromRedirect(apiKey, appName);\r\n // If \"self\" is available, add indexedDB\r\n if (typeof self !== 'undefined' &&\r\n !persistences.includes(exp.indexedDBLocalPersistence)) {\r\n persistences.push(exp.indexedDBLocalPersistence);\r\n }\r\n // If \"window\" is available, add HTML Storage persistences\r\n if (typeof window !== 'undefined') {\r\n for (const persistence of [\r\n exp.browserLocalPersistence,\r\n exp.browserSessionPersistence\r\n ]) {\r\n if (!persistences.includes(persistence)) {\r\n persistences.push(persistence);\r\n }\r\n }\r\n }\r\n // Add in-memory as a final fallback\r\n if (!persistences.includes(exp.inMemoryPersistence)) {\r\n persistences.push(exp.inMemoryPersistence);\r\n }\r\n return persistences;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PhoneAuthProvider {\r\n constructor() {\r\n this.providerId = 'phone';\r\n // TODO: remove ts-ignore when moving types from auth-types to auth-compat\r\n // @ts-ignore\r\n this._delegate = new exp.PhoneAuthProvider(unwrap(firebase.auth()));\r\n }\r\n static credential(verificationId, verificationCode) {\r\n return exp.PhoneAuthProvider.credential(verificationId, verificationCode);\r\n }\r\n verifyPhoneNumber(phoneInfoOptions, applicationVerifier) {\r\n return this._delegate.verifyPhoneNumber(\r\n // The implementation matches but the types are subtly incompatible\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n phoneInfoOptions, applicationVerifier);\r\n }\r\n unwrap() {\r\n return this._delegate;\r\n }\r\n}\r\nPhoneAuthProvider.PHONE_SIGN_IN_METHOD = exp.PhoneAuthProvider.PHONE_SIGN_IN_METHOD;\r\nPhoneAuthProvider.PROVIDER_ID = exp.PhoneAuthProvider.PROVIDER_ID;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst _assert = exp._assert;\r\nclass RecaptchaVerifier {\r\n constructor(container, parameters, app = firebase.app()) {\r\n var _a;\r\n // API key is required for web client RPC calls.\r\n _assert((_a = app.options) === null || _a === void 0 ? void 0 : _a.apiKey, \"invalid-api-key\" /* exp.AuthErrorCode.INVALID_API_KEY */, {\r\n appName: app.name\r\n });\r\n this._delegate = new exp.RecaptchaVerifier(container, \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n parameters, \r\n // TODO: remove ts-ignore when moving types from auth-types to auth-compat\r\n // @ts-ignore\r\n app.auth());\r\n this.type = this._delegate.type;\r\n }\r\n clear() {\r\n this._delegate.clear();\r\n }\r\n render() {\r\n return this._delegate.render();\r\n }\r\n verify() {\r\n return this._delegate.verify();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst AUTH_TYPE = 'auth-compat';\r\n// Create auth components to register with firebase.\r\n// Provides Auth public APIs.\r\nfunction registerAuthCompat(instance) {\r\n instance.INTERNAL.registerComponent(new Component(AUTH_TYPE, container => {\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const authProvider = container.getProvider('auth');\r\n return new Auth(app, authProvider);\r\n }, \"PUBLIC\" /* ComponentType.PUBLIC */)\r\n .setServiceProps({\r\n ActionCodeInfo: {\r\n Operation: {\r\n EMAIL_SIGNIN: exp.ActionCodeOperation.EMAIL_SIGNIN,\r\n PASSWORD_RESET: exp.ActionCodeOperation.PASSWORD_RESET,\r\n RECOVER_EMAIL: exp.ActionCodeOperation.RECOVER_EMAIL,\r\n REVERT_SECOND_FACTOR_ADDITION: exp.ActionCodeOperation.REVERT_SECOND_FACTOR_ADDITION,\r\n VERIFY_AND_CHANGE_EMAIL: exp.ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL,\r\n VERIFY_EMAIL: exp.ActionCodeOperation.VERIFY_EMAIL\r\n }\r\n },\r\n EmailAuthProvider: exp.EmailAuthProvider,\r\n FacebookAuthProvider: exp.FacebookAuthProvider,\r\n GithubAuthProvider: exp.GithubAuthProvider,\r\n GoogleAuthProvider: exp.GoogleAuthProvider,\r\n OAuthProvider: exp.OAuthProvider,\r\n SAMLAuthProvider: exp.SAMLAuthProvider,\r\n PhoneAuthProvider: PhoneAuthProvider,\r\n PhoneMultiFactorGenerator: exp.PhoneMultiFactorGenerator,\r\n RecaptchaVerifier: RecaptchaVerifier,\r\n TwitterAuthProvider: exp.TwitterAuthProvider,\r\n Auth,\r\n AuthCredential: exp.AuthCredential,\r\n Error: FirebaseError\r\n })\r\n .setInstantiationMode(\"LAZY\" /* InstantiationMode.LAZY */)\r\n .setMultipleInstances(false));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterAuthCompat(firebase);\n//# sourceMappingURL=index.esm2017.js.map\n","\"use client\"\nimport t from\"prop-types\";import e from\"react\";import{resolve as n,Location as r,Link as o}from\"@gatsbyjs/reach-router\";import{applyTrailingSlashOption as s}from\"gatsby-page-utils/apply-trailing-slash-option\";function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i.apply(this,arguments)}function a(t){let e=t||\"/\",n=\"\",r=\"\";const o=e.indexOf(\"#\");-1!==o&&(r=e.slice(o),e=e.slice(0,o));const s=e.indexOf(\"?\");return-1!==s&&(n=e.slice(s),e=e.slice(0,s)),{pathname:e,search:\"?\"===n?\"\":n,hash:\"#\"===r?\"\":r}}const c=/^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/,l=t=>{if(\"string\"==typeof t)return!(t=>c.test(t))(t)},p=()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __BASE_PATH__?__BASE_PATH__:void 0:__BASE_PATH__,h=()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __PATH_PREFIX__?__PATH_PREFIX__:void 0:__PATH_PREFIX__;function f(t,e=p()){var n;if(!l(t))return t;if(t.startsWith(\"./\")||t.startsWith(\"../\"))return t;const r=null!=(n=null!=e?e:h())?n:\"/\";return`${null!=r&&r.endsWith(\"/\")?r.slice(0,-1):r}${t.startsWith(\"/\")?t:`/${t}`}`}const u=t=>null==t?void 0:t.startsWith(\"/\"),_=()=>\"undefined\"!=typeof __TRAILING_SLASH__?__TRAILING_SLASH__:void 0;function d(t,e){const{pathname:n,search:r,hash:o}=a(t);return`${s(n,e)}${r}${o}`}const m=(t,e)=>\"number\"==typeof t?t:l(t)?u(t)?function(t){const e=f(t),n=_();return\"always\"===n||\"never\"===n?d(e,n):e}(t):function(t,e){if(u(t))return t;const r=_(),o=n(t,e);return\"always\"===r||\"never\"===r?d(o,r):o}(t,e):t,y=[\"to\",\"getProps\",\"onClick\",\"onMouseEnter\",\"activeClassName\",\"activeStyle\",\"innerRef\",\"partiallyActive\",\"state\",\"replace\",\"_location\"];function v(t){return f(t,h())}const b={activeClassName:t.string,activeStyle:t.object,partiallyActive:t.bool};function w(t){/*#__PURE__*/return e.createElement(r,null,({location:n})=>/*#__PURE__*/e.createElement(P,i({},t,{_location:n})))}class P extends e.Component{constructor(t){super(t),this.defaultGetProps=({isPartiallyCurrent:t,isCurrent:e})=>(this.props.partiallyActive?t:e)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(\" \"),style:i({},this.props.style,this.props.activeStyle)}:null;let e=!1;\"undefined\"!=typeof window&&window.IntersectionObserver&&(e=!0),this.state={IOSupported:e},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let t=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(t=this.props._location.pathname+this.props._location.search);const e=a(m(this.props.to,t)),n=e.pathname+e.search;if(t!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:t,el:e}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),t.unobserve(e),t.disconnect()}handleRef(t){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,\"current\")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=((t,e)=>{const n=new window.IntersectionObserver(n=>{n.forEach(n=>{t===n.target&&e(n.isIntersecting||n.intersectionRatio>0)})});return n.observe(t),{instance:n,el:t}})(t,t=>{t?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()}))}render(){const t=this.props,{to:n,getProps:r=this.defaultGetProps,onClick:s,onMouseEnter:c,state:p,replace:h,_location:f}=t,u=function(t,e){if(null==t)return{};var n,r,o={},s=Object.keys(t);for(r=0;r<s.length;r++)e.indexOf(n=s[r])>=0||(o[n]=t[n]);return o}(t,y);\"production\"===process.env.NODE_ENV||l(n)||console.warn(`External link ${n} was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links`);const _=m(n,f.pathname);return l(_)?/*#__PURE__*/e.createElement(o,i({to:_,state:p,getProps:r,innerRef:this.handleRef,onMouseEnter:t=>{c&&c(t);const e=a(_);___loader.hovering(e.pathname+e.search)},onClick:t=>{if(s&&s(t),!(0!==t.button||this.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();let e=h;const n=encodeURI(_)===f.pathname;\"boolean\"!=typeof h&&n&&(e=!0),window.___navigate(_,{state:p,replace:e})}return!0}},u)):/*#__PURE__*/e.createElement(\"a\",i({href:_},u))}}P.propTypes=i({},b,{onClick:t.func,to:t.string.isRequired,replace:t.bool,state:t.object});const E=e.forwardRef((t,n)=>/*#__PURE__*/e.createElement(w,i({innerRef:n},t))),g=(t,e)=>{window.___navigate(m(t,window.location.pathname),e)};export{E as Link,g as navigate,a as parsePath,v as withAssetPrefix,f as withPrefix};\n//# sourceMappingURL=index.modern.mjs.map\n","\"use client\"\nimport t,{useEffect as e}from\"react\";import{Location as n,useLocation as r}from\"@gatsbyjs/reach-router\";function o(){return o=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o.apply(this,arguments)}const a=new Map,l={get:t=>a.get(t)||[],set(t,e){const n=a.get(t)||[];n.push(e),a.set(t,n)},delete(t){a.delete(t)}},s=\"undefined\"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(t){const e=Date.now();return setTimeout(function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})},1)};var c;!function(t){t.postHydrate=\"post-hydrate\",t.idle=\"idle\",t.offMainThread=\"off-main-thread\"}(c||(c={}));const i=new Set([\"src\",\"strategy\",\"dangerouslySetInnerHTML\",\"children\",\"onLoad\",\"onError\"]),u=new Set,d=new Map;function f(e){/*#__PURE__*/return t.createElement(n,null,()=>/*#__PURE__*/t.createElement(p,e))}function p(n){const{src:a,strategy:i=c.postHydrate}=n||{},{pathname:u}=r();if(e(()=>{let t;switch(i){case c.postHydrate:t=y(n);break;case c.idle:s(()=>{t=y(n)});break;case c.offMainThread:{const t=b(n);l.set(u,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener(\"load\",n)),r&&(null==e||e.removeEventListener(\"error\",r)),null==e||e.remove()}},[]),i===c.offMainThread){const e=m(n),r=b(n);return\"undefined\"==typeof window&&l.set(u,r),/*#__PURE__*/t.createElement(\"script\",e?o({type:\"text/partytown\",\"data-strategy\":i,crossOrigin:\"anonymous\"},r,{dangerouslySetInnerHTML:{__html:m(n)}}):o({type:\"text/partytown\",src:h(a),\"data-strategy\":i,crossOrigin:\"anonymous\"},r))}return null}function y(t){const{id:e,src:n,strategy:r=c.postHydrate,onLoad:a,onError:l}=t||{},s=e||n,i=[\"load\",\"error\"],f={load:a,error:l};if(s){for(const t of i)if(null!=f&&f[t]){var p;const e=d.get(s)||{},{callbacks:n=[]}=(null==e?void 0:e[t])||{};var y,h;n.push(null==f?void 0:f[t]),null!=e&&null!=(p=e[t])&&p.event?null==f||null==(y=f[t])||y.call(f,null==e||null==(h=e[t])?void 0:h.event):d.set(s,o({},e,{[t]:{callbacks:n}}))}if(u.has(s))return null}const v=m(t),k=b(t),w=document.createElement(\"script\");e&&(w.id=e),w.dataset.strategy=r;for(const[t,e]of Object.entries(k))w.setAttribute(t,e);v&&(w.textContent=v),n&&(w.src=n);const C={};if(s){for(const t of i){const e=e=>g(e,s,t);w.addEventListener(t,e),C[`${t}Callback`]=e}u.add(s)}return document.body.appendChild(w),{script:w,loadCallback:C.loadCallback,errorCallback:C.errorCallback}}function m(t){const{dangerouslySetInnerHTML:e,children:n=\"\"}=t||{},{__html:r=\"\"}=e||{};return r||n}function b(t){const e={};for(const[n,r]of Object.entries(t))i.has(n)||(e[n]=r);return e}function h(t){if(t)return`/__third-party-proxy?url=${encodeURIComponent(t)}`}function g(t,e,n){const r=d.get(e)||{};for(const e of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;e(t)}d.set(e,{[n]:{event:t}})}export{f as Script,c as ScriptStrategy,l as collectedScriptsByPage,u as scriptCache,d as scriptCallbackCache};\n//# sourceMappingURL=index.modern.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\nfunction baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n}\n\nexport default baseInRange;\n","import baseInRange from './_baseInRange.js';\nimport toFinite from './toFinite.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\nfunction inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n}\n\nexport default inRange;\n","import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import apply from './_apply.js';\nimport castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n}\n\nexport default baseInvoke;\n","import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\nvar invoke = baseRest(baseInvoke);\n\nexport default invoke;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n","import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n","import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nexport default baseSome;\n","import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n","import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n","import baseDifference from './_baseDifference.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nexport default without;\n","\"use client\";import i from\"react\";import _n from\"react-dom\";var{entries:ke,setPrototypeOf:Ne,isFrozen:Ze,getPrototypeOf:Je,getOwnPropertyDescriptor:Qe}=Object,{freeze:O,seal:X,create:Be}=Object,{apply:ce,construct:de}=typeof Reflect!=\"undefined\"&&Reflect;O||(O=function(n){return n});X||(X=function(n){return n});ce||(ce=function(n,t,a){return n.apply(t,a)});de||(de=function(n,t){return new n(...t)});var Zt=F(Array.prototype.forEach),De=F(Array.prototype.pop),jt=F(Array.prototype.push),te=F(String.prototype.toLowerCase),ae=F(String.prototype.toString),Ie=F(String.prototype.match),$t=F(String.prototype.replace),tn=F(String.prototype.indexOf),en=F(String.prototype.trim),Q=F(Object.prototype.hasOwnProperty),U=F(RegExp.prototype.test),Vt=nn(TypeError);function F(r){return function(n){for(var t=arguments.length,a=new Array(t>1?t-1:0),g=1;g<t;g++)a[g-1]=arguments[g];return ce(r,n,a)}}function nn(r){return function(){for(var n=arguments.length,t=new Array(n),a=0;a<n;a++)t[a]=arguments[a];return de(r,t)}}function d(r,n){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:te;Ne&&Ne(r,null);let a=n.length;for(;a--;){let g=n[a];if(typeof g==\"string\"){let E=t(g);E!==g&&(Ze(n)||(n[a]=E),g=E)}r[g]=!0}return r}function on(r){for(let n=0;n<r.length;n++)Q(r,n)||(r[n]=null);return r}function Nt(r){let n=Be(null);for(let[t,a]of ke(r))Q(r,t)&&(Array.isArray(a)?n[t]=on(a):a&&typeof a==\"object\"&&a.constructor===Object?n[t]=Nt(a):n[t]=a);return n}function Jt(r,n){for(;r!==null;){let a=Qe(r,n);if(a){if(a.get)return F(a.get);if(typeof a.value==\"function\")return F(a.value)}r=Je(r)}function t(){return null}return t}var Ce=O([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),re=O([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),se=O([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),an=O([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),ie=O([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\",\"mprescripts\"]),rn=O([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),Le=O([\"#text\"]),Me=O([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"nonce\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"xmlns\",\"slot\"]),le=O([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"targetx\",\"targety\",\"transform\",\"transform-origin\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),Pe=O([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),Qt=O([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),sn=X(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),ln=X(/<%[\\w\\W]*|[\\w\\W]*%>/gm),cn=X(/\\${[\\w\\W]*}/gm),dn=X(/^data-[\\-\\w.\\u00B7-\\uFFFF]/),un=X(/^aria-[\\-\\w]+$/),He=X(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),fn=X(/^(?:\\w+script|data):/i),mn=X(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),Ue=X(/^html$/i),pn=X(/^[a-z][a-z\\d]*(-[a-z\\d]+)+$/i),Oe=Object.freeze({__proto__:null,MUSTACHE_EXPR:sn,ERB_EXPR:ln,TMPLIT_EXPR:cn,DATA_ATTR:dn,ARIA_ATTR:un,IS_ALLOWED_URI:He,IS_SCRIPT_OR_DATA:fn,ATTR_WHITESPACE:mn,DOCTYPE_NAME:Ue,CUSTOM_ELEMENT:pn}),gn=function(){return typeof window==\"undefined\"?null:window},hn=function(n,t){if(typeof n!=\"object\"||typeof n.createPolicy!=\"function\")return null;let a=null,g=\"data-tt-policy-suffix\";t&&t.hasAttribute(g)&&(a=t.getAttribute(g));let E=\"dompurify\"+(a?\"#\"+a:\"\");try{return n.createPolicy(E,{createHTML(y){return y},createScriptURL(y){return y}})}catch(y){return console.warn(\"TrustedTypes policy \"+E+\" could not be created.\"),null}};function Fe(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:gn(),n=l=>Fe(l);if(n.version=\"3.0.10\",n.removed=[],!r||!r.document||r.document.nodeType!==9)return n.isSupported=!1,n;let{document:t}=r,a=t,g=a.currentScript,{DocumentFragment:E,HTMLTemplateElement:y,Node:A,Element:T,NodeFilter:mt,NamedNodeMap:wt=r.NamedNodeMap||r.MozNamedAttrMap,HTMLFormElement:Dt,DOMParser:It,trustedTypes:f}=r,st=T.prototype,Ct=Jt(st,\"cloneNode\"),Bt=Jt(st,\"nextSibling\"),Ht=Jt(st,\"childNodes\"),pt=Jt(st,\"parentNode\");if(typeof y==\"function\"){let l=t.createElement(\"template\");l.content&&l.content.ownerDocument&&(t=l.content.ownerDocument)}let R,it=\"\",{implementation:k,createNodeIterator:lt,createDocumentFragment:m,getElementsByTagName:z}=t,{importNode:Ut}=a,P={};n.isSupported=typeof ke==\"function\"&&typeof pt==\"function\"&&k&&k.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:N,ERB_EXPR:q,TMPLIT_EXPR:gt,DATA_ATTR:Lt,ARIA_ATTR:ct,IS_SCRIPT_OR_DATA:et,ATTR_WHITESPACE:xt,CUSTOM_ELEMENT:W}=Oe,{IS_ALLOWED_URI:nt}=Oe,v=null,b=d({},[...Ce,...re,...se,...ie,...Le]),u=null,D=d({},[...Me,...le,...Pe,...Qt]),p=Object.seal(Be(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),C=null,w=null,ht=!0,I=!0,Y=!1,Tt=!0,bt=!1,G=!1,Ft=!1,Mt=!1,ot=!1,Z=!1,vt=!1,dt=!0,zt=!1,ee=\"user-content-\",Pt=!0,yt=!1,Et={},at=null,J=d({},[\"annotation-xml\",\"audio\",\"colgroup\",\"desc\",\"foreignobject\",\"head\",\"iframe\",\"math\",\"mi\",\"mn\",\"mo\",\"ms\",\"mtext\",\"noembed\",\"noframes\",\"noscript\",\"plaintext\",\"script\",\"style\",\"svg\",\"template\",\"thead\",\"title\",\"video\",\"xmp\"]),Kt=null,Wt=d({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]),Ot=null,Yt=d({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"role\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),At=\"http://www.w3.org/1998/Math/MathML\",_t=\"http://www.w3.org/2000/svg\",j=\"http://www.w3.org/1999/xhtml\",ut=j,kt=!1,c=null,_=d({},[At,_t,j],ae),S=null,$=[\"application/xhtml+xml\",\"text/html\"],V=\"text/html\",h=null,rt=null,qt=t.createElement(\"form\"),pe=function(e){return e instanceof RegExp||e instanceof Function},ne=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(rt&&rt===e)){if((!e||typeof e!=\"object\")&&(e={}),e=Nt(e),S=$.indexOf(e.PARSER_MEDIA_TYPE)===-1?V:e.PARSER_MEDIA_TYPE,h=S===\"application/xhtml+xml\"?ae:te,v=Q(e,\"ALLOWED_TAGS\")?d({},e.ALLOWED_TAGS,h):b,u=Q(e,\"ALLOWED_ATTR\")?d({},e.ALLOWED_ATTR,h):D,c=Q(e,\"ALLOWED_NAMESPACES\")?d({},e.ALLOWED_NAMESPACES,ae):_,Ot=Q(e,\"ADD_URI_SAFE_ATTR\")?d(Nt(Yt),e.ADD_URI_SAFE_ATTR,h):Yt,Kt=Q(e,\"ADD_DATA_URI_TAGS\")?d(Nt(Wt),e.ADD_DATA_URI_TAGS,h):Wt,at=Q(e,\"FORBID_CONTENTS\")?d({},e.FORBID_CONTENTS,h):J,C=Q(e,\"FORBID_TAGS\")?d({},e.FORBID_TAGS,h):{},w=Q(e,\"FORBID_ATTR\")?d({},e.FORBID_ATTR,h):{},Et=Q(e,\"USE_PROFILES\")?e.USE_PROFILES:!1,ht=e.ALLOW_ARIA_ATTR!==!1,I=e.ALLOW_DATA_ATTR!==!1,Y=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Tt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,bt=e.SAFE_FOR_TEMPLATES||!1,G=e.WHOLE_DOCUMENT||!1,ot=e.RETURN_DOM||!1,Z=e.RETURN_DOM_FRAGMENT||!1,vt=e.RETURN_TRUSTED_TYPE||!1,Mt=e.FORCE_BODY||!1,dt=e.SANITIZE_DOM!==!1,zt=e.SANITIZE_NAMED_PROPS||!1,Pt=e.KEEP_CONTENT!==!1,yt=e.IN_PLACE||!1,nt=e.ALLOWED_URI_REGEXP||He,ut=e.NAMESPACE||j,p=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&pe(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(p.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&pe(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(p.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==\"boolean\"&&(p.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),bt&&(I=!1),Z&&(ot=!0),Et&&(v=d({},Le),u=[],Et.html===!0&&(d(v,Ce),d(u,Me)),Et.svg===!0&&(d(v,re),d(u,le),d(u,Qt)),Et.svgFilters===!0&&(d(v,se),d(u,le),d(u,Qt)),Et.mathMl===!0&&(d(v,ie),d(u,Pe),d(u,Qt))),e.ADD_TAGS&&(v===b&&(v=Nt(v)),d(v,e.ADD_TAGS,h)),e.ADD_ATTR&&(u===D&&(u=Nt(u)),d(u,e.ADD_ATTR,h)),e.ADD_URI_SAFE_ATTR&&d(Ot,e.ADD_URI_SAFE_ATTR,h),e.FORBID_CONTENTS&&(at===J&&(at=Nt(at)),d(at,e.FORBID_CONTENTS,h)),Pt&&(v[\"#text\"]=!0),G&&d(v,[\"html\",\"head\",\"body\"]),v.table&&(d(v,[\"tbody\"]),delete C.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=\"function\")throw Vt('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=\"function\")throw Vt('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');R=e.TRUSTED_TYPES_POLICY,it=R.createHTML(\"\")}else R===void 0&&(R=hn(f,g)),R!==null&&typeof it==\"string\"&&(it=R.createHTML(\"\"));O&&O(e),rt=e}},ge=d({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),he=d({},[\"foreignobject\",\"desc\",\"title\",\"annotation-xml\"]),Ve=d({},[\"title\",\"style\",\"font\",\"a\",\"script\"]),Te=d({},[...re,...se,...an]),be=d({},[...ie,...rn]),Xe=function(e){let o=pt(e);(!o||!o.tagName)&&(o={namespaceURI:ut,tagName:\"template\"});let s=te(e.tagName),x=te(o.tagName);return c[e.namespaceURI]?e.namespaceURI===_t?o.namespaceURI===j?s===\"svg\":o.namespaceURI===At?s===\"svg\"&&(x===\"annotation-xml\"||ge[x]):!!Te[s]:e.namespaceURI===At?o.namespaceURI===j?s===\"math\":o.namespaceURI===_t?s===\"math\"&&he[x]:!!be[s]:e.namespaceURI===j?o.namespaceURI===_t&&!he[x]||o.namespaceURI===At&&!ge[x]?!1:!be[s]&&(Ve[s]||!Te[s]):!!(S===\"application/xhtml+xml\"&&c[e.namespaceURI]):!1},St=function(e){jt(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(o){e.remove()}},oe=function(e,o){try{jt(n.removed,{attribute:o.getAttributeNode(e),from:o})}catch(s){jt(n.removed,{attribute:null,from:o})}if(o.removeAttribute(e),e===\"is\"&&!u[e])if(ot||Z)try{St(o)}catch(s){}else try{o.setAttribute(e,\"\")}catch(s){}},ye=function(e){let o=null,s=null;if(Mt)e=\"<remove></remove>\"+e;else{let M=Ie(e,/^[\\r\\n\\t ]+/);s=M&&M[0]}S===\"application/xhtml+xml\"&&ut===j&&(e='<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>'+e+\"</body></html>\");let x=R?R.createHTML(e):e;if(ut===j)try{o=new It().parseFromString(x,S)}catch(M){}if(!o||!o.documentElement){o=k.createDocument(ut,\"template\",null);try{o.documentElement.innerHTML=kt?it:x}catch(M){}}let L=o.body||o.documentElement;return e&&s&&L.insertBefore(t.createTextNode(s),L.childNodes[0]||null),ut===j?z.call(o,G?\"html\":\"body\")[0]:G?o.documentElement:L},Ee=function(e){return lt.call(e.ownerDocument||e,e,mt.SHOW_ELEMENT|mt.SHOW_COMMENT|mt.SHOW_TEXT|mt.SHOW_PROCESSING_INSTRUCTION,null)},Ke=function(e){return e instanceof Dt&&(typeof e.nodeName!=\"string\"||typeof e.textContent!=\"string\"||typeof e.removeChild!=\"function\"||!(e.attributes instanceof wt)||typeof e.removeAttribute!=\"function\"||typeof e.setAttribute!=\"function\"||typeof e.namespaceURI!=\"string\"||typeof e.insertBefore!=\"function\"||typeof e.hasChildNodes!=\"function\")},we=function(e){return typeof A==\"function\"&&e instanceof A},ft=function(e,o,s){P[e]&&Zt(P[e],x=>{x.call(n,o,s,rt)})},xe=function(e){let o=null;if(ft(\"beforeSanitizeElements\",e,null),Ke(e))return St(e),!0;let s=h(e.nodeName);if(ft(\"uponSanitizeElement\",e,{tagName:s,allowedTags:v}),e.hasChildNodes()&&!we(e.firstElementChild)&&U(/<[/\\w]/g,e.innerHTML)&&U(/<[/\\w]/g,e.textContent))return St(e),!0;if(!v[s]||C[s]){if(!C[s]&&Ae(s)&&(p.tagNameCheck instanceof RegExp&&U(p.tagNameCheck,s)||p.tagNameCheck instanceof Function&&p.tagNameCheck(s)))return!1;if(Pt&&!at[s]){let x=pt(e)||e.parentNode,L=Ht(e)||e.childNodes;if(L&&x){let M=L.length;for(let B=M-1;B>=0;--B)x.insertBefore(Ct(L[B],!0),Bt(e))}}return St(e),!0}return e instanceof T&&!Xe(e)||(s===\"noscript\"||s===\"noembed\"||s===\"noframes\")&&U(/<\\/no(script|embed|frames)/i,e.innerHTML)?(St(e),!0):(bt&&e.nodeType===3&&(o=e.textContent,Zt([N,q,gt],x=>{o=$t(o,x,\" \")}),e.textContent!==o&&(jt(n.removed,{element:e.cloneNode()}),e.textContent=o)),ft(\"afterSanitizeElements\",e,null),!1)},ve=function(e,o,s){if(dt&&(o===\"id\"||o===\"name\")&&(s in t||s in qt))return!1;if(!(I&&!w[o]&&U(Lt,o))){if(!(ht&&U(ct,o))){if(!u[o]||w[o]){if(!(Ae(e)&&(p.tagNameCheck instanceof RegExp&&U(p.tagNameCheck,e)||p.tagNameCheck instanceof Function&&p.tagNameCheck(e))&&(p.attributeNameCheck instanceof RegExp&&U(p.attributeNameCheck,o)||p.attributeNameCheck instanceof Function&&p.attributeNameCheck(o))||o===\"is\"&&p.allowCustomizedBuiltInElements&&(p.tagNameCheck instanceof RegExp&&U(p.tagNameCheck,s)||p.tagNameCheck instanceof Function&&p.tagNameCheck(s))))return!1}else if(!Ot[o]){if(!U(nt,$t(s,xt,\"\"))){if(!((o===\"src\"||o===\"xlink:href\"||o===\"href\")&&e!==\"script\"&&tn(s,\"data:\")===0&&Kt[e])){if(!(Y&&!U(et,$t(s,xt,\"\")))){if(s)return!1}}}}}}return!0},Ae=function(e){return e!==\"annotation-xml\"&&Ie(e,W)},_e=function(e){ft(\"beforeSanitizeAttributes\",e,null);let{attributes:o}=e;if(!o)return;let s={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:u},x=o.length;for(;x--;){let L=o[x],{name:M,namespaceURI:B,value:Rt}=L,Gt=h(M),H=M===\"value\"?Rt:en(Rt);if(s.attrName=Gt,s.attrValue=H,s.keepAttr=!0,s.forceKeepAttr=void 0,ft(\"uponSanitizeAttribute\",e,s),H=s.attrValue,s.forceKeepAttr||(oe(M,e),!s.keepAttr))continue;if(!Tt&&U(/\\/>/i,H)){oe(M,e);continue}bt&&Zt([N,q,gt],Re=>{H=$t(H,Re,\" \")});let Se=h(e.nodeName);if(ve(Se,Gt,H)){if(zt&&(Gt===\"id\"||Gt===\"name\")&&(oe(M,e),H=ee+H),R&&typeof f==\"object\"&&typeof f.getAttributeType==\"function\"&&!B)switch(f.getAttributeType(Se,Gt)){case\"TrustedHTML\":{H=R.createHTML(H);break}case\"TrustedScriptURL\":{H=R.createScriptURL(H);break}}try{B?e.setAttributeNS(B,M,H):e.setAttribute(M,H),De(n.removed)}catch(Re){}}}ft(\"afterSanitizeAttributes\",e,null)},qe=function l(e){let o=null,s=Ee(e);for(ft(\"beforeSanitizeShadowDOM\",e,null);o=s.nextNode();)ft(\"uponSanitizeShadowNode\",o,null),!xe(o)&&(o.content instanceof E&&l(o.content),_e(o));ft(\"afterSanitizeShadowDOM\",e,null)};return n.sanitize=function(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=null,s=null,x=null,L=null;if(kt=!l,kt&&(l=\"<!-->\"),typeof l!=\"string\"&&!we(l))if(typeof l.toString==\"function\"){if(l=l.toString(),typeof l!=\"string\")throw Vt(\"dirty is not a string, aborting\")}else throw Vt(\"toString is not a function\");if(!n.isSupported)return l;if(Ft||ne(e),n.removed=[],typeof l==\"string\"&&(yt=!1),yt){if(l.nodeName){let Rt=h(l.nodeName);if(!v[Rt]||C[Rt])throw Vt(\"root node is forbidden and cannot be sanitized in-place\")}}else if(l instanceof A)o=ye(\"<!---->\"),s=o.ownerDocument.importNode(l,!0),s.nodeType===1&&s.nodeName===\"BODY\"||s.nodeName===\"HTML\"?o=s:o.appendChild(s);else{if(!ot&&!bt&&!G&&l.indexOf(\"<\")===-1)return R&&vt?R.createHTML(l):l;if(o=ye(l),!o)return ot?null:vt?it:\"\"}o&&Mt&&St(o.firstChild);let M=Ee(yt?l:o);for(;x=M.nextNode();)xe(x)||(x.content instanceof E&&qe(x.content),_e(x));if(yt)return l;if(ot){if(Z)for(L=m.call(o.ownerDocument);o.firstChild;)L.appendChild(o.firstChild);else L=o;return(u.shadowroot||u.shadowrootmode)&&(L=Ut.call(a,L,!0)),L}let B=G?o.outerHTML:o.innerHTML;return G&&v[\"!doctype\"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&U(Ue,o.ownerDocument.doctype.name)&&(B=\"<!DOCTYPE \"+o.ownerDocument.doctype.name+`>\n`+B),bt&&Zt([N,q,gt],Rt=>{B=$t(B,Rt,\" \")}),R&&vt?R.createHTML(B):B},n.setConfig=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ne(l),Ft=!0},n.clearConfig=function(){rt=null,Ft=!1},n.isValidAttribute=function(l,e,o){rt||ne({});let s=h(l),x=h(e);return ve(s,x,o)},n.addHook=function(l,e){typeof e==\"function\"&&(P[l]=P[l]||[],jt(P[l],e))},n.removeHook=function(l){if(P[l])return De(P[l])},n.removeHooks=function(l){P[l]&&(P[l]=[])},n.removeAllHooks=function(){P={}},n}var ze=Fe();import tt from\"react\";var We=r=>{switch(r){case\"success\":return bn;case\"info\":return En;case\"warning\":return yn;case\"error\":return wn;default:return null}},Tn=Array(12).fill(0),Ye=({visible:r})=>tt.createElement(\"div\",{className:\"sonner-loading-wrapper\",\"data-visible\":r},tt.createElement(\"div\",{className:\"sonner-spinner\"},Tn.map((n,t)=>tt.createElement(\"div\",{className:\"sonner-loading-bar\",key:`spinner-bar-${t}`})))),bn=tt.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},tt.createElement(\"path\",{fillRule:\"evenodd\",d:\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",clipRule:\"evenodd\"})),yn=tt.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"currentColor\",height:\"20\",width:\"20\"},tt.createElement(\"path\",{fillRule:\"evenodd\",d:\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",clipRule:\"evenodd\"})),En=tt.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},tt.createElement(\"path\",{fillRule:\"evenodd\",d:\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",clipRule:\"evenodd\"})),wn=tt.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},tt.createElement(\"path\",{fillRule:\"evenodd\",d:\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",clipRule:\"evenodd\"}));import Ge from\"react\";var je=()=>{let[r,n]=Ge.useState(!1);return Ge.useEffect(()=>{let t=()=>{n(document.hidden)};return document.addEventListener(\"visibilitychange\",t),()=>window.removeEventListener(\"visibilitychange\",t)},[]),r};var ue=1,fe=class{constructor(){this.subscribe=n=>(this.subscribers.push(n),()=>{let t=this.subscribers.indexOf(n);this.subscribers.splice(t,1)});this.publish=n=>{this.subscribers.forEach(t=>t(n))};this.addToast=n=>{this.publish(n),this.toasts=[...this.toasts,n]};this.create=n=>{var A;let{message:t,...a}=n,g=typeof(n==null?void 0:n.id)==\"number\"||((A=n.id)==null?void 0:A.length)>0?n.id:ue++,E=this.toasts.find(T=>T.id===g),y=n.dismissible===void 0?!0:n.dismissible;return E?this.toasts=this.toasts.map(T=>T.id===g?(this.publish({...T,...n,id:g,title:t}),{...T,...n,id:g,dismissible:y,title:t}):T):this.addToast({title:t,...a,dismissible:y,id:g}),g};this.dismiss=n=>(n||this.toasts.forEach(t=>{this.subscribers.forEach(a=>a({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:n,dismiss:!0})),n);this.message=(n,t)=>this.create({...t,message:n});this.error=(n,t)=>this.create({...t,message:n,type:\"error\"});this.success=(n,t)=>this.create({...t,type:\"success\",message:n});this.info=(n,t)=>this.create({...t,type:\"info\",message:n});this.warning=(n,t)=>this.create({...t,type:\"warning\",message:n});this.loading=(n,t)=>this.create({...t,type:\"loading\",message:n});this.promise=(n,t)=>{if(!t)return;let a;t.loading!==void 0&&(a=this.create({...t,promise:n,type:\"loading\",message:t.loading,description:typeof t.description!=\"function\"?t.description:void 0}));let g=n instanceof Promise?n:n(),E=a!==void 0;return g.then(y=>{if(y&&typeof y.ok==\"boolean\"&&!y.ok){E=!1;let A=typeof t.error==\"function\"?t.error(`HTTP error! status: ${y.status}`):t.error,T=typeof t.description==\"function\"?t.description(`HTTP error! status: ${y.status}`):t.description;this.create({id:a,type:\"error\",message:A,description:T})}else if(t.success!==void 0){E=!1;let A=typeof t.success==\"function\"?t.success(y):t.success,T=typeof t.description==\"function\"?t.description(y):t.description;this.create({id:a,type:\"success\",message:A,description:T})}}).catch(y=>{if(t.error!==void 0){E=!1;let A=typeof t.error==\"function\"?t.error(y):t.error,T=typeof t.description==\"function\"?t.description(y):t.description;this.create({id:a,type:\"error\",message:A,description:T})}}).finally(()=>{var y;E&&(this.dismiss(a),a=void 0),(y=t.finally)==null||y.call(t)}),a};this.custom=(n,t)=>{let a=(t==null?void 0:t.id)||ue++;return this.create({jsx:n(a),id:a,...t}),a};this.subscribers=[],this.toasts=[]}},K=new fe,xn=(r,n)=>{let t=(n==null?void 0:n.id)||ue++;return K.addToast({title:r,...n,id:t}),t},vn=xn,An=Object.assign(vn,{success:K.success,info:K.info,warning:K.warning,error:K.error,custom:K.custom,message:K.message,promise:K.promise,dismiss:K.dismiss,loading:K.loading});function me(r,{insertAt:n}={}){if(!r||typeof document==\"undefined\")return;let t=document.head||document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.type=\"text/css\",n===\"top\"&&t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.styleSheet?a.styleSheet.cssText=r:a.appendChild(document.createTextNode(r))}me(`:where(html[dir=\"ltr\"]),:where([data-sonner-toaster][dir=\"ltr\"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=\"rtl\"]),:where([data-sonner-toaster][dir=\"rtl\"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position=\"right\"]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=\"left\"]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=\"center\"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=\"top\"]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=\"bottom\"]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=\"true\"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=\"top\"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=\"bottom\"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=\"true\"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=\"dark\"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=\"true\"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=\"true\"]):before{content:\"\";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=\"top\"][data-swiping=\"true\"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=\"bottom\"][data-swiping=\"true\"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=\"false\"][data-removed=\"true\"]):before{content:\"\";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:\"\";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=\"true\"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"][data-styled=\"true\"])>*{opacity:0}:where([data-sonner-toast][data-visible=\"false\"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=\"true\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"true\"][data-swipe-out=\"false\"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"false\"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset: 16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-rich-colors=true] [data-sonner-toast][data-type=success],[data-rich-colors=true] [data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true] [data-sonner-toast][data-type=info],[data-rich-colors=true] [data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true] [data-sonner-toast][data-type=warning],[data-rich-colors=true] [data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true] [data-sonner-toast][data-type=error],[data-rich-colors=true] [data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\n`);function Xt(r){return r.label!==void 0&&typeof r.onClick==\"function\"}var Sn=3,Rn=\"32px\",Nn=4e3,Dn=356,In=14,Cn=20,Ln=200;function Mn(...r){return r.filter(Boolean).join(\" \")}var Pn=r=>{var Ot,Yt,At,_t,j,ut,kt;let{invert:n,toast:t,unstyled:a,interacting:g,setHeights:E,visibleToasts:y,heights:A,index:T,toasts:mt,expanded:wt,removeToast:Dt,closeButton:It,style:f,cancelButtonStyle:st,actionButtonStyle:Ct,className:Bt=\"\",descriptionClassName:Ht=\"\",duration:pt,position:R,gap:it,loadingIcon:k,expandByDefault:lt,classNames:m,icons:z,closeButtonAriaLabel:Ut=\"Close toast\",pauseWhenPageIsHidden:P,cn:N}=r,[q,gt]=i.useState(!1),[Lt,ct]=i.useState(!1),[et,xt]=i.useState(!1),[W,nt]=i.useState(!1),[v,b]=i.useState(0),[u,D]=i.useState(0),p=i.useRef(null),C=i.useRef(null),w=T===0,ht=T+1<=y,I=t.type,Y=t.dismissible!==!1,Tt=t.className||\"\",bt=t.descriptionClassName||\"\",G=i.useMemo(()=>A.findIndex(c=>c.toastId===t.id)||0,[A,t.id]),Ft=i.useMemo(()=>{var c;return(c=t.closeButton)!=null?c:It},[t.closeButton,It]),Mt=i.useMemo(()=>t.duration||pt||Nn,[t.duration,pt]),ot=i.useRef(0),Z=i.useRef(0),vt=i.useRef(0),dt=i.useRef(null),[zt,ee]=R.split(\"-\"),Pt=i.useMemo(()=>A.reduce((c,_,S)=>S>=G?c:c+_.height,0),[A,G]),yt=je(),Et=t.invert||n,at=I===\"loading\";Z.current=i.useMemo(()=>G*it+Pt,[G,Pt]),i.useEffect(()=>{gt(!0)},[]),i.useLayoutEffect(()=>{if(!q)return;let c=C.current,_=c.style.height;c.style.height=\"auto\";let S=c.getBoundingClientRect().height;c.style.height=_,D(S),E($=>$.find(h=>h.toastId===t.id)?$.map(h=>h.toastId===t.id?{...h,height:S}:h):[{toastId:t.id,height:S,position:t.position},...$])},[q,t.title,t.description,E,t.id]);let J=i.useCallback(()=>{ct(!0),b(Z.current),E(c=>c.filter(_=>_.toastId!==t.id)),setTimeout(()=>{Dt(t)},Ln)},[t,Dt,E,Z]);i.useEffect(()=>{if(t.promise&&I===\"loading\"||t.duration===1/0||t.type===\"loading\")return;let c,_=Mt;return wt||g||P&&yt?(()=>{if(vt.current<ot.current){let V=new Date().getTime()-ot.current;_=_-V}vt.current=new Date().getTime()})():(()=>{_!==1/0&&(ot.current=new Date().getTime(),c=setTimeout(()=>{var V;(V=t.onAutoClose)==null||V.call(t,t),J()},_))})(),()=>clearTimeout(c)},[wt,g,lt,t,Mt,J,t.promise,I,P,yt]),i.useEffect(()=>{let c=C.current;if(c){let _=c.getBoundingClientRect().height;return D(_),E(S=>[{toastId:t.id,height:_,position:t.position},...S]),()=>E(S=>S.filter($=>$.toastId!==t.id))}},[E,t.id]),i.useEffect(()=>{t.delete&&J()},[J,t.delete]);function Kt(){return z!=null&&z.loading?i.createElement(\"div\",{className:\"sonner-loader\",\"data-visible\":I===\"loading\"},z.loading):k?i.createElement(\"div\",{className:\"sonner-loader\",\"data-visible\":I===\"loading\"},k):i.createElement(Ye,{visible:I===\"loading\"})}function Wt(c){return{__html:ze.sanitize(c)}}return i.createElement(\"li\",{\"aria-live\":t.important?\"assertive\":\"polite\",\"aria-atomic\":\"true\",role:\"status\",tabIndex:0,ref:C,className:N(Bt,Tt,m==null?void 0:m.toast,(Ot=t==null?void 0:t.classNames)==null?void 0:Ot.toast,m==null?void 0:m.default,m==null?void 0:m[I],(Yt=t==null?void 0:t.classNames)==null?void 0:Yt[I]),\"data-sonner-toast\":\"\",\"data-styled\":!(t.jsx||t.unstyled||a),\"data-mounted\":q,\"data-promise\":!!t.promise,\"data-removed\":Lt,\"data-visible\":ht,\"data-y-position\":zt,\"data-x-position\":ee,\"data-index\":T,\"data-front\":w,\"data-swiping\":et,\"data-dismissible\":Y,\"data-type\":I,\"data-invert\":Et,\"data-swipe-out\":W,\"data-expanded\":!!(wt||lt&&q),style:{\"--index\":T,\"--toasts-before\":T,\"--z-index\":mt.length-T,\"--offset\":`${Lt?v:Z.current}px`,\"--initial-height\":lt?\"auto\":`${u}px`,...f,...t.style},onPointerDown:c=>{at||!Y||(p.current=new Date,b(Z.current),c.target.setPointerCapture(c.pointerId),c.target.tagName!==\"BUTTON\"&&(xt(!0),dt.current={x:c.clientX,y:c.clientY}))},onPointerUp:()=>{var $,V,h,rt;if(W||!Y)return;dt.current=null;let c=Number((($=C.current)==null?void 0:$.style.getPropertyValue(\"--swipe-amount\").replace(\"px\",\"\"))||0),_=new Date().getTime()-((V=p.current)==null?void 0:V.getTime()),S=Math.abs(c)/_;if(Math.abs(c)>=Cn||S>.11){b(Z.current),(h=t.onDismiss)==null||h.call(t,t),J(),nt(!0);return}(rt=C.current)==null||rt.style.setProperty(\"--swipe-amount\",\"0px\"),xt(!1)},onPointerMove:c=>{var qt;if(!dt.current||!Y)return;let _=c.clientY-dt.current.y,S=c.clientX-dt.current.x,V=(zt===\"top\"?Math.min:Math.max)(0,_),h=c.pointerType===\"touch\"?10:2;Math.abs(V)>h?(qt=C.current)==null||qt.style.setProperty(\"--swipe-amount\",`${_}px`):Math.abs(S)>h&&(dt.current=null)}},Ft&&!t.jsx?i.createElement(\"button\",{\"aria-label\":Ut,\"data-disabled\":at,\"data-close-button\":!0,onClick:at||!Y?()=>{}:()=>{var c;J(),(c=t.onDismiss)==null||c.call(t,t)},className:N(m==null?void 0:m.closeButton,(At=t==null?void 0:t.classNames)==null?void 0:At.closeButton)},i.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"12\",height:\"12\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},i.createElement(\"line\",{x1:\"18\",y1:\"6\",x2:\"6\",y2:\"18\"}),i.createElement(\"line\",{x1:\"6\",y1:\"6\",x2:\"18\",y2:\"18\"}))):null,t.jsx||i.isValidElement(t.title)?t.jsx||t.title:i.createElement(i.Fragment,null,I||t.icon||t.promise?i.createElement(\"div\",{\"data-icon\":\"\",className:N(m==null?void 0:m.icon)},t.promise||t.type===\"loading\"&&!t.icon?t.icon||Kt():null,t.type!==\"loading\"?t.icon||(z==null?void 0:z[I])||We(I):null):null,i.createElement(\"div\",{\"data-content\":\"\",className:N(m==null?void 0:m.content)},i.createElement(\"div\",{\"data-title\":\"\",className:N(m==null?void 0:m.title,(_t=t==null?void 0:t.classNames)==null?void 0:_t.title),dangerouslySetInnerHTML:Wt(t.title)}),t.description?i.createElement(\"div\",{\"data-description\":\"\",className:N(Ht,bt,m==null?void 0:m.description,(j=t==null?void 0:t.classNames)==null?void 0:j.description),dangerouslySetInnerHTML:Wt(t.description)}):null),i.isValidElement(t.cancel)?t.cancel:t.cancel&&Xt(t.cancel)?i.createElement(\"button\",{\"data-button\":!0,\"data-cancel\":!0,style:t.cancelButtonStyle||st,onClick:c=>{Xt(t.cancel)&&Y&&(J(),t.cancel.onClick(c))},className:N(m==null?void 0:m.cancelButton,(ut=t==null?void 0:t.classNames)==null?void 0:ut.cancelButton)},t.cancel.label):null,i.isValidElement(t.action)?t.action:t.action&&Xt(t.action)?i.createElement(\"button\",{\"data-button\":\"\",style:t.actionButtonStyle||Ct,onClick:c=>{Xt(t.action)&&(t.action.onClick(c),!c.defaultPrevented&&J())},className:N(m==null?void 0:m.actionButton,(kt=t==null?void 0:t.classNames)==null?void 0:kt.actionButton)},t.action.label):null))};function $e(){if(typeof window==\"undefined\"||typeof document==\"undefined\")return\"ltr\";let r=document.documentElement.getAttribute(\"dir\");return r===\"auto\"||!r?window.getComputedStyle(document.documentElement).direction:r}var Jn=r=>{let{invert:n,position:t=\"bottom-right\",hotkey:a=[\"altKey\",\"KeyT\"],expand:g,closeButton:E,className:y,offset:A,theme:T=\"light\",richColors:mt,duration:wt,style:Dt,visibleToasts:It=Sn,toastOptions:f,dir:st=$e(),gap:Ct=In,loadingIcon:Bt,icons:Ht,containerAriaLabel:pt=\"Notifications\",pauseWhenPageIsHidden:R,cn:it=Mn}=r,[k,lt]=i.useState([]),m=i.useMemo(()=>Array.from(new Set([t].concat(k.filter(b=>b.position).map(b=>b.position)))),[k,t]),[z,Ut]=i.useState([]),[P,N]=i.useState(!1),[q,gt]=i.useState(!1),[Lt,ct]=i.useState(T!==\"system\"?T:typeof window!=\"undefined\"&&window.matchMedia&&window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"),et=i.useRef(null),xt=a.join(\"+\").replace(/Key/g,\"\").replace(/Digit/g,\"\"),W=i.useRef(null),nt=i.useRef(!1),v=i.useCallback(b=>lt(u=>u.filter(({id:D})=>D!==b.id)),[]);return i.useEffect(()=>K.subscribe(b=>{if(b.dismiss){lt(u=>u.map(D=>D.id===b.id?{...D,delete:!0}:D));return}setTimeout(()=>{_n.flushSync(()=>{lt(u=>{let D=u.findIndex(p=>p.id===b.id);return D!==-1?[...u.slice(0,D),{...u[D],...b},...u.slice(D+1)]:[b,...u]})})})}),[]),i.useEffect(()=>{if(T!==\"system\"){ct(T);return}T===\"system\"&&(window.matchMedia&&window.matchMedia(\"(prefers-color-scheme: dark)\").matches?ct(\"dark\"):ct(\"light\")),typeof window!=\"undefined\"&&window.matchMedia(\"(prefers-color-scheme: dark)\").addEventListener(\"change\",({matches:b})=>{ct(b?\"dark\":\"light\")})},[T]),i.useEffect(()=>{k.length<=1&&N(!1)},[k]),i.useEffect(()=>{let b=u=>{var p,C;a.every(w=>u[w]||u.code===w)&&(N(!0),(p=et.current)==null||p.focus()),u.code===\"Escape\"&&(document.activeElement===et.current||(C=et.current)!=null&&C.contains(document.activeElement))&&N(!1)};return document.addEventListener(\"keydown\",b),()=>document.removeEventListener(\"keydown\",b)},[a]),i.useEffect(()=>{if(et.current)return()=>{W.current&&(W.current.focus({preventScroll:!0}),W.current=null,nt.current=!1)}},[et.current]),k.length?i.createElement(\"section\",{\"aria-label\":`${pt} ${xt}`,tabIndex:-1},m.map((b,u)=>{var C;let[D,p]=b.split(\"-\");return i.createElement(\"ol\",{key:b,dir:st===\"auto\"?$e():st,tabIndex:-1,ref:et,className:y,\"data-sonner-toaster\":!0,\"data-theme\":Lt,\"data-rich-colors\":mt,\"data-y-position\":D,\"data-x-position\":p,style:{\"--front-toast-height\":`${((C=z[0])==null?void 0:C.height)||0}px`,\"--offset\":typeof A==\"number\"?`${A}px`:A||Rn,\"--width\":`${Dn}px`,\"--gap\":`${Ct}px`,...Dt},onBlur:w=>{nt.current&&!w.currentTarget.contains(w.relatedTarget)&&(nt.current=!1,W.current&&(W.current.focus({preventScroll:!0}),W.current=null))},onFocus:w=>{w.target instanceof HTMLElement&&w.target.dataset.dismissible===\"false\"||nt.current||(nt.current=!0,W.current=w.relatedTarget)},onMouseEnter:()=>N(!0),onMouseMove:()=>N(!0),onMouseLeave:()=>{q||N(!1)},onPointerDown:w=>{w.target instanceof HTMLElement&&w.target.dataset.dismissible===\"false\"||gt(!0)},onPointerUp:()=>gt(!1)},k.filter(w=>!w.position&&u===0||w.position===b).map((w,ht)=>{var I,Y;return i.createElement(Pn,{key:w.id,icons:Ht,index:ht,toast:w,duration:(I=f==null?void 0:f.duration)!=null?I:wt,className:f==null?void 0:f.className,descriptionClassName:f==null?void 0:f.descriptionClassName,invert:n,visibleToasts:It,closeButton:(Y=f==null?void 0:f.closeButton)!=null?Y:E,interacting:q,position:b,style:f==null?void 0:f.style,unstyled:f==null?void 0:f.unstyled,classNames:f==null?void 0:f.classNames,cancelButtonStyle:f==null?void 0:f.cancelButtonStyle,actionButtonStyle:f==null?void 0:f.actionButtonStyle,removeToast:v,toasts:k.filter(Tt=>Tt.position==w.position),heights:z.filter(Tt=>Tt.position==w.position),setHeights:Ut,expandByDefault:g,gap:Ct,loadingIcon:Bt,expanded:P,pauseWhenPageIsHidden:R,cn:it})}))})):null};export{Jn as Toaster,An as toast};\n/*! Bundled license information:\n\ndompurify/dist/purify.es.mjs:\n (*! @license DOMPurify 3.0.10 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.10/LICENSE *)\n*/\n//# sourceMappingURL=index.mjs.map"],"names":["EventEmitter","this","_events","_maxListeners","undefined","isFunction","arg","isObject","isUndefined","module","exports","prototype","defaultMaxListeners","setMaxListeners","n","isNaN","TypeError","emit","type","er","handler","len","args","i","listeners","error","length","arguments","Error","err","context","call","Array","slice","apply","addListener","listener","m","newListener","push","warned","console","trace","on","once","fired","g","removeListener","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","hiddenStyles","display","HiddenText","_ref","id","value","style","LiveRegion","announcement","ariaLiveType","width","height","margin","border","padding","overflow","clip","clipPath","whiteSpace","role","DndMonitorContext","createContext","defaultScreenReaderInstructions","draggable","defaultAnnouncements","onDragStart","active","onDragOver","_ref2","over","onDragEnd","_ref3","onDragCancel","_ref4","Accessibility","announcements","container","hiddenTextDescribedById","screenReaderInstructions","announce","setAnnouncement","useState","useCallback","useAnnouncement","liveRegionId","mounted","setMounted","useEffect","registerListener","useContext","useDndMonitor","useMemo","onDragMove","_ref5","_ref6","markup","createPortal","Action","noop","useSensor","sensor","options","useSensors","_len","sensors","_key","filter","defaultCoordinates","Object","freeze","x","y","distanceBetween","p1","p2","Math","sqrt","pow","sortCollisionsAsc","data","a","b","sortCollisionsDesc","cornersOfRectangle","left","top","centerOfRectangle","rect","closestCenter","collisionRect","droppableRects","droppableContainers","centerRect","collisions","droppableContainer","get","distBetween","sort","getIntersectionRatio","entry","target","max","right","min","bottom","targetArea","entryArea","intersectionArea","Number","toFixed","rectIntersection","intersectionRatio","isPointWithinRect","point","pointerWithin","pointerCoordinates","distances","reduce","accumulator","corner","effectiveDistance","getRectDelta","rect1","rect2","createRectAdjustmentFn","modifier","adjustments","acc","adjustment","getAdjustedRect","parseTransform","transform","startsWith","transformArray","split","scaleX","scaleY","defaultOptions","ignoreTransform","getClientRect","element","getBoundingClientRect","transformOrigin","getComputedStyle","parsedTransform","translateX","translateY","parseFloat","indexOf","w","h","inverseTransform","getTransformAgnosticClientRect","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","node","scrollingElement","includes","computedStyle","overflowRegex","some","property","test","isScrollable","isFixed","parentNode","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","window","getScrollXCoordinate","scrollX","scrollLeft","getScrollYCoordinate","scrollY","scrollTop","getScrollCoordinates","Direction","isDocumentScrollingElement","document","getScrollPosition","scrollingContainer","minScroll","dimensions","innerHeight","innerWidth","clientHeight","clientWidth","maxScroll","scrollWidth","scrollHeight","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","Backward","abs","Forward","getScrollElementRect","getScrollOffsets","scrollableAncestors","scrollIntoViewIfNeeded","measure","scrollIntoView","block","inline","properties","Rect","constructor","scrollOffsets","axis","keys","getScrollOffset","defineProperty","currentOffsets","scrollOffsetsDeltla","enumerable","Listeners","removeAll","forEach","_this$target","removeEventListener","add","eventName","_this$target2","addEventListener","hasExceededDistance","delta","measurement","dx","dy","EventName","KeyboardCode","preventDefault","event","stopPropagation","defaultKeyboardCodes","start","Space","Enter","cancel","Esc","end","defaultKeyboardCoordinateGetter","currentCoordinates","code","Right","Left","Down","Up","KeyboardSensor","props","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","bind","handleCancel","attach","handleStart","Resize","VisibilityChange","setTimeout","Keydown","activeNode","onStart","current","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","scrollTo","behavior","scrollBy","handleMove","coordinates","onMove","onEnd","detach","onCancel","isDistanceConstraint","constraint","Boolean","isDelayConstraint","activators","onActivation","nativeEvent","activator","activatorNode","AbstractPointerSensor","events","listenerTarget","_getEventCoordinates","EventTarget","getEventListenerTarget","activated","initialCoordinates","timeoutId","documentListeners","handleKeydown","removeTextSelection","activationConstraint","bypassActivationConstraint","move","name","passive","DragStart","ContextMenu","delay","clearTimeout","Click","capture","SelectionChange","_getEventCoordinates2","tolerance","distance","cancelable","_this$document$getSel","getSelection","removeAllRanges","PointerSensor","super","isPrimary","button","events$1","MouseButton","RightClick","events$2","AutoScrollActivator","TraversalOrder","useAutoScroller","Pointer","canScroll","draggingRect","enabled","interval","order","TreeOrder","scrollableAncestorRects","scrollIntent","disabled","previousDelta","previousIntent","defaultScrollIntent","sign","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","useRef","scrollDirection","DraggableRect","scrollContainerRef","autoScroll","sortedScrollableAncestors","reverse","index","JSON","stringify","setup","touches","MeasuringStrategy","MeasuringFrequency","defaultValue","Map","useInitialValue","computeFn","previousValue","useResizeObserver","callback","handleResize","resizeObserver","ResizeObserver","disconnect","defaultMeasure","useRect","fallbackRect","measureRect","useReducer","currentRect","isConnected","newRect","mutationObserver","handleMutations","MutationObserver","useMutationObserver","records","record","HTMLElement","contains","observe","body","childList","subtree","defaultValue$1","useScrollOffsetsDelta","dependencies","initialScrollOffsets","hasScrollOffsets","useWindowRect","getWindowClientRect","defaultValue$2","getMeasurableNode","children","firstChild","defaultSensors","defaultData","defaultMeasuringConfiguration","droppable","strategy","WhileDragging","frequency","Optimized","dragOverlay","DroppableContainersMap","_super$get","toArray","from","values","getEnabled","getNodeFor","_this$get$node$curren","_this$get","defaultPublicContext","activatorEvent","activeNodeRect","containerNodeRect","draggableNodes","nodeRef","setRef","measuringConfiguration","measureDroppableContainers","windowRect","measuringScheduled","defaultInternalContext","ariaDescribedById","dispatch","InternalContext","PublicContext","getInitialState","nodes","translate","containers","reducer","state","action","DragMove","DragEnd","DragCancel","RegisterDroppable","set","SetDroppableDisabled","UnregisterDroppable","delete","RestoreFocus","previousActivatorEvent","previousActiveId","activeElement","draggableNode","requestAnimationFrame","focusableNode","focus","applyModifiers","modifiers","ActiveDraggableContext","Status","DndContext","memo","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","collisionDetection","measuring","store","dispatchMonitorEvent","registerMonitorListener","Set","_listener$type","useDndMonitorProvider","status","setStatus","Uninitialized","isInitialized","Initialized","activeId","activeRects","initial","translated","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","config","dragging","queue","setQueue","containersRef","Always","BeforeDragging","isDisabled","disabledRef","ids","concat","map","useDroppableMeasuring","cachedNode","useCachedNode","activationCoordinates","autoScrollOptions","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","getAutoScrollerOptions","initialActiveNodeRect","useInitialRect","initialRect","initialized","rectDelta","useLayoutShiftScrollCompensation","layoutShiftCompensation","parentElement","sensorContext","draggingNode","draggingNodeRect","scrollAdjustedTranslate","overNode","setRect","entries","handleNodeChange","useDragOverlayMeasuring","usesDragOverlay","nodeRectDelta","previousNode","ancestors","useScrollableAncestors","elements","firstElement","rects","measureRects","useRects","modifiedTranslate","overlayNodeRect","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","previousElements","cleanup","scrollableElement","useScrollOffsets","scrollAdjustment","activeNodeScrollDelta","overId","firstCollision","getFirstCollision","setOver","adjustScale","instantiateSensor","Sensor","sensorInstance","unstable_batchedUpdates","Initializing","createHandler","async","cancelDrop","Promise","resolve","bindActivatorToSensorInstantiator","activeDraggableNode","dndKit","defaultPrevented","activationContext","capturedBy","getSyntheticHandler","useCombineActivators","teardownFns","teardown","useSensorSetup","overContainer","publicContext","internalContext","Provider","restoreFocus","NullContext","defaultRole","ID_PREFIX","useDraggable","attributes","roleDescription","tabIndex","isDragging","setNodeRef","setActivatorNodeRef","useSyntheticListeners","dataRef","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","timeout","useDroppable","resizeObserverConfig","previous","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","isArray","newElement","previousElement","unobserve","isOver","arrayMove","array","to","newArray","getSortedRects","items","isValidIndex","rectSortingStrategy","activeIndex","overIndex","newRects","oldRect","defaultScale$1","verticalListSortingStrategy","_rects$activeIndex","fallbackActiveRect","overIndexRect","itemGap","clientRects","previousRect","nextRect","getItemGap$1","Context","containerId","disableTransforms","useDragOverlay","sortedRects","SortableContext","userDefinedItems","disabledProp","item","previousItemsRef","itemsHaveChanged","itemsEqual","normalizeDisabled","contextValue","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","newIndex","previousItems","previousContainerId","transition","defaultTransition","duration","easing","transitionProperty","disabledTransition","Transition","toString","defaultAttributes","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","globalDisabled","globalStrategy","_localDisabled$dragga","_localDisabled$droppa","normalizeLocalDisabled","sortable","itemsAfterCurrentSortable","setDroppableNodeRef","setDraggableNodeRef","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","finalTransform","shouldAnimateLayoutChanges","derivedTransform","setDerivedtransform","previousIndex","useDerivedTransform","getTransition","useCombinedRefs","refs","ref","canUseDOM","createElement","isWindow","elementString","isNode","getWindow","_target$ownerDocument","_target$ownerDocument2","ownerDocument","defaultView","isDocument","Document","isHTMLElement","isSVGElement","SVGElement","getOwnerDocument","useIsomorphicLayoutEffect","useLayoutEffect","useEvent","handlerRef","useInterval","intervalRef","setInterval","clearInterval","useLatestValue","valueRef","useLazyMemo","newValue","useNodeRef","onChange","onChangeHandler","usePrevious","useUniqueId","prefix","createAdjustmentFn","object","valueAdjustment","subtract","isKeyboardEvent","KeyboardEvent","getEventCoordinates","TouchEvent","isTouchEvent","clientX","clientY","changedTouches","hasViewportRelativeCoordinates","CSS","Translate","round","Scale","Transform","join","SELECTOR","findFirstFocusableNode","matches","querySelector","stringToByteArray$1","str","out","p","c","charCodeAt","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","webSafe","init_","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","bytes","pos","c1","String","fromCharCode","c2","u","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","charAt","byte4","DecodeBase64StringError","base64urlEncodeWithoutPadding","utf8Bytes","base64Encode","replace","base64Decode","e","deepExtend","source","Date","getTime","prop","hasOwnProperty","getDefaultsFromGlobal","self","getGlobal","__FIREBASE_DEFAULTS__","getDefaults","process","defaultsJsonString","parse","getDefaultsFromEnvVariable","match","cookie","decoded","getDefaultsFromCookie","info","getDefaultAppConfig","_a","getExperimentalSetting","Deferred","reject","promise","wrapCallback","catch","createMockUserToken","token","projectId","uid","project","iat","sub","user_id","payload","assign","iss","aud","exp","auth_time","firebase","sign_in_provider","identities","alg","getUA","navigator","isMobileCordova","forceEnvironment","isBrowser","isBrowserExtension","runtime","chrome","browser","isReactNative","isIE","ua","isSafari","userAgent","isIndexedDBAvailable","indexedDB","validateIndexedDBOpenable","preExist","DB_CHECK_NAME","request","open","onsuccess","result","close","deleteDatabase","onupgradeneeded","onerror","message","FirebaseError","setPrototypeOf","captureStackTrace","ErrorFactory","create","service","serviceName","errors","fullCode","template","PATTERN","_","replaceTemplate","fullMessage","obj","isEmpty","deepEqual","aKeys","bKeys","k","aProp","bProp","thing","querystring","querystringParams","params","arrayVal","encodeURIComponent","querystringDecode","decodeURIComponent","extractQuerystring","url","queryStart","fragmentStart","substring","createSubscribe","executor","onNoObservers","proxy","ObserverProxy","subscribe","observers","unsubscribes","observerCount","task","finalized","then","next","forEachObserver","observer","complete","nextOrObserver","methods","method","implementsAnyMethods","unsub","unsubscribeOne","finalError","fn","sendOne","getModularInstance","_delegate","RefFindNode","_React$Component","_this","prevNode","_proto","componentDidMount","currentNode","innerRef","componentDidUpdate","prevProps","componentWillUnmount","render","RefForward","handleRefOverride","_this$props","_excluded","Ref","rest","child","only","ElementType","childWithProps","handleRef","isRefObject","memoize","cache","cacheDefault","serializer","serializerDefault","strategyDefault","monadic","cacheKey","computedValue","variadic","assemble","serialize","ObjectWithoutPrototypeCache","strategies","IntlErrorCode","IntlError","_super","exception","stack","UnsupportedFormatterError","UNSUPPORTED_FORMATTER","InvalidConfigError","INVALID_CONFIG","MissingDataError","MISSING_DATA","IntlFormatError","locale","FORMAT_ERROR","MessageFormatError","descriptor","defaultMessage","description","MissingTranslationError","MISSING_TRANSLATION","filterProps","allowlist","defaults","filtered","DEFAULT_INTL_CONFIG","formats","messages","timeZone","defaultLocale","defaultFormats","fallbackOnEmptyString","onError","onWarn","warning","createIntlCache","dateTime","number","relativeTime","pluralRules","displayNames","createFastMemoizeCache","createFormatters","RelativeTimeFormat","Intl","ListFormat","DisplayNames","getDateTimeFormat","_i","DateTimeFormat","getNumberFormat","NumberFormat","getPluralRules","PluralRules","getMessageFormat","locales","overrideFormats","opts","formatters","getRelativeTimeFormat","getListFormat","getDisplayNames","getNamedFormat","format","formatType","faBookmark","iconName","icon","faCompass","faStar","_typeof","Symbol","iterator","_defineProperties","configurable","writable","_defineProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","done","_iterableToArrayLimit","_nonIterableRest","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","performance","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","documentElement","head","NAMESPACE_IDENTIFIER","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","FontAwesomeConfig","attr","val","coerce","getAttribute","getAttrConfig","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","styles","hooks","shims","namespace","functions","doScroll","readyState","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","invokeCallback","subscriber","owner","settled","_state","_data","handleThenable","resolved","fulfill","reason","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","P","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","all","promises","results","remaining","race","meaninglessTransform","size","rotate","flipX","flipY","insertCss","css","setAttribute","innerHTML","headChildren","childNodes","beforeChild","tagName","toUpperCase","insertBefore","idPool","nextUniqueId","random","htmlEscape","joinStyles","styleName","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","abstract","force","fill","makeInlineSvgAbstract","_params$icons","icons","main","mask","symbol","title","maskId","titleId","extra","_params$watchable","watchable","found","isUploadedIcon","widthClass","ceil","attrClass","classes","content","uploadedIconWidthStyle","tag","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconMasking","styleString","makeIconStandard","asSymbol","offset","asIcon","noop$1","subject","initialValue","thisContext","func","d","bindInternal4","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","build","lookup","o","ligatures","ligature","hasRegular","shim","oldName","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","attributeName","trim","joinAttributes","parseTransformString","transformString","toLowerCase","parts","first","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","cx","cy","r","opacity","asFoundIcon","vectorData","class","baseStyles","dfp","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","Library","instance","Constructor","_classCallCheck","definitions","protoProps","staticProps","additions","_pullDefinitions","definition","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","html","findIconDefinition","iconLookup","_iconLookup$prefix","library","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","maybeIconDefinition","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_arrayLikeToArray","iter","minLen","_unsupportedIterableToArray","arr2","camelize","string","chr","substr","_excluded$1","normalizeIconArgs","objectWithKey","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","className","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","listItem","flip","rotation","pull","swapOpacity","classList","renderedIcon","_console","log","extraProps","defaultProps","convertCurry","displayName","propTypes","convert","mixins","attrs","pair","_extraProps$style","existingStyle","getCompositeRect","elementOrVirtualElement","offsetParent","isOffsetParentAnElement","offsetParentIsScaled","offsetWidth","offsetHeight","isElementScaled","getDocumentElement","scroll","offsets","getNodeName","isScrollParent","getWindowScroll","clientLeft","clientTop","getWindowScrollBarX","visited","requires","requiresIfExists","dep","has","depModifier","DEFAULT_OPTIONS","placement","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","popper","pending","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","listScrollParents","contextElement","merged","phase","orderModifiers","existing","_ref$options","effect","cleanupFn","noopFn","update","forceUpdate","_state$elements","getOffsetParent","getLayoutRect","reset","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","parent","rootNode","getRootNode","isSameNode","host","includeScale","isFixedStrategy","clientRect","visualViewport","addVisualOffsets","offsetLeft","offsetTop","nodeName","isTableElement","getTrueOffsetParent","isFirefox","getParentNode","perspective","contain","willChange","getContainingBlock","assignedSlot","win","pageXOffset","pageYOffset","isElement","Element","isShadowRoot","ShadowRoot","isLayoutViewport","_getComputedStyle","overflowX","overflowY","getScrollParent","_element$ownerDocumen","scrollParent","isBody","updatedList","auto","basePlacements","clippingParents","viewport","variationPlacements","placements","modifierPhases","_state$modifiersData$","arrowElement","arrow","popperOffsets","basePlacement","paddingObject","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$scroll","_options$resize","resize","hash","getOppositePlacement","matched","getOppositeVariationPlacement","_skip","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","boundary","rootBoundary","altBoundary","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","getBasePlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","getVariation","allowedPlacements","overflows","detectOverflow","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","fittingPlacement","find","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","elementContext","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getMainAxisFromPlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","within","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","math","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","computeOffsets","commonX","commonY","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","_options$altBoundary","_options$padding","mergePaddingObject","expandToHashMap","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","hashMap","getUAString","uaData","userAgentData","brands","brand","version","withinMaxClamp","v","useCallbackRef","useEventCallback","useForceUpdate","toFnRef","refA","refB","mergeRefs","useMounted","isMounted","useWillUnmount","onUnmount","useUpdatedRef","noopThunk","isRequired","and","between","booleanSome","childrenHavePropXorChildren","childrenOf","childrenOfType","childrenSequenceOf","componentWithName","disallowedIf","elementType","empty","explicitNull","forbidExtraProps","integer","keysOf","mutuallyExclusiveProps","mutuallyExclusiveTrueProps","nChildren","nonNegativeInteger","nonNegativeNumber","numericString","or","predicate","range","requiredBy","restrictedProp","sequenceOf","shape","stringEndsWith","stringStartsWith","uniqueArray","uniqueArrayOf","valuesOf","withShape","AlgoliaSearchHelper","SearchParameters","SearchResults","algoliasearchHelper","client","DerivedHelper","mainHelper","lastResults","inherits","detachDerivedHelper","getModifiedState","parameters","defaultsPure","objectHasKeys","omit","lib","addRefinement","refinementList","attribute","isRefined","valueAsString","facetRefinement","mod","removeRefinement","clearRefinement","f","toggleRefinement","refinementType","hasChanged","newRefinementList","facetList","refinementValue","containsRefinements","refinementValueAsString","intersection","merge","valToNumber","isValidUserToken","RefinementList","isEqualNumericRefinement","el","newParameters","_parseNumbers","userToken","warn","facets","disjunctiveFacets","hierarchicalFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements","paramName","isKeyKnown","PARAMETERS","isValueDefined","partialState","numbers","parsedValue","insideBoundingBox","geoRect","operators","operator","parsedValues","vPrime","make","facet","rootPath","currentRefinement","getHierarchicalRefinement","clearRefinements","toggleHierarchicalFacetRefinement","validate","currentState","tagFilters","numericFilters","patch","_clearNumericRefinements","setQueryParameters","clearTags","setIndex","setQuery","newQuery","query","setPage","newPage","page","setFacets","setDisjunctiveFacets","setHitsPerPage","hitsPerPage","setTypoTolerance","typoTolerance","addNumericRefinement","isNumericRefined","getConjunctiveRefinements","facetName","isConjunctiveFacet","getDisjunctiveRefinements","isDisjunctiveFacet","getExcludeRefinements","removeNumericRefinement","paramValue","op","getNumericRefinements","getNumericRefinement","newNumericRefinements","operatorList","outValues","addFacet","addDisjunctiveFacet","addHierarchicalFacet","hierarchicalFacet","isHierarchicalFacet","addFacetRefinement","addExcludeRefinement","addDisjunctiveFacetRefinement","addTagRefinement","isTagRefined","modification","removeFacet","removeDisjunctiveFacet","removeHierarchicalFacet","removeFacetRefinement","removeExcludeRefinement","removeDisjunctiveFacetRefinement","removeTagRefinement","t","toggleFacetRefinement","toggleConjunctiveFacetRefinement","toggleDisjunctiveFacetRefinement","toggleExcludeFacetRefinement","separator","_getHierarchicalFacetSeparator","getHierarchicalFacetByName","lastIndexOf","addHierarchicalFacetRefinement","isHierarchicalFacetRefined","removeHierarchicalFacetRefinement","toggleTagRefinement","isFacetRefined","isExcludeRefined","isDisjunctiveFacetRefined","refinements","isOperatorDefined","searchedValue","isAttributeValueDefined","currentValue","getRefinedDisjunctiveFacets","disjunctiveNumericRefinedFacets","getRefinedHierarchicalFacets","getUnrefinedDisjunctiveFacets","refinedFacets","managedParameters","getQueryParams","queryParams","setQueryParameter","parameter","nextWithNumbers","previousPlainObject","nextPlainObject","isPreviousValueDefined","isNextValueDefined","resetPage","_getHierarchicalFacetSortBy","sortBy","_getHierarchicalRootPath","_getHierarchicalShowParentLevel","showParentLevel","hierarchicalFacetName","getHierarchicalFacetBreadcrumb","refinement","part","hierarchicalFacetResult","hierarchicalFacetIndex","hierarchicalFacetRefinement","hierarchicalSeparator","hierarchicalRootPath","hierarchicalShowParentLevel","prepareHierarchicalFacetSortBy","rootExhaustive","facetResult","exhaustive","generateTreeFn","hierarchicalTree","currentHierarchicalLevel","level","picked","facetValue","tuple","parentPath","onlyMatchingTree","orderBy","facetCount","escapedValue","escapeFacetValue","count","unescapeFacetValue","generateHierarchicalTree","fv","compact","findIndex","formatSort","getIndices","indices","idx","assignFacetStats","dest","facetStats","stats","mainSubResponse","_rawResults","processingTimeMS","sum","facetsIndices","disjunctiveFacetsIndices","nextDisjunctiveResult","mainFacets","facetKey","hierarchicalAttributeName","facetValueObject","facetIndex","idxAttributeName","exhaustiveFacetsCount","isFacetDisjunctive","isFacetConjunctive","facets_stats","disjunctiveFacet","dfacet","facetResults","attributeIndex","dataFromMainRequest","refinedFacet","root","excludes","extractNormalizedFacetValues","isExcluded","hierarchicalFacetValues","currentRefinementSplit","unshift","setIsRefined","depth","recSort","sortFn","names","childNode","sortedChildren","getFacetStatsIfAvailable","getRefinement","resultsFacets","getFacetByName","DEFAULT_SORT","getFacetValues","facetValues","facetOrdering","renderingContent","getFacetOrdering","orderedFacets","remainingFacets","reverseOrder","ordering","sortRemainingBy","sortViaFacetOrdering","vanillaSortFn","getFacetStats","getRefinements","res","facetDeclaration","rootFacet","intermediateFacet","newFacet","numericValue","requestBuilder","addAlgoliaAgent","setClient","_queryId","_lastQueryIdReceived","derivedHelpers","_currentNbQueries","setCurrentPage","_change","isPageReset","getCurrentPage","search","_search","onlyWithDerivedHelpers","searchOnlyWithDerivedHelpers","getQuery","_getHitsSearchParams","searchOnce","cb","tempState","queries","_getQueries","_originalResponse","findAnswers","derivedHelper","derivedState","attributesForPrediction","nbHits","errorMessage","initIndex","queryLanguages","searchForFacetValues","maxFacetHits","userState","clientHasSFFV","clientHasInitIndex","isDisjunctive","algoliaQuery","getSearchForFacetQuery","searchForFacetValuesPromise","indexName","response","facetHits","q","addDisjunctiveRefine","addRefine","addFacetExclusion","addExclude","addTag","removeDisjunctiveRefine","removeRefine","removeFacetExclusion","removeExclude","removeTag","toggleFacetExclusion","toggleExclude","toggleRefine","toggleTag","nextPage","previousPage","setState","newState","overrideStateWithoutTriggeringChangeEvent","hasRefinements","isDisjunctiveRefined","hasTag","hasTagRefinements","getIndex","getPage","getTags","states","mainQueries","queriesCount","helper","derivedQueries","derivedStateQueries","queryId","_dispatchAlgoliaResponse","_dispatchAlgoliaError","specificResults","containsRefinement","facetFilters","_hasDisjunctiveRefinements","disjunctiveRefinements","clearCache","newClient","getClient","derive","hasPendingRequests","reduceRight","comparator","defaultInstructions","sortInstruction","matchingDefault","defaultInstruction","ctor","superCtor","arr1","isObjectOrArrayOrFunction","_merge","sourceVal","targetVal","l","compareAscending","other","valIsDefined","valIsNull","othIsDefined","othIsNull","collection","iteratees","orders","criteria","iteratee","sortObject","curr","_getDisjunctiveFacetSearchParams","filtersMap","segment","hasHierarchicalFacetFilter","filteredFacetFilters","facetFilter","filterValue","_getHitsHierarchicalFacetsAttributes","_getFacetFilters","_getNumericFilters","_getTagFilters","additionalParams","hierarchicalRootLevel","analytics","clickAnalytics","_getDisjunctiveHierarchicalFacetAttribute","vs","orFilters","attributeToRefine","attributesIndex","allAttributes","hierarchicalRefinement","newAttributes","rootLevel","parentLevel","stateForSearchForFacetValues","searchForFacetSearchParameters","facetQuery","return","localStorage","getItem","setItem","timeToLive","fromEntries","timestamp","miss","clear","removeItem","caches","shift","serializable","headers","WithinHeaders","queryParameters","WithinQueryParameters","wait","floor","cacheable","Read","Write","Any","O","lastUpdate","now","protocol","accept","I","j","D","getTimeout","statelessHosts","S","pop","transporterStackTrace","R","N","connectTimeout","timeouts","connect","responseTimeout","triesLeft","onSuccess","onRetry","isTimedOut","logger","A","hostsCache","onFail","requester","send","requestsCache","responsesCache","hosts","read","mappedRequestOptions","transporter","write","T","E","C","U","z","J","F","H","M","K","batch","hits","shouldStop","cursor","W","acl","tt","B","cluster","Q","users","G","clearExistingDictionaryEntries","requests","xt","taskID","L","operation","destination","ut","waitTask","de","V","scope","pe","Rules","Settings","X","Synonyms","Y","Z","$","objectID","et","rt","nt","at","ot","it","retrieveMappings","getClusters","appId","st","ct","ft","dt","lt","pt","ht","mt","yt","ue","gt","vt","bt","Ot","Pt","wt","It","jt","Dt","qt","St","se","_highlightResult","kt","ce","Tt","batchSize","taskIDs","objectIDs","Nt","Et","forwardToReplicas","Rt","At","Ct","Ut","zt","le","DeleteObject","Jt","Ft","Ht","Lt","Mt","Kt","paginate","ie","parseInt","nbPages","Wt","Bt","Qt","attributesToRetrieve","Gt","getVersion","Vt","_t","Xt","createIfNotExists","PartialUpdateObject","PartialUpdateObjectNoCreate","Yt","safe","autoGenerateObjectIDIfNotExist","ee","Zt","ne","clearExistingRules","$t","oe","clearExistingSynonyms","te","AddObject","UpdateObject","re","ae","replaceExistingSynonyms","fe","DeleteIndex","ClearIndex","he","me","ye","ge","apiKey","XMLHttpRequest","setRequestHeader","abort","onreadystatechange","OPENED","responseText","onload","debug","region","getPersonalizationStrategy","setPersonalizationStrategy","authMode","multipleBatch","multipleGetObjects","multipleQueries","copyIndex","copySettings","copySynonyms","copyRules","moveIndex","listIndices","getLogs","listClusters","multipleSearchForFacetValues","getApiKey","addApiKey","listApiKeys","updateApiKey","deleteApiKey","restoreApiKey","assignUserID","assignUserIDs","getUserID","searchUserIDs","listUserIDs","getTopUserIDs","removeUserID","hasPendingMappings","clearDictionaryEntries","deleteDictionaryEntries","getDictionarySettings","getAppTask","replaceDictionaryEntries","saveDictionaryEntries","searchDictionaryEntries","setDictionarySettings","waitAppTask","customRequest","getObject","getObjects","saveObject","saveObjects","setSettings","getSettings","partialUpdateObject","partialUpdateObjects","deleteObject","deleteObjects","deleteBy","clearObjects","browseObjects","getObjectPosition","findObject","exists","saveSynonym","saveSynonyms","getSynonym","searchSynonyms","browseSynonyms","deleteSynonym","clearSynonyms","replaceAllObjects","replaceAllSynonyms","searchRules","getRule","deleteRule","saveRule","saveRules","replaceAllRules","browseRules","clearRules","initAnalytics","addABTest","getABTest","getABTests","stopABTest","deleteABTest","initPersonalization","initRecommendation","CSSescape","scroller","els","sels","selectors","getElementById","anchorate","location","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","hasOwn","classNames","argType","default","toVal","mix","tmp","CAN_USE_DOM","memoized","canUsePassiveEventListeners","supportsPassiveOption","testPassiveEventListeners","ensureCanMutateNextEventHandlers","eventHandlers","handlers","nextHandlers","TargetEventHandlers","getEventHandlers","normalizedEventOptions","handleEvent","isSubscribed","EVENT_HANDLERS_KEY","eventOptions","normalizeEventOptions","escape","cssEscape","codeUnit","firstCodeUnit","factory","weekdays","months","ordinal","utcOffset","date","year","month","clone","ms","$L","utc","$u","$x","$offset","$d","NaN","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","toDate","$locale","weekStart","$set","daysInMonth","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","en","Ls","singleMatcher","multiMatcher","decodeComponents","components","decode","tokens","encodedURI","replaceMap","exec","customDecodeURIComponent","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","prev","deepmerge_1","hasPropertyDescriptors","$SyntaxError","$TypeError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","hasSymbols","toStr","defineDataProperty","supportsDescriptors","predicates","supportCustomEvent","CustomEvent","findNearestDialog","localName","safeBlur","blur","inNodeList","nodeList","isFormMethodDialog","hasAttribute","dialogPolyfillInfo","dialog","dialog_","replacedStyleTop_","openAsModal_","show","showModal","returnValue","maybeHideModal","attributeFilter","removed","downgradeModal","delayModel","ev","cand","setOpen","backdrop_","backdropClick_","createEvent","initCustomEvent","bubbles","detail","Event","zIndex","removeChild","dialogPolyfill","dm","removeDialog","removeAttribute","fake","redirectedEvent","initMouseEvent","screenX","screenY","ctrlKey","altKey","shiftKey","metaKey","relatedTarget","dispatchEvent","focus_","updateZIndex","dialogZ","backdropZ","pushDialog","invalid","ok","webkitOverflowScrolling","createsStackingContext","needsCentering","reposition","nextSibling","opt_returnValue","closeEvent","topValue","styleSheets","styleSheet","cssRules","rule","selectedNodes","querySelectorAll","selectorText","cssTop","getPropertyValue","cssBottom","isInlinePositionSetByStylesheet","HTMLDialogElement","forceRegisterDialog","pendingDialogStack","checkDOM","checkDOM_","overlay","forwardTab_","handleKey_","handleFocus_","zIndexLow_","zIndexHigh_","mo_","rec","removedNodes","DialogManager","blockDocument","unblockDocument","updateStacking","dpi","last","appendChild","containedByTopDialog_","candidate","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","keyCode","cancelEvent","allowed","formSubmitter","useValue","testForm","methodDescriptor","HTMLFormElement","realGet","realSet","form","offsetX","offsetY","nativeFormSubmit","submit","registerDialog","define","implementation","getPolyfill","polyfill","boundContains","addClass","baseVal","optionsSupported","onceSupported","wrappedHandler","__once","onceHandler","psuedoElement","doc","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","isTransform","removeProperty","cssText","hasClass","Function","qsa","selector","replaceClassName","origClass","classToRemove","removeClass","remove","emulateTransitionEnd","called","handle","initEvent","triggerEvent","listen","transitionEnd","mult","removeEmulate","isFrozen","getPrototypeOf","seal","construct","Reflect","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","numberIsNaN","thisArg","_len2","_key2","addToSet","transformCaseFunc","lcElement","cleanArray","newObject","lookupGetter","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","__proto__","NODE_TYPE","cdataSection","entityReference","entityNode","progressingInstruction","comment","documentType","documentFragment","notation","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","policyName","createHTML","createScriptURL","scriptUrl","createDOMPurify","DOMPurify","nodeType","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","NodeFilter","NamedNodeMap","MozNamedAttrMap","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","trustedTypesPolicy","emptyHTML","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","MAX_NESTING_DEPTH","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","parseFromString","createDocument","createTextNode","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","elm","__depth","__removalCount","textContent","hasChildNodes","_isNode","_executeHook","entryPoint","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","matchOperatorsRe","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","autoBom","Blob","responseType","MouseEvent","global","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","href","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","innerText","safari","FileReader","onloadend","readAsDataURL","ret","isArr","isCallable","receiver","forEachArray","forEachString","forEachObject","that","bound","boundLength","boundArgs","Empty","suffixes","option","hasTrailingSlash","endsWith","endsWithSuffixes","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","_interopRequireDefault","__esModule","ScrollContext","_assertThisInitialized2","_inheritsLoose2","React","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_propTypes","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","SessionStorage","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","_saveScroll","windowScroll","shouldUpdateScroll","scrollToHash","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","decodeURI","_this$props$location2","Component","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","storedValue","stateKeyBase","pathname","identifier","_reachRouter","useLocation","_react","onScroll","onInitialClientRender","getForwards","collectedScripts","flatMap","script","forward","injectPartytownSnippet","existingSnippet","existingSandbox","forwards","_getForwards","snippet","dataset","partytown","_integration","partytownSnippet","component---src-pages-403-js","component---src-pages-404-js","component---src-pages-about-js","component---src-pages-admin-js","component---src-pages-admin-upload-js","component---src-pages-assessment-personality-js","component---src-pages-assessment-personality-results-js","component---src-pages-cancel-subscription-js","component---src-pages-career-builder-js","component---src-pages-change-password-js","component---src-pages-contact-js","component---src-pages-create-a-plan-js","component---src-pages-educator-js","component---src-pages-es-es-member-js","component---src-pages-index-js","component---src-pages-login-individuals-js","component---src-pages-login-js","component---src-pages-membership-cancelled-js","component---src-pages-news-js","component---src-pages-newsletter-js","component---src-pages-passwordless-authentication-js","component---src-pages-passwordless-verifier-js","component---src-pages-profile-js","component---src-pages-signup-educators-js","component---src-pages-signup-employers-js","component---src-pages-signup-individuals-js","component---src-pages-signup-promo-all-js","component---src-pages-signup-promo-email-js","component---src-pages-signup-promo-google-js","component---src-pages-signup-promo-microsoft-js","component---src-templates-basic-page-js","component---src-templates-blog-js","component---src-templates-career-js","component---src-templates-career-plan-js","component---src-templates-company-js","component---src-templates-major-js","component---src-templates-school-js","component---src-templates-story-js","plugin","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","off","evt","mitt","pathAndSearch","pathCache","matchPaths","trimPathname","rawPathname","newRawPathname","qs","stripPrefix","__BASE_PATH__","absolutify","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","pick","normalizePagePath","route","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","_construct","Parent","Class","sham","Proxy","_wrapNativeSuper","_cache","Wrapper","ServerSliceRenderer","sliceId","contents","ServerSlice","sliceName","allowEmpty","sliceProps","slicesMap","SlicesMapContext","slicesProps","SlicesPropsContext","concreteSliceName","getSliceId","createContentDigest","sliceUsage","hasChildren","InlineSlice","slicesResultsMap","SlicesResultsContext","component","sliceContext","Slice","internalProps","alias","__renderedByLocation","slicesContext","SlicesContext","propErrors","validateSliceProps","SlicePropsError","renderEnvironment","additionalContextMessage","sliceRoot","componentPath","_Error","inBrowser","renderedByLocation","stackLines","ReactDebugCurrentFrame","getCurrentStack","_assertThisInitialized","forcedLocation","functionName","_inheritsLoose","seenObjects","propPath","prefetchPathname","loader","enqueue","graphql","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","link","getElementsByName","req","preFetched","PageResourceStatus","Success","createPageDataUrl","rawPath","maybeSearch","shouldAbortFetch","doFetch","BOT_REGEX","toPageResources","pageData","_pageData$slicesMap","componentChunkName","webpackCompilationHash","staticQueryHashes","getServerDataError","json","waitForResponse","readRoot","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","partialHydrationDb","slicesDataDb","sliceInflightDb","slicesDb","isPrefetchQueueRunning","prefetchQueued","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","setApiRunner","apiRunner","prefetchDisabled","fetchPageDataJson","loadObj","pagePath","retries","jsonPayload","notFound","internalServerError","fetchPartialHydrationJson","loadPageDataJson","loadPartialHydrationJson","loadSliceDataJson","loadDataPromises","loadAppData","allData","appDataResponse","pageDataResponse","rscDataResponse","pageStaticQueryHashes","finalResult","dedupedSliceNames","loadSlice","inFlight","slicesData","slices","dedupedStaticQueryHashes","_toConsumableArray","staticQueryHash","loadChunkPromises","componentChunkPromises","sliceComponents","headComponent","pageComponent","createdAt","sliceComponent","pageResources","partialHydration","readableStream","ReadableStream","controller","TextEncoder","encode","createFromReadableStream","staticQueryBatchPromise","staticQueryResults","staticQueryResultsMap","withErrorDetails","shouldPrefetch","doesConnectionSupportPrefetch","connection","effectiveType","saveData","prefetch","defer","abortC","AbortController","signal","_processNextPrefetchBatch","requestIdleCallback","toPrefetch","prefetches","dPromise","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","hovering","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","_BaseLoader","asyncRequires","chunkName","exportType","_proto2","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","getSliceResults","FireCallbackInEffect","VALID_NODE_NAMES","isEqualNode","oldTag","newTag","nonce","cloneTag","getValidHeadNodesAndAttributes","htmlAndBodyAttributes","seenIds","validHeadNodes","_node$attributes","_node$attributes$id","isElementType","isValidNodeName","isStyleAttribute","_htmlAndBodyAttribute","clonedNode","massageScript","_validHeadNodes$index","indexOfPreviouslyInsertedNode","hiddenRoot","keysOfHtmlAndBodyAttributes","onHeadRendered","_document$head2","htmlElement","attributeValue","bodyElement","applyHtmlAndBodyAttributes","existingHeadElements","_document$head","append","newHeadNodes","oldNodes","newNodes","onStale","onNew","existingHeadElement","indexInNewNodes","newNode","diffNodes","headHandlerForBrowser","pageComponentProps","Head","headExportValidator","reactDOMUtils","HeadElement","serverData","pageContext","WrapHeadElement","StaticQueryContext","LocationProvider","prevHeadNodes","removePrevHeadElements","htmlAndBodyattributeList","removeHtmlAndBodyAttributes","PageRenderer","__params","pageElement","PropTypes","RouteAnnouncerProps","maybeRedirect","___replace","nextRoute","onPreRouteUpdate","prevLocation","onRouteUpdate","navigate","globalHistory","parsePath","___swUpdated","history","replaceState","___webpackCompilationHash","serviceWorker","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","nextProps","pageName","pageHeadings","newAnnouncement","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_React$Component2","_this2","shouldComponentUpdate","shallowDiffers","EnsureResources","getDerivedStateFromProps","prevState","loadResources","nextState","shallowCompare","hydrate","___emitter","___loader","___push","___navigate","reloadStorageKey","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","Location","sliceResults","LocationHandler","Consumer","Router","encodeURI","browserLoc","getSessionStorage","_page$page","reload","SiteRoot","App","onClientEntryRanRef","focusEl","defaultRenderer","renderer","runRender","rootElement","InternalPageRenderer","reactDomClient","createRoot","hydrateRoot","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","hostname","register","reg","installingWorker","installing","___failedResources","createServerContext","globalThis","__SERVER_CONTEXT","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","useStaticQuery","_context$query","Layout","wrapPageElement","___gatsbyIntl","currentPosition","_window","slashedPathname","routeThroughBrowserOrApp","hrefHandler","pluginOptions","userIsForcingNavigation","navigationWasHandledElsewhere","clickedAnchor","findClosestAnchor","anchor","anchorsTargetIsEquivalentToSelf","SVGAnimatedString","animVal","urlsAreOnSameOrigin","pathStartRegEx","escapeStringRegexp","withPrefix","pathIsNotHandledByApp","hashShouldBeFollowed","excludePattern","destinationPathname","onClientEntry","clickHandler","catchLinks","listOfMetricsSend","debounce","timer","sendWebVitals","dataLayerName","sendData","dataLayer","webVitalsMeasurement","sendToGTM","getLCP","getFID","getCLS","debouncedCLS","debouncedFID","debouncedLCP","routeChangeEventName","enableWebVitalsTracking","_gatsby","QueryParamProvider","reachHistory","wrapRootElement","Root","user","loading","FirebaseContext","membership","authDomain","databaseURL","GATSBY_FIREBASE_DATABASE_URL","storageBucket","messagingSenderId","Sport","firebaseData","_name","label","_intramuralMen","intramuralMen","_intramuralWomen","intramuralWomen","_intercollegiateMen","intercollegiateMen","_intercollegiateWomen","intercollegiateWomen","_scholarshipMen","scholarshipMen","_scholarshipWomen","scholarshipWomen","_createClass","Cost","_value","_symbol","MajorList","firestoreData","_majors","majorList","_majorGroupCips","majorCipGroups","_majorRender","majorGroup","School","_petersonId","_schoolUrl","schoolUrl","_country","country","_city","city","_zipCode","zipCode","_line1","line1","_facultySize","facultySize","_ratioStudentFaculty","ratioStudentFaculty","_studentsLivingInHousing","studentsLivingInHousing","_diversityNonWhite","diversityNonWhite","_ugSchooltype","ugSchooltype","_techSchooltype","techSchooltype","_gradSchooltype","gradSchooltype","_bachSchooltype","bachSchooltype","_associateSchooltype","associateSchooltype","_sizeFilter","sizeFilter","_locationSettingFilter","locationSettingFilter","_schoolTypeFilter","schoolTypeFilter","_schoolSelectivityFilter","schoolSelectivityFilter","_costFilter","costFilter","_appliedCount","appliedCount","_acceptedCount","acceptedCount","_enrolledCount","enrolledCount","_averageSatReading","averageSatReading","_averageSatReading25th","averageSatReading25th","_averageSatReading75th","averageSatReading75th","_averageSatMath","averageSatMath","_averageSatMath25th","averageSatMath25th","_averageSatMath75th","averageSatMath75th","_acceptanceRate","acceptanceRate","_actCompositeScore","actCompositeScore","_actCompositeScore25th","actCompositeScore25th","_actCompositeScore75th","actCompositeScore75th","_averageHighSchoolGPA","averageHighSchoolGPA","_applicationFee","applicationFee","_applicationRequirements","applicationRequirements","_applicationDeadlineFreshman","applicationDeadlineFreshman","ApplicationDeadline","_applicationDeadlineOther","applicationDeadlineOther","_applicationDeadlineTransfer","applicationDeadlineTransfer","_applicationDeadlineEarly","applicationDeadlineEarly","_applicationDeadlineOutOfState","applicationDeadlineOutOfState","_costBooksAndSuppliesCost","costBooksAndSuppliesCost","_costRoomAndBoard","costRoomAndBoard","_costRoomOnly","costRoomOnly","_generalTuition","generalTuition","_inStateTuition","inStateTuition","_outOfStateTuition","outOfStateTuition","_averageFinancialAid","averageFinancialAid","_averageLoanAndWorkStudy","averageLoanAndWorkStudy","_averageScholarship","averageScholarship","_averageFinancialAidCoverage","averageFinancialAidCoverage","_averageStudentNeedsMet","averageStudentNeedsMet","_totalUndergradStudents","totalUndergradStudents","_totalAllRace","totalAllRace","_percentInStateStudents","percentInStateStudents","_percentOutOfStateStudents","percentOutOfStateStudents","_percentInternationalStudents","percentInternationalStudents","_percentFemaleStudents","percentFemaleStudents","_percentMaleStudents","percentMaleStudents","_demographicNativeAmerican","demographicNativeAmerican","_demographicAsian","demographicAsian","_demographicBlack","demographicBlack","_demographicLatin","demographicLatin","_demographicPacificIslander","demographicPacificIslander","_demographicOther","demographicOther","_demographicMixed","demographicMixed","_demographicWhite","demographicWhite","athletics","_athletics","sportData","sport","_slug","slug","_cosmicId","cosmicId","majors","_techSchoolFunctionType","techSchoolFunctionType","_techSchoolPopType","techSchoolPopType","isTechSchoolOnly","SchoolList","_firestoreData$school","_firestoreData$school2","_schools","schoolList","_schoolIds","schoolIds","getSchoolById","pid","schools","Major","_bachelor","bachelor","_associate","associate","_id","_graduate","graduate","_master","master","_doctorate","doctorate","_technical","technical","_cipDescription","cipDescription","_cipGroup","cipGroup","_cipGroupName","cipGroupName","validateSetOptions","methodName","mergeFields","assertUint8ArrayAvailable","Uint8Array","assertBase64Available","fromBase64String","fromUint8Array","toBase64","toUint8Array","isEqual","isPartialObserver","IndexedDbPersistenceProvider","enableIndexedDbPersistence","firestore","forceOwnership","enableMultiTabIndexedDbPersistence","clearIndexedDbPersistence","Firestore","databaseIdOrApp","_persistenceProvider","INTERNAL","terminate","_appCompat","_databaseId","settings","settingsLiteral","currentSettings","_getSettings","_setSettings","useEmulator","port","enableNetwork","disableNetwork","enablePersistence","synchronizeTabs","experimentalForceOwningTab","clearPersistence","_removeServiceInstance","_delete","waitForPendingWrites","onSnapshotsInSync","app","pathString","CollectionReference","replaceFunctionName","DocumentReference","collectionGroup","collectionId","Query","runTransaction","updateFunction","transaction","Transaction","WriteBatch","mutations","loadBundle","bundleData","namedQuery","expQuery","UserDataWriter","convertBytes","convertReference","convertDocumentKey","forKey","_firestore","_userDataWriter","documentRef","castReference","DocumentSnapshot","_document","metadata","converter","dataOrField","moreFieldsAndValues","commit","FirestoreDataConverter","fromFirestore","snapshot","expSnapshot","QueryDocumentSnapshot","toFirestore","modelObject","getInstance","converterMapByFirestore","INSTANCES","untypedConverterByConverter","forPath","canonicalString","fieldOrUpdateData","onSnapshot","extractSnapshotOptions","wrapObserver","snap","withConverter","original","updated","wrapper","_b","userObserver","fieldPath","where","opStr","directionStr","limitToLast","startAt","startAfter","endBefore","endAt","QuerySnapshot","_snapshot","DocumentChange","oldIndex","docs","docChanges","docChange","docRef","documentPath","FieldPath","fieldNames","documentId","keyField","_internalPath","FieldValue","serverTimestamp","delegate","_methodName","arrayUnion","arrayRemove","increment","firestoreNamespace","GeoPoint","Timestamp","setLogLevel","CACHE_SIZE_UNLIMITED","firestoreFactory","firestoreExp","registerComponent","getProvider","getImmediate","setServiceProps","registerVersion","LONG_TYPE","UNSIGNED_LONG_TYPE","mapValues","isFinite","FUNCTIONS_TYPE","errorCodeMap","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","UNAVAILABLE","DATA_LOSS","FunctionsError","details","ContextProvider","authProvider","messagingProvider","appCheckProvider","auth","messaging","appCheck","optional","getAuthToken","getToken","accessToken","getMessagingToken","Notification","permission","getAppCheckToken","limitedUseAppCheckTokens","getLimitedUseToken","getContext","authToken","messagingToken","appCheckToken","DEFAULT_REGION","FunctionsService","regionOrCustomDomain","fetchImpl","emulatorOrigin","contextProvider","cancelAllRequests","deleteService","customDomain","_url","httpsCallable$1","functionsInstance","callAtURL","postJSON","failAfterHandle","millis","failAfter","bodyJSON","codeForHTTPStatus","errorJSON","_errorForResponse","responseData","connectFunctionsEmulator","connectFunctionsEmulator$1","httpsCallableFromURL","httpsCallableFromURL$1","variant","fetch","_registerComponent","instanceIdentifier","setMultipleInstances","_region","_customDomain","httpsCallable","useFunctionsEmulator","functionsServiceExp","namespaceExports","Functions","DEFAULT_HOST","CONFIG_STORAGE_BUCKET_KEY","StorageError","status_","prependCode","serverResponse","_baseMessage","_codeEquals","StorageErrorCode","ErrorCode","unknown","retryLimitExceeded","RETRY_LIMIT_EXCEEDED","canceled","CANCELED","cannotSliceBlob","CANNOT_SLICE_BLOB","invalidArgument","appDeleted","APP_DELETED","invalidRootOperation","INVALID_ROOT_OPERATION","invalidFormat","INVALID_FORMAT","internalError","INTERNAL_ERROR","bucket","path_","isRoot","fullServerUrl","bucketOnlyServerUrl","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","INVALID_DEFAULT_BUCKET","bucketDomain","gsRegex","httpModify","loc","firebaseStorageHost","groups","regex","postModify","group","captures","bucketValue","pathValue","INVALID_URL","invalidUrl","FailRequest","promise_","getPromise","_appDelete","isString","isNativeBlob","isNativeBlobDefined","validateNumber","argument","minValue","maxValue","makeUrl","urlPart","makeQueryString","queryPart","isRetryStatusCode","additionalRetryCodes","isFiveHundredCode","isExtraRetryCode","isAdditionalRetryCode","NetworkRequest","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","callback_","errorCallback_","timeout_","progressCallback_","connectionFactory_","retry","pendingConnection_","backoffId_","canceled_","appDelete_","resolve_","reject_","start_","doTheRequest","backoffCallback","RequestEndStatus","progressListener","progressEvent","loaded","total","lengthComputable","addUploadProgressListener","removeUploadProgressListener","hitServer","getErrorCode","NO_ERROR","getStatus","wasCanceled","ABORT","successCode","backoffDone","requestWentThrough","wasSuccessCode","getResponse","getErrorText","doRequest","backoffCompleteCb","waitSeconds","retryTimeoutId","globalTimeoutId","hitTimeout","cancelState","triggeredCallback","triggerCallback","callWithDelay","responseHandler","clearGlobalTimeout","success","waitMillis","stopped","stop","wasTimeout","appDelete","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob$1","bb","getBlob","UNSUPPORTED_ENVIRONMENT","decodeBase64","encoded","polyFill","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","StringData","contentType","dataFromString","stringData","utf8Bytes_","base64Bytes_","dataUrl","DataURLParts","percentEncodedBytes_","dataURLBytes_","hasMinus","hasUnder","hasPlus","hasSlash","dataURL","middle","FbsBlob","elideCopy","blobType","data_","ArrayBuffer","byteLength","size_","type_","startByte","endByte","sliced","blob","webkitSlice","mozSlice","sliceBlob","buffer","blobby","uint8Arrays","finalLength","uploadData","jsonObjectOrNull","lastComponent","noXform_","Mapping","server","local","xform","mappings_","getMappings","mappings","nameMapping","_metadata","fullPath","xformPath","sizeMapping","fromResource","resource","_makeStorageReference","addRef","fromResourceString","resourceString","toResourceString","PREFIXES_KEY","ITEMS_KEY","fromResponseString","listResult","prefixes","nextPageToken","pathWithoutTrailingSlash","fromBackendResponse","RequestInfo","urlParams","errorHandler","progressCallback","successCodes","handlerCheck","cndn","metadataHandler","xhr","downloadUrlHandler","alt","downloadUrlFromResourceString","_protocol","sharedErrorHandler","newErr","UNAUTHORIZED_APP","QUOTA_EXCEEDED","UNAUTHORIZED","objectErrorHandler","shared","OBJECT_NOT_FOUND","getMetadata$2","maxOperationRetryTime","requestInfo","list$2","delimiter","pageToken","maxResults","listHandler","metadataForUpload_","metadataClone","determineContentType_","multipartUpload","genBoundary","metadata_","preBlobPart","postBlobPart","maxUploadRetryTime","ResumableUploadStatus","checkResumeHeader_","getResponseHeader","RESUMABLE_UPLOAD_CHUNK_SIZE","continueResumableUpload","chunkSize","SERVER_FILE_WRONG_SIZE","bytesLeft","bytesToUpload","uploadCommand","uploadStatus","newCurrent","TaskEvent","STATE_CHANGED","TaskState","RUNNING","PAUSED","SUCCESS","ERROR","taskStateFromInternalTaskState","Observer","argsToForward","textFactoryOverride","XhrConnection","sent_","xhr_","initXhr","errorCode_","sendPromise_","NETWORK_ERROR","statusText","header","upload","XhrTextConnection","newTextConnection","UploadTask","_transferred","_needToFetchStatus","_needToFetchMetadata","_observers","_error","_uploadUrl","_request","_chunkMultiplier","_resolve","_reject","_blob","_mappings","_resumable","_shouldDoResumable","_errorHandler","completeTransitions_","backoffExpired","isExponentialBackoffExpired","sleepTime","_transition","_metadataErrorHandler","maxSleepTime","storage","_promise","_start","_makeProgressCallback","sizeBefore","_updateProgress","_createResumable","_fetchStatus","_fetchMetadata","pendingTimeout","_continueUpload","_oneShotUpload","_resolveToken","_getAuthToken","_getAppCheckToken","metadataForUpload","createResumableUpload","_location","createRequest","_makeRequest","sizeString","getResumableUploadStatus","statusRequest","uploadRequest","newStatus","_increaseMultiplier","metadataRequest","multipartRequest","transferred","old","_notifyObservers","wasPaused","externalState","bytesTransferred","totalBytes","completed","_addObserver","_removeObserver","onFulfilled","onRejected","_notifyObserver","_finishPromise","triggered","resume","valid","pause","Reference","_service","_newRef","newPath","_throwIfRoot","listAll$1","listAllHelper","opt","list$1","makeRequestWithTokens","updateMetadata$1","updateMetadata$2","getDownloadURL$1","getDownloadUrl","NO_DOWNLOAD_URL","deleteObject$1","_xhr","_text","deleteObject$2","_getChild$1","childPath","canonicalChildPath","refFromPath","FirebaseStorageImpl","_bucket","NO_DEFAULT_BUCKET","ref$1","serviceOrRef","pathOrUrl","extractBucket","_authProvider","_appCheckProvider","_firebaseVersion","_host","_appId","_deleted","_maxOperationRetryTime","_maxUploadRetryTime","_requests","time","POSITIVE_INFINITY","_overrideAuthToken","tokenData","requestFactory","firebaseVersion","addGmpidHeader_","addAuthHeader_","addVersionHeader_","addAppCheckHeader_","makeRequest","STORAGE_TYPE","uploadBytesResumable","uploadBytesResumable$1","getMetadata","getMetadata$1","connectStorageEmulator","mockUserToken","connectStorageEmulator$1","SDK_VERSION","UploadTaskSnapshotCompat","UploadTaskCompat","wrappedNextOrObserver","taskSnapshot","ListResultCompat","ReferenceCompat","_getChild","put","putString","listAll","updateMetadata","getDownloadURL","StorageServiceCompat","refFromURL","setMaxUploadRetryTime","setMaxOperationRetryTime","storageExp","Storage","newContentAlertTimeFrame","firebaseInstance","Firebase","initializeApp","firebaseConfig","db","getGlobalSiteConfig","currentUser","subscribeToUserActivities","getUserActivities","userId","resp","subscribeToUserNotifications","subscribeToUserPointTotal","getUserMembership","getVisitCount","siteVisitCount","getAssessmentRecord","getActivityRecord","getDailyQuestRecord","questId","getPast5DaysQuestCompletionCount","currentTime","fiveDaysAgo","setDate","questRecords","removeUserMembership","deleteSubscriptionCallable","getUserProfile","getProfile","getCareerData","career","createNewCareer","careerTitle","hardSkills","salaryData","softSkills","docId","checkDuplicate","getSchoolData","studentId","getOtherUserPointTotal","getCampusList","schCode","fetchCampus","sch_code","getDepartmentList","fetchDepartment","groupsListCreatedByUser","grouplist","addNewGroup","groupAdd","associateStudentToGroup","groupsResponse","getAllUserListing","getAllUsersList","getAllUserFromGroup","getAllUsersListFromGroup","getActiveGroupMembersById","editGroupName","groupEdit","deleteGroup","groupDelete","getAllRaisecListing","getRiasecList","updateCareerSkillsAndStateData","careerRef","updateWagesEs","getAllCareerSkillsAndStateData","getDailyQuestListPerUser","quest","getOtherUserCareerPlans","getFacultyListing","facultyListing","getStudentListing","studentListing","getProfileDetails","profileDetails","addUser","editUser","OnDeleteUser","studentActivitySnapshot","getStudentActivity","getFacultyQueryResponse","facultyQuery","getStudentQueryResponse","studentQuery","getAllReports","reports","saveReports","saveSchedule","editSchedule","getSchedularInfo","getSchedular","getReports","exportReport","deleteReport","deleteSchedule","getSchedulers","schedulers","importUsers","fileData","fileName","defaultPassword","importer","ImportResponseSuccess","ImportResponseFailure","makeProfilePublic","updateProfile","profileIsPublic","makeProfileSectionPublic","section","makeProfilePrivate","makeProfileSectionPrivate","loadPublicProfile","loadPublicProfileCallable","deleteUser","initializeUser","createFirestoreUser","getResumeData","getResumeDataForStudents","editResumeExperience","experience","editResumeExperienceCallable","createResumeExperience","uuid","v4","resumeCreateExperienceCallable","deleteResumeExperience","experienceId","deleteResumeExperienceCallable","optimizeText","optimizeBulletCallable","getCareerPlansData","planId","loadCareerPlans","careers","allCareersSnapshot","CareerPlan","loadPublicCareerPlans","careerPlansCallable","plans","careerPlans","plan","milestones","deleteCareerPlan","careerDeleteCallable","saveCareerPlan","careerPlan","careerSaveCallable","getData","created","loadSchool","localeId","loadMajor","cip","updateUserEmail","email","updateEmail","updateUserPassword","password","updatePassword","dismissMondayNotification","dismissStoryTenDayNotification","dismissLoginTenDayNotification","dismissNewContentNotification","userProfile","notification","_userProfile$dismisse","_userProfile$dismisse2","dismissedNotifications","newContent","dismissals","dismissedNotification","createdDate","toMillis","storeProfileImage","file","extension","profileImageRef","fileUrl","storeWallpaperImage","wallpaperImageRef","createUserWithEmailAndPassword","createSchoolUser","schoolId","authResultDisplayName","isNameReversed","createSchoolUserCallable","logout","_this$auth$currentUse","signOut","loginCount","wingsSessionKey","sessionExpiration","lastLoginDate","storeContactFormSubmission","formValues","storeSubmission","storeCompanySignUpFormSubmission","storeEducatorSignUpFormSubmission","sendEmail","loadDashbardNotifications","notifications","timeFrame","hourDelay","snapshotGeneral","removeDashboardNotifications","createDashboardNotification","addAssessmentCareersFeedback","isRemoval","removeAssessmentCareersFeedback","saveAssessment","saveAssessmentResponses","savePointEvents","saveVisitedStory","loadVisitedStories","stories","saveVisitedBlog","loadVisitedBlogs","blogs","saveVisitedSchool","loadVisitedSchools","getPointTotal","loadPointEvents","pointEvents","saveWalkthroughStep","stepKey","stepValue","saveWalkthroughStepCallable","getWalkthroughSteps","saveUserStoryRating","getUserStoryRatingsRecord","getAllStoryMetrics","setActivityCompletion","unsetActivityCompletion","setDailyQuest","createMagicLinkUser","createMagicLinkUserCallable","generateAndSendSignInLink","generateAndSendSignInLinkCallable","logClientSideEvent","severity","createUserNotification","notificationData","createEducatorNotification","createGlobalNotification","deleteGlobalNotification","markUserNotificationsAsRead","deleteUserNotification","publishScheduledUserNotification","logUserSiteVisit","siteVisitData","getEducatorAccountInfo","getPetersonsSchoolData","institutionId","getPetersonsMajorSchoolsData","majorId","subscribeToStoryboardChanges","updatePanelOrder","panelsOrder","subscribeToPanelChanges","panelId","updateTitle","updateDescription","updateMonth","updateYear","updateFiles","endDateMonth","endDateYear","filesOrder","updatePanelsOrder","panelID","removePanel","newPanelsOrder","storyboardDocRef","storyboardDoc","oldPanelsOrder","panelIndex","addPanel","newPanelID","editPanel","deletePanel","userID","newPanel","uploadUserFile","purpose","fileID","thumbnail","fileRef","thumbnailRef","getUserFileType","directoryFileRef","directoryContents","getUserFileURL","getUserFileThumbnailURL","deleteUserFile","subscribeToResumeOrderChanges","columnNumber","updateOrder","updateResumeColumnOrder","newOrder","subscribeToResumeExperienceChanges","updateExperiences","experiences","subscribeToSkillsInterestsChanges","updateSkills","updateInterests","skills","interests","getResumeColumnOrder","_this$auth","_this$auth$currentUse2","orderDoc","UserNotification","handleDelete","messageEs","publicationDate","notificationId","isRead","pageLink","heading","headingEs","useIntl","isHovered","setIsHovered","isNavigational","CleanHTML","dirtyHTML","sanitizedText","dangerouslySetInnerHTML","__html","fabReadme","color","motivational","farLightbulbOn","accomplishment","farCompass","farMapMarkerAlt","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","onClick","toast","dismiss","handleNavigation","fontStyle","fontWeight","float","faArrowRight","classIdentifier","isWindowWide","closeButton","marginTop","_firebase$auth2","_firebase$auth2$_dele","_firebase$auth2$_dele2","assessmentRecord","setAssessmentRecord","activityRecord","setActivityRecord","storyMetricsRecord","setStoryMetricsRecord","storyRatingsRecord","setStoryRatingsRecord","notificationsRecord","setNotificationsRecord","educatorNotificationsRecord","setEducatorNotificationsRecord","educatorStudentGroups","setEducatorStudentGroups","scheduledNotificationsRecord","setScheduledNotificationsRecord","loadedActivities","setLoadedActivities","dailyQuest","dailyQuestId","setDailyQuestId","setIsInitialized","pointTotalRecord","setPointTotalRecord","setLevel","isQuestLoading","setIsQuestLoading","dailyQuestsData","useDailyQuest","allCosmicjsDailyQuest","initDailyQuestWithResponses","_dailyQuestsData$find","_question_playlist$ac","_question_playlist$ac2","_question_playlist$ac3","_question_playlist$ac4","_question_playlist$ac5","_question_playlist$ac6","_question_playlist$ac7","_question_playlist$ac8","question_playlist","active_group","todaysQuestId","todaysQuestStoryImage","daily_quest_story","story_personal_photo","imgix_url","todaysQuestStorySlug","dailyQuestResponseRecord","completeQuestData","daily_quest_questions","question","_dailyQuestResponseRe","matchingValueFromRecord","questResponses","promptId","storyImage","storySlug","setDailyQuestRecord","_firebase$auth","_firebase$auth$_deleg","_firebase$auth$_deleg2","_storyMetricsRecordRe","_storyRatingsRecordRe","storyRatingsRecordRes","storyMetricsRecordRes","assessmentRecordRes","storyMetrics","storyRatings","questPlaylist","deliverDelayedNotification","targetDateTime","undeliveredNotification","timeObject","milliseconds","nanoseconds","seconds","isDateInThePast","userLevel","LEVELS","points","loadGroups","addActivity","prevActivityRecord","activity","removeActivity","updatedActivityRecord","prevNotificationsRecord","setDailyQuestResponse","activityIndex","prevDailyQuest","updatedQuest","getDailyQuestResults","totalCorrect","question_type","multiple_choice_answer","totalQuestions","pointsAwarded","getDailyQuestCompletionStatus","currentQuestionIndex","prompt","questCompletionStatus","updateStoryRatingsRecord","rating","storyMetricsIndex","userStoryRating","userStoryRatingIndex","ratingCount","ratingAverage","updatedMetrics","updatedRatings","handleNewNotifications","newNotifications","findUnmatchedObjects","idMap","isWithinTenSeconds","sendUserNotificationToast","browserName","detectBrowserName","browserVersion","detectBrowserVersion","deviceType","detectDeviceType","userSiteVisit","os","detectOperatingSystem","device","setUser","setFirebase","setLoading","profile","setProfile","globalSiteConfig","setGlobalSiteConfig","localFirestore","useLocalFirestore","notifier","useNotifications","useSiteMetrics","hotjar","initialize","identify","unsubscribe","profileUnsubscribe","globalSiteConfigUnsubscribe","userActivitiesUnsubscribe","userNotificationsUnsubscribe","userPointTotalUnsubscribe","getFirebaseInstance","onAuthStateChanged","userResult","userMembership","providerId","completedActivities","_object$notifications","_object$educatorNotif","isHidden","educatorNotifications","scheduledNotifications","currentDate","getDateFromTimestamp","sortedNotifications","expDate","expirationDate","sortedEducatorNotifications","setHistoricalNotificationsRecord","setHistoricalEducatorNotificationsRecord","pointTotal","updateAssessment","TYPE","SKELETON_TYPE","ErrorKind","SPACE_SEPARATOR_REGEX","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","era","RangeError","day","weekday","hour12","hourCycle","hour","minute","second","timeZoneName","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","roundingPriority","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","stem","minimumIntegerDigits","parseNotationOptions","signOpts","parseNumberSkeleton","tokens_1","scale","currency","useGrouping","maximumFractionDigits","unit","compactDisplay","currencyDisplay","unitDisplay","g3","g4","g5","minimumFractionDigits","trailingZeroDisplay","conciseScientificAndEngineeringOpts","timeData","getDefaultHourSymbolFromLocale","hourCycles","regionTag","languageTag","language","maximize","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","hasNativeStartsWith","hasNativeFromCodePoint","fromCodePoint","hasNativeFromEntries","hasNativeCodePointAt","codePointAt","hasTrimStart","trimStart","hasTrimEnd","trimEnd","isSafeInteger","REGEX_SUPPORTS_U_AND_Y","RE","matchIdentifierAtIndex","codePoints","entries_1","flag","IDENTIFIER_PREFIX_RE_1","lastIndex","_isWhiteSpace","_isPatternSyntax","Parser","line","column","ignoreTag","requiresOtherClause","shouldParseSkeletons","parseMessage","nestingLevel","parentArgType","expectingCloseTag","isEOF","char","parseArgument","peek","UNMATCHED_CLOSING_TAG","clonePosition","_isAlpha","parseTag","parseLiteral","bump","pound","startPosition","parseTagName","bumpSpace","bumpIf","literal","childrenResult","endTagStartPosition","INVALID_TAG","closingTagNameStartPosition","UNCLOSED_TAG","startOffset","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","codepoint","ch","openingBracePosition","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","parseIdentifierIfPossible","MALFORMED_ARGUMENT","parseArgumentOptions","startingPosition","endOffset","bumpTo","typeStartPosition","typeEndPosition","EXPECT_ARGUMENT_TYPE","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","EXPECT_ARGUMENT_STYLE","styleLocation","argCloseResult","tryParseArgumentClose","location_1","parseNumberSkeletonFromString","EXPECT_DATE_TIME_SKELETON","dateTimePattern","skeletonCopy","patternPos","patternChar","extraLength","hourLen","dayPeriodLen","hourChar","getBestPattern","pattern","parsedOptions","typeEndPosition_1","EXPECT_SELECT_ARGUMENT_OPTIONS","identifierAndLocation","pluralOffset","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","tryParseDecimalInteger","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","optionsResult","tryParsePluralOrSelectOptions","location_2","select","plural","pluralType","INVALID_ARGUMENT_TYPE","nestedBraces","apostrophePosition","bumpUntil","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","stringTokens_1","stemAndOptions","options_1","INVALID_NUMBER_SKELETON","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","EXPECT_PLURAL_ARGUMENT_SELECTOR","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","fragmentResult","EXPECT_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","expectNumberError","invalidNumberError","hasDigits","decimal","kind","currentOffset","targetOffset","nextCode","setTimeZoneInOptions","deepMergeOptions","opts1","opts2","deepMergeFormatsAndSetTimeZone","f1","mfFormats","formatMessage","messageDescriptor","defaultRichTextElements","msgId","condition","Err","invariant","NUMBER_FORMAT_OPTIONS","getFormatter","formatNumber","formatNumberToParts","formatToParts","RELATIVE_TIME_FORMAT_OPTIONS","formatRelativeTime","MISSING_INTL_API","DATE_TIME_FORMAT_OPTIONS","filteredOptions","timeStyle","dateStyle","formatDate","formatTime","formatDateTimeRange","formatRange","formatDateToParts","formatTimeToParts","PLURAL_FORMAT_OPTIONS","formatPlural","LIST_FORMAT_OPTIONS","formatList","formatListToParts","richValues_1","serializedValues","generateToken","DISPLAY_NAMES_OPTONS","formatDisplayName","of","verifyConfigMessages","processIntlConfig","textComponent","wrapRichTextChunksInFragment","assignUniqueKeysToFormatXMLElementFnArgument","rawValues","chunks","rawDefaultRichTextElements","coreIntl","resolvedConfig","supportedLocalesOf","IntlProvider","intl","prevConfig","_formValues$schools","isEducatorView","errorMessages","setErrorMessages","setMessages","setFormValues","firstName","lastName","confirmPassword","departments","campuses","gender","setErrors","setPointEvents","misMatchErrorMessage","weakPasswordMessage","formatRoleText","handleInputChange","persist","currentValues","passwordError","getFullProfile","_profile$firstName","_profile$lastName","_profile$email","_profile$state","_profile$city","educatorProfile","ownedGroups","memberOfGroups","isCancelled","eventDate","LoadingSpinner","onSubmit","validations","validates","profileData","providerData","sendStandardToast","htmlFor","FormattedMessage","required","rows","school","department","campus","ReactPasswordStrength","minLength","minScore","scoreWords","inputProps","autoComplete","changeCallback","prevErrors","borderColor","maxLength","maxWidth","Alert","listStyleType","marginBottom","profileImageUrl","src","PortfolioProfile","ProfileImageModal","hasText","currentImage","User","_firstName","_lastName","_email","_userId","_doPortfolio","_careerPlanCount","_skillCount","_interestCount","_doWeeklyGoal","_loginCount","_bookmarkStoryCount","_bookmarkCareerCount","_bookmarkSchoolCount","_bookmarkMajorCount","_bookmarkBlogCount","_createdDate","_expirationDate","_doMyGoal","_doLookingForward","_pointsCount","_userType","_role","_schCodes","_schCodesName","_promoCode","_bookmarkStoryTitles","_bookmarkCareerTitles","_bookmarkSchoolTitles","_bookmarkMajorTitles","_bookmarkBlogTitles","_interests","_skills","_schcode","_distcode","_grade","_lasid","_sasid","_schoolName","_organizationCode","_organizationName","_lastLoginDate","_assessmentTaken","_assessmentResultProfile","_personality_type_realistic","_personality_type_investigative","_personality_type_artistic","_personality_type_social","_personality_type_enterprising","_personality_type_conventional","isExpired","FunctionResponse","_FunctionResponse","_FunctionResponse2","isError","getErrors","getTotal","totalRecords","getProcessedTotal","recordsProcessed","getNewUserCount","newUserCount","getUpdateUserCount","updateUserCount","ExportResponseSuccess","_FunctionResponse3","getCsvData","csvData","getTotalRecords","ExportResponseFailure","_FunctionResponse4","AdminFirebaseFunctions","_firebase","_proto3","importCsv","exportCsv","exporter","getUserEntities","entities","userEntityFactoryFromDoc","getUserEntity","getUserEntityByName","getUserEntityByCode","snapShot","entity","getUserEntityByCodeWithHash","saveUserEntity","deleteUserEntity","getAllUsers","_this$firebase$db$col","usersSnapshotBase","usersSnapshotQuery","usersSnapshot","buildUserDataFromSnapshot","getUsersByEmail","getUsersByName","getUsersBySchoolDataField","fieldName","fieldValue","getUsersByMembershipDataFieldWithSort","_this$firebase$db$col2","getUsersByType","_this$firebase$db$col3","getUsersBySinceCreatedDate","getUsersByExpiration","_this$firebase$db$col4","sortArgs","expirationType","ACTIVE","INACTIVE","NEVER","getUsersByEntityName","userEntityType","SCHOOL","ORGANIZATION","queryCount","doNextRecordExists","userSnapshot","iteratorCount","entityHash","buildUser","getUserEntitiesBySchoolCodes","schoolCodes","schoolOrganizationOptions","getProfileData","schcode","schoolName","organizationCode","organizationName","schCodes","schCodesName","getCareersData","getUserPoints","getAssessmentData","schoolDataSnapshot","organization","distcode","grade","lasid","sasid","membershipSnapshot","expiresDate","promoCode","userType","membershipType","pointSnapshot","pointsCount","profileSnapshot","doPortfolio","myStrengths","myWeaknesses","aboutMe","profileQuote","skillCount","interestCount","doMyGoal","goals","doLookingForward","lookingForwardTo","setBookmarkData","bookmarks","titlesMethod","bookmarkValues","bookmark","contentTitle","bookmarkStoryCount","bookmarkBlogCount","bookmarkMajorCount","bookmarkSchoolCount","bookmarkCareerCount","userCareerPlanSnapshot","careerPlanCount","userAssessmentSnapshot","assessmentTaken","assessmentData","resultProfile","assessmentResultProfile","personalityFacet","setAssessmentResults","getTotalUsers","countSnapshot","modifyOnUser","onUpdateUserCallable","UserEntityAddress","street","postalCode","_street","_postalCode","getDisplay","UserEntityContact","phone","_phone","displayData","UserEntity","address","contact","activePromo","_label","_type","_address","_contact","_docId","_activePromo","_documentData$address","_documentData$address2","_documentData$address3","_documentData$address4","_documentData$address5","_documentData$address6","_documentData$address7","_documentData$address8","_documentData$address9","_documentData$address10","_documentData$contact","_documentData$contact2","_documentData$contact3","_documentData$contact4","_documentData$contact5","_documentData$contact6","documentData","userEntityFactoryFromType","csvImportType","INDIVIDUAL","csvExportType","userDashboardFilter","NAME","SCHCODE","DEFAULT","ORGCODE","EMAIL","ORGNAME","SCHOOLNAME","EXPIRE","USERTYPE","CREATED","userDashboardSort","EXPIRE_DESC","EXPIRE_ASC","CREATED_DESC","CREATED_ASC","UserDashBoardFilterSelection","_description","UserDashBoardSortSelection","_UserDashBoardFilterS","displayList","sortValue","_displayList","_sortValue","isSortEnabled","currentSearchFilter","searchClient","algoliasearch","AlgoliaClientKeys","storyResult","hit","story_video_url","story_job_title","story_company","story_quote","rating_average","CardStories","img","AlgoliaStoriesWeek","allCosmicjsStories","storyOfWeekFilter","edges","edge","story_display_in_stories_week","InstantSearch","refresh","Configure","filters","Hits","hitComponent","Pagination","showFirst","showLast","translations","faChevronLeft","faChevronRight","getSchoolSpecificCareers","allCareers","schoolMajors","schoolMajorCips","major","major_id","career_related_major","relatedMajor","_relatedMajor$metadat","major_cip","relatedMajorCip","relatedMajors","_relatedMajor$metadat2","questions","personality_type","story","image","contentSlug","setDislikedCareerSlugs","likedCareer","setLikedCareer","dislikedCareer","setDislikedCareer","isLoading","setIsLoading","_profile$assessmentRe","_profile$assessmentRe2","_profile$assessmentRe3","_profile$assessmentRe4","isLiked","likedCareers","isDisliked","dislikedCareers","addCareer","feedbackType","alert","removeCareer","handleKeyPress","toggleThumbs","handleClick","fasThumbsUp","falThumbsUp","onKeyPress","fasThumbsDown","falThumbsDown","useCareers","allCosmicjsCareers","_career$node$metadata","_career$node$metadata2","career_display_top_match","career_education_level","career_education_required_filter","career_dress","career_activity","career_physical_activity","career_salary_entry_level","career_salary_median","replaceAll","career_salary_experienced","career_demand","career_job_categories","career_banner_image","career_pathways_filter","arrayFromPersonalityType","typeOrder","getRIASECCode","topTraits","personalityArr","fullType","trait","categories","calcMatchStrength","matchStrength","orderPersonalityStrength","strengthSorted","labels","category","makePosessive","removeMissingCareers","allCareer","getTopTenMatches","cosmicCareer","classContext","contentId","jobCategories","careerPathwaysFilter","bookmarked","setBookmarked","showComponent","setShowComponent","persistData","newData","addingOrRemovingFlag","toggleBookmark","removeBookmark","careerData","careerInterest","content_title","content_slug","jobCategoryInterest","careerClusterInterests","dateAdded","handleNewBookmark","addBookmark","onKeyDown","fasBookmark","farBookmark","organizeByType","sortedBookmarks","getFilters","organizedBookmarks","salaryEntry","salaryExperienced","correlation","demand","hideBookmarks","thumbsFeedback","matchedCareer","alignItems","Link","backURL","Bookmark","ThumbsFeedback","demandTranslations","ReactPlayer","light","controls","playing","playIcon","faPlayCircle","fontSize","marginRight","marginLeft","allowedTextDateTypes","allowedTextDatePeriodTypes","allowedListTypes","allowedAlgoliaListTypes","allowedTypes","allowedMonths","allowedMonthsNames","allowedMonthsNamesEs","isValidDateString","dateArray","yearString","isValidYear","monthString","isValidMonthString","getValidMonthDay","yearInt","MilestoneFactory","typeNew","milestoneData","_milestoneData","milestone","MilestoneListDates","MilestoneAlgoliaListDates","MilestoneTextDate","MilestoneTextDates","_careerData","_careerData2","_careerData3","_careerData4","_careerData5","buildMilestones","_created","_updated","_milestones","dataValue","hasMilestones","removeMilestoneByIndex","getMilestoneByIndex","addNewMilestone","isNew","DatePeriod","_endDate","_startDate","clearEndDateMonth","_endDateMonth","clearStartDateMonth","_startDateMonth","clearEndDateYear","_endDateYear","clearStartDateYear","_startDateYear","endDate","endDateMonthInt","startDate","startDateYear","startDateMonthInt","_this$_endDateMonth","startDateMonth","_this$_startDateMonth","Milestone","_uuid","_MilestoneAlgoliaList","_milestoneData2","period","MilestoneAlgoliaListType","AlgoliaEnabledMilestones","AlgoliaEnabledMilestone","indexSecondary","indexSecondaryField","indexPrimary","indexPrimaryField","indexRelationField","primarySearchableFieldKey","secondarySearchableFieldKey","milestoneType","_indexSecondary","_indexSecondaryField","_indexPrimary","_indexRelationField","_indexPrimaryField","_primarySearchableFieldKey","_secondarySearchableFieldKey","_milestoneType","milestoneList","doctorateMilestone","bachelorMilestone","associateMilestone","mastersMilestone","AlgoliaIndexMap","milestoneId","isAlgoliaEnabled","_MilestoneListType","_algoliaPrimaryField","algoliaPrimaryField","_indexData","getAlgoliaIndexData","disableAlgoliaSecondarySearch","MilestoneListType","_Milestone","_goal","goal","_list","hasListItems","updateListItemByIndex","getListItemByIndex","addListItem","removeListItemByIndex","removeListItem","DateMonthYear","_year","_month","clearDate","clearMonth","clearYear","_MilestoneTextType","MilestoneTextType","notificationOptions","isEmail","pointEventDescription","pointEventDescriptionEs","fileReader","setError","setFileUrl","fileBlob","setFileBlob","isCompressing","setIsCompressing","handleClose","backgroundColor","justifyContent","faImages","Modal","onShow","onHide","centered","animation","Header","Body","paddingBottom","backgroundImage","backgroundPosition","backgroundSize","borderRadius","faSpinner","gap","files","profileImageLabel","compressedImage","imageCompression","maxSizeMB","onProgress","percent","Image","Footer","SubmitButton","isFilled","fileURL","restrictToBoundingRect","boundingRect","restrictToParentElement","clickedElement","IGNORE_TAGS","dnd","customHandler","idList","setOrder","collisionDetectionAlgorithm","sortingStrategy","indicatorPadding","indicateDropZone","setIndicateDropZone","combineCollisionAlgorithms","algorithmList","finalAlgorithm","algorithm","disableDragging","separateDragHandle","draggingScale","itemStyle","boxShadow","handleStyle","touchAction","itemProperties","handleProperties","Role","SUPERADMIN","ADMIN","FACULTY","EDUCATOR","STUDENT","SUPERADMINFIREBASECONST","USER","pdfTutorialLink","pdfTutorialText","buttonText","buttonLink","walkThroughSteps","createFuture","selfAwareness","explorePossibilities","buildPortfolio","engage","planPath","VIEWED_STORIES_THRESHOLD","calculateCompletionPercent","stepsData","totalSteps","getStartedData","stepKeys","row","completedSteps","inCompleteSteps","useCheckIfMobile","useWindowDimensions","isMobile","getWindowDimensions","windowDimensions","setWindowDimensions","_extends","_toPropertyKey","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","hint","prim","toPrimitive","_toPrimitive","getIndexContext","targetedIndex","indexId","Index","_Component","subClass","superClass","_inherits","indexContext","onSearchParameters","getSearchParameters","ais","multiIndexContext","unregisterWidget","widgetsManager","registerWidget","searchParameters","Children","IndexWrapper","inferredIndexId","AutoComplete","onSuggestionsFetchRequested","refine","onSuggestionsClearRequested","suggestions","onSuggestionSelected","suggestion","typeSlug","getSuggestionValue","renderSuggestion","renderSectionTitle","getSectionSuggestions","placeholder","AutoSuggest","multiSection","injectIntl","connectAutoComplete","AlgoliaGlobalSearch","localeFilter","defaultRefinement","BackDrop","closeDrawer","SlideDrawer","onClose","isFullScreen","restProps","drawerClasses","setShow","drawerOpen","setDrawerOpen","setIsDisabled","progressPercentage","circleColor","viewBox","stroke","strokeWidth","strokeDasharray","VideoModal","videoUrl","backdropClassName","Toggle","eventKey","currentEventKey","AccordionContext","decoratedOnClick","useAccordionToggle","isCurrentEventKey","Button","ArrowUpIcon","ArrowDownIcon","onStepChange","setIsFullScreen","showVideoModal","setShowVideoModal","videoForStep","setVideoForStep","profileProgress","Flyout","ProfileImage","ProgressCircle","Accordion","getStartedDataEs","hasVideoOrPdf","videoTutorialLink","Card","checked","handleStepChanged","Collapse","background","videoTutorialText","faFile","profileColor","modalColor","faFire","modalButterfly","modalBee","modalHummingbird","modalBluejay","modalHeron","Infinity","modalEagle","_LEVELS$level","userOpened","handleShowLevelModalHide","pointTotals","onModalHide","LevelsEs","localesData","lowercaseLocaleLookup","getDefaultLocale","resolveLocale","localeMatcher","resolveLocaleLookup","resolvedLocale","_resolvedLocale","af","am","ar","n100","ast","v0","be","t0","n10","br","n1000000","bs","i10","i100","f10","f100","ca","i1000000","ceb","cs","da","dsb","dz","es","ff","fr","ga","gd","is","ksh","lv","mk","pa","pl","ro","ru","si","sl","az","bg","bn","brx","eu","fa","fi","fil","fo","fur","fy","gl","gu","ha","hi","hr","hsb","hu","hy","ia","ig","ja","jgo","jv","ka","kea","kk","kl","km","kn","ko","ks","ku","ky","lb","lkt","lo","ml","mn","mr","my","nb","nl","nn","no","pcm","ps","rm","sah","sc","sd","sk","so","sq","sr","su","sv","sw","ta","th","ti","tk","tr","ug","uk","ur","uz","vi","wae","wo","xh","yi","yo","yue","zh","zu","getPluralRulesLocale","LANGUAGE_REG_EXP","getLanguageFromLanguageTag","PluralRuleFunctions","UNITS","NUMERIC_VALUES","STYLE_VALUES","LOCALE_MATCHER_VALUES","numeric","numberFormat","numberingSystem","resolvedOptions","_parseFormatArgs2","parseFormatArgs","_parseFormatArgs4","valueIndex","unitMessages","_message","pluralizedMessages","isNegativeZero","addLocale","localeData","setDefaultLocale","UNIT_ERROR","parseUnit","NUMBER_ERROR","parseNumber","Cache","_keys","lastKey","_i2","_keys2","_createForOfIteratorHelperLoose","allowArrayLike","intlDateTimeFormatSupported","isStyleObject","OBJECT_CONSTRUCTOR","steps","gradation","flavour","units","custom","week","getSecondsInUnit","getStepDenominator","step","factor","formatAs","getRoundFunction","getDiffRatioToNextRoundedNumber","getStepMinTime","minTime","prevStep","future","getMinTimeForUnit","toUnit","fromUnit","_getMinTimeForUnit","fromUnitAmount","toUnitAmount","getStep","secondsPassed","getNextStep","filterStepsByUnits","getStepIndex","granularity","_getStep","unitDenominator","preciseAmount","roundedAmount","getDiffToPreviousRoundedNumber","getDiffToNextRoundedNumber","INFINITY","getTimeToNextUpdate","nextStep","getTimeToNextUpdateForUnit","timeToStepChange","stepChangesAt","currentOrNextStep","getStepChangesAt","getTimeToStepChange","timeToNextUpdate","threshold_for_now","threshold_for_minute","approximate","monthAndDay","dayMonth","yearMonthAndDay","dayMonthYear","twitter","twitterMinute","mini","miniMinute","defaultLocaleHasBeenSpecified","TimeAgo","isLocaleDataAvailable","_step","_iterator","chooseLocale","IntlRelativeTimeFormat","IntlPluralRules","relativeTimeFormatCache","pluralRulesCache","variable","roundMinute","approximateTime","miniNow","miniMinuteNow","twitterNow","twitterMinuteNow","twitterFirstMinute","getStyleByName","getTimestamp","_this$getLabels","getLabels","labelsType","nowLabel","nowLabels","longLabels","past","getNowLabel","elapsed","allowedUnits","getTimeIntervalMeasurementUnits","_getStep2","formattedDate","formatDateForStep","formatValue","amount","valueForFormatting","getFormattingRule","formattingRules","quantifierRules","_labelsType","addDefaultLocale","addLabels","ListNotification","setShowDropdown","isMenuOpen","setIsMenuOpen","displayTime","localizedLink","faTimes","selection","textAlign","NotificationsDropdown","showDropdown","unreadNotificationCount","faBell","OutsideClickHandler","onOutsideClick","_e$target","_e$target$parentNode","_e$target$parentNode$","_e$target2","_e$target2$parentNode","_e$target2$parentNode2","_e$target3","_e$target3$parentNode","_e$target3$parentNode2","Notifications","SafeAnchor","NavLink","bsPrefix","onSelect","AbstractNavItem","NavDropdown","rootCloseEvent","menuRole","renderMenuOnMount","navItemPrefix","Dropdown","childBsPrefix","Menu","renderOnMount","Item","ItemText","Divider","currentLanguage","setCurrentLanguage","languageNames","defaultLanguage","cssClass","setCssClass","displayLanguageDropdown","setDisplayLanguageDropdown","queryFilters","setQueryFilters","useQueryParam","JsonParam","sortByPageQuery","setSortByPageQuery","StringParam","loginSignUpPaths","hideLanguageSwitcher","shouldHideLanguageSwitcher","lang","getCurrentPageLanguage","faGlobe","alignRight","drop","footer","click","languageKey","changeLocale","handleLocaleChangeAndClearFilters","GetStartedProgressPercent","progressPercent","_user$membership","_user$membership2","_user$membership3","walkThroughStepValues","setWalkThroughStepValues","setShowModal","showSignIn","setShowSignIn","isFirebase","setIsFirebase","currentPage","showSearch","setShowSearch","showFlyout","setShowFlyout","showLevelModal","setShowLevelModal","getStartedProgress","setGetStartedProgress","walkthoughStepsLoaded","setWalkthroughStepsLoaded","focusInput","inputElement","hiddenPaths","percentComplete","handleFlyoutOpen","handleApproachingLevel","userPoints","HeaderLogo","siteTitle","_e$target$parentNode$2","farSearch","faArrowLeft","handleMobileSearchClick","LanguageSwitcher","LevelsModal","portfolioProfile","objectFit","objectPosition","logoutDate","GetStartedFlyout","faBars","Title","StyledFirebaseAuth","uiConfig","signInFlow","credentialHelper","signInOptions","GoogleAuthProvider","PROVIDER_ID","EmailAuthProvider","provider","providerName","buttonColor","loginHintKey","callbacks","signInSuccessWithAuthResult","profileResponse","membershipResponse","membershipIsActive","firebaseAuth","BannerMessage","showBanner","setShowBanner","FinalistBanner","isVisible","setIsVisible","columnGap","rowGap","flexWrap","currentPath","faReply","_window$localStorage","isUserLoggedIn","isTallNav","paddingTop","AccountMenu","BackToEducatorDashboardButton","FooterLogo","fabLinkedinIn","fabTwitter","fabFacebook","$$type","transformItems","getProvidedProps","searchState","searchResults","meta","clearsQuery","transformedItems","canRefine","ClearRefinements","translatable","connectCurrentRefinements","PanelCallbackHandler","localizeEducationCheckboxTranslations","english","spanish","localizeIdentityCheckboxTranslation","localizeInterestCheckboxTranslation","localizePersonalityCheckboxTranslation","localizePathwayCheckboxTranslation","localizeSizeCheckboxTranslations","localizeSettingCheckboxTranslations","localizeTypeCheckboxTranslations","localizeCostCheckboxTranslations","localizeIndustryCheckboxTranslations","filterList","loadedFromHistory","setLoadedFromHistory","debouncedSetState","resetScrollRef","loadingRef","mountedRef","filterListWithLocale","setHTMLScrollStyle","timeoutLoadedFromHistory","sortByPage","setSortByPage","showFilters","setShowFilters","setSearchState","handleSortByClick","handleOutsideFilterClick","queryRefinementList","searchStateRefinementList","filtersHaveChanged","_isEqual","_isEmpty","setRefresh","onSearchStateChange","searchInput","searchInputRefinementList","isTypedQuery","isFilterSelectionQuery","isSortByQuery","isEmptyURL","isEmptySearch","configure","distinct","SearchBox","searchAsYouType","faSearch","ScrollTo","faChevronDown","faChevronUp","EyeBrow","localizedItems","localizePersonalityItem","localizeInterestItem","localizeIdentityItem","locItem","Helper","getDescendantProperty","firstSegment","dotIndex","FuzzySearch","haystack","caseSensitive","score","isMatch","propertyValues","toLocaleLowerCase","indexes","nearestIndexesFor","letters","indexesOfFirstLetter","startingIndex","loopingIndex","letter","letterIndexes","exploreReducer","newSearchState","newAllMatches","newStartingPage","isSchoolFilterOn","startingPoint","endingPoint","subset","filteredMatches","activePage","displayMatches","allMatches","displayResults","initialStartingPoint","initialEndingPoint","initialSubset","salaryOptions","educationOptions","dressOptions","activityOptions","scrollToElementWithOffset","elementTop","subdomainConfig","subdomainPetersonsInstitutionId","subdomainSchoolName","schoolFilterValueIndex","setSchoolFilterValueIndex","schoolSpecificCareers","setSchoolSpecificCareers","isLoadingScreen","setIsLoadingScreen","dislikedCareerSlugs","setFilters","salary","education","dress","pageParam","setPageParam","NumberParam","schoolFilterParam","setSchoolFilterParam","BooleanParam","schoolFilterOptions","newRefinements","valueObj","trueValues","updatedQueryFilters","updateFilters","filterType","isChecked","prevFilters","filteredCareers","schoolCareer","salaryDict","Important","salaryFilter","inSalaryFilters","educationFilter","_career$career_educat","inEducationFilters","dressFilter","inDressFilters","activityFilter","inActivityFilters","careerMatches","currentCosmicCareers","startingPage","newFilters","scrollToExplore","majorsData","FilteredMatchCards","orderedCareer","foundCareer","_foundCareer$career_j","CardCareers","noValidate","minHeight","autoCorrect","autoCapitalize","spellCheck","focusable","xmlns","hidden","SelectButton","handleFiltersOnClick","itemsCountPerPage","totalItemsCount","pageRangeDisplayed","pageNumber","activeLinkClass","linkClass","innerClass","itemClass","itemClassPrev","hideFirstLastPages","prevPageText","nextPageText","careerResult","categoryQuery","personalityQuery","showSavedQuery","setShowSavedQuery","showSaved","setShowSaved","handleShowSavedClick","hasMatches","setHasMatches","localizePathwayItem","acceptance","enrolled","toLocaleString","schoolResult","school_banner_image","school_city","school_state_or_region","school_acceptance_rate","school_enrolled_count","CardSchools","localizeSizetItem","localizeSettingtItem","localizeTypetItem","localizeCosttItem","majorResult","major_banner_image","major_job_categories","major_bachelor","major_associate","major_graduate","major_master","major_doctorate","CardMajors","industries","companyResult","company_logo","company_location","CardCompanies","localizeSizeItem","localizeIndustryItem","videoResult","CardVideos","selectState","setSelectState","saved","setSaved","setCategoryQuery","setPersonalityQuery","PersonalityCareers","AlgoliaCareersPersonalityExplore","People","AlgoliaStoriesExplore","Careers","AlgoliaCareersExplore","Schools","AlgoliaSchoolsExplore","Majors","AlgoliaMajorsExplore","Companies","AlgoliaCompaniesExplore","Videos","AlgoliaVideosExplore","fluid","upward","Portfolio","portfolioRef","useReactToPrint","PortfolioContent","isPublicFacing","milestoneLabel","getDatePeriod","getLabel","getPrimaryDetail","goalLabel","getTextDetail","goalDetailLabel","milestoneCount","moreMessage","listRender","goalDetailLabelPlural","getListDetail","milestoneLabels","milestoneRender","faEdit","_a$period$_startDate","_a$period","_b$period$_startDate","_b$period","MilestoneView","copyText","allCosmicjsMilestones","milestone_id","goal_label","goal_detail_label","goal_detail_label_plural","loadingPlans","setLoadingPlans","setPlans","removingPlan","setRemovingPlan","planLoadError","setPlanLoadError","userPlans","getPlans","getPlanRender","careersPlanRender","Confirm","onConfirm","removePlan","overflowWrap","confirmButton","CareerPlanView","AssessmentOverview","isAssessmentTaken","setIsAssessmentTaken","assessmentDate","setAssessmentDate","canResume","setCanResume","responsesVersion","responses","questionData","dayjs","alignSelf","minWidth","setLocale","WorkReadiness","_categories$selectedC2","audience","percentageComplete","setPercentageComplete","selectedCategoryIndex","setSelectedCategoryIndex","displayedActivities","setDisplayedActivities","useClientSideLocale","allActivities","useActivities","categoryIndex","_categories$selectedC","activities","completedDisplayedActivities","_localFirestore$activ","percentage","handleCategorySelect","ProgressBar","ActivityCard","imageAlt","downloadFile","viewUrl","isCompleted","setIsCompleted","handleActivityCompletion","handleCheckboxSelect","faDownload","faEye","WorkReadinessTab","subdomainAudienceType","ADULT","param","AlgoliaToggle","CareerPlans","hasPublicToggle","ButtonGroup","toggle","vertical","_ref$as","baseClass","ThisWeekItem","onExportData","setPointTotals","setNotification","newEntryVal","setNewEntryVal","setItems","editingItems","setEditingItems","pastEdit","setPastEdit","prevItemsLenRef","setFilter","menuOpen","setMenuOpen","inputRefs","itemsEndRef","currentLength","toLocaleDateString","uuidv4","handleAddBlur","newItem","prevItems","updatedItems","handleGoalSetting","handleEditBlur","editedItems","updatedEditingItems","handleEdit","handleCheckboxChange","prevItem","contentEditable","textDecoration","onBlur","onInput","handleEditingChange","newName","currentTarget","onDoubleClick","EditingMenu","itemId","toggleRef","dropdownPosition","setDropdownPosition","handleDropdownClick","updateDropdownPosition","handleDropdownBlur","faEllipsisH","ReactDOM","setData","setExportCsv","handleExportData","itemType","itemsData","prevData","downloadExcel","wb","XLSX","book_new","ws_data","sectionName","headerKeys","ws","aoa_to_sheet","book_append_sheet","flattenDataForExcel","SimpleLocalize","faStarShooting","faArrowToBottom","KnowledgeBaseLinks","allCosmicjsBasicPages","StoryImage","PromptSlides","todaysQuest","setCompletionStatus","currentPromptIndex","setCurrentPromptIndex","handleSubmitResponse","incrementPromptIndex","Fragment","YesNoSlide","keyName","isCurrent","MultipleChoiceSlide","OpenResponseSlide","isNextEnabled","setIsNextEnabled","userResponse","setUserResponse","handleYesNoClick","question_prompt","question_prompt_es","QuestFooter","responseStatus","submissionCallback","handleYesNoSubmit","multiple_choice_option_1","multiple_choice_option_2","multiple_choice_option_3","multiple_choice_option_4","multiple_choice_option_1_es","multiple_choice_option_2_es","multiple_choice_option_3_es","multiple_choice_option_4_es","setResponseStatus","selectedOption","setSelectedOption","answerDictionary","spanishAnswerDictionary","handleMultipleChoiceSubmit","responseIndex","renderClassName","correctAnswer","cols","handleOpenResponseSubmit","CompletionSlide","totalCorrectAnswers","setTotalCorrectAnswers","setTotalQuestions","setPointsAwarded","faRocket","_ref7","dynamicFeedback","setDynamicFeedback","renderPositiveFeedback","faCheckCircle","faTimesCircle","handleNextClick","faChevronCircleRight","DailyQuest","completionStatus","isLast","handleDailyQuestCompletion","PropsContext","Dashboard","displayLoading","setDisplayLoading","scrollToTop","CSSTransition","in","onEnter","onExiting","onExit","onExited","unmountOnExit","SEO","faQuestionCircle","DashboardThisWeek","isWelcomeSent","setIsWelcomeSent","sendWelcomeNotification","sendAsyncWelcome","visitCount","handleWelcomeNotification","handleReturningUserNotification","tabParam","setTabParam","selectedTab","setSelectedTab","tabs","DashboardTabContent","tab","Tabs","getContent","tabClassName","panelClassName","setLocation","selectedTabKey","showMoreLabel","showMore","MaintenancePage","flexDirection","faCog","defaultConfiguration","subdomain","subdomainSchoolId","subdomainSamlProviderId","subdomainOpenIdConnectProviderId","subdomainState","isWhitelistedSubdomain","petersons_institution_id","useSubdomain","subdomainData","getSubdomainData","domain","matchedOrganization","org","audience_type","saml_provider_id","openid_connect_provider_id","useAuth","signing","setSigning","spanishMessages","englishMessages","isMaintenanceOn","site","siteMetadata","Toaster","toastOptions","pauseWhenPageIsHidden","PrivateRoute","MyAccount","Subscription","CancelMembership","ProfilePage","Logo","makeEducatorStudentEventNotification","eventType","param1","studentName","templateId","expireAfterDays","delaySeconds","delayMinutes","delayHours","delayDays","isPermanent","clearIds","senderId","sendToSelf","sendToEducators","sendToAdmins","makeAdminGroupNotification","groupName","historicalNotificationsRecord","historicalEducatorNotificationsRecord","goalsCount","setGoalsCount","skillsCount","setSkillsCount","interestsCount","setInterestsCount","goalClockRef","skillClockRef","interestClockRef","userSessionMinutes","setUserSessionMinutes","isShortTimedMotivationSent","setIsShortTimedMotivationSent","isMediumTimedMotivationSent","setIsMediumTimedMotivationSent","isEducatorMotivationalNotificationSent","setIsEducatorMotivationalNotificationSent","startTimer","clockRef","expirationTime","resetCallback","intervalId","prevMinutes","timedShortMotivationIds","deliveredMotivationIdsSet","notificationPayload","deliveredNotificationSet","queuedNotification","isToast","makeShortTimedMotivationalNotification","handleShortTimedMotivation","timedMediumMotivationIds","makeMediumTimedMotivationalNotification","handleMediumTimedMotivation","prevCount","isInstantPointDelivery","educatorNotificationPayload","handleSkillSetting","handleInterestSetting","handleNewCareerPlan","planName","makeNewCareerPlanNotification","makeDailyQuestCompletionNotification","handleStoryReading","storyTitle","makeStoryReadingNotification","motivationalNotificationPayload","makeNewBookmarkNotification","activityTitle","activitySlug","makeActivityCompletionNotification","handleNewResumeExperience","handleNewStoryboardProject","goalPoints","distanceToGoal","makeApproachingLevelNotification","handlePersonalInfoSetting","preciseTime","setMilliseconds","todayStart","setHours","todayEnd","isDateToday","handleMakeEducatorMotivationalNotification","educatorMotivationalIds","makeEducatorMotivationalNotification","handleMakeEducatorNewStudentGroupNotification","numStudents","makeEducatorNewStudentGroupNotification","adminGroupNotificationPayload","handleMakeEducatorNewFacultyGroupNotification","numFaculty","makeEducatorNewFacultyGroupNotification","handleMakeEducatorAssessmentCompletionNotification","sso_methods","logo","emails","banner","banner_position","magic_link_type","hide_name","reverse_names","penSVG","useModal","isShowing","setIsShowing","togglePortfolioShareModal","setChecked","handleSubmit","publicPortfolioURL","Form","Check","handleCopy","clipboard","writeText","faCopy","renderSkillsSection","Paragraph","TextRun","bold","spacing","before","space","renderInterestsSection","renderIntroduction","introduction","alignment","AlignmentType","CENTER","classicTemplate","work","volunteer","awards","life","leadership","certificate","coursework","sectionOrder","typeToSection","educationExperiences","fieldString","field","bulletPoints","degree","createDurationString","bulletPoint","bullet","font","flat","workExperiences","employer","leadershipExperiences","affiliation","volunteerExperiences","awardsExperiences","associatedOrg","issuer","lifeExperiences","certificateExperiences","courseworkExperiences","paragraphStyles","run","paragraph","sections","createHeader","characterSpacing","after","createBulletPoint","createSpacingLine","createAlignedHeader","tabStops","TabStopType","RIGHT","italics","Tab","createLifeSubHeader","renderSkillsInterestsSection","itemsString","renderLifeSection","minimalistTemplate","awardExperiences","break","shadingPadding","shading","ShadingType","CLEAR","HeadingLevel","HEADING_1","createSubHeader","secondLine","createAlignedTexts","leftText","rightText","createResumeHeader","headerTabStops","LEFT","accentTemplate","website","modernTemplate","filterExperiencesByType","highlights","actualHighlights","highlight","renderMonthName","formatExperienceData","templateFunctions","CLASSIC","ACCENT","MINIMALIST","MODERN","selectedTemplateFunction","Packer","toBlob","ResumeDocModal","selectedTemplate","setSelectedTemplate","useBackwardsCompatibleIntroduction","templateImages","classicTemplateImage","accentTemplateImage","minimalistTemplateImage","modernTemplateImage","templateNames","handleShow","_resumeData$experienc","_profile$skills","_profile$skills2","_resumeData$experienc2","resumeData","allResumeExperiences","savedColumnOneOrder","savedColumnTwoOrder","firstHalfOrder","defaultResumeColumnOneOrder","secondHalfOrder","defaultResumeColumnTwoOrder","determineSectionOrder","GenerateResumeDOCX","isSelectorModalOpen","closeSelectorModal","selectedType","setSelectedType","tipsModalOpen","setTipsModalOpen","experienceTypeData","ResumeTipsModal","ResumeExperienceEditorModal","isNewExperience","closeTimelineModal","isShowingPortfolioShareModal","selectorModalOpen","setSelectorModalOpen","showLocation","ExperienceTypeSelector","AddButton","faShare","PortfolioShareModal","savedQuote","savedIntroduction","savedCity","savedState","quote","setQuote","setIntroduction","setCity","resetFormValues","scrollable","editing","setEditing","IntroductionEditModal","EditButton","wallpaperImageUrl","monthOptions","monthCode","selectOnBlur","clearable","scrolling","mimeType","instructions","processFiles","draggingOver","setDraggingOver","plusSign","uploadFiles","convertMimeToExtension","onDrop","uploadedFiles","dataTransfer","getAsFile","onDragLeave","dragLeaveHandler","multiple","onDelete","useSortableItem","fileId","FileDisplayer","isThumbnail","faTrash","isOpen","savedTitle","savedDescription","savedMonth","savedYear","savedFileIds","newFiles","setTitle","setDescription","setMonth","setYear","setFilesOrder","filesList","addFile","useUserFiles","processNewFiles","newFileIds","DateInput","SortableContainer","UploadThumbnail","FileUploadButton","allowedStoryboardFileTypes","deletedFileIDs","isSaved","thumbnailData","editModalOpen","setEditModalOpen","dateString","fileIds","useStoryboardPanel","shortenedDescription","shortenDescription","dateHeight","verticalSpaceLeft","maxDescChars","MediaUploadModal","StoryboardPanelsContainer","panelIds","updatePanelIdsOrder","useStoryboardPanelsOrder","MediaPanel","Storyboard","setNewFiles","PortfolioBanner","WallpaperImageModal","PortfolioHeading","PortfolioIntroduction","Resume","PublicStoryboard","buttonState","strengths","weaknesses","nonEmptyFields","aboutMeString","myStrengthsString","myWeaknessesString","MyAccountPage","_profile","experienceData","isLastExperience","collapseIcon","expandIcon","isModalOpen","setIsModalOpen","isCollapsed","setIsCollapsed","displayDuration","years","totalMonths","numYears","numMonths","yearsString","monthsString","displayDateRange","displayTitle","displaySubtitle","subtitle","issuedBy","issuerString","associatedWith","filteredExperiences","isExperienceArrayFilled","_filteredExperiences","ResumeTimelineExperience","precedingExperience","currentlyAdding","setCurrentlyAdding","faArrowsAltV","getExperienceLabel","defaultOrder","potentialOrder","setPotentialOrder","updatePotentialOrder","allowedItemTypes","missingItemTypes","unsubscribeFunction","actualOrder","ResumeItem","processedResumeItems","experienceTypes","expType","matchingExperiences","experienceItem","ResumeTimeline","ResumeList","ResumeColumn","useResumeData","selectedExperienceType","setSelectedExperienceType","ResumeColumns","ExperienceEditorContext","_experience$startDate","_experience$startDate2","_experience$endDateMo","_experience$endDateYe","_dates$startDateYear","_dates$endDateYear","isSingle","allowJustEndDate","setLocalExperienceKeyValue","toggleExperienceIsCurrent","toggleExperienceOnlyHasEndDate","isCurrentChecked","setIsCurrentChecked","checkIfCurrent","onlyHasEndDateChecked","setOnlyHasEndDateChecked","checkIfOnlyHasEndDate","dateKeys","defaultErrors","dates","setDates","getMonthOptions","clearErrors","exceptKey","errorCount","errorCounter","flexGrow","changeStartMonth","changeEndMonth","formErrors","getControlledId","getControllerId","activeKey","needsRefocusRef","parentOnSelect","SelectableContext","tabContext","listNode","getNextActiveChild","currentListNode","activeChild","nextIndex","handleSelect","mergedRef","useMergedRefs","NavContext","nextActiveChild","rbEventKey","ListGroupItem","horizontal","ListGroup","horizontalVariant","_useUncontrolled","initialBsPrefix","_useUncontrolled$as","controlledProps","OptimizerButton","updateData","optimizedBullets","setOptimizedBullets","OverlayTrigger","Tooltip","optimized","fetchOptimizedText","pointerEvents","faMagic","backdrop","marginBotton","selectBullet","dataKey","inputType","textValue","setTextValue","flexFlow","paddingRight","paddingLeft","dispatchHighlightAction","placeholders","ExperienceBulletInput","addExtraField","faPlusCircle","ExperienceTextInput","ExperienceDatesInput","ExperienceBulletsInput","ExperienceInputWork","ExperienceInputEducation","ExperienceInputVolunteer","ExperienceInputLife","ExperienceInputLeadership","ExperienceInputAward","ExperienceInputCertificate","ExperienceInputCoursework","allRequiredFields","award","checkRequiredFields","userEntry","dateError","verifyDates","startMonth","startYear","endMonth","endYear","ConditionalButton","currentItems","defaultSkillOptions","defaultSkillOptionsEs","defaultInterestOptions","defaultInterestOptionsEs","setNewItem","handleChange","onAddItem","allowAdditions","additionLabel","renderLabel","newItemString","setExperience","isOptimizerModalOpen","setIsOptimizerModalOpen","updatedExperienceData","highlightsCopy","oldData","handleCloseModal","getExperienceAbbreviatedLabel","fontFamily","getExperienceInstructions","SkillsInterestsEditor","ExperienceInput","handleDeleteResumeExperience","handleCreateResumeExperience","handleUpdateResumeExperience","ListItem","displayedText","localizeSkillInterest","setList","updateListOrder","setExperiences","setSkills","setInterests","updateResumeExperiences","updatedExperiences","faSchool","abbreviatedLabel","faBriefcase","faFileCertificate","faStars","faHandsHelping","faUsers","faMedal","faUser","faHeartCircle","faBook","expMap","experienceType","enToEs","skill","interest","monthNum","aDate","isPriorPosition","currentExperience","_precedingExperience$","_currentExperience$em","isPrecededBySameCompany","isHeadPosition","isSucceededBySameCompany","succeedeingExperience","_succeedeingExperienc","_currentExperience$em2","MonthDayDeadline","dateData","_isValid","_monthInt","_dayInt","monthInt","ApplicationDeadLine","_closingDate","closingDate","_notificationDate","notificationDate","_financialAidDate","financialAidDate","_isRollingAdmission","isRollingAdmission","titleTemplate","locationUrl","metaDescription","metaImage","Helmet","htmlAttributes","author","openedFileIndex","selectedFileIndex","setSelectedFileIndex","displayIndex","FileDownloadLink","flexShrink","flexBasis","PublicPanelModal","PublicStoryboardPanel","setFileIds","setPanelIds","StandardToast","faExclamationCircle","fileType","thumbnailURL","fileDisplayElement","faFileExclamation","faVideo","filesData","setFilesData","generatePdfThumbnail","pdfString","reader","convertFileToBase64","modifiedString","convertToThumbnail","thumbnailFile","pdfData","File","convertBase64ToFile","updatedFile","placeholderFile","fetchedFile","fetchFile","newId","newFile","schoolUserType","schoolUserTypes","organizationUserType","organizationUserTypes","individualUserType","allCosmicjsActivities","activity_category","activity_view_url","activity_download_file","activity_image","activity_image_alt","languages","locationProps","languageLink","getTranslatedPath","GatsbyLink","routed","gatsbyNavigate","removeLocalePart","currentPageLanguage","languagePath","outputPath","pathElements","profileId","publicProfile","fetchData","_profile$profilePubli","profilePublicSections","formatText","convertNewLineToBR","storyReadingOptions","standard","textEs","simplified","SyntaxError","$Function","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasProto","getProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","hasArrayLengthDefineBug","foo","$Object","origSymbol","hasSymbolSham","symObj","getOwnPropertyNames","syms","toStringTag","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","super_","TempCtor","mergeConfigs","defaultConfig","configs","IntlMessageFormat","formatterCache","getAst","__parse","parseOpts","memoizedDefaultLocale","Locale","supportedLocales","short","medium","long","full","FormatError","msg","originalMessage","InvalidValueError","variableId","INVALID_VALUE","InvalidValueTypeError","MissingValueError","MISSING_VALUE","PART_TYPE","isFormatXMLElementFn","currentPluralValue","els_1","varName","value_1","formatFn","lastPart","mergeLiteral","isLiteralElement","isArgumentElement","isNumberElement","isDateElement","isTimeElement","isSelectElement","isPluralElement","isPoundElement","isTagElement","isNumberSkeleton","isDateTimeSkeleton","pruneLocation","captureLocation","argIndex","framesToPop","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","strClass","GeneratorFunction","isFnRegex","generatorFunc","getGeneratorFunc","whichTypedArray","codes","keyboardKey","getCode","eventOrKey","which","getKey","eventOrCode","isEvent","Cancel","Help","Backspace","Clear","Shift","Control","Alt","Pause","CapsLock","Escape","Convert","NonConvert","Accept","ModeChange","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Select","Print","Execute","PrintScreen","Insert","Delete","OS","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","NumLock","ScrollLock","VolumeMute","VolumeDown","VolumeUp","Meta","AltGraph","Attn","CrSel","ExSel","EraseEof","Play","ZoomOut","Spacebar","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","Tilde","GraveAccent","ExclamationPoint","AtSign","PoundSign","PercentSign","Caret","Ampersand","PlusSign","MinusSign","EqualsSign","DivisionSign","MultiplicationSign","Comma","Decimal","Colon","Semicolon","Pipe","BackSlash","QuestionMark","SingleQuote","DoubleQuote","LeftCurlyBrace","RightCurlyBrace","LeftParenthesis","RightParenthesis","LeftAngleBracket","RightAngleBracket","LeftSquareBracket","RightSquareBracket","stdOnEnd","ieOnEnd","charset","setAttributes","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayMap","arraySome","baseUnary","isHostObject","mapToArray","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArguments","baseTimes","skipIndexes","isIndex","assocIndexOf","eq","getMapData","pairs","LARGE_ARRAY_SIZE","eachFunc","fromRight","baseEach","baseFor","isArrayLike","iterable","keysFunc","createBaseFor","baseGet","isKey","castPath","toKey","baseHasIn","baseIsEqual","customizer","bitmask","isObjectLike","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","byteOffset","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseIteratee","identity","srcValue","isStrictComparable","matchesStrictComparable","hasFunc","isLength","hasPath","hasIn","baseMatchesProperty","matchData","getMatchData","noCustomizer","baseIsMatch","baseMatches","basePropertyDeep","baseKeys","Ctor","proto","baseOrderBy","baseMap","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareMultiple","valIsReflexive","valIsSymbol","isSymbol","othIsReflexive","othIsSymbol","arrLength","seen","arrValue","othIndex","getValue","ctorString","baseToString","isArrayLikeObject","guard","FUNC_ERROR_TEXT","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","toNumber","flush","isBinary","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","resIndex","isBuffer","isArg","isBuff","isType","symbolsFunc","getRawTag","symToStringTag","baseGetTag","isPrototype","cacheHas","arrStacked","othStacked","getAllKeys","objStacked","baseGetAllKeys","getSymbols","isKeyable","nativeObjectToString","unmasked","arrayFilter","stubArray","nativeGetSymbols","overArg","types","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","MaterialButton","element_","Constant_","CssClasses_","RIPPLE_EFFECT","RIPPLE_CONTAINER","RIPPLE","blurHandler_","disable","enable","rippleContainer","rippleElement_","boundRippleBlurHandler","boundButtonBlurHandler","componentHandler","classAsString","widget","upgradeDom","optJsClass","optCssClass","upgradeElement","upgradeElements","upgradeAllRegistered","registerUpgradedCallback","jsClass","downgradeElements","registeredComponents_","createdComponents_","componentConfigProperty_","findRegisteredClass_","optReplace","getUpgradedListOfElement_","dataUpgraded","isElementUpgraded_","createEvent_","upgradeDomInternal","registeredClass","upgradeElementInternal","upgradingEv","upgradedList","classesToUpgrade","classConstructor","upgradedEv","deconstructComponentInternal","componentIndex","upgrades","componentPlace","upgradeElementsInternal","regClass","newConfig","downgradeNode","NodeList","ComponentConfigPublic","ComponentConfig","MaterialProgress","INDETERMINATE_CLASS","setProgress","progressbar_","setBuffer","bufferbar_","auxbar_","MaterialSpinner","MDL_SPINNER_LAYER_COUNT","MDL_SPINNER_LAYER","MDL_SPINNER_CIRCLE_CLIPPER","MDL_SPINNER_CIRCLE","MDL_SPINNER_GAP_PATCH","MDL_SPINNER_LEFT","MDL_SPINNER_RIGHT","createLayer","layer","leftClipper","gapPatch","rightClipper","circleOwners","circle","MaterialTextfield","maxRows","NO_MAX_ROWS","MAX_ROWS_ATTRIBUTE","LABEL","INPUT","IS_DIRTY","IS_FOCUSED","IS_DISABLED","IS_INVALID","IS_UPGRADED","HAS_PLACEHOLDER","onKeyDown_","currentRowCount","onFocus_","onBlur_","onReset_","updateClasses_","checkDisabled","checkValidity","checkDirty","checkFocus","input_","validity","change","label_","boundUpdateClassesHandler","boundFocusHandler","boundBlurHandler","boundResetHandler","boundKeyDownHandler","areInputsEqual","newInputs","lastInputs","resultFn","lastResult","calledOnce","newArgs","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","RequireObjectCoercible","$isEnumerable","$push","vals","Paginator","per_page","total_results","current_page","total_pages","first_page","last_page","first_result","last_result","pages","previous_page","next_page","has_previous_page","has_next_page","FilterMatchMode","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","IN","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","BETWEEN","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","CUSTOM","AND","OR","_createForOfIteratorHelper","_arrayLikeToArray$1","_unsupportedIterableToArray$1","normalCompletion","didErr","_e2","FilterService","fields","filterMatchMode","filterLocale","filteredItems","_step2","_iterator2","resolveFieldData","removeAccents","notContains","equals","notEquals","notIn","lte","gte","dateIs","toDateString","dateIsNot","dateBefore","dateAfter","PrimeReact$1","PrimeReact","modal","menu","tooltip","currentTheme","newTheme","linkElementId","_linkElement$parentNo","linkElement","newThemeUrl","newLinkElement","replaceChild","addRule","choose","chooseDate","chooseMonth","chooseYear","dateFormat","dayNames","dayNamesMin","dayNamesShort","emptyFilterMessage","emptyMessage","emptySearchMessage","emptySelectionMessage","fileSizeTypes","firstDayOfWeek","matchAll","matchAny","monthNames","monthNamesShort","nextDecade","nextHour","nextMinute","nextMonth","nextSecond","nextYear","noFilter","passwordPrompt","pm","prevDecade","prevHour","prevMinute","prevMonth","prevSecond","prevYear","removeRule","searchMessage","selectionMessage","showMonthAfterYear","strong","today","weak","weekHeader","aria","cancelEdit","collapseRow","editRow","expandRow","falseLabel","filterConstraint","filterOperator","firstPageLabel","gridView","hideFilterMenu","jumpToPageDropdownLabel","jumpToPageInputLabel","lastPageLabel","listView","moveAllToSource","moveAllToTarget","moveBottom","moveDown","moveToSource","moveToTarget","moveTop","moveUp","navigation","nextPageLabel","nullLabel","pageLabel","otpLabel","passwordHide","passwordShow","previousPageLabel","rotateLeft","rotateRight","rowsPerPageLabel","saveEdit","selectAll","selectRow","showFilterMenu","slide","slideNumber","star","stars","trueLabel","unselectAll","unselectRow","zoomImage","zoomIn","zoomOut","localeOption","_locale","localeOptions","INFO","WARN","CONTRAST","ADDRESS_BOOK","ALIGN_CENTER","ALIGN_JUSTIFY","ALIGN_LEFT","ALIGN_RIGHT","AMAZON","ANDROID","ANGLE_DOUBLE_DOWN","ANGLE_DOUBLE_LEFT","ANGLE_DOUBLE_RIGHT","ANGLE_DOUBLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_UP","APPLE","ARROW_CIRCLE_DOWN","ARROW_CIRCLE_LEFT","ARROW_CIRCLE_RIGHT","ARROW_CIRCLE_UP","ARROW_DOWN_LEFT_AND_ARROW_UP_RIGHT_TO_CENTER","ARROW_DOWN_LEFT","ARROW_DOWN_RIGHT","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT_ARROW_LEFT","ARROW_RIGHT","ARROW_UP_LEFT","ARROW_UP_RIGHT_AND_ARROW_DOWN_LEFT_FROM_CENTER","ARROW_UP_RIGHT","ARROW_UP","ARROWS_ALT","ARROWS_H","ARROWS_V","ASTERISK","AT","BACKWARD","BAN","BARCODE","BARS","BELL_SLASH","BELL","BITCOIN","BOLT","BOOK","BOOKMARK_FILL","BOOKMARK","BOX","BRIEFCASE","BUILDING_COLUMNS","BUILDING","BULLSEYE","CALCULATOR","CALENDAR_CLOCK","CALENDAR_MINUS","CALENDAR_PLUS","CALENDAR_TIMES","CALENDAR","CAMERA","CAR","CARET_DOWN","CARET_LEFT","CARET_RIGHT","CARET_UP","CART_ARROW_DOWN","CART_MINUS","CART_PLUS","CHART_BAR","CHART_LINE","CHART_PIE","CHART_SCATTER","CHECK_CIRCLE","CHECK_SQUARE","CHECK","CHEVRON_CIRCLE_DOWN","CHEVRON_CIRCLE_LEFT","CHEVRON_CIRCLE_RIGHT","CHEVRON_CIRCLE_UP","CHEVRON_DOWN","CHEVRON_LEFT","CHEVRON_RIGHT","CHEVRON_UP","CIRCLE_FILL","CIRCLE_OFF","CIRCLE_ON","CIRCLE","CLIPBOARD","CLOCK","CLONE","CLOUD_DOWNLOAD","CLOUD_UPLOAD","CLOUD","CODE","COG","COMMENT","COMMENTS","COMPASS","COPY","CREDIT_CARD","CROWN","DATABASE","DELETE_LEFT","DESKTOP","DIRECTIONS_ALT","DIRECTIONS","DISCORD","DOLLAR","DOWNLOAD","EJECT","ELLIPSIS_H","ELLIPSIS_V","ENVELOPE","ERASER","ETHEREUM","EURO","EXCLAMATION_CIRCLE","EXCLAMATION_TRIANGLE","EXPAND","EXTERNAL_LINK","EYE_SLASH","EYE","FACE_SMILE","FACEBOOK","FAST_BACKWARD","FAST_FORWARD","FILE_ARROW_UP","FILE_CHECK","FILE_EDIT","FILE_EXCEL","FILE_EXPORT","FILE_IMPORT","FILE_O","FILE_PDF","FILE_PLUS","FILE_WORD","FILE","FILTER_FILL","FILTER_SLASH","FILTER","FLAG_FILL","FLAG","FOLDER_OPEN","FOLDER_PLUS","FOLDER","FORWARD","GAUGE","GIFT","GITHUB","GLOBE","GOOGLE","GRADUATION_CAP","HAMMER","HASHTAG","HEADPHONES","HEART_FILL","HEART","HISTORY","HOME","HOURGLASS","ID_CARD","IMAGE","IMAGES","INBOX","INDIAN_RUPEE","INFO_CIRCLE","INSTAGRAM","KEY","LANGUAGE","LIGHTBULB","LINK","LINKEDIN","LIST_CHECK","LIST","LOCK_OPEN","LOCK","MAP_MARKER","MAP","MARS","MEGAPHONE","MICROCHIP_AI","MICROCHIP","MICROPHONE","MICROSOFT","MINUS_CIRCLE","MINUS","MOBILE","MONEY_BILL","MOON","OBJECTS_COLUMN","PALETTE","PAPERCLIP","PAUSE_CIRCLE","PAUSE","PAYPAL","PEN_TO_SQUARE","PENCIL","PERCENTAGE","PHONE","PINTEREST","PLAY_CIRCLE","PLAY","PLUS_CIRCLE","PLUS","POUND","POWER_OFF","PRIME","PRINT","QRCODE","QUESTION_CIRCLE","QUESTION","RECEIPT","REDDIT","REFRESH","REPLAY","REPLY","SAVE","SEARCH_MINUS","SEARCH_PLUS","SEARCH","SEND","SERVER","SHARE_ALT","SHIELD","SHOP","SHOPPING_BAG","SHOPPING_CART","SIGN_IN","SIGN_OUT","SITEMAP","SLACK","SLIDERS_H","SLIDERS_V","SORT_ALPHA_DOWN_ALT","SORT_ALPHA_DOWN","SORT_ALPHA_UP_ALT","SORT_ALPHA_UP","SORT_ALT_SLASH","SORT_ALT","SORT_AMOUNT_DOWN_ALT","SORT_AMOUNT_DOWN","SORT_AMOUNT_UP_ALT","SORT_AMOUNT_UP","SORT_DOWN_FILL","SORT_DOWN","SORT_NUMERIC_DOWN_ALT","SORT_NUMERIC_DOWN","SORT_NUMERIC_UP_ALT","SORT_NUMERIC_UP","SORT_UP_FILL","SORT_UP","SORT","SPARKLES","SPINNER_DOTTED","SPINNER","STAR_FILL","STAR_HALF_FILL","STAR_HALF","STAR","STEP_BACKWARD_ALT","STEP_BACKWARD","STEP_FORWARD_ALT","STEP_FORWARD","STOP_CIRCLE","STOP","STOPWATCH","SUN","SYNC","TABLE","TABLET","TAG","TAGS","TELEGRAM","TH_LARGE","THUMBS_DOWN_FILL","THUMBS_DOWN","THUMBS_UP_FILL","THUMBS_UP","THUMBTACK","TICKET","TIKTOK","TIMES_CIRCLE","TIMES","TRASH","TROPHY","TRUCK","TURKISH_LIRA","TWITCH","TWITTER","UNDO","UNLOCK","UPLOAD","USER_EDIT","USER_MINUS","USER_PLUS","USERS","VENUS","VERIFIED","VIDEO","VIMEO","VOLUME_DOWN","VOLUME_OFF","VOLUME_UP","WALLET","WAREHOUSE","WAVE_PULSE","WHATSAPP","WIFI","WINDOW_MAXIMIZE","WINDOW_MINIMIZE","WRENCH","YOUTUBE","DESC","UNSORTED","ASC","PrimeReactContext","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","commonStyle","ComponentBase","cProps","cParams","cName","ptOptions","unstyled","globalCSS","inlineStyles","getPTValue","_ComponentBase$contex","searchInDefaultPT","originalkey","isNestedParam","fkey","toFlatCase","componentName","hostName","__TYPE","isTransition","datasetPrefix","getHostInstance","_params$props","_getHostInstance","_ref$mergeSections","mergeSections","_ref$mergeProps","mergeProps","useMergeProps","getPTClassValue","getOptionValue","globalPT","_useGlobalPT","_useDefaultPT","_usePT","_getPT","datasetProps","__parentMetadata","classNameMergeFunction","getProps","getMergedProps","getOtherProps","getDiffProps","setMetaData","isUnstyled","ptm","ptmo","sx","_ComponentBase$contex2","base","fKeys","fKey","matchedPTOption","isNotEmpty","getItemValue","_usept","checkSameKey","originalValue","_ref4$mergeSections","_ref4$mergeProps","useHandleStyle","_config$styled","styled","_config$hostName","loadBaseStyle","manual","load","loadCommonStyle","loadGlobalStyle","hookName","selfHook","defaultHook","useUnmountEffect","useEventListener","_ref$target","_ref$when","when","targetRef","listenerRef","prevListener","prevOptions","bindOptions","bindTarget","unbind","getTargetElement","dispose","updateTarget","listenerChanged","optionsChanged","listenerExists","ESC_KEY_HANDLING_PRIORITIES","SIDEBAR","SLIDE_MENU","DIALOG","MENU","OVERLAY_PANEL","PASSWORD","CASCADE_SELECT","SPLIT_BUTTON","SPEED_DIAL","TOOLTIP","globalEscKeyHandlingLogic","escKeyListeners","onGlobalKeyDown","maxPrimaryPriority","theMostImportantEscHandlersSet","maxSecondaryPriority","theMostImportantEscHandler","refreshGlobalKeyDownListener","primaryPriority","secondaryPriority","primaryPriorityListeners","useGlobalOnEscapeKey","priority","useMountEffect","useOverlayScrollListener","scrollableParentsRef","hideOnScroll","hideOverlaysOnDocumentScrolling","getScrollableParents","useResizeListener","useOverlayListener","_listener","_ref$type","overlayRef","_useEventListener2","isOutsideClicked","bindDocumentClickListener","unbindDocumentClickListener","_useResizeListener2","isTouchDevice","bindWindowResizeListener","unbindWindowResizeListener","_useEventListener4","bindWindowOrientationChangeListener","unbindWindowOrientationChangeListener","_useOverlayScrollList2","bindOverlayScrollListener","unbindOverlayScrollListener","useStyle","_useState2","isLoaded","setIsLoaded","styleRef","defaultDocument","isClient","_options$document","_options$manual","_options$name","_options$id","_options$media","media","styleContainer","existingElement","getCurrentStyleRef","addNonce","newCSS","unload","removeInlineStyle","useUpdateEffect","deps","PortalBase","appendTo","visible","onMounted","onUnmounted","Portal","inProps","_React$useState2","mountedState","setMountedState","RippleBase","Ripple","inkRef","isRippleActive","ripple","metaData","_RippleBase$setMetaDa","getTarget","bindEvents","onPointerDown","getOffset","pageX","getWidth","pageY","getHeight","activateRipple","setDimensions","getOuterWidth","getOuterHeight","getInk","rootProps","onAnimationEnd","itemProps","focusedState","selected","SelectButtonBase","optionLabel","optionValue","optionDisabled","unselectable","tooltipOptions","itemTemplate","SelectButtonItem","labelProps","setFocusedState","getPTOptions","_onClick","setFocusedIndex","originalEvent","changeTabIndexes","firstTabableChild","elementRef","elem","getJSXElement","buttonProps","_onKeyDown","onFocus","focusedIndex","_SelectButtonBase$set","onOptionClick","isOptionDisabled","isSelected","focusFirstElement","getElement","hasTooltip","getOptionLabel","positionState","classNameState","TooltipBase","autoHide","autoZIndex","baseZIndex","closeOnEscape","hideDelay","hideEvent","mouseTrack","mouseTrackLeft","mouseTrackTop","onBeforeHide","onBeforeShow","showDelay","showEvent","showOnDisabled","updateDelay","visibleState","setVisibleState","_React$useState4","setPositionState","_React$useState6","setClassNameState","_TooltipBase$setMetaD","hide","textRef","currentTargetRef","containerSize","allowHide","currentMouseEvent","isMouseTrack","getTargetOption","hasTargetOption","isShowOnDisabled","isAutoHide","getEvents","showEvents","hideEvents","getPosition","updateText","updateTooltipState","_currentMouseEvent$cu","mouseTrackCheck","align","applyDelay","sendCallback","clearTimeouts","coordinate","_containerSize","_getMouseTrackPositio","getMouseTrackPosition","findCollisionPosition","flipfitCollision","calculatedPosition","_calculatedPosition$a","atX","atY","myX","newPosition","updateContainerPosition","bindTargetEvent","_getEvents","unbindTargetEvent","_getEvents2","delayProp","hasWrapper","addMultipleClasses","_target$parentElement","replaceWith","updateTargetEvents","unloadTargetEvents","loadTargetEvents","setTargetEventOperations","getRefElement","setEvent","classname","arrowProps","textProps","_onMouseLeave","_arrayLikeToArray$2","_unsupportedIterableToArray$2","_createForOfIteratorHelper$1","DomHandler","userLanguage","browserLanguage","systemLanguage","num","_styles","_styles2","computedStyles","_element$$attrs","_element$$attrs2","$attrs","cv","_cv","_k","_v","matchedEvent","isAttributeEquals","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","calculateMinWidth","relativePosition","absolutePosition","elementDimensions","getHiddenElementDimensions","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","windowScrollTop","getWindowScrollTop","windowScrollLeft","getWindowScrollLeft","getViewport","targetOffsetPx","alignOffset","targetHeight","myArr","atArr","getPositionValue","isOffset","myOffset","alignWithAt","myXPosition","parents","getParents","scrollableParents","overflowCheck","styleDeclaration","addScrollableParent","scrollSelectors","scrollselectors","findSingle","visibility","elementHeight","elementWidth","tick","fading","MSStream","maxTouchPoints","msMaxTouchPoints","nativeElement","borderTopValue","borderTop","paddingTopValue","containerRect","itemHeight","rangeCount","getRangeAt","getClientRects","calculatedScrollbarWidth","scrollDiv","scrollbarWidth","resolveUserAgent","webkit","setProperty","calculateBodyScrollbarWidth","_step3","visibleFocusableElements","_iterator3","focusableElement","focusableElements","getFocusableElements","preventScroll","firstFocusableElement","getFirstFocusableElement","prevText","nextText","currentText","ghostDiv","lineHeight","ghostSpan","targetNode","csv","filename","styleElement","isExist","REACT_APP_CSS_NONCE","rv","elm1","elm2","attrs1","attrs2","node1","node2","getAttributeNames","astyle","bstyle","rexDigitsOnly","_i3","_Object$keys","isEqualElement","nodeValue","EventBus","allHandlers","ObjectUtils","obj1","obj2","deepEquals","arrA","arrB","dateA","dateB","regexpA","regexpB","_unused","startsWiths","_key3","findDiffKeys","_len3","_key4","getProp","validTypes","_child$type","childType","getComponentProp","_payload","forwardRef","_char","_char2","findLast","_unused2","findLastIndex","_unused3","value1","value2","nullSortOrder","finalSortOrder","emptyValue1","emptyValue2","Collator","findChildrenByKey","ownKeys$2","IconUtils","iconProps","iconType","defaultContentOptions","_objectSpread$2","hasMergeFunction","newClassName","existingFn","lastId","UniqueComponentId","zIndexes","getLastZIndex","ZIndexUtils","lastZIndex","newZIndex","generateZIndex","getCurrent","getCurrentZIndex","validators","_createChainableTypeChecker2","validator","_createChainableTypeChecker","propName","propFullName","componentNameSafe","propFullNameSafe","checkType","chainedCheckType","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","validateArrayFormatSeparator","strict","keysSorter","removeHash","hashStart","extract","parseValue","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","formatter","isEncodedArray","arrayValue","parserForArrayFormat","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","exclude","exclusionFilter","_arrays","_Autowhatever","_theme","alwaysTrue","REASON_SUGGESTIONS_REVEALED","REASON_INPUT_FOCUSED","REASON_INPUT_CHANGED","REASON_ESCAPE_PRESSED","Autosuggest","_alwaysRenderSuggestions","alwaysRenderSuggestions","justClickedOnSuggestionsContainer","suggestionsContainer","autowhatever","sectionIndex","itemIndex","updateHighlightedSuggestion","pressedSuggestion","justSelectedSuggestion","justMouseEntered","keepSuggestionsOnSelect","shouldKeepSuggestionsOnSelect","suggestionValue","resetHighlightedSuggestion","_this$props2","focusInputOnSuggestionClick","_this$getSuggestionIn","getSuggestionIndices","findSuggestionElement","suggestionIndex","clickedSuggestion","getSuggestion","clickedSuggestionValue","maybeCallOnChange","closeSuggestions","_this$props3","shouldRenderSuggestions","highlightedSuggestion","getHighlightedSuggestion","shouldRender","isFocused","highlightedSectionIndex","highlightedSuggestionIndex","valueBeforeUpDown","blurEvent","onSuggestionMouseEnter","onSuggestionMouseLeave","onMouseDown","onSuggestionMouseDown","onTouchStart","onSuggestionTouchStart","onTouchMove","onSuggestionTouchMove","onSuggestionClick","containerProps","renderSuggestionsContainer","justPressedUpDown","onDocumentMouseDown","onDocumentMouseUp","itemsContainer","shouldResetHighlighting","highlightFirstSuggestion","willRenderSuggestions","revealSuggestions","_this$props4","onSuggestionHighlighted","prevValue","shouldResetValueBeforeUpDown","_this$props5","_this$state","suggestionElement","startNode","_this$props$inputProp","_this3","_this$props6","renderInputComponent","theme","_this$state2","_onFocus","autowhateverInputProps","newHighlightedSectionIndex","newHighlightedItemIndex","getSuggestionValueByIndex","_newValue","willCloseSuggestions","renderSuggestionData","renderItemsContainer","renderItem","renderItemData","getSectionItems","highlightedItemIndex","mapToAutowhateverTheme","storeAutowhateverRef","bool","defaultTheme","_sectionIterator","_reactThemeable","_SectionTitle","_ItemList","emptyObject","Autowhatever","userRef","highlightedItem","isInputFocused","nextPrev","_this$sectionIterator2","sectionIterator","setSectionsItems","setSectionIterator","setTheme","ensureHighlightedItemIsVisible","sectionsItems","sectionsLengths","allSectionsAreEmpty","itemsCount","keyPrefix","sectionKeyPrefix","isFirstSection","onHighlightedItemChange","getItemId","storeItemsListReference","itemOffsetRelativeToContainer","renderedItems","renderSections","renderItems","ariaActivedescendant","itemsContainerId","inputComponent","storeInputReference","storeItemsContainerReference","oneOfType","containerOpen","inputOpen","inputFocused","itemsContainerOpen","itemsList","itemFirst","itemHighlighted","sectionContainer","sectionContainerFirst","sectionTitle","_compareObjects","isHighlighted","storeItemReference","any","_Item","ItemsList","sectionPrefix","isItemPropsFunction","isFirst","itemKey","itemPropsObj","allItemProps","storeHighlightedItemReference","SectionTitle","objA","objB","keysMap","aValue","bValue","aValueKeys","bValueKeys","aValueKey","suggestionsContainerOpen","suggestionsList","suggestionFirst","suggestionHighlighted","navKey","navContext","isActive","contextControllerId","contextControlledId","handleOnclick","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","margins","collapseStyles","mountOnEnter","appear","getDimensionValue","onEntering","onEntered","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEnter","createChainedFunction","handleEntering","handleEntered","handleExit","triggerBrowserReflow","handleExiting","addEndListener","transitionEndListener","innerProps","AccordionCollapse","contextEventKey","finalClassName","AccordionToggle","accordionOnClick","DivStyledAsH4","AlertHeading","AlertLink","closeLabel","uncontrolledProps","dismissible","Heading","CardImg","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","createWithBsPrefix","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","cardContext","cardHeaderBsPrefix","CardContext","Img","Subtitle","Text","ImgOverlay","CloseButton","matchesImpl","useGlobalListener","eventTarget","useDropdownMenu","_useCallbackRef","attachArrowRef","hasShownRef","_options$fixed","fixed","_options$popperConfig","popperConfig","_options$usePopper","usePopper","shouldUsePopper","alignEnd","setMenu","menuElement","toggleElement","mergeOptionsWithPopperConfig","enableEvents","menuProps","hasShown","useRootClose","clickTrigger","DropdownMenu","_useDropdownMenu","useDropdownToggle","_ref$show","_ref$toggle","setToggle","DropdownToggle","_useDropdownToggle","focusFirstItemOnShow","itemSelector","defaultShow","onToggle","useRefWithUpdate","attachRef","rawShow","rawOnToggle","_ref$itemSelector","_useUncontrolledProp","_useRefWithUpdate","menuRef","_useRefWithUpdate2","lastShow","lastSourceEvent","focusInDropdown","nextShow","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getNextFocusedChild","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_next","_menuRef$current2","DropdownItem","propActive","onSelectCtx","useWrappedRefWithWarning","alignDirection","sm","md","lg","xl","showProps","isNavbar","NavbarContext","_usePopperMarginModif","usePopperMarginModifiers","popperRef","marginModifiers","alignClasses","brkPoint","_useDropdownMenu$","toggleProps","DropdownHeader","DropdownDivider","DropdownItemText","pProps","navbar","handleToggle","_fadeStyles","fadeStyles","Fade","Feedback","_ref$tooltip","controlId","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","defaultPrefix","FormCheckLabel","FormCheck","_ref$inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","propCustom","innerFormContext","hasLabel","Input","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","htmlSize","plaintext","readOnly","_classes2","_classes3","_classes4","_classes5","FormGroup","DEVICE_SIZES","Col","spans","span","propValue","_propValue$span","infix","FormLabel","srOnly","columnClass","FormText","muted","Switch","FormRow","FormImpl","validated","Row","Group","scrollbarSize","recalc","DOCUMENT_NODE","isOverflowing","bodyIsOverflowing","BLACKLIST","siblings","ariaHidden","manager","ModalManager","_temp","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","isContainerOverflowing","containerIndexFromModal","overflowing","setContainerStyle","containerState","removeContainerStyle","modalIdx","containerIdx","hideSiblings","showSiblings","_data$modals","isTopModal","useModalManager","provided","modalManager","setDialogRef","setBackdropRef","_ref$role","_ref$backdrop","_ref$keyboard","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerRef","containerClassName","_ref$onHide","useWaitForDOMRef","prevShow","_useState","exited","setExited","lastFocusRef","useImperativeHandle","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","Manager","Selector","BootstrapModalManager","_ModalManager","adjustAndStore","adjust","_css","actual","restore","_css2","ModalDialog","contentClassName","dialogClass","ModalHeader","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","ariaDescribedby","ariaLabel","propsManager","modalStyle","setStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","_modal","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","isAppearing","onMouseUp","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","MAX_DELAY_MS","setChainedTimeout","timeoutAtMs","delayMs","useTimeout","Overlay","outerRef","_props$containerPaddi","containerPadding","_props$popperConfig","_useCallbackRef2","_usePopper","mountOverlay","rootClose","rootCloseDisabled","_PropTypes$func","_excluded2","_ref$popperConfig","outerProps","actualTransition","overlayProps","aRef","__wrapped","safeFindDOMNode","wrapRefs","scheduleUpdate","outOfBoundaries","RefHolder","handleMouseOverOut","relatedNative","related","trigger","propsShow","_ref$defaultShow","propsDelay","_ref$flip","triggerNodeRef","hoverStateRef","normalizeDelay","handleFocus","handleBlur","handleMouseOver","handleMouseOut","_len4","triggers","triggerProps","onMouseOver","onMouseOut","cloneElement","_excluded3","ROUND_PRECISION","getPercentage","renderProgressBar","_classNames","striped","animated","isChild","wrapperProps","isTrivialHref","makeEventKey","ThemeContext","useBootstrapPrefix","primaryPlacement","funcs","rHyphen","pascalCase","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","parseDuration","getMargins","arrowMargins","popoverClass","dropdownMenuClass","_margins$current","_arrowMargins$current","_getMargins","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","equal","flags","uiCallback","unregisterAuthObserver","firebaseUiWidget","AuthUI","userSignedIn","hmr","insertInto","locals","unescape","sources","sourceRoot","HTMLIFrameElement","contentDocument","sourceMap","insertAt","singleton","DEBUG","convertToAbsoluteUrls","clock","_class","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","createClass","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","baseTag","bodyAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","tags","headElement","tagNodes","indexToDelete","existingTag","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","noscript","HelmetSideEffects","HelmetExport","HelmetWrapper","classCallCheck","possibleConstructorReturn","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","defaultTitle","rewind","mappedState","renderStatic","hotjarLib","hj","stateChange","relativePath","_hjSettings","hjid","hjsv","hjDebug","_scriptPath","getCurrentRefinement","getHits","queryID","indexContextValue","nextRefinement","nextValue","_refine","cleanUp","_cleanUp","instantSearchContext","onInternalStateUpdate","createHrefForState","onSearchForFacetValues","mainTargetedIndex","InstantSearchConsumer","InstantSearchProvider","_createContext","IndexConsumer","IndexProvider","createConnectorWithoutContext","connectorDesc","isWidget","transitionState","Composed","additionalWidgetProperties","Connector","providedProps","getState","widgets","cleanupTimerRef","isUnmounting","propsEqual","_this$props$contextVa","resultsFacetValues","searching","searchingForFacetValues","isSearchStalled","nextWidgetsState","prevWidgetsState","refineProps","createURL","searchForFacetValuesProps","searchForItems","$$widgetType","HIGHLIGHT_TAGS","highlightPreTag","highlightPostTag","parseHighlightedAttribute","preTag","postTag","_ref$highlightedValue","highlightedValue","splitByPreTag","firstValue","splitByPostTag","parseAlgoliaHit","_ref2$preTag","_ref2$postTag","highlightProperty","highlightObject","getIndexId","hasMultipleIndices","getResults","refineValue","_objectSpread4","refineMultiIndexWithNamespace","refineMultiIndex","refineSingleIndexWithNamespace","refineSingleIndex","getNamespaceAndAttributeName","getCurrentRefinementValue","_getNamespaceAndAttri","multiIndex","hasRefinementsValue","cleanUpValue","_getNamespaceAndAttri2","indexSearchState","cleanUpValueWithMultiIndex","cleanUpValueWithSingleIndex","withKeysPropType","defaultTranslations","Translatable","translation","shallowEqual","keysA","keysB","getDisplayName","removeEmptyKey","isPlainObject","addAbsolutePositions","__position","addQueryID","__queryID","getPropertyByPath","createConnector","prevSearchState","nextSearchState","propKeys","nonPresentKeys","subState","configureState","addAlgoliaAgents","isMultiIndexContext","isTargetedIndexEqualIndex","isIndexWidget","isIndexWidgetEqualIndex","sortIndexWidgetsFirst","firstWidget","secondWidget","isFirstWidgetIndex","isSecondWidgetIndex","serializeQueryParameters","createInstantSearchManager","_ref$initialState","initialState","resultsState","stalledSearchDelay","stalledSearchTimer","_store$getState","handleSearchSuccess","handleSearchError","searchCounter","skip","initialSearchParameters","onWidgetsUpdate","scheduled","getWidgets","createWidgetsManager","_cacheHydrated","_useCache","baseMethod","methodArgs","requestsWithSerializedParams","rawResults","hydrateSearchClientWithMultiIndexRequest","hydrateSearchClientWithSingleIndexRequest","hydrateSearchClient","createStore","hydrateMetadata","_internalIndexId","hydrateResultsState","sharedParameters","mainParameters","targetedIndexEqualMainIndex","subIndexEqualMainIndex","derivedIndices","targetedIndexNotEqualMainIndex","subIndexNotEqualMainIndex","derivedParameters","_getSearchParameters","isDerivedHelpersEmpty","nextIsSearchStalled","getWidgetsIds","_ref5$maxFacetHits","maxFacetHitsWithinRange","_objectSpread7","onExternalStateUpdate","updateClient","updateIndex","skipSearch","datum","nestedItem","injectMetadata","payloadContainer","refNode","widgetsPayload","_connectorDesc","_ref2$defaultProps","_ref2$displayName","_ua","getMetadataPayload","isControlled","instantSearchManager","onWidgetsInternalStateUpdate","nextIsControlled","previousSearchState","prevIsControlled","getKnownKeys","_searchState","widgetsCollector","_searchState2","PanelConsumer","PanelProvider","Panel","_getPrototypeOf2","nextCanRefine","setCanRefine","PanelWrapper","defaultLoadingIndicator","fillRule","strokeOpacity","defaultReset","defaultSubmit","inputRef","focusShortcuts","shortcuts","elt","srcElement","isContentEditable","onReset","loadingIndicator","searchInputEvents","showLoadingIndicator","onInputMount","resetTitle","submitTitle","createClassNames","suitElements","baseClassName","isSpecialClick","isMiddleClick","capitalize","_ref$start","_ref$step","limitStep","arrayLength","_ref$preTag","_ref$postTag","Highlight","highlightedTagName","nonHighlightedTagName","TagName","Highlighter","parsedHighlightedValue","connectHighlight","hitsWithPositions","DefaultHitComponent","borderBottom","wordBreak","_ref$className","_ref$hitComponent","HitComponent","HitPropTypes","connectHits","LinkList","getPages","maxPages","calculateSize","calculatePaddingLeft","translationKey","totalPages","ListComponent","listComponent","showPrevious","showNext","otherProps","objectWithoutPropertiesLoose","lastPage","ariaPrevious","ariaNext","ariaFirst","ariaLast","ariaPage","connectPagination","getId","selectedValue","getLimit","showMoreLimit","searchable","searchForFacetValuesResults","isFromSearch","highlighted","addKey","addRefinementKey","maxValuesPerFacet","nextSelectedItems","itemsPropType","List","extended","resetQuery","itemHasChildren","noRefinement","onShowMoreClick","selectItem","noResults","searchBox","renderSearchBox","rootClassName","renderShowMore","connectRefinementList","scrollOn","_prevSearchState","cleanedSearchState","hasNotChanged","connectScrollTo","IntlContext","__REACT_INTL_BYPASS_GLOBAL_CONTEXT__","__REACT_INTL_CONTEXT__","IntlConsumer","WrappedComponent","intlPropName","_c","enforceContext","WithIntl","intlProp","MemoizedFormattedMessage","nextValues","nextOtherProps","invariantIntlContext","assignUniqueKeysToParts","formatXMLElementFn","AsyncMode","ConcurrentMode","ContextConsumer","Lazy","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_classnames","Page","_cx","pageText","activeClass","disabledClass","linkCss","activeLinkCLass","_paginator","_Page","hideDisabled","hideNavigation","firstPageText","lastPageText","itemClassFirst","itemClassNext","itemClassLast","linkClassFirst","linkClassPrev","linkClassNext","linkClassLast","getPageUrl","paginationInfo","isPrevPageVisible","isFirstPageVisible","isNextPageVisible","isLastPageVisible","buildPages","_react2","_propTypes2","_airbnbPropTypes","_consolidatedEvents","_object2","_document2","DISPLAY","BLOCK","FLEX","INLINE","INLINE_BLOCK","CONTENTS","useCapture","oneOf","setChildNodeRef","addMouseDownEventListener","prevDisabled","_props2","removeEventListeners","removeMouseUp","isDescendantOfRoot","removeMouseDown","_props3","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","toModifierMap","eventListeners","componentOrElement","computeStyles","initialPopperStyles","disabledApplyStylesModifier","ariaDescribedByModifier","_popper$getAttribute","_state$elements2","EMPTY_MODIFIERS","referenceElement","popperElement","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","popperState","updateModifier","getRefTarget","onRootClose","_ref$clickTrigger","preventMouseRootCloseRef","handleMouseCapture","_e$composedPath$","isLeftClickEvent","composedPath","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","resolveContainerRef","onResolved","resolvedRef","earlyRef","nextRef","_reactFastCompare","_utils","Player","_args","player","progress","isReady","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","getDuration","played","prevPlayed","prevLoaded","progressTimeout","progressFrequency","progressInterval","onReady","volume","setVolume","loadOnReady","play","handleDurationCheck","isPlaying","onPlay","playbackRate","startOnPlay","setPlaybackRate","seekOnPlay","seekTo","onPause","activePlayer","loop","onEnded","loopOnEnded","durationCheckTimeout","onDurationCalled","onDuration","stopOnUnmount","disablePIP","pip","disableDeferredLoading","forceLoad","isMediaStream","enablePIP","mute","unmute","setLoop","keepPlaying","onMount","handlePlayerMount","handleReady","handlePlay","handlePause","handleEnded","onLoaded","handleLoaded","handleError","ICON_SIZE","Preview","fetchImage","oEmbedUrl","isValidElement","thumbnail_url","previewTabIndex","flexCenter","preview","shadow","borderStyle","borderWidth","defaultPlayIcon","createReactPlayer","_deepmerge","_memoizeOne","_Player3","lazy","IS_BROWSER","IS_GLOBAL","SUPPORTED_PROPS","UniversalSuspense","customPlayers","players","fallback","showPreview","_wrapper","_player","onClickPreview","getInternalPlayer","fraction","canPlay","getActivePlayer","getConfig","references","lazyPlayer","handleClickPreview","getAttributes","wrapperRef","renderPreview","renderActivePlayer","_arr2","_arr3","_Player2","canEnablePIP","_players","_ReactPlayer","_default","FLV_EXTENSIONS","DASH_EXTENSIONS","HLS_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","MATCH_URL_KALTURA","MATCH_URL_VIDYARD","MATCH_URL_MIXCLOUD","MATCH_URL_DAILYMOTION","MATCH_URL_TWITCH_CHANNEL","MATCH_URL_TWITCH_VIDEO","MATCH_URL_WISTIA","MATCH_URL_STREAMABLE","MATCH_URL_FACEBOOK_WATCH","MATCH_URL_FACEBOOK","MATCH_URL_VIMEO","MATCH_URL_SOUNDCLOUD","MATCH_URL_YOUTUBE","youtube","soundcloud","vimeo","facebook","streamable","wistia","twitch","dailymotion","mixcloud","vidyard","kaltura","canPlayFile","isBlobUrl","_patterns","DailyMotion","callPlayer","parseStartTime","autoplay","getSDK","DM","video","apiready","seeked","onSeek","video_end","durationchange","onDurationChange","waiting","onBuffer","bufferedTime","SDK_URL","SDK_GLOBAL_READY","Facebook","playerId","randomString","FB","XFBML","xfbml","playerID","onBufferEnd","HAS_NAVIGATOR","IS_IPAD_PRO","platform","IS_IOS","IS_SAFARI","MATCH_DROPBOX_URL","MATCH_CLOUDFLARE_STREAM","FilePlayer","_this$props7","onPlaybackRateChange","_this$props8","onEnablePIP","_this$props9","onDisablePIP","supportsWebKitPresentationMode","webkitPresentationMode","track","prevPlayer","addListeners","getSource","forceDisableHls","shouldUseAudio","removeListeners","srcObject","hls","_this$props10","playsinline","onPlayBackRateChange","onPresentationModeChange","shouldUseHLS","forceVideo","poster","forceAudio","forceSafariHLS","forceHLS","forceDASH","forceFLV","_this$props$config","hlsVersion","hlsOptions","dashVersion","flvVersion","dash","Hls","Events","MANIFEST_PARSED","loadSource","attachMedia","shouldUseDASH","dashjs","MediaPlayer","getDebug","setLogToBrowserConsole","updateSettings","logLevel","Debug","LOG_LEVEL_NONE","shouldUseFLV","flvjs","flv","createPlayer","attachMediaElement","requestPictureInPicture","pictureInPictureElement","webkitSetPresentationMode","exitPictureInPicture","rate","_this$player","seekable","buffered","useHLS","useDASH","useFLV","_this$props11","preload","autoPlay","renderSourceElement","tracks","renderTrack","Kaltura","iframe","playerjs","secondsLoaded","frameBorder","allow","referrerPolicy","Mixcloud","PlayerWidget","ready","ended","feed","SoundCloud","SC","_SC$Widget$Events","Widget","PLAY_PROGRESS","FINISH","fractionLoaded","loadedProgress","Streamable","Twitch","isChannel","setChannel","setVideo","channel","_Twitch$Player","READY","PLAYING","ENDED","ONLINE","OFFLINE","SEEK","Vidyard","addReadyListener","renderPlayer","getPlayerMetadata","length_in_seconds","VidyardV4","destroyPlayer","cleanUrl","Vimeo","setMuted","_this2$props$config","playerOptions","refreshDuration","Wistia","_onReady","customControls","control","defineControl","_wq","silentAutoPlay","controlsVisibleOnLoad","fullscreenButton","playbar","playbackRateControl","qualityControl","volumeControl","settingsControl","smallPlayButton","videoID","MATCH_PLAYLIST","MATCH_USER_UPLOADS","MATCH_NOCOOKIE","YouTube","listType","playlist","getID","playerVars","onUnstarted","_window$SDK_GLOBAL$Pl","PlayerState","UNSTARTED","BUFFERING","CUED","isPlaylist","_onError","embedOptions","loadPlaylist","parsePlaylist","cueVideoById","videoId","startSeconds","endSeconds","parseEndTime","YT","onPlaybackQualityChange","onStateChange","pictureInPictureEnabled","visual","buying","liking","sharing","show_comments","show_playcount","showinfo","iv_load_policy","modestbranding","autopause","byline","portrait","hide_cover","parseTimeParam","MATCH_START_QUERY","MATCH_END_QUERY","sdkGlobal","sdkReady","fetchScript","_loadScript","existingGlobal","sdk","previousOnReady","arrays","omitKeys","MediaStream","notMobile","webkitSupportsPresentationMode","MATCH_START_STAMP","MATCH_NUMERIC","stamp","_array2","parseTimeString","$inject_window_ResizeObserver","reactDom","_interopDefaultLegacy","_interopNamespace","$inject_window_ResizeObserver__default","React__namespace","extendStatics","__extends","__","__assign","__rest","commonjsGlobal","isObject_1","root$2","root$1","now_1","reWhitespace","trimmedEndIndex","reTrimStart","_baseTrim","_Symbol","Symbol$1","objectProto$1","nativeObjectToString$1","symToStringTag$1","_getRawTag","baseTrim","isObject$2","isObject$1","debounce_1","timeWaiting","throttle_1","patchResizeHandler","resizeCallback","refreshMode","refreshRate","refreshOptions","isSSR","isDOMElement","HTMLDocument","createNotifier","onResize","setSize","handleWidth","handleHeight","ResizeDetector","cancelHandler","resizeHandler","attachObserver","observerOptions","observableElement","targetDomEl","currentElement","findDOMNode","getRenderType","createResizeHandler","notifyResize","contentRect","skipOnMount","createRef","typedChildren","WrapperTag","childProps","nativeProps","PureComponent","useEnhancedEffect","useResizeDetector","skipResize","localRef","patchedResizeHandler","withResizeDetector","ComponentInner","ResizeDetectorHOC","forwardRefWrapper","InkBar","ShowMore","isShown","hasChildSelected","onShowMoreChanged","isListHidden","showMoreStyles","RRT__showmore","listStyles","showMoreLabelStyles","toggleVisibility","originalKey","onRemove","allowRemove","renderRemovableTab","onTabClick","renderTab","TabPanel","renderedAtLeastOnce","tabId","_withPolyfill","_lodash","_ShowMore","_Tab","_TabPanel","_InkBar","tabPrefix","panelPrefix","tabsWrapper","currentIsCollapsed","getIsCollapsed","blockWidth","nextIsCollapsed","firstTabKey","nextTabKey","beforeChange","focusedTabKey","tabDimensions","tabsTotalWidth","tabDimensionsNext","tabRefs","tabKey","transformWidth","removeActiveOnly","_onRemove","showMoreWidth","getSelectedTabKey","collapsed","availableWidth","_item$key","tabPayload","panelPayload","tabWidth","tabsVisible","tabsHidden","isSelectedTabHidden","panels","onChangeTab","onFocusTab","onBlurTab","getClassNamesFor","showMoreChanged","_ref3$className","tabClass","panelClass","getPanelProps","selectedTabKeyProp","onResizeThrottled","resizeThrottle","setTabsDimensions","showInkBar","containerClass","tabsWrapperClass","_this$getTabs","getTabs","selectedTabDimensions","containerClasses","tabsClasses","RRT__accordion","getTabProps","getShowMoreProps","getExpandedTabs","stream","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ContextRegistry","_status","_response","_fromJSON","__webpack_require__","_chunks","_bundlerConfig","_init","_owner","TextDecoder","_partialRow","_stringDecoder","getReader","subarray","moduleMap","ex","React__default","reducePropsToState","handleStateChangeOnClient","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","UNSAFE_componentWillMount","sliceIterator","_objectAssign","_objectAssign2","truthy","classNameDecorator","__addDisposableResource","__asyncDelegator","__asyncGenerator","__asyncValues","__await","__awaiter","__classPrivateFieldGet","__classPrivateFieldIn","__classPrivateFieldSet","__createBinding","__decorate","__disposeResources","__esDecorate","__exportStar","__generator","__importDefault","__importStar","__makeTemplateObject","__metadata","__param","__propKey","__read","__runInitializers","__setFunctionName","__spread","__spreadArray","__spreadArrays","__values","decorate","static","access","addInitializer","throw","sent","trys","ops","asyncIterator","raw","asyncDispose","SuppressedError","suppressed","hasError","PrintContextConsumer","copyStyles","pageStyle","removeAfterPrint","suppressErrors","startPrint","onAfterPrint","onPrintError","print","documentTitle","contentWindow","handleRemoveIframe","logMessages","triggerPrint","onBeforePrint","onBeforeGetContent","handlePrint","bodyClass","fonts","srcdoc","numResourcesToLoad","resourcesLoaded","resourcesErrored","FontFace","family","weight","drawImage","onloadeddata","onstalled","sheet","appliedClasses","enter","exit","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","activeClassName","doneClassName","_addClass","_this$appliedClasses$","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","initialStatus","isMounting","appearStatus","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","_this4","doesNotHaveTimeoutOrListener","maybeNextCallback","TransitionGroupContext","forceReflow","MapShim","class_1","__entries__","ctx","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","timeoutCallback","timeStamp","throttle","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","propertyName","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","controller_","callbackCtx_","observations","clearActive","observation","_position","nextNonEmptySectionIndex","_position2","prevNonEmptySectionIndex","handleCancelOverrides","predefinedProps","handleConfirmOverrides","cancelButton","openProp","autoGenerateKey","Content","Actions","overrideProps","primary","handledProps","contentRef","triggerRef","latestDocumentMouseDownEvent","handleDocumentMouseDown","handleDocumentClick","closeOnDocumentClick","currentMouseDownEvent","handleEscape","handlePortalMouseLeave","closeOnPortalMouseLeave","mouseLeaveDelay","mouseLeaveTimer","closeWithTimeout","handlePortalMouseEnter","handleTriggerBlur","closeOnTriggerBlur","didFocusPortal","handleTriggerClick","closeOnTriggerClick","openOnTriggerClick","handleTriggerFocus","openOnTriggerFocus","handleTriggerMouseLeave","mouseEnterTimer","closeOnTriggerMouseLeave","_len5","_key5","handleTriggerMouseEnter","mouseEnterDelay","openOnTriggerMouseEnter","_len6","_key6","openWithTimeout","eventClone","handleMount","handleUnmount","handleTriggerRef","eventPool","mountNode","pool","autoControlledProps","Inner","PortalInner","_this$props$mountNode","computeElementType","attached","computeTabIndex","hasIconClass","labelPosition","computeButtonAriaRole","basic","circular","floated","inverted","negative","positive","secondary","baseClasses","labeledClasses","wrapperClasses","buttonClasses","labelElement","pointing","Or","ButtonContent","buttons","labeled","widths","ButtonOr","Flag","Icon","getIconAriaOptions","ariaOptions","bordered","fitted","flipped","rotated","IconGroup","avatar","dimmer","rounded","spaced","verticalAlign","wrapped","ui","_partitionHTMLProps","htmlProps","imgTagProps","ImageGroup","handleIconOverrides","floating","removeIcon","ribbon","pointingClass","removeIconShorthand","Detail","LabelDetail","LabelGroup","ModernAutoControlledComponent","_this$constructor","getAutoControlledStateFromProps","initialAutoControlledState","includeDefaults","defaultProp","getAutoControlledStateValue","newStateFromProps","computedState","someByType","isNil","useKeyOnly","useValueAndKey","useKeyOrValueAndKey","useMultipleProp","useTextAlignProp","useVerticalAlignProp","useWidthProp","canEqual","valType","_first2","createShorthand","mapValueToProps","valIsString","valIsNumber","valIsFunction","valIsReactElement","valIsPropsObject","valIsPrimitiveValue","_options$defaultProps","usersProps","_options2$overridePro","mergedClassesNames","childKey","_options3$autoGenerat","createShorthandFactory","createHTMLDivision","createHTMLIframe","createHTMLImage","createHTMLInput","createHTMLLabel","createHTMLParagraph","getDefault","_Component$defaultPro","computedDefault","_Component$handledPro","htmlInputAttrs","htmlInputProps","htmlImageProps","partitionHTMLProps","_options$htmlProps","_options$includeAria","includeAria","possibleAria","hasDocument","hasWindow","override","numberToWordMap","numberToWord","Dimmer","handlePortalMount","handlePortalUnmount","Dimmable","DimmerDimmable","blurring","dimmed","DimmerInner","toggleStyles","currentActive","simple","childrenContent","findIndexFunc","fromIndex","toInteger","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","reRegExpChar","reHasRegExpChar","getMenuOptions","additionPosition","deburr","searchQuery","strippedQuery","addItem","getSelectedIndex","newSelectedIndex","selectedIndex","menuOptions","enabledIndexes","firstIndex","getKeyOrValue","getKeyAndValues","renderItemContent","searchRef","sizerRef","closeOnChange","moveSelectionOnKeyDown","_moves","selectOnNavigation","getSelectedIndexAfterMove","makeSelectedItemActive","openOnSpace","shouldHandleEvent","shouldPreventDefault","openOnArrow","getSelectedItem","selectItemOnEnter","_this$state3","optionSize","clearSearchQuery","removeItemOnBackspace","_this$state4","closeOnBlur","doesNodeContainClick","handleMouseDown","isMouseDown","handleDocumentMouseUp","minCharacters","_this$state5","handleIconClick","hasValue","clearValue","handleItemClick","stopImmediatePropagation","isAdditionItem","handleSearchChange","getItemByValue","getDropdownAriaOptions","handleLabelClick","selectedLabel","handleLabelRemove","startIndex","wrapSelection","computeSearchInputTabIndex","computeSearchInputWidth","searchWidth","handleSearchInputOverrides","scrollSelectedItemIntoView","isOutOfUpperView","isOutOfLowerView","setOpenDirection","dropdownRect","menuHeight","spaceAtTheBottom","spaceAtTheTop","triggerSetState","hasSearchFocus","hasDropdownFocus","hasFocus","renderText","selectedItem","_this$state6","DropdownText","renderSearchInput","_this$props12","DropdownSearchInput","renderSearchSizer","_this$props13","renderLabels","_this$props14","_this$state7","selectedItems","renderOptions","_this$props15","lazyLoad","noResultsMessage","_this$state8","optValue","generateKey","renderMenu","_this$props16","getDropdownMenuAriaOptions","childrenUtils","menuChild","getInitialAutoControlledState","__options","__value","_this$props17","openOnFocus","openable","_this$props18","_this$props19","_this$state9","getUnhandledProps","getElementType","SearchInput","flagElement","iconElement","imageElement","descriptionElement","textElement","legacy","ActiveXObject","dimmerRef","getMountNode","handleActionsOverrides","onActionClick","actionProps","closeOnDimmerClick","currentDocumentMouseDownEvent","handleOpen","setPositionAndClassNames","eventStack","animationRequestId","modalRect","contextHeight","isFitted","legacyStyles","getLegacyStyles","renderContent","actions","closeIcon","closeIconName","closeIconJSX","ModalContent","ModalActions","unhandled","portalPropNames","portalProps","onOpen","ModalDimmer","Description","ModalDescription","handleButtonOverrides","CLASS_NAME_DELITIMITER","prevClassNames","handleClassNamesChange","classNameRefs","currentClassNames","classNameRef","computeClassNames","_computeClassNamesDif","computeClassNamesDifference","forAdd","forRemoval","nodeRegistry","del","bodyClasses","useClassNamesOnNode","env","EventSet","cloneMap","normalizeHandlers","normalizeTarget","EventPool","handlerSets","poolName","addHandlers","hasHandlers","removeHandlers","pools","createByType","addTargetHandler","removeTargetHandler","createEmitter","EventStack","targets","removeTarget","EventStack$1","compareContext","bHasOwnProperty","valueA","valueB","separatorIndex","defaultKey","useUncontrolledProp","wasPropRef","stateValue","isProp","wasProp","useUncontrolled","_extends2","propsValue","handlerName","getEncodedValue","allowEmptyString","decodeNumber","numStr","jsonStr","boolStr","updateLocation","encodedQuery","stringifyOptions","encodedSearchString","transformSearchString","equalMap","hasNew","createLocationWithChanges","queryReplacements","updateType","encodedQueryReplacements","currQuery","updateInLocation","LocationContext","getLocation","locationRef","updateUrlQuery","initialSearchString","cachedSearchString","cachedParsedQuery","newSearchString","getLatestDecodedValue","paramConfig","paramConfigRef","encodedValueCacheRef","decodedValueCacheRef","hasNewParamConfig","isValueEqual","parsedQuery","hasNewEncodedValue","encodedValue","newDecodedValue","decodedValue","setValueDeps","setValueDepsRef","setValue","newEncodedValue","latestValue","cachedWindowHistory","cachedAdaptedWindowHistory","cachedReachHistory","cachedAdaptedReachHistory","adaptReachHistory","adaptedReachHistory","getLocationProps","adaptedWindowHistory","pushState","adaptWindowHistory","ReactRouterRoute","stringifyOptionsRef","stringifyOptionsCached","routeProps","copy","readUInt8","isArgumentsObject","isGeneratorFunction","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMap","isSet","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","objects","inspect","isNull","deprecate","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","styleType","recurseTimes","primitive","isNumber","formatPrimitive","visibleKeys","arrayToHash","formatError","isRegExp","isDate","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","pad","debuglog","isNullOrUndefined","isNativeError","isPrimitive","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","nextTick","rej","getRandomValues","rnds8","rng","crypto","msCrypto","byteToHex","buf","rnds","availableTypedArrays","gOPD","typedArrays","$slice","typedArray","superProto","getter","trySlices","tryTypedArrays","arrayLikeToArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","SCRIPT_TYPE","snippetCode","filteredConfig","configStr","createSnippet","possibleNames","optMessage","FirebaseAppImpl","_addComponent","automaticDataCollectionEnabled","checkDestroyed","removeApp","deleteApp","_getService","_DEFAULT_ENTRY_NAME","getComponent","instantiationMode","clearInstance","_addOrOverwriteComponent","ERRORS","ERROR_FACTORY","firebase$1","createFirebaseNamespace","firebaseAppImpl","apps","rawConfig","appCompat","onLog","componentNameWithoutCompat","serviceNamespace","appArg","appName","serviceProps","multipleInstances","useAsService","modularAPIs","createFirebaseNamespaceCore","extendNamespace","sdkVersion","instanceOfAny","constructors","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","objectStoreNames","objectStore","wrapFunction","IDBDatabase","IDBCursor","advance","continue","continuePrimaryKey","unwrap","storeNames","tx","transformCachableValue","unlisten","DOMException","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","promisifyRequest","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","oldTraps","PlatformLoggerServiceImpl","getPlatformInfoString","getProviders","isVersionServiceProvider","logString","name$o","version$1","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","_apps","_components","addComponent","addOrOverwriteComponent","_getProvider","heartbeatController","triggerHeartbeat","_clearComponents","_isDeleted","_automaticDataCollectionEnabled","_container","isDeleted","existingApp","newApp","getApp","getApps","libraryKeyOrName","libraryMismatch","versionMismatch","logCallback","DB_NAME","DB_VERSION","STORE_NAME","dbPromise","getDbPromise","blocked","upgrade","blocking","terminated","openPromise","oldVersion","newVersion","openDB","createObjectStore","originalErrorMessage","writeHeartbeatsToIndexedDB","heartbeatObject","computeKey","idbGetError","HeartbeatServiceImpl","_heartbeatsCache","_storage","HeartbeatStorageImpl","_heartbeatsCachePromise","agent","getUTCDateString","lastSentHeartbeatDate","heartbeats","singleDateHeartbeat","hbTimestamp","overwrite","getHeartbeatsHeader","heartbeatsToSend","unsentEntries","heartbeatsCache","maxSize","heartbeatEntry","hb","countBytes","extractHeartbeatsForHeader","headerString","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","readHeartbeatsFromIndexedDB","heartbeatsObject","existingHeartbeatsObject","instanceFactory","onInstanceCreated","setInstantiationMode","mode","setInstanceCreatedCallback","instances","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","deferred","shouldAutoInitialize","getOrInitializeService","setComponent","isComponentEager","instanceDeferred","services","isComponentSet","getOptions","onInit","existingCallbacks","existingInstance","invokeOnInitCallbacks","ComponentContainer","providers","LogLevel","levelStringToEnum","VERBOSE","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","Logger","_logLevel","_logHandler","_userLogHandler","logHandler","userLogHandler","inst","setUserLogHandler","customLogLevel","ignored","esm","goog","aa","ea","ac","sa","ma","na","oa","qa","za","Da","va","wa","xa","ya","documentMode","Aa","Ba","Ca","Ea","Fa","pointerId","pointerType","fromElement","toElement","Ga","Ha","Ia","Ja","la","Ka","Na","Pa","Qa","Ra","Sa","Ua","Ta","Va","Wa","Ya","Za","$a","ab","eb","fb","gb","detachEvent","ib","jb","mb","ob","pb","qb","rb","sb","tb","vb","ub","xb","yb","zb","Ab","Bb","Cb","Db","Fb","Gb","Jb","Lb","Mb","Nb","Ob","Pb","STAT_EVENT","stat","Qb","Rb","Sb","Eb","TIMEOUT","Ib","Tb","Kb","$b","Ub","Vb","Wb","Xb","OPEN","Hb","Yb","Zb","bc","cc","ba","dc","ec","fc","gc","hc","ic","jc","kc","lc","oc","uc","qc","vc","pc","wc","nc","xc","yc","zc","Ac","Bc","ra","La","Ma","Cc","Dc","Ec","Fc","Gc","Hc","Kc","Jc","Ic","mc","getAllResponseHeaders","Oa","tc","Lc","Nc","Oc","Pc","Qc","Rc","$c","Xc","Sc","Yc","Zc","Tc","Uc","Vc","Wc","Mc","ad","bd","cd","dd","PerformanceNavigationTiming","getEntriesByType","nextHopProtocol","ed","fd","hd","kd","onabort","ontimeout","ld","nd","Headers","qd","Xa","pd","od","credentials","Request","arrayBuffer","rd","td","ud","vd","yd","zd","Ad","wd","mozResponseArrayBuffer","Bd","Cd","Dd","internalChannelParams","Ed","xmlHttpFactory","supportsCrossDomainXhr","concurrentRequestLimit","fastHandshake","encodeInitMessageHeaders","forceLongPolling","detectBufferingProxy","longPollingTimeout","Fd","Gd","sendBeacon","Hd","Ld","Kd","Jd","Md","Id","jd","Nd","Od","messageUrlParams","messageHeaders","clientProtocolHeaderRequired","initMessageHeaders","messageContentType","sendRawJson","httpSessionIdParam","Pd","__headers__","statusCode","__status__","__sm__","Qd","blockSize","Sd","FormData","withCredentials","xd","kb","Td","Ud","Wd","Xd","Zd","Yd","LN2","xor","createWebChannel","HTTP_ERROR","COMPLETE","EventType","CLOSE","MESSAGE","listenOnce","getLastError","getLastErrorCode","getResponseJson","getResponseText","setWithCredentials","digest","modulo","getBits","fromNumber","fromString","Vd","createWebChannelTransport","getStatEventTarget","Stat","PROXY","NOPROXY","FetchXmlHttpFactory","WebChannel","XhrIo","Md5","Integer","pack","transitioning","_onTransitionComplete","go","uri","noThrow","isPartiallyCurrent","componentDidCatch","outline","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","toDimension","each","loopable","_elementsEqual","a0","a1","ilen","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","_isClickEvent","PI","TAU","PITAU","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","_factorize","epsilon","almostWhole","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","cmp","mid","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","_chartjs","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","_toLeftRightCenter","_alignStartEnd","_textX","rtl","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","hexString","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","nk","unpack","transparent","RGB_RE","modHSL","ratio","fromObject","functionParse","rgbParse","Color","_rgb","_valid","rgbString","hslString","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","getScope$1","_descriptors","datasets","chart","getDevicePixelRatio","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","responsive","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","jlen","nestedThing","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","radius","rad","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","_isPointInArea","area","clipArea","unclipArea","_steppedLineTo","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","lines","strokeColor","fillStyle","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","_addGrace","minmax","grace","beginAtZero","keepZero","parentContext","_createResolver","scopes","rootScopes","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","borders","box","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","maxHeight","containerStyle","containerBorder","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","normalize","normalizeSegment","_boundSegment","bounds","startBound","endBound","getSegment","inside","subStart","shouldStart","_boundSegments","segments","_computeSegments","segmentOptions","findStartAndEnd","splitByStyles","solidSegments","_fullLoop","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_cordovaWindow","_generateHandlerUrl","BuildInfo","sessionId","sessionDigest","buff","view","stringToArrayBuffer","subtle","padStart","computeSha256","packageName","eventId","SESSION_ID_LENGTH","CordovaAuthEventManager","passiveListeners","initPromise","resolveInialized","addPassiveListener","removePassiveListener","resetRedirect","queuedRedirectEvent","hasHandledPotentialRedirect","onEvent","_getAndRemoveEvent","_get","persistenceKey","_remove","_eventFromPartialAndUrl","partialEvent","callbackUrl","searchParamsOrEmpty","doubleDeepLink","iOSDeepLink","_getDeepLinkFromCallback","errorObject","parseJsonOrNull","tenantId","urlResponse","postBody","generateSessionId","chars","allowedChars","cordovaPopupRedirectResolver","_redirectPersistence","_shouldInitProactively","eventManagers","originValidationPromises","_completeRedirectFn","_overrideRedirectResult","_initialize","attachCallbackListeners","_openPopup","_openRedirect","authType","_f","_g","_h","_j","universalLinks","missingPlugin","cordova","browsertab","openUrl","isAvailable","InAppBrowser","_checkCordovaConfiguration","_originValidation","_generateNewEvent","_set","_savePartialEvent","eventListener","iabRef","onCloseTimer","authEventSeen","closeBrowserTab","resumed","visibilityChanged","visibilityState","_waitForAppResume","handlerUrl","browserTabIsAvailable","_performRedirect","_isIframeWebStorageSupported","_auth","_cb","iosBundleId","androidPackageName","_validateOrigin","handleOpenURL","noEventTimeout","generateNoEvent","universalLinksCb","eventData","finalEvent","existingHandleOpenURL","packagePrefix","_getCurrentScheme","_isAndroidOrIosCordovaScheme","_isLocalStorageNotSynchronized","_isEdge","_isWebStorageSupported","_isWorker","_isPopupRedirectSupported","_isLikelyCordova","Persistence","LOCAL","NONE","SESSION","_assert$3","PERSISTENCE_KEY","_savePersistenceForRedirect","_initializationPromise","session","getSessionStorageIfAvailable","_getPersistence","_assert$2","CompatPopupRedirectResolver","browserResolver","cordovaResolver","underlyingResolver","selectUnderlyingResolver","assertedUnderlyingResolver","isCordova","_isCordova","credentialFromObject","_tokenResponse","credentialFromResult","oauthIdToken","oauthAccessToken","oauthTokenSecret","pendingToken","_create","_fromParams","signInMethod","idToken","credential","rawNonce","credentialFromError","convertCredential","credentialPromise","MultiFactorResolver","credErr","phoneNumber","attachExtraErrorFields","operationType","userCredential","additionalUserInfo","getOrCreate","convertConfirmationResult","confirmationResultPromise","confirmationResultExp","verificationId","confirm","verificationCode","hints","resolveSignIn","assertion","multiFactor","USER_MAP","getIdTokenResult","forceRefresh","getIdToken","linkAndRetrieveDataWithCredential","linkWithCredential","linkWithPhoneNumber","applicationVerifier","linkWithPopup","linkWithRedirect","reauthenticateAndRetrieveDataWithCredential","reauthenticateWithCredential","reauthenticateWithPhoneNumber","reauthenticateWithPopup","reauthenticateWithRedirect","sendEmailVerification","actionCodeSettings","unlink","newEmail","newPassword","updatePhoneNumber","phoneCredential","verifyBeforeUpdateEmail","emailVerified","isAnonymous","refreshToken","photoURL","_assert$1","Auth","linkUnderlyingAuth","persistence","buildPersistenceHierarchy","popupRedirectResolver","_updateErrorMap","emulatorConfig","languageCode","tid","useDeviceLanguage","applyActionCode","checkActionCode","confirmPasswordReset","fetchProvidersForEmail","fetchSignInMethodsForEmail","isSignInWithEmailLink","emailLink","getRedirectResult","addFrameworkForLogging","framework","_logFramework","errorFn","wrapObservers","onIdTokenChanged","sendSignInLinkToEmail","sendPasswordResetEmail","setPersistence","converted","_validatePersistenceArgument","_isAvailable","signInAndRetrieveDataWithCredential","signInWithCredential","signInAnonymously","signInWithCustomToken","signInWithEmailAndPassword","signInWithEmailLink","signInWithPhoneNumber","signInWithPopup","signInWithRedirect","updateCurrentUser","verifyPasswordResetCode","oldNext","persistences","_getPersistencesFromRedirect","PhoneAuthProvider","verifyPhoneNumber","phoneInfoOptions","PHONE_SIGN_IN_METHOD","_assert","RecaptchaVerifier","verify","ActionCodeInfo","Operation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","FacebookAuthProvider","GithubAuthProvider","OAuthProvider","SAMLAuthProvider","PhoneMultiFactorGenerator","TwitterAuthProvider","AuthCredential","activeStyle","partiallyActive","defaultGetProps","IntersectionObserver","IOSupported","abortPrefetch","_prefetch","io","isIntersecting","didTimeout","timeRemaining","postHydrate","idle","offMainThread","loadCallback","errorCallback","onLoad","initAccum","isCommon","valuesLength","computed","valuesIndex","spreadableSymbol","isConcatSpreadable","baseFlatten","isStrict","COMPARE_PARTIAL_FLAG","nested","seenIndex","reHasUnicode","otherArgs","constant","nativeNow","lastCalled","reLatin","reComboMark","toFinite","objectCtorString","paths","remainder","without","ke","Ne","Ze","Je","Be","De","Ie","tn","Ce","an","rn","Le","Me","Pe","sn","ln","cn","dn","un","He","Ue","pn","Oe","ze","Fe","hn","Ve","Te","Ee","we","xe","Ke","Ae","ve","Re","Se","qe","Tn","Ye","clipRule","yn","En","wn","subscribers","addToast","toasts","finally","jsx","vn","An","Sn","In","Mn","Pn","invert","interacting","setHeights","visibleToasts","heights","expanded","removeToast","cancelButtonStyle","actionButtonStyle","descriptionClassName","loadingIcon","expandByDefault","closeButtonAriaLabel","toastId","je","onAutoClose","important","setPointerCapture","onPointerUp","onDismiss","onPointerMove","strokeLinecap","strokeLinejoin","x1","y1","x2","y2","We","actionButton","$e","Jn","hotkey","expand","richColors","containerAriaLabel","matchMedia","onMouseMove"],"sourceRoot":""}