{"version":3,"file":"static/chunks/9769-7f53d2c2bee73d4e.js","mappings":"uGAyCAA,EA8FAC,EACAC,EACAC,EAguBAC,mCAp2BA,IA6GAC,EA7GAC,EAAA,CAEAC,KAAA,SACAC,MAAA,GACAC,eAAA,qBACAC,OAAA,KACAC,WAAA,gBACAC,QAAA,QACAC,YAAA,UACAC,UAAA,YACAC,QAAA,GACAC,kBAAA,KACAC,OAAA,KACAC,gBAAA,GAEAC,SAAA,KACAC,OAAA,KACAC,UAAA,KACAC,aAAA,KAEAC,WAAA,iBACAC,SAAA,KACAC,eAAA,EACAC,aAAA,EACAC,YAAA,EACAC,UAAA,GACAC,qBAAA,GACAC,iBAAA,GACAC,aAAA,GAEAC,cAAA,KACAC,kBAAA,IACA,CAKA,qBAAAC,OACAlC,EAAAkC,OACE,KAAsB,IAANC,EAAAC,CAAM,CACxBpC,EAAUmC,EAAAC,CAAM,CACd,oBAAAC,KACFrC,EAAAqC,KAEArC,EAAA,GAEA,IAAAsC,EAAAtC,EA4EA,IACAuC,UAAAC,CAAA,CACA,CAAEF,EACFG,EAAA,iEAAAC,IAAA,CAAAF,EAAAG,SAAA,EAqBA,SAAAC,IACA3C,EAAAqC,EAAAO,UAAA,EAAAC,SAAAC,eAAA,CAAAC,WAAA,CApBAP,GAYA,CAAAtC,GAAA2C,SAAAG,IAAA,GAEA9C,CADAA,EAAA2C,SAAAI,aAAA,SACAC,KAAA,CAAAC,OAAA,oEACAN,SAAAG,IAAA,CAAAI,WAAA,CAAAlD,IAOAD,EALA,CAAAC,EAAAA,EAAAmD,YAAA,KAAAhB,EAAAiB,WAAA,EAAAT,SAAAC,eAAA,CAAAO,YAAA,EAOApD,EAAAoC,EAAAiB,WAAA,EAAAT,SAAAC,eAAA,CAAAO,YAAA,CAUA,SAAAE,IACA,OACAC,MAAAxD,EACAyD,OAAAxD,CACA,CACA,CAZA0C,IACAN,EAAAqB,gBAAA,UAAAf,GACAN,EAAAqB,gBAAA,qBAAAf,GACAN,EAAAqB,gBAAA,QAAAf,GAhDAvC,EAiDA,KACAuC,GACA,EAlDAE,aAAAA,SAAAc,UAAA,EAAAd,gBAAAA,SAAAc,UAAA,CAEAvD,IAEAyC,SAAAa,gBAAA,oBAAAtD,EAAA,CACAwD,QAAA,GACAC,KAAA,GACAC,QAAA,EACA,GAoDA,IAAAC,EAAA,GACA,SAAAC,IACA,IAAAD,EAAAE,MAAA,CACA,OAEA,IACAT,MAAAxD,CAAA,CACAyD,OAAAxD,CAAA,CACA,CAAIsD,IACJQ,EAAAG,OAAA,EAAAC,EAAAC,KACA,IACAC,SAAAA,CAAA,CACAC,QAAAA,CAAA,CACA,CAAMH,EACN,IAAAE,EAAAE,SAAA,GACA,OAEA,IAAAC,EAAAH,EAAAI,KAAA,CAAAC,qBAAA,GACAC,EAAA,CACAnB,MAAAgB,EAAAhB,KAAA,CACAC,OAAAe,EAAAf,MAAA,CACAmB,IAAAJ,EAAAI,GAAA,CACAC,OAAAL,EAAAK,MAAA,CACA7E,KAAAA,EACAC,KAAAA,CACA,EACA6E,EAAA,CAAAR,GAAAA,EAAAtE,IAAA,GAAA2E,EAAA3E,IAAA,EAAAsE,EAAArE,IAAA,GAAA0E,EAAA1E,IAAA,EAAAqE,EAAAd,KAAA,GAAAmB,EAAAnB,KAAA,EAAAc,EAAAb,MAAA,GAAAkB,EAAAlB,MAAA,CACAsB,EAAAD,GAAA,CAAAR,GAAAA,EAAAM,GAAA,GAAAD,EAAAC,GAAA,EAAAN,EAAAO,MAAA,GAAAF,EAAAE,MAAA,CACAd,CAAA,CAAAK,EAAA,CAAAE,OAAA,CAAAK,EACAG,GACAT,EAAAW,QAAA,GAEAD,GACAV,EAAAnD,QAAA,EAEA,GACAmB,EAAA4C,qBAAA,CAAAjB,EACA,CACA,IAAAkB,EAAA,IAAA7C,EAAA8C,oBAAA,CAAAC,IACAA,EAAAlB,OAAA,CAAAmB,IACAA,EAAAC,MAAA,CAAAC,QAAA,CAAAC,mBAAA,CAAAH,EAAAI,cAAA,EAEA,EAAC,CAGDC,WAAA,MACA,GAoBA,CACApD,UAAAA,CAAA,CACA,CAAED,EACFsD,EAAA,CAGA,OAAAC,EACAC,YAAAC,CAAA,CAAAC,CAAA,EACA,IAAA3D,EAAA,KACAA,EAAAuD,UAAA,CAAAA,EACAA,GAAA,EACAvD,EAAAqC,KAAA,CAAAqB,EACA1D,EAAA4D,QAAA,EACA,GAAA3F,CAAA,EAIA,IAAA4F,EAAA7D,EAAAqC,KAAA,CAAAyB,OAAA,KACAC,EAAA,GA0BA,GAzBAC,OAAAC,IAAA,CAAAJ,GAAA/B,OAAA,CAAAoC,IACA,IAAAC,EAAAD,EAAAE,MAAA,MAAAC,WAAA,GAAAH,EAAAE,MAAA,IACAD,GAAA,SAAAnE,EAAA4D,QAAA,CAAAO,EAAA,EACAJ,CAAAA,CAAA,CAAAI,EAAA,CAAAN,CAAA,CAAAK,EAAA,CAEA,GACAlE,EAAAsE,OAAA,CAAAtE,EAAAuE,MAAA,IAAiCvE,EAAA4D,QAAA,CAAAG,EAAAJ,GACjC3D,EAAAwE,WAAA,CAAAxE,EAAAuE,MAAA,IAAqCvE,EAAAsE,OAAA,EAGrCN,OAAAC,IAAA,CAAAjE,EAAAsE,OAAA,EAAAxC,OAAA,CAAAoC,IACAlE,SAAAA,EAAAsE,OAAA,CAAAJ,EAAA,CACAlE,EAAAsE,OAAA,CAAAJ,EAAA,IACQ,UAAAlE,EAAAsE,OAAA,CAAAJ,EAAA,EACRlE,CAAAA,EAAAsE,OAAA,CAAAJ,EAAA,IAEA,GAGAlE,EAAAsE,OAAA,CAAAnG,KAAA,CAAAsG,KAAAC,GAAA,GAAAD,KAAAE,GAAA,IAAAC,WAAA5E,EAAAsE,OAAA,CAAAnG,KAAA,IAGA,iBAAA6B,EAAAsE,OAAA,CAAAzF,eAAA,EACAmB,CAAAA,EAAAsE,OAAA,CAAAzF,eAAA,KAAAgG,OAAA7E,EAAAsE,OAAA,CAAAzF,eAAA,GAEAmB,EAAAsE,OAAA,CAAAzF,eAAA,YAAAgG,OAAA,CACA,IAAAC,EAAA9E,EAAAsE,OAAA,CAAAzF,eAAA,CACAmB,EAAAsE,OAAA,CAAAzF,eAAA,KAAAiG,EAAAzE,IAAA,CAAAH,EAAAI,SAAA,CACA,CACA,sBAAAN,EAAAsE,OAAA,CAAAzF,eAAA,EAEA,IAAAkG,EAAA/E,EAAAsE,OAAA,CAAAzF,eAAA,CACAmB,EAAAsE,OAAA,CAAAzF,eAAA,KAAAkG,CAAA,IAAAA,CACA,CAMA,GAHA,iBAAA/E,EAAAsE,OAAA,CAAA5E,YAAA,EACAM,CAAAA,EAAAsE,OAAA,CAAA5E,YAAA,KAAAmF,OAAA7E,EAAAsE,OAAA,CAAA5E,YAAA,GAEAM,EAAAsE,OAAA,CAAA5E,YAAA,YAAAmF,OAAA,CACA,IAAAG,EAAAhF,EAAAsE,OAAA,CAAA5E,YAAA,CACAM,EAAAsE,OAAA,CAAA5E,YAAA,KAAAsF,EAAA3E,IAAA,CAAAH,EAAAI,SAAA,CACA,CACA,sBAAAN,EAAAsE,OAAA,CAAA5E,YAAA,EAEA,IAAAuF,EAAAjF,EAAAsE,OAAA,CAAA5E,YAAA,CACAM,EAAAsE,OAAA,CAAA5E,YAAA,KAAAuF,CAAA,IAAAA,CACA,CAGA,IAAAC,EAAAlF,EAAAsE,OAAA,CAAA3F,iBAAA,CAEAuG,GAAA,iBAAAA,GAAA,SAAAA,EAAArD,MAAA,EACA,EAAAqD,EAAA,CAAAA,CAAA,EAGAA,aAAAC,SACAD,CAAAA,EAAA,MAEAlF,EAAAsE,OAAA,CAAA3F,iBAAA,CAAAuG,EACAlF,EAAAoF,KAAA,EACAC,IAAArF,EAAAsE,OAAA,CAAAjG,MAAA,OACAiH,WAAA,KACAC,UAAA,GAIAC,SAAA,OACA,EACAxF,EAAAyF,OAAA,IAAAzF,EAAA0F,eAAA,IACA1F,EAAA2F,IAAA,EAEA,CACAC,IAAAC,CAAA,CAAAC,CAAA,EACA,MAhRA,iBAgRAA,EA/QA7F,EAAA8F,gBAAA,CA+QAF,GA/QAG,gBAAA,CA+QAF,IA7QA9B,OAAAC,IAAA,CA6QA6B,GA7QAhE,OAAA,CAAAoC,IACA2B,EAAA/E,KAAA,CAAAoD,EAAA,CAAA4B,CAAA,CAAA5B,EAAA,GA4QA2B,EACA,CACAtB,OAAA0B,CAAA,IAAAC,CAAA,EACA,OAAAC,SAlQAF,CAAA,IAAAC,CAAA,EAUA,OATAD,EAAAA,GAAA,GACAjC,OAAAC,IAAA,CAAAiC,GAAApE,OAAA,CAAAsE,IACAF,CAAA,CAAAE,EAAA,EAGApC,OAAAC,IAAA,CAAAiC,CAAA,CAAAE,EAAA,EAAAtE,OAAA,CAAAoC,IACA+B,CAAA,CAAA/B,EAAA,CAAAgC,CAAA,CAAAE,EAAA,CAAAlC,EAAA,EAEA,GACA+B,CACA,EAuPAA,KAAAC,EACA,CAGAG,eAAA,CACA,IACAjF,MAAAA,CAAA,CACAC,OAAAA,CAAA,CACA,CAAMF,IACN,OACAC,MAAAA,EACAC,OAAAA,EACAiF,EAAA7F,SAAAC,eAAA,CAAA6F,SAAA,CAEA,CAGAd,SAAA,CAIA,IAAAe,EAAAxG,IAHA,CAGAsE,OAAA,CAAAhG,UAAA,QAyBA,GAxBA,iBAAAkI,GACAA,CAAAA,EAAAxG,IALA,CAKAqC,KAAA,CAAAoE,aAAA,CAAAD,EAAA,EAIAA,aAAArB,UACAnF,IAVA,CAUAsE,OAAA,CAAAjG,MAAA,CAEAmI,CADAA,EAAA,IAAAE,KAAA,EACArB,GAAA,CAAArF,IAZA,CAYAsE,OAAA,CAAAjG,MAAA,CAEAmI,EAAA,MAGAA,IACAxG,IAlBA,CAkBAsE,OAAA,CAAA5F,OAAA,CACAsB,IAnBA,CAmBAoF,KAAA,CAAA/C,KAAA,CAAAmE,EAAAG,SAAA,MAEA3G,IArBA,CAqBAoF,KAAA,CAAA/C,KAAA,CAAAmE,EACAxG,IAtBA,CAsBAoF,KAAA,CAAAwB,WAAA,CAAAJ,EAAAK,UAAA,EAEA7G,IAxBA,CAwBAoF,KAAA,CAAAG,SAAA,OAIAvF,IA5BA,CA4BAoF,KAAA,CAAA/C,KAAA,GAKA,OAAArC,IAjCA,CAiCAoF,KAAA,CAAAC,GAAA,GACArF,IAlCA,CAkCAoF,KAAA,CAAAC,GAAA,kFACArF,IAnCA,CAmCAoF,KAAA,CAAA0B,OAAA,CAAA9G,IAnCA,CAmCA4F,GAAA,CAAA5F,IAnCA,CAmCAqC,KAAA,sBAEA,GAAArC,IArCA,CAqCAoF,KAAA,CAAA0B,OAAA,EAAA9G,SAAAA,IArCA,CAqCAoF,KAAA,CAAA0B,OAAA,EACA,CACApB,iBAAA,CACA,YAAApB,OAAA,CAAAzF,eAAA,EACA,CACA8G,MAAA,CAEA,IAAAoB,EAAA,CACAvB,SAAA,WACAhD,IAAA,EACAwE,KAAA,EACA5F,MAAA,OACAC,OAAA,OACA4F,SAAA,QACA,EACAC,EAAA,CACAC,cAAA,OACAC,eAAA,cACAC,mBAAA,QACA,EACA,IAAArH,IAdA,CAcAsE,OAAA,CAAA5F,OAAA,EAEA,IAAA4I,EAAAtH,IAhBA,CAgBAqC,KAAA,CAAAkF,YAAA,UAIA,GAHAD,GACAtH,IAlBA,CAkBAqC,KAAA,CAAAmF,YAAA,iCAAAF,GAEAtH,IApBA,CAoBAoF,KAAA,CAAAG,SAAA,EACA,IAAAkC,EAAAzH,IArBA,CAqBAoF,KAAA,CAAA/C,KAAA,CAAAkF,YAAA,UACAE,GACAzH,IAvBA,CAuBAoF,KAAA,CAAA/C,KAAA,CAAAmF,YAAA,iCAAAC,EAEA,CACA,CAmEA,GAhEA,WAAAzH,IA7BA,CA6BA4F,GAAA,CAAA5F,IA7BA,CA6BAqC,KAAA,cACArC,IA9BA,CA8BA4F,GAAA,CAAA5F,IA9BA,CA8BAqC,KAAA,EACAmD,SAAA,UACA,GAEA,SAAAxF,IAlCA,CAkCA4F,GAAA,CAAA5F,IAlCA,CAkCAqC,KAAA,aACArC,IAnCA,CAmCA4F,GAAA,CAAA5F,IAnCA,CAmCAqC,KAAA,EACAzD,OAAA,CACA,GAIAoB,IAzCA,CAyCAoF,KAAA,CAAAE,UAAA,CAAA7E,SAAAI,aAAA,QACAb,IA1CA,CA0CA4F,GAAA,CAAA5F,IA1CA,CA0CAoF,KAAA,CAAAE,UAAA,CAAAyB,GACA/G,IA3CA,CA2CA4F,GAAA,CAAA5F,IA3CA,CA2CAoF,KAAA,CAAAE,UAAA,EACA,UAAAtF,IA5CA,CA4CAsE,OAAA,CAAA1F,MAAA,GAMA,eAAAwG,KAAA,CAAAI,QAAA,EACAxF,IAnDA,CAmDA4F,GAAA,CAAA5F,IAnDA,CAmDAoF,KAAA,CAAAE,UAAA,EACA,8DACA,qDACA,GAIAtF,IA1DA,CA0DAoF,KAAA,CAAAE,UAAA,CAAAkC,YAAA,4BAAmExH,IA1DnE,CA0DmEuD,UAAA,CAAgB,GAGnFvD,IA7DA,CA6DAsE,OAAA,CAAAlG,cAAA,EACA4B,IA9DA,CA8DAoF,KAAA,CAAAE,UAAA,CAAAkC,YAAA,SAAAxH,IA9DA,CA8DAsE,OAAA,CAAAlG,cAAA,EAEA4B,IAhEA,CAgEAqC,KAAA,CAAArB,WAAA,CAAAhB,IAhEA,CAgEAoF,KAAA,CAAAE,UAAA,EAGAtF,IAnEA,CAmEAoF,KAAA,CAAAG,SAAA,CACA2B,EAAAlH,IApEA,CAoEAuE,MAAA,EACA,aAAAvE,IArEA,CAqEAsE,OAAA,CAAA/F,OAAA,CACA,kBAAAyB,IAtEA,CAsEAsE,OAAA,CAAA9F,WAAA,CACA,kBACA,EAAOuI,EAAAG,IAIPlH,IA5EA,CA4EAoF,KAAA,CAAA/C,KAAA,CAAA5B,SAAAI,aAAA,QACAb,IA7EA,CA6EAoF,KAAA,CAAAC,GAAA,EACA6B,CAAAA,EAAAlH,IA9EA,CA8EAuE,MAAA,EACA,sBAAAvE,IA/EA,CA+EAsE,OAAA,CAAA9F,WAAA,CACA,kBAAAwB,IAhFA,CAgFAsE,OAAA,CAAA/F,OAAA,CACA,oBAAAyB,IAjFA,CAiFAsE,OAAA,CAAA7F,SAAA,CACA,mBAAAuB,IAlFA,CAkFAoF,KAAA,CAAA0B,OAAA,UAA4D9G,IAlF5D,CAkF4DoF,KAAA,CAAAC,GAAA,CAAe,KAClE0B,EAAAG,EAAA,GAGTlH,CAAAA,YAAAA,IAtFA,CAsFAsE,OAAA,CAAApG,IAAA,EAAA8B,UAAAA,IAtFA,CAsFAsE,OAAA,CAAApG,IAAA,EAAA8B,kBAAAA,IAtFA,CAsFAsE,OAAA,CAAApG,IAAA,EAAA8B,IAAAA,IAtFA,CAsFAsE,OAAA,CAAAnG,KAAA,GACA6B,CAAAA,IAvFA,CAuFAoF,KAAA,CAAAI,QAAA,aAMAxF,UAAAA,IA7FA,CA6FAoF,KAAA,CAAAI,QAAA,EACA,IAAAkC,EAAAC,CAzYA,SAAAC,CAAA,EACA,IAAAC,EAAA,GACA,KAAAD,OAAAA,EAAAE,aAAA,EAEA,IAAAF,CADAA,EAAAA,EAAAE,aAAA,EACAC,QAAA,EACAF,EAAAG,IAAA,CAAAJ,GAGA,OAAAC,CACA,GAgYA7H,IA9FA,CA8FAqC,KAAA,EAAA4F,MAAA,CAAApC,IACA,IAAAC,EAAA7F,EAAA8F,gBAAA,CAAAF,GACAqC,EAAApC,CAAA,uBAAAA,CAAA,oBAAAA,EAAAqC,SAAA,CAEA,OAAAD,GAAAA,SAAAA,GAAAE,gBAAA/H,IAAA,CAAAyF,EAAAmB,QAAA,CAAAnB,CAAA,eAAAA,CAAA,eACA,EACA9F,CApGA,KAoGAoF,KAAA,CAAAI,QAAA,CAAAkC,EAAA7F,MAAA,mBACA,CAGAqF,EAAA1B,QAAA,CAAAxF,IAxGA,CAwGAoF,KAAA,CAAAI,QAAA,CAGAxF,IA3GA,CA2GA4F,GAAA,CAAA5F,IA3GA,CA2GAoF,KAAA,CAAA/C,KAAA,CAAA6E,GACAlH,IA5GA,CA4GAoF,KAAA,CAAAE,UAAA,CAAAtE,WAAA,CAAAhB,IA5GA,CA4GAoF,KAAA,CAAA/C,KAAA,EAGArC,IA/GA,CA+GA4C,QAAA,GACA5C,IAhHA,CAgHAlB,QAAA,KAGAkB,IAnHA,CAmHAsE,OAAA,CAAAvF,MAAA,EACAiB,IApHA,CAoHAsE,OAAA,CAAAvF,MAAA,CAAAsJ,IAAA,CApHA,MAwHA,SAAArI,IAxHA,CAwHA4F,GAAA,CAAA5F,IAxHA,CAwHAqC,KAAA,sBACArC,IAzHA,CAyHA4F,GAAA,CAAA5F,IAzHA,CAyHAqC,KAAA,EACA,yBACA,GA1SAV,EAAAqG,IAAA,EACA/F,SA8KA,OA5KA,IAAAN,EAAAE,MAAA,EACA5B,EAAA4C,qBAAA,CAAAjB,GAEAkB,EAAAwF,OAAA,CAAArG,IAyKA,CAzKAqC,OAAA,CAAA3F,iBAAA,EAAAsD,IAyKA,CAzKAI,KAAA,CAuSA,CACAkG,SAAA,KAtSAtG,EAAAA,EAuSA,KAtSAN,EAAAG,OAAA,EAAAC,EAAAmC,KACAnC,EAAAE,QAAA,CAAAsB,UAAA,GAAAtB,EAAAsB,UAAA,EACA5B,EAAA6G,MAAA,CAAAtE,EAAA,EAEA,GACApB,EAAA2F,SAAA,CAAAxG,EAAAqC,OAAA,CAAA3F,iBAAA,EAAAsD,EAAAI,KAAA,EAqSA,IAAAqG,EAAA1I,IAJA,CAIAqC,KAAA,CAAAkF,YAAA,kCAQA,GAPAvH,IALA,CAKAqC,KAAA,CAAAsG,eAAA,kCAEAD,EAGA1I,IAVA,CAUAqC,KAAA,CAAAmF,YAAA,SAAAkB,GAFA1I,IARA,CAQAqC,KAAA,CAAAsG,eAAA,UAIA3I,IAZA,CAYAoF,KAAA,CAAAG,SAAA,EAEA,IAAAqD,EAAA5I,IAdA,CAcAoF,KAAA,CAAA/C,KAAA,CAAAkF,YAAA,kCACAvH,IAfA,CAeAoF,KAAA,CAAA/C,KAAA,CAAAsG,eAAA,kCAEAC,EAGA5I,IApBA,CAoBAoF,KAAA,CAAA/C,KAAA,CAAAmF,YAAA,SAAAkB,GAFA1I,IAlBA,CAkBAoF,KAAA,CAAA/C,KAAA,CAAAsG,eAAA,UAMA3I,IAxBA,CAwBAoF,KAAA,CAAAwB,WAAA,EACA5G,IAzBA,CAyBAoF,KAAA,CAAAwB,WAAA,CAAA5F,WAAA,CAAAhB,IAzBA,CAyBAoF,KAAA,CAAA/C,KAAA,CAEA,CAGArC,IA9BA,CA8BAoF,KAAA,CAAAE,UAAA,EACAtF,IA/BA,CA+BAoF,KAAA,CAAAE,UAAA,CAAAuB,UAAA,CAAAgC,WAAA,CAAA7I,IA/BA,CA+BAoF,KAAA,CAAAE,UAAA,EAIAtF,IAnCA,CAmCAsE,OAAA,CAAAtF,SAAA,EACAgB,IApCA,CAoCAsE,OAAA,CAAAtF,SAAA,CAAAqJ,IAAA,CApCA,MAwCA,OAAArI,IAxCA,CAwCAqC,KAAA,CAAAc,QAAA,CAEA2F,YAAA,CAEA,IACAzH,OAAAxD,CAAA,CACA,CAAMsD,IACN4H,EAAA/I,IAJA,CAIAoF,KAAA,CAAAE,UAAA,CAAAhD,qBAAA,GACA0G,EAAAD,EAAA1H,MAAA,CACA,CACAlD,MAAAA,CAAA,CACA,CAAM6B,IARN,CAQMsE,OAAA,CACN2E,EAAAjJ,WAAAA,IATA,CASAsE,OAAA,CAAApG,IAAA,EAAA8B,mBAAAA,IATA,CASAsE,OAAA,CAAApG,IAAA,CACAgL,EAAA,EACAC,EAAAH,EACAI,EAAA,EAiDA,OA9CAH,IAEA9K,EAAA,GACA+K,EAAA/K,EAAAsG,KAAAE,GAAA,CAAAqE,EAAAnL,GACAA,EAAAmL,GACAE,CAAAA,GAAA/K,EAAA6K,CAAAA,EAAAnL,CAAA,IAGAqL,EAAA/K,EAAA6K,CAAAA,EAAAnL,CAAA,EAIAM,EAAA,EACAgL,EAAA1E,KAAA4E,GAAA,CAAAH,EAAArL,GACQM,EAAA,EACRgL,EAAAD,EAAA/K,EAAAsG,KAAA4E,GAAA,CAAAH,GAEAC,GAAA,CAAAtL,EAAAmL,CAAA,KAAA7K,CAAA,EAEA+K,GAAA,GAIAlJ,IAtCA,CAsCAsJ,sBAAA,CAAAJ,EAIAE,EADAH,EACA,CAAApL,EAAAsL,CAAA,IAEA,CAAAH,EAAAG,CAAA,IAIAnJ,IAhDA,CAgDA4F,GAAA,CAAA5F,IAhDA,CAgDAoF,KAAA,CAAA/C,KAAA,EACAhB,OAAA,GAAiB8H,EAAQ,IACzBI,UAAA,GAAoBH,EAAS,IAC7BpC,KAAAhH,UAAAA,IAnDA,CAmDAoF,KAAA,CAAAI,QAAA,IAAiDuD,EAAA/B,IAAA,CAAU,QAC3D5F,MAAA,GAAgB2H,EAAA3H,KAAA,CAAW,MAI3BpB,IAxDA,CAwDAsE,OAAA,CAAArF,YAAA,EACAe,IAzDA,CAyDAsE,OAAA,CAAArF,YAAA,CAAAoJ,IAAA,CAzDA,MA6DA,CACAjD,MAAA,CACA/D,OAAA8H,EACAI,UAAAH,CACA,EACAI,UAAAT,CACA,CACA,CACA5G,WAAA,CACA,YAAAiB,mBAAA,IACA,CACAtE,SAAA2K,CAAA,EAIA,IAAAA,GAAA,CAAAzJ,IAHA,CAGAmC,SAAA,GACA,OAEA,IACAd,OAAAxD,CAAA,CACA,CAAMsD,IACN4H,EAAA/I,IATA,CASAqC,KAAA,CAAAC,qBAAA,GACAoH,EAAAX,EAAAvG,GAAA,CACAwG,EAAAD,EAAA1H,MAAA,CACAyE,EAAA,GAIA6D,EAAAlF,KAAAE,GAAA,GAAAqE,EAAAU,GACAE,EAAAnF,KAAAE,GAAA,IAAA+E,GACAG,EAAApF,KAAAE,GAAA,GAAA+E,EAAAV,EAAAnL,GACAiM,EAAArF,KAAAE,GAAA,GAAAqE,EAAAU,CAAAA,EAAAV,EAAAnL,CAAA,GAEAkM,EAAA,GAAAlM,EAAA6L,CAAA,EAAA7L,CAAAA,EAAAmL,CAAA,IAGAgB,EAAA,EAgBA,GAfAhB,EAAAnL,EACAmM,EAAA,GAAAJ,GAAAC,CAAA,EAAAb,EACMW,GAAA9L,EACNmM,EAAAL,EAAA9L,EACMiM,GAAAjM,GACNmM,CAAAA,EAAAF,EAAAjM,CAAA,EAIAmC,CAAAA,YAAAA,IAlCA,CAkCAsE,OAAA,CAAApG,IAAA,EAAA8B,kBAAAA,IAlCA,CAkCAsE,OAAA,CAAApG,IAAA,EAAA8B,mBAAAA,IAlCA,CAkCAsE,OAAA,CAAApG,IAAA,IACA4H,EAAAqC,SAAA,sBACArC,EAAAmE,OAAA,CAAAD,GAIAhK,UAAAA,IAxCA,CAwCAsE,OAAA,CAAApG,IAAA,EAAA8B,kBAAAA,IAxCA,CAwCAsE,OAAA,CAAApG,IAAA,EACA,IAAAgM,EAAA,CACAlK,CA1CA,KA0CAsE,OAAA,CAAAnG,KAAA,GACA+L,GAAAlK,IA3CA,CA2CAsE,OAAA,CAAAnG,KAAA,CAAA6L,EAEAE,GAAAlK,IA7CA,CA6CAsE,OAAA,CAAAnG,KAAA,IAAA6L,CAAA,EAEAlE,EAAAqC,SAAA,UAAkC+B,EAAM,sBAIxC,GAAAlK,WAAAA,IAnDA,CAmDAsE,OAAA,CAAApG,IAAA,EAAA8B,mBAAAA,IAnDA,CAmDAsE,OAAA,CAAApG,IAAA,EACA,IAAAiM,EAAAnK,IApDA,CAoDAsJ,sBAAA,CAAAS,CAGA,cAAA/J,IAvDA,CAuDAoF,KAAA,CAAAI,QAAA,EACA2E,CAAAA,GAAAT,CAAA,EAEA5D,EAAAqC,SAAA,kBAA0CgC,EAAU,OAEpDnK,IA5DA,CA4DA4F,GAAA,CAAA5F,IA5DA,CA4DAoF,KAAA,CAAA/C,KAAA,CAAAyD,GAGA9F,IA/DA,CA+DAsE,OAAA,CAAAxF,QAAA,EACAkB,IAhEA,CAgEAsE,OAAA,CAAAxF,QAAA,CAAAuJ,IAAA,CAhEA,KAgEA,CACA+B,QAAArB,EACAsB,UAnDA5F,KAAAE,GAAA,GAAA+E,GAoDAC,aAAAA,EACAC,SAAAA,EACAC,aAAAA,EACAC,gBAAAA,EACAQ,YAnDA7F,KAAAE,GAAA,IAAA+E,EAAA7L,EAAAmL,GAoDAgB,eAAAA,EACAD,mBAAAA,CACA,EAEA,CACAnH,UAAA,CACA,KAAAkG,UAAA,EACA,CACA,CAGA,IAAAyB,EAAA,SAAAC,CAAA,CAAAlG,CAAA,IAAA4B,CAAA,MAQAuE,EALA,kBAAAC,YAAAF,aAAAE,YAAAF,GAAA,iBAAAA,GAAAA,OAAAA,GAAAA,IAAAA,EAAAzC,QAAA,mBAAAyC,EAAAG,QAAA,GACAH,CAAAA,EAAA,CAAAA,EAAA,EAEA,IAAAI,EAAAJ,EAAA3I,MAAA,CACAG,EAAA,EAEA,KAAUA,EAAA4I,EAAS5I,GAAA,EASnB,GARA,iBAAAsC,GAAA,SAAAA,EACAkG,CAAA,CAAAxI,EAAA,CAAAmB,QAAA,EACAqH,CAAAA,CAAA,CAAAxI,EAAA,CAAAmB,QAAA,KAAAK,EAAAgH,CAAA,CAAAxI,EAAA,CAAAsC,EAAA,EAEMkG,CAAA,CAAAxI,EAAA,CAAAmB,QAAA,EAENsH,CAAAA,EAAAD,CAAA,CAAAxI,EAAA,CAAAmB,QAAA,CAAAmB,EAAA,CAAAuG,KAAA,CAAAL,CAAA,CAAAxI,EAAA,CAAAmB,QAAA,CAAA+C,EAAA,EAEA,SAAAuE,EACA,OAAAA,EAGA,OAAAD,CACA,CACAD,CAAAA,EAAA9G,WAAA,CAAAD,EAQA,IAAAI,EAAA,CACAkH,SAAA,GACAC,KAAA,GACAC,KAAA,GACAC,OAAA,IACAC,aAAA,GACAC,oBAAA,GAEAC,UAAA,EACAC,QAAA,CACA,EAsBA,IAAAC,EAAA,CACA,OAAAC,EACArN,KAAA,mBACAsN,CAAA,CAAAlH,CAAA,EAEAtE,IADA,CACAwL,GAAA,CAAAA,EACAxL,IAFA,CAEAyL,eAAA,EACA,GAAA7H,CAAA,EAEA5D,IALA,CAKAsE,OAAA,CAAAC,SArBA0B,CAAA,IAAAC,CAAA,EAUA,OATAD,EAAAA,GAAA,GACAjC,OAAAC,IAAA,CAAAiC,GAAApE,OAAA,CAAAsE,IACAF,CAAA,CAAAE,EAAA,EAGApC,OAAAC,IAAA,CAAAiC,CAAA,CAAAE,EAAA,EAAAtE,OAAA,CAAAoC,IACA+B,CAAA,CAAA/B,EAAA,CAAAgC,CAAA,CAAAE,EAAA,CAAAlC,EAAA,EAEA,GACA+B,CACA,EAUA,GAA4BjG,IAL5B,CAK4ByL,eAAA,CAAAnH,GAG5BtE,IARA,CAQA0L,OAAA,CAAA1L,IARA,CAQAyD,WAAA,CAAAkI,QAAA,CAAAH,GAGAxL,IAXA,CAWA0L,OAAA,EACA1L,IAZA,CAYA2F,IAAA,EAEA,CACAiG,SAAA,CACA,aAAAF,OAAA,CAEA/F,MAAA,CAEA3F,IADA,CACAsL,EAAA,CAAAA,EACAA,GAAA,EACAtL,IAHA,CAGA6L,QAAA,gBAAmC7L,IAHnC,CAGmCsL,EAAA,CAAQ,EAI3CQ,GAAAC,CAAA,CAAA/N,CAAA,EACA,KAAAgO,cAAA,MAAAA,cAAA,KAGA,MAAAA,cAAA,CAAAD,EAAA,QAAAC,cAAA,CAAAD,EAAA,MAAA/D,IAAA,CAAAhK,EACA,CACAiO,IAAAF,CAAA,CAAA/N,CAAA,EACA,KAAAgO,cAAA,OAAAA,cAAA,CAAAD,EAAA,GAGA/N,EAGA,KAAAgO,cAAA,CAAAD,EAAA,CAAAjK,OAAA,EAAAoK,EAAAhI,KACAgI,IAAAlO,GACA,MAAAgO,cAAA,CAAAD,EAAA,CAAA7H,EAAA,IAEA,GANA,YAAA8H,cAAA,CAAAD,EAAA,CAQA,CACAI,KAAAJ,CAAA,IAAA7F,CAAA,EACA,KAAA8F,cAAA,gBAAAA,cAAA,CAAAD,EAAA,EACA,KAAAC,cAAA,CAAAD,EAAA,CAAAjK,OAAA,CAAAoK,IAEAA,GACAA,EAAArB,KAAA,MAAA3E,EAEA,EAEA,CAMA,OAAAyF,SAAAH,CAAA,EACA,QACA,CACAY,KAAAC,CAAA,GACAC,OAAA,EACAtB,MAAA,EACAuB,QAAA,EACAC,UAAAvB,EAAA,KACAwB,UAAAzO,CAAA,GACA0O,SAAA1O,CAAA,GACA2O,eAAAC,EAAA,KACAC,eAAA7O,CAAA,GACA8O,YAAA9O,CAAA,GACA+O,SAAA/O,CAAA,GAEA,CAKA,oBAAA6B,OACA9B,EAAA8B,OACE,KAAsB,IAANC,EAAAC,CAAM,CACxBhC,EAAQ+B,EAAAC,CAAM,CACZ,oBAAAC,KACFjC,EAAAiC,KAEAjC,EAAA,GAEA,IAAAiP,EAAAjP,EAIA,SAAAkP,IACA,KAAAC,aAAA,IACA,KAAAC,aAAA,IAEAF,EAAAG,SAAA,EACAC,QAAAC,CAAA,CAAApH,CAAA,EACA,IAAAE,EAAAkH,EAAAzL,MAAA,CAGA,IADAqE,EAAAqH,MAAAH,SAAA,CAAAI,KAAA,CAAAnF,IAAA,CAAAnC,GACAE,GAEAkH,CAAA,CADAlH,GAAA,EACA,CAAAyE,KAAA,MAAA3E,EAEA,EACAuH,QAAA,GAAAvH,CAAA,EACA,KAAAmH,OAAA,MAAAH,aAAA,CAAAhH,EACA,EACAwH,OAAA,GAAAxH,CAAA,EACA,KAAAmH,OAAA,MAAAF,aAAA,CAAAjH,EACA,EACAyH,KAAA3P,CAAA,EACA,KAAAkP,aAAA,CAAAlF,IAAA,CAAAhK,EACA,EACA4P,KAAA5P,CAAA,EACA,KAAAmP,aAAA,CAAAnF,IAAA,CAAAhK,EACA,CACA,EACA,IAAA6P,EAAA,EACAC,EAAA,EACAC,EAAA,IAAAd,CAoCA,OAAAe,UAAAzC,EACArN,KAAA,iBACAyN,SAAAH,CAAA,EAGA,IAAAyC,EAAAzC,EAAAyC,KAAA,CADA,wEAEA,MAAAA,EAAAA,GAAAA,KAAAA,CAAA,IAAApM,MAAA,EAAAoM,CAAA,IAEAtI,MAAA,CACA,MAAAA,OACAuI,WA5CA,GAAAL,EACA,OAEAA,EAAA,GAIA,IAAAM,EAAA1N,SAAAI,aAAA,WACAuN,EAAA3N,SAAA4N,oBAAA,YACAF,EAAA9I,GAAA,CALA,qCAMA+I,EAAApN,WAAA,CAAAmN,EAGA,GAgCA,CACA/B,KAAAC,CAAA,EACA,IAAArM,EAAA,KACAA,EAAAsO,MAAA,EAAAtO,EAAAsO,MAAA,CAAAC,SAAA,GAGA,SAAAlC,GACArM,EAAAsO,MAAA,CAAAE,MAAA,CAAAnC,GAAA,GAEAW,EAAAyB,EAAA,CAAAC,WAAA,CAAAC,OAAA,GAAA3O,EAAAsO,MAAA,CAAAM,cAAA,KAEA5O,EAAAsE,OAAA,CAAA+G,OAAA,GAAArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAA6M,cAAA,CAAAgC,IACAA,EAAA7O,EAAAsE,OAAA,CAAA+G,OAAA,EACArL,EAAAsO,MAAA,CAAAC,SAAA,EAEA,GAEAvO,EAAAsO,MAAA,CAAAC,SAAA,IAGA,CACAjC,OAAA,CAEAtM,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAAQ,UAAA,EAGA9B,EAAAyB,EAAA,CAAAC,WAAA,CAAAC,OAAA,GAAA3O,IAJA,CAIAsO,MAAA,CAAAM,cAAA,IACA5O,IALA,CAKAsO,MAAA,CAAAQ,UAAA,EAEA,CACA9D,MAAA,CAEAhL,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAAtD,IAAA,EAGAhL,IAJA,CAIAsO,MAAA,CAAAtD,IAAA,EACA,CACAuB,QAAA,CAEAvM,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAAS,MAAA,EAGA/O,IAJA,CAIAsO,MAAA,CAAAS,MAAA,EACA,CACAvC,UAAAvB,EAAA,IAEAjL,IADA,CACAsO,MAAA,mBAAArD,GAAAjL,IADA,CACAsO,MAAA,CAAA9B,SAAA,EAGAxM,IAJA,CAIAsO,MAAA,CAAA9B,SAAA,CAAAvB,EACA,CACAwB,UAAAzO,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,IACA,MACA,CACAgC,IALA,CAKAsO,MAAA,CAAA7B,SAAA,EACAzO,EAAAgC,IANA,CAMAsO,MAAA,CAAA7B,SAAA,GAEA,CACAC,SAAA1O,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,MACA,MACA,CACAgC,IALA,CAKAsO,MAAA,CAAAU,OAAA,EACAhR,EAAAgC,IANA,CAMAsO,MAAA,CAAAU,OAAA,GAEA,CACArC,eAAAC,EAAA,IAEA5M,IADA,CACAsO,MAAA,mBAAA1B,GAAA5M,IADA,CACAsO,MAAA,CAAAE,MAAA,EAGAxO,IAJA,CAIAsO,MAAA,CAAAE,MAAA,CAAA5B,EACA,CACAC,eAAA7O,CAAA,EAEAgC,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAAzB,cAAA,EAGA7O,EAAAgC,IAJA,CAIAsO,MAAA,CAAAzB,cAAA,GACA,CACAC,YAAA9O,CAAA,EACA,IAAAgC,EAAA,KACA,GAAAA,EAAAiP,UAAA,EACAjR,EAAAgC,EAAAiP,UAAA,EACA,MACA,CACA,IAAAC,EAAA,8CACAC,EAAA,EACAC,EAAA,IAAA1I,KACA0I,CAAAA,EAAAC,MAAA,YAEA,YAAAC,YAAA,OAAAlO,KAAA,GAAA+N,IAAAD,EAAArN,MAAA,IAEA7B,EAAAiP,UAAA,+BAAwDjP,EAAA0L,OAAA,CAAa,GAAGwD,CAAA,CAAAC,EAAA,CAAqB,MAC7FnR,EAAAgC,EAAAiP,UAAA,IAGAE,GAAA,EACA,KAAA9J,GAAA,+BAAiDrF,EAAA0L,OAAA,CAAa,GAAGwD,CAAA,CAAAC,EAAA,CAAqB,MAEtF,EACAC,EAAA/J,GAAA,+BAAgDrF,EAAA0L,OAAA,CAAa,GAAGwD,CAAA,CAAAC,EAAA,CAAqB,MAErFpC,SAAA/O,CAAA,MA5IAA,EA6IA,IAAAgC,EAAA,KAGA,GAAAA,EAAAuP,MAAA,EACAvR,EAAAgC,EAAAuP,MAAA,EACA,MACA,CAnJAvR,EAsJA,SACAwR,EA4BAC,EACAC,CA5BA1P,CAAAA,EAAAuP,MAAA,EAEAC,CAAAA,CADAA,EAAA/O,SAAAI,aAAA,SACAC,KAAA,CAAA6O,OAAA,SAEA3P,EAAA4P,aAAA,EAEAC,KAAA,mCACAC,QAAA9P,EAAA0L,OAAA,CACAqE,WAAA,CACAC,SAAA,EACAC,IAAA,EACAnF,SAAA,EAEAoF,YAAA,CACA,CACA,EAGAlQ,EAAAsE,OAAA,CAAA4G,YAAA,GACAlL,EAAA4P,aAAA,CAAAG,UAAA,CAAAI,cAAA,GACAnQ,EAAA4P,aAAA,CAAAG,UAAA,CAAAK,cAAA,GACApQ,EAAA4P,aAAA,CAAAG,UAAA,CAAAM,QAAA,GACArQ,EAAA4P,aAAA,CAAAG,UAAA,CAAAO,QAAA,GACAtQ,EAAA4P,aAAA,CAAAG,UAAA,CAAAQ,SAAA,IAMAvQ,EAAA4P,aAAA,CAAAY,MAAA,EACAC,QAAAC,CAAA,EAEA1Q,EAAAsE,OAAA,CAAA0G,IAAA,CACA0F,EAAAxN,MAAA,CAAA8H,IAAA,GACY,iBAAAhL,EAAAsE,OAAA,CAAA2G,MAAA,EACZyF,EAAAxN,MAAA,CAAAsJ,SAAA,CAAAxM,EAAAsE,OAAA,CAAA2G,MAAA,EAIAjL,EAAAsE,OAAA,CAAAwG,QAAA,EACA9K,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,EAEApL,EAAAmM,IAAA,SAAAuE,GAIA1Q,EAAAsE,OAAA,CAAAyG,IAAA,GAAA/K,EAAAsE,OAAA,CAAA+G,OAAA,EAEArL,CAAAA,EAAAsE,OAAA,CAAA+G,OAAA,CAAArL,EAAAsO,MAAA,CAAAqC,WAAA,GADA,EACA,EAIAC,YAAA,KACA5Q,EAAAyM,SAAA,CAAAxB,IACAjL,EAAAsE,OAAA,CAAA2G,MAAA,GAAAA,IACAjL,EAAAsE,OAAA,CAAA2G,MAAA,CAAAA,EACAjL,EAAAmM,IAAA,gBAAAuE,GAEA,EACA,EAAW,IACX,EACAG,cAAAH,CAAA,EAEA1Q,EAAAsE,OAAA,CAAAyG,IAAA,EAAA2F,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAoC,KAAA,EACA9Q,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,EAEAqE,GAAAiB,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAC,OAAA,GACAc,EAAA,EACAzP,EAAAmM,IAAA,WAAAuE,IAEAA,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAC,OAAA,EACA3O,EAAAmM,IAAA,QAAAuE,GAEAA,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAqC,MAAA,EACA/Q,EAAAmM,IAAA,SAAAuE,GAEAA,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAoC,KAAA,EACA9Q,EAAAmM,IAAA,SAAAuE,GAIAA,EAAA3O,IAAA,GAAAiL,EAAAyB,EAAA,CAAAC,WAAA,CAAAC,OAAA,CACAe,EAAAkB,YAAA,KACA5Q,EAAAmM,IAAA,cAAAuE,GAGA1Q,EAAAsE,OAAA,CAAA+G,OAAA,EAAArL,EAAAsO,MAAA,CAAAzB,cAAA,IAAA7M,EAAAsE,OAAA,CAAA+G,OAAA,GACArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,EAEApL,EAAAsM,KAAA,GAGA,EAAa,KAEb0E,cAAAtB,EAEA,EACAuB,QAAAP,CAAA,EACA1Q,EAAAmM,IAAA,SAAAuE,EACA,CACA,EACA,IAAAQ,EAAA,CAAAlR,EAAAuP,MAAA,CACA,GAAA2B,EAAA,CACA,IAAAC,EAAA1Q,SAAAI,aAAA,QACAsQ,EAAA3J,YAAA,MAAAxH,EAAA6L,QAAA,EACA2D,EAAAxO,WAAA,CAAAmQ,GACA1Q,SAAAG,IAAA,CAAAI,WAAA,CAAAwO,EACA,CACAxP,EAAAsO,MAAA,CAAAtO,EAAAsO,MAAA,MAAAtB,EAAAyB,EAAA,CAAA2C,MAAA,CAAApR,EAAA6L,QAAA,CAAA7L,EAAA4P,aAAA,EACAsB,IACAlR,EAAAuP,MAAA,CAAA9O,SAAA4Q,cAAA,CAAArR,EAAA6L,QAAA,EAGA7L,EAAAsE,OAAA,CAAA6G,mBAAA,GACAnL,EAAAuP,MAAA,CAAA/H,YAAA,kBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,wBAIAxH,EAAAsR,UAAA,CAAAC,SAAAvR,EAAAuP,MAAA,CAAAhI,YAAA,oBACAvH,EAAAwR,WAAA,CAAAD,SAAAvR,EAAAuP,MAAA,CAAAhI,YAAA,qBAEAvJ,EAAAgC,EAAAuP,MAAA,CACA,EAlRA,SAAAvC,EAAAyB,EAAA,EAAAzB,IAAAA,EAAAyB,EAAA,CAAAgD,MAAA,EAAA3D,EAUI,iBAAAd,EAAAyB,EAAA,EAAAzB,IAAAA,EAAAyB,EAAA,CAAAgD,MAAA,CACJzT,IAEA+P,EAAAJ,IAAA,MACA3P,GACA,IAbA8P,EAAA,EAGAd,EAAA0E,uBAAA,YACA1E,EAAA0E,uBAAA,MACA3D,EAAAN,OAAA,SACAzP,GACA,EA0QA,CACA,CACA,IAAA2T,EAAA,EACAC,EAAA,EACAC,EAAA,IAAA5E,CAuCA,OAAA6E,UAAAvG,EACArN,KAAA,eACAyN,SAAAH,CAAA,EAGA,IAAAyC,EAAAzC,EAAAyC,KAAA,CADA,8IAEA,MAAAA,EAAAA,KAAAA,CAAA,KAAAA,CAAA,IAKA,OAAA8D,aAAAvG,CAAA,EASA,IAAAwG,EAAAxG,EAAAyC,KAAA,CADA,0DAEA,OAAA+D,GAAAA,IAAAA,EAAAnQ,MAAA,CAAAmQ,CAAA,QACA,CACArM,MAAA,CACA,MAAAA,OACAsM,WA9DA,GAAAN,IAGAA,EAAA,GAGA,SAAA3E,EAAAkF,KAAA,EALA,OAWA,IAAA/D,EAAA1N,SAAAI,aAAA,WACAuN,EAAA3N,SAAA4N,oBAAA,YACAF,EAAA9I,GAAA,CALA,yCAMA+I,EAAApN,WAAA,CAAAmN,EAGA,GA6CA,CACA/B,KAAAC,CAAA,EACA,IAAArM,EAAA,KACAA,EAAAsO,MAAA,GAGA,SAAAjC,GACArM,EAAAsO,MAAA,CAAA3B,cAAA,CAAAN,GAEArM,EAAAsO,MAAA,CAAA6D,SAAA,GAAAC,IAAA,CAAAC,IACAA,IAEArS,EAAAsE,OAAA,CAAA+G,OAAA,GAAArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAA6M,cAAA,CAAAgC,IACAA,EAAA7O,EAAAsE,OAAA,CAAA+G,OAAA,EACArL,EAAAsO,MAAA,CAAAlC,IAAA,EAEA,GAEApM,EAAAsO,MAAA,CAAAlC,IAAA,GAGA,GACA,CACAE,OAAA,CACA,IAAAtM,EAAA,KACAA,EAAAsO,MAAA,EAGAtO,EAAAsO,MAAA,CAAA6D,SAAA,GAAAC,IAAA,CAAAC,IACAA,GACArS,EAAAsO,MAAA,CAAAhC,KAAA,EAEA,EACA,CACAtB,MAAA,CAEAhL,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAA9B,SAAA,EAGAxM,IAJA,CAIAwM,SAAA,GACA,CACAD,QAAA,CAEAvM,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAA9B,SAAA,EAKAxM,IANA,CAMAwM,SAAA,CAAAxM,IANA,CAMAsE,OAAA,CAAA2G,MAAA,MACA,CACAuB,UAAAvB,EAAA,IAEAjL,IADA,CACAsO,MAAA,mBAAArD,GAAAjL,IADA,CACAsO,MAAA,CAAA9B,SAAA,EAGAxM,IAJA,CAIAsO,MAAA,CAAA9B,SAAA,CAAAvB,EAAA,IACA,CACAwB,UAAAzO,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,IACA,MACA,CACAgC,IALA,CAKAsO,MAAA,CAAA7B,SAAA,EACAzM,IANA,CAMAsO,MAAA,CAAA7B,SAAA,GAAA2F,IAAA,CAAAnH,IACAjN,EAAAiN,IAAAA,EACA,EAEA,CACAyB,SAAA1O,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,MACA,MACA,CACAgC,IALA,CAKAsO,MAAA,CAAA7B,SAAA,EACAzM,IANA,CAMAsO,MAAA,CAAA7B,SAAA,GAAA2F,IAAA,CAAAnH,IACAjN,EAAA,EAAAiN,EACA,EAEA,CACA0B,eAAAC,EAAA,IAEA5M,IADA,CACAsO,MAAA,mBAAA1B,GAAA5M,IADA,CACAsO,MAAA,CAAA3B,cAAA,EAGA3M,IAJA,CAIAsO,MAAA,CAAA3B,cAAA,CAAAC,EACA,CACAC,eAAA7O,CAAA,EAEAgC,IADA,CACAsO,MAAA,EAAAtO,IADA,CACAsO,MAAA,CAAAzB,cAAA,EAGA7M,IAJA,CAIAsO,MAAA,CAAAzB,cAAA,GAAAuF,IAAA,CAAAxF,IACA5O,EAAA4O,EACA,EACA,CACAE,YAAA9O,CAAA,EACA,IAAAgC,EAAA,KACA,GAAAA,EAAAiP,UAAA,EACAjR,EAAAgC,EAAAiP,UAAA,EACA,MACA,CAGA,IAAA7N,EAAA4L,EAAAxM,UAAA,MACAwM,CAAAA,EAAAsF,gBAAA,EACAlR,CAAAA,GAAA4L,EAAAsF,gBAAA,EAEAlR,EAAAqD,KAAAC,GAAA,CAAAtD,EAAA,MACA,IAAAmR,EAAA,IAAAC,eAEAD,EAAAE,IAAA,gDAAiEzS,EAAAwL,GAAA,CAAS,SAASpK,EAAM,MACzFmR,EAAAG,kBAAA,YACA,YAAAnR,UAAA,EACA,KAAAoR,MAAA,YAAAA,MAAA,MAEA,IAAAC,EAAAC,KAAAC,KAAA,MAAAC,YAAA,CACAH,CAAAA,EAAAI,aAAA,GACAhT,EAAAiP,UAAA,CAAA2D,EAAAI,aAAA,CACAhV,EAAAgC,EAAAiP,UAAA,EAEA,CAEA,EACAsD,EAAAU,IAAA,EAEA,CACAlG,SAAA/O,CAAA,EACA,IAAAgC,EAAA,KAGA,GAAAA,EAAAuP,MAAA,EACAvR,EAAAgC,EAAAuP,MAAA,EACA,MACA,EAGA2D,SAvLAlV,CAAA,EACA,YAAAgP,EAAAkF,KAAA,EAAAN,EASI,SAAA5E,EAAAkF,KAAA,CACJlU,IAEA6T,EAAAlE,IAAA,MACA3P,GACA,OAdA,CACA4T,EAAA,EACA,IAAAuB,EAAAvC,YAAA,KACA,SAAA5D,EAAAkF,KAAA,GACAlB,cAAAmC,GACAtB,EAAApE,OAAA,SACAzP,IAEA,EAAK,GACL,CAOA,EAsKA,SACAwR,EA+EA4D,CA9EApT,CAAAA,EAAAuP,MAAA,EAEAC,CAAAA,CADAA,EAAA/O,SAAAI,aAAA,SACAC,KAAA,CAAA6O,OAAA,SAEA3P,EAAA4P,aAAA,EAEAyD,IAAA,EACAC,GAAAtT,EAAA0L,OAAA,CACA6H,UAAA,EACAC,YAAA,EACA1I,SAAA9K,EAAAsE,OAAA,CAAAwG,QAAA,KACAC,KAAA/K,EAAAsE,OAAA,CAAAyG,IAAA,KACA0I,MAAAzT,EAAAsE,OAAA,CAAA0G,IAAA,EAAAhL,IAAAA,EAAAsE,OAAA,CAAA2G,MAAA,IACA,EAGA,IAAAyI,EAAA1T,EAAAyD,WAAA,CAAAsO,YAAA,CAAA/R,EAAAwL,GAAA,EAcA,GAbAkI,GACA1T,CAAAA,EAAA4P,aAAA,CAAA+D,CAAA,CAAAD,CAAA,EAIA1T,EAAAsE,OAAA,CAAA4G,YAAA,EACAlL,CAAAA,EAAA4P,aAAA,CAAAS,QAAA,IAIA,CAAArQ,EAAAsE,OAAA,CAAA4G,YAAA,EAAAlL,EAAAsE,OAAA,CAAAyG,IAAA,EAAA/K,EAAAsE,OAAA,CAAAwG,QAAA,EACA9K,CAAAA,EAAA4P,aAAA,CAAAgE,UAAA,IAEA,CAAA5T,EAAAuP,MAAA,EACA,IAAAsE,EAAA,GACA7P,OAAAC,IAAA,CAAAjE,EAAA4P,aAAA,EAAA9N,OAAA,CAAAoC,IACA,KAAA2P,GACAA,CAAAA,GAAA,KAEAA,GAAA,GAAoC3P,EAAI,GAAG4P,mBAAA9T,EAAA4P,aAAA,CAAA1L,EAAA,EAA4C,IAKvFlE,EAAAuP,MAAA,CAAA9O,SAAAI,aAAA,WACAb,EAAAuP,MAAA,CAAA/H,YAAA,MAAAxH,EAAA6L,QAAA,EACA7L,EAAAuP,MAAA,CAAA/H,YAAA,yCAA0ExH,EAAA0L,OAAA,CAAa,GAAGmI,EAAoB,GAC9G7T,EAAAuP,MAAA,CAAA/H,YAAA,oBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,0BACAxH,EAAAuP,MAAA,CAAA/H,YAAA,uBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,+BAGAxH,EAAAsE,OAAA,CAAA6G,mBAAA,GACAnL,EAAAuP,MAAA,CAAA/H,YAAA,kBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,wBAEAgI,EAAAxO,WAAA,CAAAhB,EAAAuP,MAAA,EACA9O,SAAAG,IAAA,CAAAI,WAAA,CAAAwO,EACA,CACAxP,EAAAsO,MAAA,CAAAtO,EAAAsO,MAAA,MAAAtB,EAAAkF,KAAA,CAAAd,MAAA,CAAApR,EAAAuP,MAAA,CAAAvP,EAAA4P,aAAA,EAGA5P,EAAAsE,OAAA,CAAA0G,IAAA,mBAAAhL,EAAAsE,OAAA,CAAA2G,MAAA,EACAjL,EAAAwM,SAAA,CAAAxM,EAAAsE,OAAA,CAAA2G,MAAA,EAIAjL,EAAAsE,OAAA,CAAA8G,SAAA,EAAApL,EAAAsE,OAAA,CAAAwG,QAAA,EACA9K,EAAAsO,MAAA,CAAA3B,cAAA,CAAA3M,EAAAsE,OAAA,CAAA8G,SAAA,EAIApL,EAAAsO,MAAA,CAAAyF,aAAA,GAAA3B,IAAA,CAAAhR,IACApB,EAAAsR,UAAA,CAAAlQ,GAAA,IACA,GACApB,EAAAsO,MAAA,CAAA0F,cAAA,GAAA5B,IAAA,CAAA/Q,IACArB,EAAAwR,WAAA,CAAAnQ,GAAA,GACA,GAIArB,EAAAsO,MAAA,CAAAxC,EAAA,cAAA4E,IACA0C,IACApT,EAAAmM,IAAA,WAAAuE,GACA0C,EAAA,GAEApT,EAAAmM,IAAA,cAAAuE,GAGA1Q,EAAAsE,OAAA,CAAA+G,OAAA,EAAAqF,EAAA7B,OAAA,EAAA7O,EAAAsE,OAAA,CAAA+G,OAAA,GACArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,EAEApL,EAAAsM,KAAA,GAGA,GACAtM,EAAAsO,MAAA,CAAAxC,EAAA,QAAA4E,IACA1Q,EAAAmM,IAAA,QAAAuE,GAGA1Q,EAAAsE,OAAA,CAAA8G,SAAA,EAAAsF,IAAAA,EAAA7B,OAAA,EACA7O,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,CAEA,GACApL,EAAAsO,MAAA,CAAAxC,EAAA,SAAA4E,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAxC,EAAA,SAAA4E,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAxC,EAAA,UAAA4E,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAxC,EAAA,gBAAA4E,IACA1Q,EAAAyM,SAAA,CAAAxB,IACAjL,EAAAsE,OAAA,CAAA2G,MAAA,CAAAA,CACA,GACAjL,EAAAmM,IAAA,gBAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAxC,EAAA,SAAA4E,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1S,EAAAgC,EAAAuP,MAAA,CACA,EACA,CACA,CACA,MAAA0E,UAAA1I,EACArN,KAAA,eACAyN,SAAAH,CAAA,EAEA,IAAA0I,EAAA1I,EAAA2I,KAAA,kCACAC,EAAA,GACAC,EAAA,EAUA,OATAH,EAAApS,OAAA,CAAAoK,IAEA,IAAA+B,EAAA/B,EAAA+B,KAAA,8BACAA,GAAAA,CAAA,KAAAA,CAAA,MAEAmG,CAAA,CAAAnG,QAAAA,CAAA,UAAAA,CAAA,KAAAA,CAAA,IACAoG,EAAA,EAEA,GACAA,EAAAA,GAAAD,CACA,CACAhI,KAAAC,CAAA,EACA,IAAArM,EAAA,KACAA,EAAAsO,MAAA,GAGA,SAAAjC,GACArM,CAAAA,EAAAsO,MAAA,CAAA1B,WAAA,CAAAP,CAAA,EAEArM,EAAAsO,MAAA,CAAA+D,MAAA,GAEArS,EAAAsE,OAAA,CAAA+G,OAAA,GAAArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAA6M,cAAA,CAAAgC,IACAA,EAAA7O,EAAAsE,OAAA,CAAA+G,OAAA,EACArL,EAAAsO,MAAA,CAAAlC,IAAA,EAEA,GAEApM,EAAAsO,MAAA,CAAAlC,IAAA,IAGA,CACAE,OAAA,CAEAtM,IADA,CACAsO,MAAA,GAAAtO,IADA,CACAsO,MAAA,CAAA+D,MAAA,EAGArS,IAJA,CAIAsO,MAAA,CAAAhC,KAAA,EACA,CACAtB,MAAA,CAEAhL,IADA,CACAsO,MAAA,EAGAtO,CAAAA,IAJA,CAIAuP,MAAA,CAAAkE,KAAA,IACA,CACAlH,QAAA,CAEAvM,IADA,CACAsO,MAAA,EAGAtO,CAAAA,IAJA,CAIAuP,MAAA,CAAAkE,KAAA,IACA,CACAjH,UAAAvB,EAAA,IAEAjL,IADA,CACAsO,MAAA,mBAAArD,GAGAjL,CAAAA,IAJA,CAIAuP,MAAA,CAAAtE,MAAA,CAAAA,EAAA,IACA,CACAwB,UAAAzO,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,IACA,MACA,CACAA,EAAAgC,IAAAA,IALA,CAKAuP,MAAA,CAAAtE,MAAA,CACA,CACAyB,SAAA1O,CAAA,EAEA,IAAAgC,IADA,CACAsO,MAAA,EACAtQ,EAAA,MACA,MACA,CACAA,EAAAgC,IALA,CAKAuP,MAAA,CAAAkE,KAAA,CACA,CACA9G,eAAAC,EAAA,IAEA5M,IADA,CACAsO,MAAA,mBAAA1B,GAGA5M,CAAAA,IAJA,CAIAuP,MAAA,CAAA3C,WAAA,CAAAA,CAAA,CACA,CACAC,eAAA7O,CAAA,EAEAgC,IADA,CACAsO,MAAA,EAGAtQ,EAAAgC,IAJA,CAIAsO,MAAA,CAAA1B,WAAA,CACA,CACAE,YAAA9O,CAAA,EAEAgC,IADA,CACAiP,UAAA,EACAjR,EAAAgC,IAFA,CAEAiP,UAAA,CAEA,CACAlC,SAAA/O,CAAA,MAUAwR,EAmDA8E,EA5DA,IAAAtU,EAAA,KAGA,GAAAA,EAAAuP,MAAA,EACAvR,EAAAgC,EAAAuP,MAAA,EACA,MACA,CAIAvP,EAAAuP,MAAA,EAEAC,CAAAA,CADAA,EAAA/O,SAAAI,aAAA,SACAC,KAAA,CAAA6O,OAAA,SAQA3P,EAAAuP,MAAA,GACAvP,EAAAuP,MAAA,CAAA9O,SAAAI,aAAA,UACAb,EAAAsO,MAAA,CAAAtO,EAAAuP,MAAA,CAGAvP,EAAAsE,OAAA,CAAA4G,YAAA,EACAlL,CAAAA,EAAAuP,MAAA,CAAAc,QAAA,KAIA,iBAAArQ,EAAAsE,OAAA,CAAA2G,MAAA,EACAjL,EAAAwM,SAAA,CAAAxM,EAAAsE,OAAA,CAAA2G,MAAA,EAIAjL,EAAAsE,OAAA,CAAA0G,IAAA,EACAhL,EAAAgL,IAAA,GAIAhL,EAAAsE,OAAA,CAAAyG,IAAA,EACA/K,CAAAA,EAAAuP,MAAA,CAAAxE,IAAA,KAIA/K,EAAAuP,MAAA,CAAA/H,YAAA,mBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,0BAGAxH,EAAAsE,OAAA,CAAA6G,mBAAA,GACAnL,EAAAuP,MAAA,CAAA/H,YAAA,kBACAxH,EAAAuP,MAAA,CAAA/H,YAAA,wBAEAxH,EAAAuP,MAAA,CAAA/H,YAAA,MAAAxH,EAAA6L,QAAA,EACA2D,EAAAxO,WAAA,CAAAhB,EAAAuP,MAAA,EACA9O,SAAAG,IAAA,CAAAI,WAAA,CAAAwO,GACAxL,OAAAC,IAAA,CAAAjE,EAAA0L,OAAA,EAAA5J,OAAA,CAAAoC,KACAqQ,SA3CAC,CAAA,CAAAnP,CAAA,CAAAnH,CAAA,EACA,IAAAuW,EAAAhU,SAAAI,aAAA,UACA4T,CAAAA,EAAApP,GAAA,CAAAA,EACAoP,EAAAvW,IAAA,CAAAA,EACAsW,EAAAxT,WAAA,CAAAyT,EACA,EAsCAzU,EAAAuP,MAAA,CAAAvP,EAAA0L,OAAA,CAAAxH,EAAA,UAAkEA,EAAI,EACtE,IAGAlE,EAAAsO,MAAA,CAAAhN,gBAAA,WAAAoP,IACA4D,GACAtU,EAAAmM,IAAA,WAAAuE,GAEA4D,EAAA,CACA,GACAtU,EAAAsO,MAAA,CAAAhN,gBAAA,uBAAAoP,CAAA,EACA1Q,EAAAmM,IAAA,cAAAuE,GAGA1Q,EAAAsE,OAAA,CAAA+G,OAAA,OAAAuB,WAAA,EAAA5M,EAAAsE,OAAA,CAAA+G,OAAA,GACArL,EAAAsE,OAAA,CAAAyG,IAAA,CACA/K,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,EAEApL,EAAAsM,KAAA,GAGA,GACAtM,EAAAsO,MAAA,CAAAhN,gBAAA,QAAAoP,IACA1Q,EAAAmM,IAAA,QAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAhN,gBAAA,SAAAoP,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAhN,gBAAA,SAAAoP,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAhN,gBAAA,6BAEAtB,EAAAsR,UAAA,MAAAA,UAAA,OACAtR,EAAAwR,WAAA,MAAAA,WAAA,MACAxR,EAAAmM,IAAA,UAGAnM,EAAAsE,OAAA,CAAAwG,QAAA,EACA9K,EAAAoM,IAAA,CAAApM,EAAAsE,OAAA,CAAA8G,SAAA,CAEA,GACApL,EAAAsO,MAAA,CAAAhN,gBAAA,gBAAAoP,IACA1Q,EAAAyM,SAAA,CAAAxB,IACAjL,EAAAsE,OAAA,CAAA2G,MAAA,CAAAA,CACA,GACAjL,EAAAmM,IAAA,gBAAAuE,EACA,GACA1Q,EAAAsO,MAAA,CAAAhN,gBAAA,SAAAoP,IACA1Q,EAAAmM,IAAA,SAAAuE,EACA,GACA1S,EAAAgC,EAAAuP,MAAA,CACA,CACA,CACA,SAAAmF,EAAAlJ,CAAA,CAAAlH,CAAA,EACA,IAAA8P,EAAA,GAMA,OALApQ,OAAAC,IAAA,CAAAyQ,EAAAC,SAAA,EAAA7S,OAAA,CAAAoC,IACA,CAAAkQ,GAAAM,EAAAC,SAAA,CAAAzQ,EAAA,CAAAyH,QAAA,CAAAH,IACA4I,CAAAA,EAAA,IAAAM,EAAAC,SAAA,CAAAzQ,EAAA,CAAAsH,EAAAlH,EAAA,CAEA,GACA8P,GAAA,IAAA7I,EAAAC,EAAAlH,EACA,CACAoQ,EAAAE,SAAA,CAAArJ,EACAmJ,EAAAC,SAAA,EACAE,QAAA7G,EACAkE,MAAAJ,EACAgD,MAAAb,CACA,EAiVA,IAAA9Q,EAAAoH,2JChjEO,IAAAwK,EAAsBC,EAAuC,gBAAvCC,EAAUC,CAAQ,EAC7C,GAAI,CAAAC,OAAAA,CAAOtV,CAAAA,SAAAA,CAAW,EAAAuV,KACpB,oBAAMvV,OACR,UAAAkV,EAAAM,iBAAA,CAAAF,GAGF,OAAAD,yKChBOI,EAAsEN,EAAA,gBAAlDO,EAAWH,CAAX,EACzB,IAAAI,UAAAA,CAAA,EAAAJ,KAEE,oBAAOvV,OACT,YAGA,IAAM4V,EAAa,GAAAH,EAAAI,uBAAA,sBAEnBD,EAAA,MAGEE,EAAMC,qBAAwBC,EAAAA,EAAAA,CAC9B,IAAKD,EAAM1R,EAAkB2R,qBAAA,KAC3B,IAAKD,KAAS1R,EAAM,CACpB,IAAA0R,CAAME,CAAAA,EAAWF,CAAAA,SAGjBH,IAAAA,EAAiBK,CAAAA,CAAAA,EAAAA,CAAAA,KAAAA,CAAAA,MAAAA,CAAAA,GAAAA,EAAAA,QAAAA,CAAAA,SACnBL,EAAAzN,IAAA,IAAA8N,EACF,CAEA,QACEL,IAAAA,EAAO5T,MAAA,CACT,KAIK4T,CAAAA,EAASM,EAAKC,GAAAA,EAAAA,EAAAA,QAAAA,CAAAA,UACbP,EAAAM,GAAA,IAGiB,GAAAE,EAAAC,GAAA,UAEbjG,WAAI,UACJkG,IAAAA,aACAC,KAAGT,EAAAU,WAAA,WAAAC,UAAAN,GALEA,GAAAA,OAQX,EAAAA,GAGN","sources":["webpack://_N_E/./node_modules/jarallax/dist/jarallax.esm.js","webpack://_N_E/../../../../src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","webpack://_N_E/../../../../src/shared/lib/lazy-dynamic/preload-css.tsx"],"sourcesContent":["/*!\n * Jarallax v2.2.1 (https://github.com/nk-o/jarallax)\n * Copyright 2024 nK <https://nkdev.info>\n * Licensed under MIT (https://github.com/nk-o/jarallax/blob/master/LICENSE)\n */\nvar defaults$1 = {\n  // Base parallax options.\n  type: 'scroll',\n  speed: 0.5,\n  containerClass: 'jarallax-container',\n  imgSrc: null,\n  imgElement: '.jarallax-img',\n  imgSize: 'cover',\n  imgPosition: '50% 50%',\n  imgRepeat: 'no-repeat',\n  keepImg: false,\n  elementInViewport: null,\n  zIndex: -100,\n  disableParallax: false,\n  // Callbacks.\n  onScroll: null,\n  onInit: null,\n  onDestroy: null,\n  onCoverImage: null,\n  // Video options.\n  videoClass: 'jarallax-video',\n  videoSrc: null,\n  videoStartTime: 0,\n  videoEndTime: 0,\n  videoVolume: 0,\n  videoLoop: true,\n  videoPlayOnlyVisible: true,\n  videoLazyLoading: true,\n  disableVideo: false,\n  // Video callbacks.\n  onVideoInsert: null,\n  onVideoWorkerInit: null\n};\n\n/* eslint-disable import/no-mutable-exports */\n/* eslint-disable no-restricted-globals */\nlet win$1;\nif (typeof window !== 'undefined') {\n  win$1 = window;\n} else if (typeof global !== 'undefined') {\n  win$1 = global;\n} else if (typeof self !== 'undefined') {\n  win$1 = self;\n} else {\n  win$1 = {};\n}\nvar global$2 = win$1;\n\n/**\n * Add styles to element.\n *\n * @param {Element} el - element.\n * @param {String|Object} styles - styles list.\n *\n * @returns {Element}\n */\nfunction css(el, styles) {\n  if (typeof styles === 'string') {\n    return global$2.getComputedStyle(el).getPropertyValue(styles);\n  }\n  Object.keys(styles).forEach(key => {\n    el.style[key] = styles[key];\n  });\n  return el;\n}\n\n/**\n * Extend like jQuery.extend\n *\n * @param {Object} out - output object.\n * @param {...any} args - additional objects to extend.\n *\n * @returns {Object}\n */\nfunction extend$1(out, ...args) {\n  out = out || {};\n  Object.keys(args).forEach(i => {\n    if (!args[i]) {\n      return;\n    }\n    Object.keys(args[i]).forEach(key => {\n      out[key] = args[i][key];\n    });\n  });\n  return out;\n}\n\n/**\n * Get all parents of the element.\n *\n * @param {Element} elem - DOM element.\n *\n * @returns {Array}\n */\nfunction getParents(elem) {\n  const parents = [];\n  while (elem.parentElement !== null) {\n    elem = elem.parentElement;\n    if (elem.nodeType === 1) {\n      parents.push(elem);\n    }\n  }\n  return parents;\n}\n\n/**\n * Document ready callback.\n * @param {Function} callback - callback will be fired once Document ready.\n */\nfunction ready(callback) {\n  if (document.readyState === 'complete' || document.readyState === 'interactive') {\n    // Already ready or interactive, execute callback\n    callback();\n  } else {\n    document.addEventListener('DOMContentLoaded', callback, {\n      capture: true,\n      once: true,\n      passive: true\n    });\n  }\n}\n\nconst {\n  navigator: navigator$1\n} = global$2;\nconst mobileAgent = /*#__PURE__*/ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator$1.userAgent);\nfunction isMobile() {\n  return mobileAgent;\n}\n\nlet wndW;\nlet wndH;\nlet $deviceHelper;\n\n/**\n * The most popular mobile browsers changes height after page scroll and this generates image jumping.\n * We can fix it using this workaround with vh units.\n */\nfunction getDeviceHeight() {\n  if (!$deviceHelper && document.body) {\n    $deviceHelper = document.createElement('div');\n    $deviceHelper.style.cssText = 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\n    document.body.appendChild($deviceHelper);\n  }\n  return ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$2.innerHeight || document.documentElement.clientHeight;\n}\nfunction updateWindowHeight() {\n  wndW = global$2.innerWidth || document.documentElement.clientWidth;\n  if (isMobile()) {\n    wndH = getDeviceHeight();\n  } else {\n    wndH = global$2.innerHeight || document.documentElement.clientHeight;\n  }\n}\nupdateWindowHeight();\nglobal$2.addEventListener('resize', updateWindowHeight);\nglobal$2.addEventListener('orientationchange', updateWindowHeight);\nglobal$2.addEventListener('load', updateWindowHeight);\nready(() => {\n  updateWindowHeight();\n});\nfunction getWindowSize() {\n  return {\n    width: wndW,\n    height: wndH\n  };\n}\n\n// List with all jarallax instances\n// need to render all in one scroll/resize event.\nconst jarallaxList = [];\nfunction updateParallax() {\n  if (!jarallaxList.length) {\n    return;\n  }\n  const {\n    width: wndW,\n    height: wndH\n  } = getWindowSize();\n  jarallaxList.forEach((data, k) => {\n    const {\n      instance,\n      oldData\n    } = data;\n    if (!instance.isVisible()) {\n      return;\n    }\n    const clientRect = instance.$item.getBoundingClientRect();\n    const newData = {\n      width: clientRect.width,\n      height: clientRect.height,\n      top: clientRect.top,\n      bottom: clientRect.bottom,\n      wndW,\n      wndH\n    };\n    const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;\n    const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\n    jarallaxList[k].oldData = newData;\n    if (isResized) {\n      instance.onResize();\n    }\n    if (isScrolled) {\n      instance.onScroll();\n    }\n  });\n  global$2.requestAnimationFrame(updateParallax);\n}\nconst visibilityObserver = /*#__PURE__*/new global$2.IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    entry.target.jarallax.isElementInViewport = entry.isIntersecting;\n  });\n}, {\n  // We have to start parallax calculation before the block is in view\n  // to prevent possible parallax jumping.\n  rootMargin: '50px'\n});\nfunction addObserver(instance) {\n  jarallaxList.push({\n    instance\n  });\n  if (jarallaxList.length === 1) {\n    global$2.requestAnimationFrame(updateParallax);\n  }\n  visibilityObserver.observe(instance.options.elementInViewport || instance.$item);\n}\nfunction removeObserver(instance) {\n  jarallaxList.forEach((data, key) => {\n    if (data.instance.instanceID === instance.instanceID) {\n      jarallaxList.splice(key, 1);\n    }\n  });\n  visibilityObserver.unobserve(instance.options.elementInViewport || instance.$item);\n}\n\n/* eslint-disable class-methods-use-this */\nconst {\n  navigator\n} = global$2;\nlet instanceID = 0;\n\n// Jarallax class\nclass Jarallax {\n  constructor(item, userOptions) {\n    const self = this;\n    self.instanceID = instanceID;\n    instanceID += 1;\n    self.$item = item;\n    self.defaults = {\n      ...defaults$1\n    };\n\n    // prepare data-options\n    const dataOptions = self.$item.dataset || {};\n    const pureDataOptions = {};\n    Object.keys(dataOptions).forEach(key => {\n      const lowerCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n      if (lowerCaseOption && typeof self.defaults[lowerCaseOption] !== 'undefined') {\n        pureDataOptions[lowerCaseOption] = dataOptions[key];\n      }\n    });\n    self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\n    self.pureOptions = self.extend({}, self.options);\n\n    // prepare 'true' and 'false' strings to boolean\n    Object.keys(self.options).forEach(key => {\n      if (self.options[key] === 'true') {\n        self.options[key] = true;\n      } else if (self.options[key] === 'false') {\n        self.options[key] = false;\n      }\n    });\n\n    // fix speed option [-1.0, 2.0]\n    self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\n\n    // prepare disableParallax callback\n    if (typeof self.options.disableParallax === 'string') {\n      self.options.disableParallax = new RegExp(self.options.disableParallax);\n    }\n    if (self.options.disableParallax instanceof RegExp) {\n      const disableParallaxRegexp = self.options.disableParallax;\n      self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\n    }\n    if (typeof self.options.disableParallax !== 'function') {\n      // Support for `true` option value.\n      const disableParallaxDefault = self.options.disableParallax;\n      self.options.disableParallax = () => disableParallaxDefault === true;\n    }\n\n    // prepare disableVideo callback\n    if (typeof self.options.disableVideo === 'string') {\n      self.options.disableVideo = new RegExp(self.options.disableVideo);\n    }\n    if (self.options.disableVideo instanceof RegExp) {\n      const disableVideoRegexp = self.options.disableVideo;\n      self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\n    }\n    if (typeof self.options.disableVideo !== 'function') {\n      // Support for `true` option value.\n      const disableVideoDefault = self.options.disableVideo;\n      self.options.disableVideo = () => disableVideoDefault === true;\n    }\n\n    // custom element to check if parallax in viewport\n    let elementInVP = self.options.elementInViewport;\n    // get first item from array\n    if (elementInVP && typeof elementInVP === 'object' && typeof elementInVP.length !== 'undefined') {\n      [elementInVP] = elementInVP;\n    }\n    // check if dom element\n    if (!(elementInVP instanceof Element)) {\n      elementInVP = null;\n    }\n    self.options.elementInViewport = elementInVP;\n    self.image = {\n      src: self.options.imgSrc || null,\n      $container: null,\n      useImgTag: false,\n      // 1. Position fixed is needed for the most of browsers because absolute position have glitches\n      // 2. On MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\n      // 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\n      position: 'fixed'\n    };\n    if (self.initImg() && self.canInitParallax()) {\n      self.init();\n    }\n  }\n  css(el, styles) {\n    return css(el, styles);\n  }\n  extend(out, ...args) {\n    return extend$1(out, ...args);\n  }\n\n  // get window size and scroll position. Useful for extensions\n  getWindowData() {\n    const {\n      width,\n      height\n    } = getWindowSize();\n    return {\n      width,\n      height,\n      y: document.documentElement.scrollTop\n    };\n  }\n\n  // Jarallax functions\n  initImg() {\n    const self = this;\n\n    // find image element\n    let $imgElement = self.options.imgElement;\n    if ($imgElement && typeof $imgElement === 'string') {\n      $imgElement = self.$item.querySelector($imgElement);\n    }\n\n    // check if dom element\n    if (!($imgElement instanceof Element)) {\n      if (self.options.imgSrc) {\n        $imgElement = new Image();\n        $imgElement.src = self.options.imgSrc;\n      } else {\n        $imgElement = null;\n      }\n    }\n    if ($imgElement) {\n      if (self.options.keepImg) {\n        self.image.$item = $imgElement.cloneNode(true);\n      } else {\n        self.image.$item = $imgElement;\n        self.image.$itemParent = $imgElement.parentNode;\n      }\n      self.image.useImgTag = true;\n    }\n\n    // true if there is img tag\n    if (self.image.$item) {\n      return true;\n    }\n\n    // get image src\n    if (self.image.src === null) {\n      self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n      self.image.bgImage = self.css(self.$item, 'background-image');\n    }\n    return !(!self.image.bgImage || self.image.bgImage === 'none');\n  }\n  canInitParallax() {\n    return !this.options.disableParallax();\n  }\n  init() {\n    const self = this;\n    const containerStyles = {\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      width: '100%',\n      height: '100%',\n      overflow: 'hidden'\n    };\n    let imageStyles = {\n      pointerEvents: 'none',\n      transformStyle: 'preserve-3d',\n      backfaceVisibility: 'hidden'\n    };\n    if (!self.options.keepImg) {\n      // save default user styles\n      const curStyle = self.$item.getAttribute('style');\n      if (curStyle) {\n        self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n      }\n      if (self.image.useImgTag) {\n        const curImgStyle = self.image.$item.getAttribute('style');\n        if (curImgStyle) {\n          self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\n        }\n      }\n    }\n\n    // set relative position and z-index to the parent\n    if (self.css(self.$item, 'position') === 'static') {\n      self.css(self.$item, {\n        position: 'relative'\n      });\n    }\n    if (self.css(self.$item, 'z-index') === 'auto') {\n      self.css(self.$item, {\n        zIndex: 0\n      });\n    }\n\n    // container for parallax image\n    self.image.$container = document.createElement('div');\n    self.css(self.image.$container, containerStyles);\n    self.css(self.image.$container, {\n      'z-index': self.options.zIndex\n    });\n\n    // it will remove some image overlapping\n    // overlapping occur due to an image position fixed inside absolute position element\n    // needed only when background in fixed position\n    if (this.image.position === 'fixed') {\n      self.css(self.image.$container, {\n        '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\n        'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'\n      });\n    }\n\n    // Add container unique ID.\n    self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\n\n    // Add container class.\n    if (self.options.containerClass) {\n      self.image.$container.setAttribute('class', self.options.containerClass);\n    }\n    self.$item.appendChild(self.image.$container);\n\n    // use img tag\n    if (self.image.useImgTag) {\n      imageStyles = self.extend({\n        'object-fit': self.options.imgSize,\n        'object-position': self.options.imgPosition,\n        'max-width': 'none'\n      }, containerStyles, imageStyles);\n\n      // use div with background image\n    } else {\n      self.image.$item = document.createElement('div');\n      if (self.image.src) {\n        imageStyles = self.extend({\n          'background-position': self.options.imgPosition,\n          'background-size': self.options.imgSize,\n          'background-repeat': self.options.imgRepeat,\n          'background-image': self.image.bgImage || `url(\"${self.image.src}\")`\n        }, containerStyles, imageStyles);\n      }\n    }\n    if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\n      self.image.position = 'absolute';\n    }\n\n    // 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\n    //    discussion - https://github.com/nk-o/jarallax/issues/9\n    // 2. Check if parents have overflow scroll\n    if (self.image.position === 'fixed') {\n      const $parents = getParents(self.$item).filter(el => {\n        const styles = global$2.getComputedStyle(el);\n        const parentTransform = styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\n        const overflowRegex = /(auto|scroll)/;\n        return parentTransform && parentTransform !== 'none' || overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x']);\n      });\n      self.image.position = $parents.length ? 'absolute' : 'fixed';\n    }\n\n    // add position to parallax block\n    imageStyles.position = self.image.position;\n\n    // insert parallax image\n    self.css(self.image.$item, imageStyles);\n    self.image.$container.appendChild(self.image.$item);\n\n    // set initial position and size\n    self.onResize();\n    self.onScroll(true);\n\n    // call onInit event\n    if (self.options.onInit) {\n      self.options.onInit.call(self);\n    }\n\n    // remove default user background\n    if (self.css(self.$item, 'background-image') !== 'none') {\n      self.css(self.$item, {\n        'background-image': 'none'\n      });\n    }\n    addObserver(self);\n  }\n  destroy() {\n    const self = this;\n    removeObserver(self);\n\n    // return styles on container as before jarallax init\n    const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n    self.$item.removeAttribute('data-jarallax-original-styles');\n    // null occurs if there is no style tag before jarallax init\n    if (!originalStylesTag) {\n      self.$item.removeAttribute('style');\n    } else {\n      self.$item.setAttribute('style', originalStylesTag);\n    }\n    if (self.image.useImgTag) {\n      // return styles on img tag as before jarallax init\n      const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\n      self.image.$item.removeAttribute('data-jarallax-original-styles');\n      // null occurs if there is no style tag before jarallax init\n      if (!originalStylesImgTag) {\n        self.image.$item.removeAttribute('style');\n      } else {\n        self.image.$item.setAttribute('style', originalStylesTag);\n      }\n\n      // move img tag to its default position\n      if (self.image.$itemParent) {\n        self.image.$itemParent.appendChild(self.image.$item);\n      }\n    }\n\n    // remove additional dom elements\n    if (self.image.$container) {\n      self.image.$container.parentNode.removeChild(self.image.$container);\n    }\n\n    // call onDestroy event\n    if (self.options.onDestroy) {\n      self.options.onDestroy.call(self);\n    }\n\n    // delete jarallax from item\n    delete self.$item.jarallax;\n  }\n  coverImage() {\n    const self = this;\n    const {\n      height: wndH\n    } = getWindowSize();\n    const rect = self.image.$container.getBoundingClientRect();\n    const contH = rect.height;\n    const {\n      speed\n    } = self.options;\n    const isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\n    let scrollDist = 0;\n    let resultH = contH;\n    let resultMT = 0;\n\n    // scroll parallax\n    if (isScroll) {\n      // scroll distance and height for image\n      if (speed < 0) {\n        scrollDist = speed * Math.max(contH, wndH);\n        if (wndH < contH) {\n          scrollDist -= speed * (contH - wndH);\n        }\n      } else {\n        scrollDist = speed * (contH + wndH);\n      }\n\n      // size for scroll parallax\n      if (speed > 1) {\n        resultH = Math.abs(scrollDist - wndH);\n      } else if (speed < 0) {\n        resultH = scrollDist / speed + Math.abs(scrollDist);\n      } else {\n        resultH += (wndH - contH) * (1 - speed);\n      }\n      scrollDist /= 2;\n    }\n\n    // store scroll distance\n    self.parallaxScrollDistance = scrollDist;\n\n    // vertical center\n    if (isScroll) {\n      resultMT = (wndH - resultH) / 2;\n    } else {\n      resultMT = (contH - resultH) / 2;\n    }\n\n    // apply result to item\n    self.css(self.image.$item, {\n      height: `${resultH}px`,\n      marginTop: `${resultMT}px`,\n      left: self.image.position === 'fixed' ? `${rect.left}px` : '0',\n      width: `${rect.width}px`\n    });\n\n    // call onCoverImage event\n    if (self.options.onCoverImage) {\n      self.options.onCoverImage.call(self);\n    }\n\n    // return some useful data. Used in the video cover function\n    return {\n      image: {\n        height: resultH,\n        marginTop: resultMT\n      },\n      container: rect\n    };\n  }\n  isVisible() {\n    return this.isElementInViewport || false;\n  }\n  onScroll(force) {\n    const self = this;\n\n    // stop calculations if item is not in viewport\n    if (!force && !self.isVisible()) {\n      return;\n    }\n    const {\n      height: wndH\n    } = getWindowSize();\n    const rect = self.$item.getBoundingClientRect();\n    const contT = rect.top;\n    const contH = rect.height;\n    const styles = {};\n\n    // calculate parallax helping variables\n    const beforeTop = Math.max(0, contT);\n    const beforeTopEnd = Math.max(0, contH + contT);\n    const afterTop = Math.max(0, -contT);\n    const beforeBottom = Math.max(0, contT + contH - wndH);\n    const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\n    const afterBottom = Math.max(0, -contT + wndH - contH);\n    const fromViewportCenter = 1 - 2 * ((wndH - contT) / (wndH + contH));\n\n    // calculate on how percent of section is visible\n    let visiblePercent = 1;\n    if (contH < wndH) {\n      visiblePercent = 1 - (afterTop || beforeBottom) / contH;\n    } else if (beforeTopEnd <= wndH) {\n      visiblePercent = beforeTopEnd / wndH;\n    } else if (beforeBottomEnd <= wndH) {\n      visiblePercent = beforeBottomEnd / wndH;\n    }\n\n    // opacity\n    if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\n      styles.transform = 'translate3d(0,0,0)';\n      styles.opacity = visiblePercent;\n    }\n\n    // scale\n    if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\n      let scale = 1;\n      if (self.options.speed < 0) {\n        scale -= self.options.speed * visiblePercent;\n      } else {\n        scale += self.options.speed * (1 - visiblePercent);\n      }\n      styles.transform = `scale(${scale}) translate3d(0,0,0)`;\n    }\n\n    // scroll\n    if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\n      let positionY = self.parallaxScrollDistance * fromViewportCenter;\n\n      // fix if parallax block in absolute position\n      if (self.image.position === 'absolute') {\n        positionY -= contT;\n      }\n      styles.transform = `translate3d(0,${positionY}px,0)`;\n    }\n    self.css(self.image.$item, styles);\n\n    // call onScroll event\n    if (self.options.onScroll) {\n      self.options.onScroll.call(self, {\n        section: rect,\n        beforeTop,\n        beforeTopEnd,\n        afterTop,\n        beforeBottom,\n        beforeBottomEnd,\n        afterBottom,\n        visiblePercent,\n        fromViewportCenter\n      });\n    }\n  }\n  onResize() {\n    this.coverImage();\n  }\n}\n\n// global definition\nconst jarallax$1 = function (items, options, ...args) {\n  // check for dom element\n  // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n  if (typeof HTMLElement === 'object' ? items instanceof HTMLElement : items && typeof items === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n    items = [items];\n  }\n  const len = items.length;\n  let k = 0;\n  let ret;\n  for (k; k < len; k += 1) {\n    if (typeof options === 'object' || typeof options === 'undefined') {\n      if (!items[k].jarallax) {\n        items[k].jarallax = new Jarallax(items[k], options);\n      }\n    } else if (items[k].jarallax) {\n      // eslint-disable-next-line prefer-spread\n      ret = items[k].jarallax[options].apply(items[k].jarallax, args);\n    }\n    if (typeof ret !== 'undefined') {\n      return ret;\n    }\n  }\n  return items;\n};\njarallax$1.constructor = Jarallax;\n\n/*!\n * Video Worker v2.2.0 (https://github.com/nk-o/video-worker)\n * Copyright 2024 nK <https://nkdev.info>\n * Licensed under MIT (https://github.com/nk-o/video-worker/blob/master/LICENSE)\n */\n\nvar defaults = {\n  autoplay: false,\n  loop: false,\n  mute: false,\n  volume: 100,\n  showControls: true,\n  accessibilityHidden: false,\n  // start / end video time in seconds\n  startTime: 0,\n  endTime: 0\n};\n\n/**\n * Extend like jQuery.extend\n *\n * @param {Object} out - output object.\n * @param {...any} args - additional objects to extend.\n *\n * @returns {Object}\n */\nfunction extend(out, ...args) {\n  out = out || {};\n  Object.keys(args).forEach(i => {\n    if (!args[i]) {\n      return;\n    }\n    Object.keys(args[i]).forEach(key => {\n      out[key] = args[i][key];\n    });\n  });\n  return out;\n}\nlet ID = 0;\nclass VideoWorkerBase {\n  type = 'none';\n  constructor(url, options) {\n    const self = this;\n    self.url = url;\n    self.options_default = {\n      ...defaults\n    };\n    self.options = extend({}, self.options_default, options);\n\n    // check URL\n    self.videoID = self.constructor.parseURL(url);\n\n    // init\n    if (self.videoID) {\n      self.init();\n    }\n  }\n  isValid() {\n    return !!this.videoID;\n  }\n  init() {\n    const self = this;\n    self.ID = ID;\n    ID += 1;\n    self.playerID = `VideoWorker-${self.ID}`;\n  }\n\n  // events\n  on(name, callback) {\n    this.userEventsList = this.userEventsList || [];\n\n    // add new callback in events list\n    (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\n  }\n  off(name, callback) {\n    if (!this.userEventsList || !this.userEventsList[name]) {\n      return;\n    }\n    if (!callback) {\n      delete this.userEventsList[name];\n    } else {\n      this.userEventsList[name].forEach((val, key) => {\n        if (val === callback) {\n          this.userEventsList[name][key] = false;\n        }\n      });\n    }\n  }\n  fire(name, ...args) {\n    if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\n      this.userEventsList[name].forEach(val => {\n        // call with all arguments\n        if (val) {\n          val.apply(this, args);\n        }\n      });\n    }\n  }\n\n  /**\n   * Methods used in providers.\n   */\n  /* eslint-disable */\n  static parseURL(url) {\n    return false;\n  }\n  play(start) {}\n  pause() {}\n  mute() {}\n  unmute() {}\n  setVolume(volume = false) {}\n  getVolume(callback) {}\n  getMuted(callback) {}\n  setCurrentTime(currentTime = false) {}\n  getCurrentTime(callback) {}\n  getImageURL(callback) {}\n  getVideo(callback) {}\n  /* eslint-enable */\n}\n\n/* eslint-disable import/no-mutable-exports */\n/* eslint-disable no-restricted-globals */\nlet win;\nif (typeof window !== 'undefined') {\n  win = window;\n} else if (typeof global !== 'undefined') {\n  win = global;\n} else if (typeof self !== 'undefined') {\n  win = self;\n} else {\n  win = {};\n}\nvar global$1 = win;\n\n// Deferred\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\nfunction Deferred() {\n  this.doneCallbacks = [];\n  this.failCallbacks = [];\n}\nDeferred.prototype = {\n  execute(list, args) {\n    let i = list.length;\n    // eslint-disable-next-line no-param-reassign\n    args = Array.prototype.slice.call(args);\n    while (i) {\n      i -= 1;\n      list[i].apply(null, args);\n    }\n  },\n  resolve(...args) {\n    this.execute(this.doneCallbacks, args);\n  },\n  reject(...args) {\n    this.execute(this.failCallbacks, args);\n  },\n  done(callback) {\n    this.doneCallbacks.push(callback);\n  },\n  fail(callback) {\n    this.failCallbacks.push(callback);\n  }\n};\nlet YoutubeAPIadded = 0;\nlet loadingYoutubePlayer = 0;\nconst loadingYoutubeDefer = /*#__PURE__*/new Deferred();\nfunction loadAPI$1() {\n  if (YoutubeAPIadded) {\n    return;\n  }\n  YoutubeAPIadded = true;\n  const src = 'https://www.youtube.com/iframe_api';\n\n  // add script in head section\n  let tag = document.createElement('script');\n  let head = document.getElementsByTagName('head')[0];\n  tag.src = src;\n  head.appendChild(tag);\n  head = null;\n  tag = null;\n}\nfunction onAPIready$1(callback) {\n  // Listen for global YT player callback\n  if ((typeof global$1.YT === 'undefined' || global$1.YT.loaded === 0) && !loadingYoutubePlayer) {\n    // Prevents Ready event from being called twice\n    loadingYoutubePlayer = 1;\n\n    // Creates deferred so, other players know when to wait.\n    global$1.onYouTubeIframeAPIReady = function () {\n      global$1.onYouTubeIframeAPIReady = null;\n      loadingYoutubeDefer.resolve('done');\n      callback();\n    };\n  } else if (typeof global$1.YT === 'object' && global$1.YT.loaded === 1) {\n    callback();\n  } else {\n    loadingYoutubeDefer.done(() => {\n      callback();\n    });\n  }\n}\nclass VideoWorkerYoutube extends VideoWorkerBase {\n  type = 'youtube';\n  static parseURL(url) {\n    // eslint-disable-next-line no-useless-escape\n    const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|shorts\\/|watch\\?v=)([^#\\&\\?]*).*/;\n    const match = url.match(regExp);\n    return match && match[1].length === 11 ? match[1] : false;\n  }\n  init() {\n    super.init();\n    loadAPI$1();\n  }\n  play(start) {\n    const self = this;\n    if (!self.player || !self.player.playVideo) {\n      return;\n    }\n    if (typeof start !== 'undefined') {\n      self.player.seekTo(start || 0);\n    }\n    if (global$1.YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\n      // Don't play if video is already ended and with no loop.\n      if (self.options.endTime && !self.options.loop) {\n        self.getCurrentTime(seconds => {\n          if (seconds < self.options.endTime) {\n            self.player.playVideo();\n          }\n        });\n      } else {\n        self.player.playVideo();\n      }\n    }\n  }\n  pause() {\n    const self = this;\n    if (!self.player || !self.player.pauseVideo) {\n      return;\n    }\n    if (global$1.YT.PlayerState.PLAYING === self.player.getPlayerState()) {\n      self.player.pauseVideo();\n    }\n  }\n  mute() {\n    const self = this;\n    if (!self.player || !self.player.mute) {\n      return;\n    }\n    self.player.mute();\n  }\n  unmute() {\n    const self = this;\n    if (!self.player || !self.player.unMute) {\n      return;\n    }\n    self.player.unMute();\n  }\n  setVolume(volume = false) {\n    const self = this;\n    if (!self.player || typeof volume !== 'number' || !self.player.setVolume) {\n      return;\n    }\n    self.player.setVolume(volume);\n  }\n  getVolume(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(false);\n      return;\n    }\n    if (self.player.getVolume) {\n      callback(self.player.getVolume());\n    }\n  }\n  getMuted(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(null);\n      return;\n    }\n    if (self.player.isMuted) {\n      callback(self.player.isMuted());\n    }\n  }\n  setCurrentTime(currentTime = false) {\n    const self = this;\n    if (!self.player || typeof currentTime !== 'number' || !self.player.seekTo) {\n      return;\n    }\n    self.player.seekTo(currentTime);\n  }\n  getCurrentTime(callback) {\n    const self = this;\n    if (!self.player || !self.player.getCurrentTime) {\n      return;\n    }\n    callback(self.player.getCurrentTime());\n  }\n  getImageURL(callback) {\n    const self = this;\n    if (self.videoImage) {\n      callback(self.videoImage);\n      return;\n    }\n    const availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\n    let step = 0;\n    const tempImg = new Image();\n    tempImg.onload = function () {\n      // if no thumbnail, youtube add their own image with width = 120px\n      if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\n        // ok\n        self.videoImage = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n        callback(self.videoImage);\n      } else {\n        // try another size\n        step += 1;\n        this.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n      }\n    };\n    tempImg.src = `https://img.youtube.com/vi/${self.videoID}/${availableSizes[step]}.jpg`;\n  }\n  getVideo(callback) {\n    const self = this;\n\n    // return generated video block\n    if (self.$video) {\n      callback(self.$video);\n      return;\n    }\n\n    // generate new video block\n    onAPIready$1(() => {\n      let hiddenDiv;\n      if (!self.$video) {\n        hiddenDiv = document.createElement('div');\n        hiddenDiv.style.display = 'none';\n      }\n      self.playerOptions = {\n        // GDPR Compliance.\n        host: 'https://www.youtube-nocookie.com',\n        videoId: self.videoID,\n        playerVars: {\n          autohide: 1,\n          rel: 0,\n          autoplay: 0,\n          // autoplay enable on mobile devices\n          playsinline: 1\n        }\n      };\n\n      // hide controls\n      if (!self.options.showControls) {\n        self.playerOptions.playerVars.iv_load_policy = 3;\n        self.playerOptions.playerVars.modestbranding = 1;\n        self.playerOptions.playerVars.controls = 0;\n        self.playerOptions.playerVars.showinfo = 0;\n        self.playerOptions.playerVars.disablekb = 1;\n      }\n\n      // events\n      let ytStarted;\n      let ytProgressInterval;\n      self.playerOptions.events = {\n        onReady(e) {\n          // mute\n          if (self.options.mute) {\n            e.target.mute();\n          } else if (typeof self.options.volume === 'number') {\n            e.target.setVolume(self.options.volume);\n          }\n\n          // autoplay\n          if (self.options.autoplay) {\n            self.play(self.options.startTime);\n          }\n          self.fire('ready', e);\n\n          // For seamless loops, set the endTime to 0.1 seconds less than the video's duration\n          // https://github.com/nk-o/video-worker/issues/2\n          if (self.options.loop && !self.options.endTime) {\n            const secondsOffset = 0.1;\n            self.options.endTime = self.player.getDuration() - secondsOffset;\n          }\n\n          // volumechange\n          setInterval(() => {\n            self.getVolume(volume => {\n              if (self.options.volume !== volume) {\n                self.options.volume = volume;\n                self.fire('volumechange', e);\n              }\n            });\n          }, 150);\n        },\n        onStateChange(e) {\n          // loop\n          if (self.options.loop && e.data === global$1.YT.PlayerState.ENDED) {\n            self.play(self.options.startTime);\n          }\n          if (!ytStarted && e.data === global$1.YT.PlayerState.PLAYING) {\n            ytStarted = 1;\n            self.fire('started', e);\n          }\n          if (e.data === global$1.YT.PlayerState.PLAYING) {\n            self.fire('play', e);\n          }\n          if (e.data === global$1.YT.PlayerState.PAUSED) {\n            self.fire('pause', e);\n          }\n          if (e.data === global$1.YT.PlayerState.ENDED) {\n            self.fire('ended', e);\n          }\n\n          // progress check\n          if (e.data === global$1.YT.PlayerState.PLAYING) {\n            ytProgressInterval = setInterval(() => {\n              self.fire('timeupdate', e);\n\n              // check for end of video and play again or stop\n              if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\n                if (self.options.loop) {\n                  self.play(self.options.startTime);\n                } else {\n                  self.pause();\n                }\n              }\n            }, 150);\n          } else {\n            clearInterval(ytProgressInterval);\n          }\n        },\n        onError(e) {\n          self.fire('error', e);\n        }\n      };\n      const firstInit = !self.$video;\n      if (firstInit) {\n        const div = document.createElement('div');\n        div.setAttribute('id', self.playerID);\n        hiddenDiv.appendChild(div);\n        document.body.appendChild(hiddenDiv);\n      }\n      self.player = self.player || new global$1.YT.Player(self.playerID, self.playerOptions);\n      if (firstInit) {\n        self.$video = document.getElementById(self.playerID);\n\n        // add accessibility attributes\n        if (self.options.accessibilityHidden) {\n          self.$video.setAttribute('tabindex', '-1');\n          self.$video.setAttribute('aria-hidden', 'true');\n        }\n\n        // get video width and height\n        self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\n        self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\n      }\n      callback(self.$video);\n    });\n  }\n}\nlet VimeoAPIadded = 0;\nlet loadingVimeoPlayer = 0;\nconst loadingVimeoDefer = /*#__PURE__*/new Deferred();\nfunction loadAPI() {\n  if (VimeoAPIadded) {\n    return;\n  }\n  VimeoAPIadded = true;\n\n  // Useful when Vimeo API added using RequireJS https://github.com/nk-o/video-worker/pull/7\n  if (typeof global$1.Vimeo !== 'undefined') {\n    return;\n  }\n  const src = 'https://player.vimeo.com/api/player.js';\n\n  // add script in head section\n  let tag = document.createElement('script');\n  let head = document.getElementsByTagName('head')[0];\n  tag.src = src;\n  head.appendChild(tag);\n  head = null;\n  tag = null;\n}\nfunction onAPIready(callback) {\n  if (typeof global$1.Vimeo === 'undefined' && !loadingVimeoPlayer) {\n    loadingVimeoPlayer = 1;\n    const vimeoInterval = setInterval(() => {\n      if (typeof global$1.Vimeo !== 'undefined') {\n        clearInterval(vimeoInterval);\n        loadingVimeoDefer.resolve('done');\n        callback();\n      }\n    }, 20);\n  } else if (typeof global$1.Vimeo !== 'undefined') {\n    callback();\n  } else {\n    loadingVimeoDefer.done(() => {\n      callback();\n    });\n  }\n}\nclass VideoWorkerVimeo extends VideoWorkerBase {\n  type = 'vimeo';\n  static parseURL(url) {\n    // eslint-disable-next-line no-useless-escape\n    const regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n    const match = url.match(regExp);\n    return match && match[3] ? match[3] : false;\n  }\n\n  // Try to extract a hash for private videos from the URL.\n  // Thanks to https://github.com/sampotts/plyr\n  static parseURLHash(url) {\n    /* This regex matches a hexadecimal hash if given in any of these forms:\n     *  - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n     *  - [https://player.]vimeo.com/video/{id}?h={hash}[&params]\n     *  - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n     *  - video/{id}/{hash}\n     * If matched, the hash is available in capture group 4\n     */\n    const regex = /^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*&*h=|\\/)+([\\d,a-f]+)/;\n    const found = url.match(regex);\n    return found && found.length === 5 ? found[4] : null;\n  }\n  init() {\n    super.init();\n    loadAPI();\n  }\n  play(start) {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    if (typeof start !== 'undefined') {\n      self.player.setCurrentTime(start);\n    }\n    self.player.getPaused().then(paused => {\n      if (paused) {\n        // Don't play if video is already ended and with no loop.\n        if (self.options.endTime && !self.options.loop) {\n          self.getCurrentTime(seconds => {\n            if (seconds < self.options.endTime) {\n              self.player.play();\n            }\n          });\n        } else {\n          self.player.play();\n        }\n      }\n    });\n  }\n  pause() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    self.player.getPaused().then(paused => {\n      if (!paused) {\n        self.player.pause();\n      }\n    });\n  }\n  mute() {\n    const self = this;\n    if (!self.player || !self.player.setVolume) {\n      return;\n    }\n    self.setVolume(0);\n  }\n  unmute() {\n    const self = this;\n    if (!self.player || !self.player.setVolume) {\n      return;\n    }\n\n    // In case the default volume is 0, we have to set 100 when unmute.\n    self.setVolume(self.options.volume || 100);\n  }\n  setVolume(volume = false) {\n    const self = this;\n    if (!self.player || typeof volume !== 'number' || !self.player.setVolume) {\n      return;\n    }\n    self.player.setVolume(volume / 100);\n  }\n  getVolume(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(false);\n      return;\n    }\n    if (self.player.getVolume) {\n      self.player.getVolume().then(volume => {\n        callback(volume * 100);\n      });\n    }\n  }\n  getMuted(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(null);\n      return;\n    }\n    if (self.player.getVolume) {\n      self.player.getVolume().then(volume => {\n        callback(!!volume);\n      });\n    }\n  }\n  setCurrentTime(currentTime = false) {\n    const self = this;\n    if (!self.player || typeof currentTime !== 'number' || !self.player.setCurrentTime) {\n      return;\n    }\n    self.player.setCurrentTime(currentTime);\n  }\n  getCurrentTime(callback) {\n    const self = this;\n    if (!self.player || !self.player.getCurrentTime) {\n      return;\n    }\n    self.player.getCurrentTime().then(currentTime => {\n      callback(currentTime);\n    });\n  }\n  getImageURL(callback) {\n    const self = this;\n    if (self.videoImage) {\n      callback(self.videoImage);\n      return;\n    }\n\n    // We should provide width to get HQ thumbnail URL.\n    let width = global$1.innerWidth || 1920;\n    if (global$1.devicePixelRatio) {\n      width *= global$1.devicePixelRatio;\n    }\n    width = Math.min(width, 1920);\n    let request = new XMLHttpRequest();\n    // https://vimeo.com/api/oembed.json?url=https://vimeo.com/235212527\n    request.open('GET', `https://vimeo.com/api/oembed.json?url=${self.url}&width=${width}`, true);\n    request.onreadystatechange = function () {\n      if (this.readyState === 4) {\n        if (this.status >= 200 && this.status < 400) {\n          // Success!\n          const response = JSON.parse(this.responseText);\n          if (response.thumbnail_url) {\n            self.videoImage = response.thumbnail_url;\n            callback(self.videoImage);\n          }\n        }\n      }\n    };\n    request.send();\n    request = null;\n  }\n  getVideo(callback) {\n    const self = this;\n\n    // return generated video block\n    if (self.$video) {\n      callback(self.$video);\n      return;\n    }\n\n    // generate new video block\n    onAPIready(() => {\n      let hiddenDiv;\n      if (!self.$video) {\n        hiddenDiv = document.createElement('div');\n        hiddenDiv.style.display = 'none';\n      }\n      self.playerOptions = {\n        // GDPR Compliance.\n        dnt: 1,\n        id: self.videoID,\n        autopause: 0,\n        transparent: 0,\n        autoplay: self.options.autoplay ? 1 : 0,\n        loop: self.options.loop ? 1 : 0,\n        muted: self.options.mute || self.options.volume === 0 ? 1 : 0\n      };\n\n      // private video hash\n      const urlHash = self.constructor.parseURLHash(self.url);\n      if (urlHash) {\n        self.playerOptions.h = urlHash;\n      }\n\n      // hide controls\n      if (!self.options.showControls) {\n        self.playerOptions.controls = 0;\n      }\n\n      // enable background option\n      if (!self.options.showControls && self.options.loop && self.options.autoplay) {\n        self.playerOptions.background = 1;\n      }\n      if (!self.$video) {\n        let playerOptionsString = '';\n        Object.keys(self.playerOptions).forEach(key => {\n          if (playerOptionsString !== '') {\n            playerOptionsString += '&';\n          }\n          playerOptionsString += `${key}=${encodeURIComponent(self.playerOptions[key])}`;\n        });\n\n        // we need to create iframe manually because when we create it using API\n        // js events won't triggers after iframe moved to another place\n        self.$video = document.createElement('iframe');\n        self.$video.setAttribute('id', self.playerID);\n        self.$video.setAttribute('src', `https://player.vimeo.com/video/${self.videoID}?${playerOptionsString}`);\n        self.$video.setAttribute('frameborder', '0');\n        self.$video.setAttribute('mozallowfullscreen', '');\n        self.$video.setAttribute('allowfullscreen', '');\n        self.$video.setAttribute('title', 'Vimeo video player');\n\n        // add accessibility attributes\n        if (self.options.accessibilityHidden) {\n          self.$video.setAttribute('tabindex', '-1');\n          self.$video.setAttribute('aria-hidden', 'true');\n        }\n        hiddenDiv.appendChild(self.$video);\n        document.body.appendChild(hiddenDiv);\n      }\n      self.player = self.player || new global$1.Vimeo.Player(self.$video, self.playerOptions);\n\n      // Since Vimeo removed the `volume` parameter, we have to set it manually.\n      if (!self.options.mute && typeof self.options.volume === 'number') {\n        self.setVolume(self.options.volume);\n      }\n\n      // set current time for autoplay\n      if (self.options.startTime && self.options.autoplay) {\n        self.player.setCurrentTime(self.options.startTime);\n      }\n\n      // get video width and height\n      self.player.getVideoWidth().then(width => {\n        self.videoWidth = width || 1280;\n      });\n      self.player.getVideoHeight().then(height => {\n        self.videoHeight = height || 720;\n      });\n\n      // events\n      let vmStarted;\n      self.player.on('timeupdate', e => {\n        if (!vmStarted) {\n          self.fire('started', e);\n          vmStarted = 1;\n        }\n        self.fire('timeupdate', e);\n\n        // check for end of video and play again or stop\n        if (self.options.endTime && e.seconds >= self.options.endTime) {\n          if (self.options.loop) {\n            self.play(self.options.startTime);\n          } else {\n            self.pause();\n          }\n        }\n      });\n      self.player.on('play', e => {\n        self.fire('play', e);\n\n        // check for the start time and start with it\n        if (self.options.startTime && e.seconds === 0) {\n          self.play(self.options.startTime);\n        }\n      });\n      self.player.on('pause', e => {\n        self.fire('pause', e);\n      });\n      self.player.on('ended', e => {\n        self.fire('ended', e);\n      });\n      self.player.on('loaded', e => {\n        self.fire('ready', e);\n      });\n      self.player.on('volumechange', e => {\n        self.getVolume(volume => {\n          self.options.volume = volume;\n        });\n        self.fire('volumechange', e);\n      });\n      self.player.on('error', e => {\n        self.fire('error', e);\n      });\n      callback(self.$video);\n    });\n  }\n}\nclass VideoWorkerLocal extends VideoWorkerBase {\n  type = 'local';\n  static parseURL(url) {\n    // eslint-disable-next-line no-useless-escape\n    const videoFormats = url.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\n    const result = {};\n    let ready = 0;\n    videoFormats.forEach(val => {\n      // eslint-disable-next-line no-useless-escape\n      const match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\n      if (match && match[1] && match[2]) {\n        // eslint-disable-next-line prefer-destructuring\n        result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\n        ready = 1;\n      }\n    });\n    return ready ? result : false;\n  }\n  play(start) {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    if (typeof start !== 'undefined') {\n      self.player.currentTime = start;\n    }\n    if (self.player.paused) {\n      // Don't play if video is already ended and with no loop.\n      if (self.options.endTime && !self.options.loop) {\n        self.getCurrentTime(seconds => {\n          if (seconds < self.options.endTime) {\n            self.player.play();\n          }\n        });\n      } else {\n        self.player.play();\n      }\n    }\n  }\n  pause() {\n    const self = this;\n    if (!self.player || self.player.paused) {\n      return;\n    }\n    self.player.pause();\n  }\n  mute() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    self.$video.muted = true;\n  }\n  unmute() {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    self.$video.muted = false;\n  }\n  setVolume(volume = false) {\n    const self = this;\n    if (!self.player || typeof volume !== 'number') {\n      return;\n    }\n    self.$video.volume = volume / 100;\n  }\n  getVolume(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(false);\n      return;\n    }\n    callback(self.$video.volume * 100);\n  }\n  getMuted(callback) {\n    const self = this;\n    if (!self.player) {\n      callback(null);\n      return;\n    }\n    callback(self.$video.muted);\n  }\n  setCurrentTime(currentTime = false) {\n    const self = this;\n    if (!self.player || typeof currentTime !== 'number') {\n      return;\n    }\n    self.$video.currentTime = currentTime;\n  }\n  getCurrentTime(callback) {\n    const self = this;\n    if (!self.player) {\n      return;\n    }\n    callback(self.player.currentTime);\n  }\n  getImageURL(callback) {\n    const self = this;\n    if (self.videoImage) {\n      callback(self.videoImage);\n    }\n  }\n  getVideo(callback) {\n    const self = this;\n\n    // return generated video block\n    if (self.$video) {\n      callback(self.$video);\n      return;\n    }\n\n    // generate new video block\n    let hiddenDiv;\n    if (!self.$video) {\n      hiddenDiv = document.createElement('div');\n      hiddenDiv.style.display = 'none';\n    }\n    function addSourceElement(element, src, type) {\n      const source = document.createElement('source');\n      source.src = src;\n      source.type = type;\n      element.appendChild(source);\n    }\n    if (!self.$video) {\n      self.$video = document.createElement('video');\n      self.player = self.$video;\n\n      // show controls\n      if (self.options.showControls) {\n        self.$video.controls = true;\n      }\n\n      // set volume\n      if (typeof self.options.volume === 'number') {\n        self.setVolume(self.options.volume);\n      }\n\n      // mute (it is required to mute after the volume set)\n      if (self.options.mute) {\n        self.mute();\n      }\n\n      // loop\n      if (self.options.loop) {\n        self.$video.loop = true;\n      }\n\n      // autoplay enable on mobile devices\n      self.$video.setAttribute('playsinline', '');\n      self.$video.setAttribute('webkit-playsinline', '');\n\n      // add accessibility attributes\n      if (self.options.accessibilityHidden) {\n        self.$video.setAttribute('tabindex', '-1');\n        self.$video.setAttribute('aria-hidden', 'true');\n      }\n      self.$video.setAttribute('id', self.playerID);\n      hiddenDiv.appendChild(self.$video);\n      document.body.appendChild(hiddenDiv);\n      Object.keys(self.videoID).forEach(key => {\n        addSourceElement(self.$video, self.videoID[key], `video/${key}`);\n      });\n    }\n    let locStarted;\n    self.player.addEventListener('playing', e => {\n      if (!locStarted) {\n        self.fire('started', e);\n      }\n      locStarted = 1;\n    });\n    self.player.addEventListener('timeupdate', function (e) {\n      self.fire('timeupdate', e);\n\n      // check for end of video and play again or stop\n      if (self.options.endTime && this.currentTime >= self.options.endTime) {\n        if (self.options.loop) {\n          self.play(self.options.startTime);\n        } else {\n          self.pause();\n        }\n      }\n    });\n    self.player.addEventListener('play', e => {\n      self.fire('play', e);\n    });\n    self.player.addEventListener('pause', e => {\n      self.fire('pause', e);\n    });\n    self.player.addEventListener('ended', e => {\n      self.fire('ended', e);\n    });\n    self.player.addEventListener('loadedmetadata', function () {\n      // get video width and height\n      self.videoWidth = this.videoWidth || 1280;\n      self.videoHeight = this.videoHeight || 720;\n      self.fire('ready');\n\n      // autoplay\n      if (self.options.autoplay) {\n        self.play(self.options.startTime);\n      }\n    });\n    self.player.addEventListener('volumechange', e => {\n      self.getVolume(volume => {\n        self.options.volume = volume;\n      });\n      self.fire('volumechange', e);\n    });\n    self.player.addEventListener('error', e => {\n      self.fire('error', e);\n    });\n    callback(self.$video);\n  }\n}\nfunction VideoWorker(url, options) {\n  let result = false;\n  Object.keys(VideoWorker.providers).forEach(key => {\n    if (!result && VideoWorker.providers[key].parseURL(url)) {\n      result = new VideoWorker.providers[key](url, options);\n    }\n  });\n  return result || new VideoWorkerBase(url, options);\n}\nVideoWorker.BaseClass = VideoWorkerBase;\nVideoWorker.providers = {\n  Youtube: VideoWorkerYoutube,\n  Vimeo: VideoWorkerVimeo,\n  Local: VideoWorkerLocal\n};\n\nfunction jarallaxVideo$1(jarallax = global$2.jarallax) {\n  if (typeof jarallax === 'undefined') {\n    return;\n  }\n  const Jarallax = jarallax.constructor;\n\n  // append video after when block will be visible.\n  const defOnScroll = Jarallax.prototype.onScroll;\n  Jarallax.prototype.onScroll = function () {\n    const self = this;\n    defOnScroll.apply(self);\n    const isReady = !self.isVideoInserted && self.video && (!self.options.videoLazyLoading || self.isElementInViewport) && !self.options.disableVideo();\n    if (isReady) {\n      self.isVideoInserted = true;\n      self.video.getVideo(video => {\n        const $parent = video.parentNode;\n        self.css(video, {\n          position: self.image.position,\n          top: '0px',\n          left: '0px',\n          right: '0px',\n          bottom: '0px',\n          width: '100%',\n          height: '100%',\n          maxWidth: 'none',\n          maxHeight: 'none',\n          pointerEvents: 'none',\n          transformStyle: 'preserve-3d',\n          backfaceVisibility: 'hidden',\n          margin: 0,\n          zIndex: -1\n        });\n        self.$video = video;\n\n        // add Poster attribute to self-hosted video\n        if (self.video.type === 'local') {\n          if (self.image.src) {\n            self.$video.setAttribute('poster', self.image.src);\n          } else if (self.image.$item && self.image.$item.tagName === 'IMG' && self.image.$item.src) {\n            self.$video.setAttribute('poster', self.image.$item.src);\n          }\n        }\n\n        // add classname to video element\n        if (self.options.videoClass) {\n          self.$video.setAttribute('class', `${self.options.videoClass} ${self.options.videoClass}-${self.video.type}`);\n        }\n\n        // insert video tag\n        self.image.$container.appendChild(video);\n\n        // remove parent video element (created by VideoWorker)\n        $parent.parentNode.removeChild($parent);\n\n        // call onVideoInsert event\n        if (self.options.onVideoInsert) {\n          self.options.onVideoInsert.call(self);\n        }\n      });\n    }\n  };\n\n  // cover video\n  const defCoverImage = Jarallax.prototype.coverImage;\n  Jarallax.prototype.coverImage = function () {\n    const self = this;\n    const imageData = defCoverImage.apply(self);\n    const node = self.image.$item ? self.image.$item.nodeName : false;\n    if (imageData && self.video && node && (node === 'IFRAME' || node === 'VIDEO')) {\n      let h = imageData.image.height;\n      let w = h * self.image.width / self.image.height;\n      let ml = (imageData.container.width - w) / 2;\n      let mt = imageData.image.marginTop;\n      if (imageData.container.width > w) {\n        w = imageData.container.width;\n        h = w * self.image.height / self.image.width;\n        ml = 0;\n        mt += (imageData.image.height - h) / 2;\n      }\n\n      // add video height over than need to hide controls\n      if (node === 'IFRAME') {\n        h += 400;\n        mt -= 200;\n      }\n      self.css(self.$video, {\n        width: `${w}px`,\n        marginLeft: `${ml}px`,\n        height: `${h}px`,\n        marginTop: `${mt}px`\n      });\n    }\n    return imageData;\n  };\n\n  // init video\n  const defInitImg = Jarallax.prototype.initImg;\n  Jarallax.prototype.initImg = function () {\n    const self = this;\n    const defaultResult = defInitImg.apply(self);\n    if (!self.options.videoSrc) {\n      self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\n    }\n    if (self.options.videoSrc) {\n      self.defaultInitImgResult = defaultResult;\n      return true;\n    }\n    return defaultResult;\n  };\n  const defCanInitParallax = Jarallax.prototype.canInitParallax;\n  Jarallax.prototype.canInitParallax = function () {\n    const self = this;\n    let defaultResult = defCanInitParallax.apply(self);\n    if (!self.options.videoSrc) {\n      return defaultResult;\n    }\n\n    // Init video api\n    const video = new VideoWorker(self.options.videoSrc, {\n      autoplay: true,\n      loop: self.options.videoLoop,\n      showControls: false,\n      accessibilityHidden: true,\n      startTime: self.options.videoStartTime || 0,\n      endTime: self.options.videoEndTime || 0,\n      mute: !self.options.videoVolume,\n      volume: self.options.videoVolume || 0\n    });\n\n    // call onVideoWorkerInit event\n    if (self.options.onVideoWorkerInit) {\n      self.options.onVideoWorkerInit.call(self, video);\n    }\n    function resetDefaultImage() {\n      if (self.image.$default_item) {\n        self.image.$item = self.image.$default_item;\n        self.image.$item.style.display = 'block';\n\n        // set image width and height\n        self.coverImage();\n        self.onScroll();\n      }\n    }\n    if (video.isValid()) {\n      // Force enable parallax.\n      // When the parallax disabled on mobile devices, we still need to display videos.\n      // https://github.com/nk-o/jarallax/issues/159\n      if (this.options.disableParallax()) {\n        defaultResult = true;\n        self.image.position = 'absolute';\n        self.options.type = 'scroll';\n        self.options.speed = 1;\n      }\n\n      // if parallax will not be inited, we can add thumbnail on background.\n      if (!defaultResult) {\n        if (!self.defaultInitImgResult) {\n          video.getImageURL(url => {\n            // save default user styles\n            const curStyle = self.$item.getAttribute('style');\n            if (curStyle) {\n              self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n            }\n\n            // set new background\n            self.css(self.$item, {\n              'background-image': `url(\"${url}\")`,\n              'background-position': 'center',\n              'background-size': 'cover'\n            });\n          });\n        }\n\n        // init video\n      } else {\n        video.on('ready', () => {\n          if (self.options.videoPlayOnlyVisible) {\n            const oldOnScroll = self.onScroll;\n            self.onScroll = function () {\n              oldOnScroll.apply(self);\n              if (!self.videoError && (self.options.videoLoop || !self.options.videoLoop && !self.videoEnded)) {\n                if (self.isVisible()) {\n                  video.play();\n                } else {\n                  video.pause();\n                }\n              }\n            };\n          } else {\n            video.play();\n          }\n        });\n        video.on('started', () => {\n          self.image.$default_item = self.image.$item;\n          self.image.$item = self.$video;\n\n          // set video width and height\n          self.image.width = self.video.videoWidth || 1280;\n          self.image.height = self.video.videoHeight || 720;\n          self.coverImage();\n          self.onScroll();\n\n          // hide image\n          if (self.image.$default_item) {\n            self.image.$default_item.style.display = 'none';\n          }\n        });\n        video.on('ended', () => {\n          self.videoEnded = true;\n          if (!self.options.videoLoop) {\n            // show default image if Loop disabled.\n            resetDefaultImage();\n          }\n        });\n        video.on('error', () => {\n          self.videoError = true;\n\n          // show default image if video loading error.\n          resetDefaultImage();\n        });\n        self.video = video;\n\n        // set image if not exists\n        if (!self.defaultInitImgResult) {\n          // set empty image on self-hosted video if not defined\n          self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n          if (video.type !== 'local') {\n            video.getImageURL(url => {\n              self.image.bgImage = `url(\"${url}\")`;\n              self.init();\n            });\n            return false;\n          }\n        }\n      }\n    }\n    return defaultResult;\n  };\n\n  // Destroy video parallax\n  const defDestroy = Jarallax.prototype.destroy;\n  Jarallax.prototype.destroy = function () {\n    const self = this;\n    if (self.image.$default_item) {\n      self.image.$item = self.image.$default_item;\n      delete self.image.$default_item;\n    }\n    defDestroy.apply(self);\n  };\n}\n\nfunction jarallaxElement$1(jarallax = global$2.jarallax) {\n  // eslint-disable-next-line no-console\n  console.warn(\"Jarallax Element extension is DEPRECATED, please, avoid using it. We recommend you look at something like `lax.js` library <https://github.com/alexfoxy/lax.js>. It is much more powerful and has a less code (in cases when you don't want to add parallax backgrounds).\");\n  if (typeof jarallax === 'undefined') {\n    return;\n  }\n  const Jarallax = jarallax.constructor;\n\n  // redefine default methods\n  ['initImg', 'canInitParallax', 'init', 'destroy', 'coverImage', 'isVisible', 'onScroll', 'onResize'].forEach(key => {\n    const def = Jarallax.prototype[key];\n    Jarallax.prototype[key] = function (...args) {\n      const self = this;\n      if (key === 'initImg' && self.$item.getAttribute('data-jarallax-element') !== null) {\n        self.options.type = 'element';\n        self.pureOptions.speed = self.$item.getAttribute('data-jarallax-element') || '100';\n      }\n      if (self.options.type !== 'element') {\n        return def.apply(self, args);\n      }\n      self.pureOptions.threshold = self.$item.getAttribute('data-threshold') || '';\n      switch (key) {\n        case 'init':\n          {\n            const speedArr = `${self.pureOptions.speed}`.split(' ');\n            self.options.speed = self.pureOptions.speed || 0;\n            self.options.speedY = speedArr[0] ? parseFloat(speedArr[0]) : 0;\n            self.options.speedX = speedArr[1] ? parseFloat(speedArr[1]) : 0;\n            const thresholdArr = self.pureOptions.threshold.split(' ');\n            self.options.thresholdY = thresholdArr[0] ? parseFloat(thresholdArr[0]) : null;\n            self.options.thresholdX = thresholdArr[1] ? parseFloat(thresholdArr[1]) : null;\n            def.apply(self, args);\n\n            // restore background image if available.\n            const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n            if (originalStylesTag) {\n              self.$item.setAttribute('style', originalStylesTag);\n            }\n            return true;\n          }\n        case 'onResize':\n          {\n            const defTransform = self.css(self.$item, 'transform');\n            self.css(self.$item, {\n              transform: ''\n            });\n            const rect = self.$item.getBoundingClientRect();\n            self.itemData = {\n              width: rect.width,\n              height: rect.height,\n              y: rect.top + self.getWindowData().y,\n              x: rect.left\n            };\n            self.css(self.$item, {\n              transform: defTransform\n            });\n            break;\n          }\n        case 'onScroll':\n          {\n            const wnd = self.getWindowData();\n            const centerPercent = (wnd.y + wnd.height / 2 - self.itemData.y - self.itemData.height / 2) / (wnd.height / 2);\n            const moveY = centerPercent * self.options.speedY;\n            const moveX = centerPercent * self.options.speedX;\n            let my = moveY;\n            let mx = moveX;\n            if (self.options.thresholdY !== null && moveY > self.options.thresholdY) my = 0;\n            if (self.options.thresholdX !== null && moveX > self.options.thresholdX) mx = 0;\n            self.css(self.$item, {\n              transform: `translate3d(${mx}px,${my}px,0)`\n            });\n            break;\n          }\n        case 'initImg':\n        case 'isVisible':\n        case 'coverImage':\n          return true;\n        // no default\n      }\n      return def.apply(self, args);\n    };\n  });\n}\n\nconst jarallax = jarallax$1;\nconst jarallaxVideo = function jarallaxVideo() {\n  return jarallaxVideo$1(jarallax);\n};\nconst jarallaxElement = function jarallaxElement() {\n  return jarallaxElement$1(jarallax);\n};\n\nexport { jarallax, jarallaxElement, jarallaxVideo };\n//# sourceMappingURL=jarallax.esm.js.map\n"],"names":["win$1","wndW","wndH","$deviceHelper","win","callback","defaults$1","type","speed","containerClass","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","zIndex","disableParallax","onScroll","onInit","onDestroy","onCoverImage","videoClass","videoSrc","videoStartTime","videoEndTime","videoVolume","videoLoop","videoPlayOnlyVisible","videoLazyLoading","disableVideo","onVideoInsert","onVideoWorkerInit","window","__webpack_require__","g","self","global$2","navigator","navigator$1","mobileAgent","test","userAgent","updateWindowHeight","innerWidth","document","documentElement","clientWidth","body","createElement","style","cssText","appendChild","clientHeight","innerHeight","getWindowSize","width","height","addEventListener","readyState","capture","once","passive","jarallaxList","updateParallax","length","forEach","data","k","instance","oldData","isVisible","clientRect","$item","getBoundingClientRect","newData","top","bottom","isResized","isScrolled","onResize","requestAnimationFrame","visibilityObserver","IntersectionObserver","entries","entry","target","jarallax","isElementInViewport","isIntersecting","rootMargin","instanceID","Jarallax","constructor","item","userOptions","defaults","dataOptions","dataset","pureDataOptions","Object","keys","key","lowerCaseOption","substr","toLowerCase","options","extend","pureOptions","Math","min","max","parseFloat","RegExp","disableParallaxRegexp","disableParallaxDefault","disableVideoRegexp","disableVideoDefault","elementInVP","Element","image","src","$container","useImgTag","position","initImg","canInitParallax","init","css","el","styles","getComputedStyle","getPropertyValue","out","args","extend$1","i","getWindowData","y","scrollTop","$imgElement","querySelector","Image","cloneNode","$itemParent","parentNode","bgImage","containerStyles","left","overflow","imageStyles","pointerEvents","transformStyle","backfaceVisibility","curStyle","getAttribute","setAttribute","curImgStyle","$parents","getParents","elem","parents","parentElement","nodeType","push","filter","parentTransform","transform","overflowRegex","call","observe","destroy","splice","unobserve","originalStylesTag","removeAttribute","originalStylesImgTag","removeChild","coverImage","rect","contH","isScroll","scrollDist","resultH","resultMT","abs","parallaxScrollDistance","marginTop","container","force","contT","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","fromViewportCenter","visiblePercent","opacity","scale","positionY","section","beforeTop","afterBottom","jarallax$1","items","ret","HTMLElement","nodeName","len","apply","autoplay","loop","mute","volume","showControls","accessibilityHidden","startTime","endTime","ID","VideoWorkerBase","url","options_default","videoID","parseURL","isValid","playerID","on","name","userEventsList","off","val","fire","play","start","pause","unmute","setVolume","getVolume","getMuted","setCurrentTime","currentTime","getCurrentTime","getImageURL","getVideo","global$1","Deferred","doneCallbacks","failCallbacks","prototype","execute","list","Array","slice","resolve","reject","done","fail","YoutubeAPIadded","loadingYoutubePlayer","loadingYoutubeDefer","VideoWorkerYoutube","match","loadAPI$1","tag","head","getElementsByTagName","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","seconds","pauseVideo","unMute","isMuted","videoImage","availableSizes","step","tempImg","onload","naturalWidth","$video","hiddenDiv","ytStarted","ytProgressInterval","display","playerOptions","host","videoId","playerVars","autohide","rel","playsinline","iv_load_policy","modestbranding","controls","showinfo","disablekb","events","onReady","e","getDuration","setInterval","onStateChange","ENDED","PAUSED","clearInterval","onError","firstInit","div","Player","getElementById","videoWidth","parseInt","videoHeight","loaded","onYouTubeIframeAPIReady","VimeoAPIadded","loadingVimeoPlayer","loadingVimeoDefer","VideoWorkerVimeo","parseURLHash","found","loadAPI","Vimeo","getPaused","then","paused","devicePixelRatio","request","XMLHttpRequest","open","onreadystatechange","status","response","JSON","parse","responseText","thumbnail_url","send","onAPIready","vimeoInterval","vmStarted","dnt","id","autopause","transparent","muted","urlHash","h","background","playerOptionsString","encodeURIComponent","getVideoWidth","getVideoHeight","VideoWorkerLocal","videoFormats","split","result","ready","locStarted","addSourceElement","element","source","VideoWorker","providers","BaseClass","Youtube","Local","_bailouttocsr","require","BailoutToCSR","children","reason","param","BailoutToCSRError","_requestasyncstorageexternal","PreloadCss","moduleIds","allFiles","getExpectedRequestStore","requestStore","manifest","reactLoadableManifest","cssFiles","map","file","_jsxruntime","jsx","href","as","assetPrefix","encodeURI"],"sourceRoot":""}