{"version":3,"file":"static/chunks/pages/_app-ab5b60c5faf93905.js","mappings":"4FACA,qCAA6C,CAAE,SAAa,EAC5D,kBAAwB,QACxB,MAAqB,EAAQ,KAAc,CAC3C,SACA,EAF4B,UAE5B,GAGA,OAFA,cACA,2CACA,KAEA,OACA,iCACA,IAAoB,oCAA2D,EAC/E,KACA,eACA,MACA,QACA,IACA,YACA,GACA,mBAAyD,EAAW,SAAmB,EAAW,GAAG,EAAQ,IAG7G,QACA,EACA,gBACA,8CAAmG,eAAqB,UACxH,IACA,WACA,SAEA,MACA,WACA,QACA,iCAAiE,eAAqB,UACtF,YACA,GAAmC,kBACnC,QACA,CAAiB,EAEjB,GACA,kBAAkD,oBAA8B,WAEhF,WACA,EAFA,EAEA,MAKA,OAFA,UAA2B,uBAC3B,2DACA,CACA,CAAS,EAAI,SAAU,SAAY,CACnC,CACA,CACA,kBAAwB,uCCpDxB,8CACA,0BAA6C,UAC7C,EACA,qCAA6C,CAAE,SAAa,EAC5D,YAAkB,QAClB,QAAmC,EAAQ,KAAgB,GAC3D,EAAkB,EAAQ,IAAe,CADC,CAE1C,IAAmD,EAAQ,KADlC,GAEzB,IAAqC,EAAQ,GADa,EACQ,GAClE,IAAiC,EAAQ,GADG,EACc,GAC1D,IAAkC,EAAQ,GADF,EACoB,GAC5D,IAAgC,EAAQ,GADC,EACe,GACxD,IAA8B,EAAQ,GADC,EACa,GACpD,IAAyC,EAAQ,GADZ,EACwC,GAC7E,IAAkC,EAAQ,GADM,EACG,GACnD,EAAgB,EAAQ,KADiB,EAEzC,UADuB,KACvB,EACA,CAAM,yBAA6B,4CAAqD,CACxF,CAAM,2BAA+B,mDAA8D,CACnG,CAAM,8BAAkC,4CAAqD,CAC7F,CAAM,oCAAwC,0BAA+B,CAC7E,EAEA,mGACA,gDACA,iBACA,gBACA,UACA,CAAC,EAID,gBACA,qBACA,oCACA,gBAcA,KACA,iBACA,MACA,EACA,YAA4B,WAAqC,MACjE,WACA,kCACA,iBACA,yBACA,wBApCA,OAoCA,WACA,KACA,CACA,CACA,QACA,qBAEA,CAEA,EAhCA,KAEA,OACA,UAEA,OACA,QAEA,CACA,SACA,QAGA,CAiDA,sBACA,qEACA,oBACA,0CAEA,aADA,CAIA,CAoDA,QACA,eAEA,OADA,YACA,KAEA,OACA,OAvBA,gBAEA,SACA,kBAEA,SACA,8BAEA,SACA,6BAEA,IAAY,2BAAwB,EAIpC,OAjDA,gBACA,UACA,uBACA,yBAzCA,cACA,gBACA,iCACA,mDACA,mBACA,gBAIA,OAHA,GACA,4CAEA,CACA,CAAS,KACT,iBACA,qBACA,CACA,QACA,EA0BA,YACA,0BACA,aACA,0BACA,gBA7BA,KACA,gBACA,YACA,SACA,mDACA,+CACA,OACA,GAA0B,eAE1B,OADA,kBACA,gBACA,CACA,QACA,EAiBA,oBACA,uBACA,iBACA,6BACA,iBACA,sCACA,gBACA,oBACA,aACA,0BACA,kBACA,mCACA,gBACA,qBACA,OAjGA,MAiGA,CACA,4BACA,8CACA,uBACA,4CACA,wBACA,SACA,0BACA,6CACA,SACA,QACA,CACA,EAgBA,EAHA,KACA,kCACA,EAEA,EAOA,uBACA,CACA,CACA,YAAkB,uCCtKlB,mEACA,kBACA,2BAAmC,6BAAoC,aAAgB,CACvF,CAAC,mBACD,kBACA,SACA,CAAC,EACD,yCACA,iFACA,EACA,qCAA6C,CAAE,SAAa,EAAC,EAChD,EAAQ,KAAoB,KACzC,EAAa,EAAQ,GADD,EACe,KACnC,EAAa,EAAQ,GADD,EACU,YAAV,qBCbpB,qCAA6C,CAAE,SAAa,EAAC,EAC7D,QAAgB,QAEhB,YACA,kBACA,sBACA,sBACA,gBACA,4BACA,8CACA,UACA,sBACA,wCACA,YACA,0BACA,gBACA,kBACA,qBACA,CAAC,cAAkC,UAAgB,IAAK,gCClBxD,qCAA6C,CAAE,SAAa,EAAC,IAC7D,EAAkB,EAAQ,KAAiB,EAgF3C,UAhFyB,CAgFzB,OACA,QACA,yDACA,0BAEA,yBAAyC,WAAiB,OAC1D,cACA,UACA,UACA,UAGA,GAFA,qCACA,2CAEA,SAEA,gBACA,6BAEA,MAEA,CACA,QACA,CAhCA,SAAe,CA1Cf,gBAGA,GAFA,YAA8B,OAE9B,GACA,iCAEA,MACA,mCAEA,oBACA,eACA,SACA,SACA,gBAEA,YAqEA,KArEA,CAqEA,KArEA,CAsEA,KAtEA,CAsEA,KACA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,qBACA,qCAEA,8BACA,uDAEA,sBACA,SACA,6CAEA,CAAK,CACL,EA+BA,YAAkB,CARlB,YACA,MACA,8BAEA,8CACA,8CAEA,gCCjtBA,qCAA6C,CAAE,SAAa,EAAC,IAC7D,EAAgB,EAAQ,KAAe,EAmCvC,UAnCuB,CAavB,YACA,MACA,iCAEA,sBACA,uBACA,mBACA,0BACA,8BAEA,oBACA,qBAGA,qBACA,aACA,sBACA,qBACA,QAEA,kEACA,EAgCA,WAAiB,CAlBjB,YACA,oBACA,SAGA,sBACA,sBACA,6BACA,MAIA,iBACA,oBAGA,2EACA,EAoBA,gBAAsB,CAXtB,cACA,eACA,kBACA,iBACA,SAEA,oCACA,cAEA,qDACA,EAwBA,aAAmB,CAbnB,gBACA,UACA,sCAEA,kBACA,gCACA,EACA,eACA,EACA,WACA,OAEA,EA+BA,WAAiB,CAnBjB,gBACA,MACA,iCAEA,MACA,4CAEA,uCACA,sEAEA,oCACA,gCACA,EACA,eACA,EACA,WACA,gBAEA,EAqCA,cAAoB,CAzBpB,gBACA,MACA,2CAEA,MACA,+CAEA,oCACA,kEAEA,yBAAsD,WAAgB,KACtE,WACA,uCACA,sEAEA,oCACA,gCACA,EACA,eACA,EACA,WACA,gBAEA,CACA,EA0BA,SAAe,CANf,kBACA,mBACA,WAEA,CACA,EAgCA,SAAe,CAZf,oBACA,6BACA,oBAEA,8BACA,qBAEA,sCACA,gBAEA,oCCpOA,YAAkB,CAuClB,YACA,WACA,OACA,OACA,iBACA,EA3CA,aAAmB,CAiDnB,YAEA,IADA,EAcA,EAbA,OACA,OACA,OAEA,QATA,CASA,GATA,MASA,GAEA,IAGA,MACA,IACA,EAGA,QAAc,IAAS,KACvB,EACA,uBACA,yBACA,wBACA,qBACA,iBACA,gBACA,aAmBA,OAhBA,QACA,EACA,sBACA,wBACA,cAGA,QACA,EACA,uBACA,wBACA,wBACA,gBACA,cAGA,CACA,EA5FA,eAAqB,CAkHrB,YAQA,QAPA,EACA,WACA,MACA,KAIA,UAA2C,IAAU,GAHrD,MAIA,gBAtBA,OAGA,QAFA,EACA,KACA,IAAsB,IAAS,KA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A,eACA,IAAyB,KAAQ,KAEjC,QADA,KACA,IAAsB,IAAe,IACrC,sBACA,KACA,KACA,CAEA,aACA,CAGA,SACA,CA2IA,kBACA,uBAIA,IAHA,SAEA,IACA,MACA,IAWA,QAXA,OACA,OACA,QACA,EACA,MACA,EACA,MACA,EACA,EAEA,UAGA,UACA,OACA,OACA,MAEA,KACA,QAEA,KADA,UACA,QACA,mBACA,KACA,MAGA,KACA,QACA,SACA,SACA,4BACA,8BACA,0BACA,MAGA,KACA,QACA,SACA,SACA,SACA,0CACA,yCACA,kBACA,KAGA,CAGA,UAGA,QACA,KACM,UAEN,SACA,0BACA,gBAGA,UACA,IACA,CAEA,gBAQA,GACA,eACA,MAJA,KAKA,2CAMA,IAFA,SACA,IACA,KACA,6BACA,OACA,aAdA,OAiBA,QACA,EAxBA,EACA,CAmGA,kBACA,sDACA,kEACA,CAmLA,wBACA,iFACA,kEACA,sDACA,CA+LA,wBACA,iBACA,IADA,sCAEA,CAEA,sBAOA,OANA,KACA,OACA,GACA,sDAEA,sBACA,GACA,CAUA,sBAOA,OANA,KACA,OACA,GACA,wDAEA,sBACA,GACA,CA3+CA,IAAc,GAEd,IAAyB,IAmBzB,iCAYA,IACA,wBACA,GAAkB,eAAmB,YAGrC,OAFA,8CACA,2BACA,YACA,CAAI,SACJ,QACA,CACA,IAnBA,oDACA,kCACA,cACA,iJAkBA,4CACA,cACA,eACA,oBACA,mBAEA,CAAC,EAED,4CACA,cACA,eACA,oBACA,uBAEA,CAAC,EAmCD,gBAgEA,uBACA,eACA,EAIA,wDACA,oCA8BA,wBACA,OApBA,EAoBA,MAnBA,GACA,EAkBA,GAhBA,SAgBA,EAZA,iBAYA,EAXA,EAWA,GAXA,KAWA,KAVA,EAUA,GAVA,KAUA,GARA,EAQA,EACA,EAUA,0BACA,WACA,EAIA,8BACA,WACA,EA6GA,uBACA,kCACA,iBAGA,wBAGA,GAFA,qDACA,qDACA,+BACA,gBACA,yEAIA,kBAKA,QAHA,WACA,WAEA,oBAAwC,IAAS,IACjD,gBACA,OACA,OACA,KACA,QAGA,OACA,MACA,CACA,EAEA,yBACA,gCACA,UACA,WACA,YACA,YACA,aACA,aACA,aACA,WACA,YACA,cACA,eACA,QACA,SACA,QACA,CACA,EAEA,uBACA,qBACA,+DAGA,gBACA,kBAIA,cAEA,QADA,IACgB,WAAiB,IACjC,eAIA,IARA,EAQA,mBACA,IACA,QAAc,WAAiB,KAC/B,WACA,mBACA,oBACA,oBAEA,8BACA,EACA,EACA,QAGM,iBAGN,iBAFA,+DAIA,YAEA,QACA,EAiDA,eA8EA,yBAQA,8BACA,kBACA,UACA,8DAEA,YAAkB,IAAS,KAC3B,cAEA,aAGA,8BACA,kBACA,UACA,8DAEA,YAAkB,IAAS,KAC3B,cACA,gBAEA,aAGA,8BACA,kBACA,UACA,8DAEA,YAAkB,IAAS,KAC3B,cACA,gBACA,gBACA,gBAEA,aAGA,gCACA,yBACA,SACA,gCACA,uBACA,EAEA,gDAEA,+BACA,sEACA,UACA,qBACA,EAEA,+BACA,SACA,EAAY,IAAyB,CAGrC,OAFA,uCAAiD,EAAE,kBACnD,4BACA,gBACA,EACA,GACA,qCAGA,wCAIA,GAHA,iBACA,oCAEA,eACA,gBACA,iFACA,UAiBA,GAbA,YACA,MAEA,YACA,iBAEA,YACA,MAEA,YACA,gBAGA,oCACA,uCAGA,cACA,SAEA,QACA,UAEA,QACA,SAQA,GALA,OACA,OACA,OACA,OAEA,kBASA,QAPA,MACA,MACA,gBAEA,kBACA,eAEA,IAAkB,IAAS,IAC3B,gBACA,OACA,OACA,KACA,QAGA,OACA,MACA,CACA,EA2HA,qCACA,+BACA,EAEA,oCACA,uBACA,EAEA,wCACA,uBACA,EA2CA,oCAEA,cACA,SACA,cACA,SAEI,kCACJ,IACA,cACA,SAEI,eACJ,OACA,aACA,OACA,yBAEA,IACA,eAGA,YACA,2EAIA,IA3CA,IAIA,IAIA,IAIA,IA+BA,gBAGA,GAFA,yBAEA,sCACA,2DAGA,cAGA,IADA,GACS,CADT,OAEA,UACA,UACA,gBAjFA,SACA,eACA,iBACA,EAGA,cACA,GACA,MAJA,IAQA,eAEA,OACA,QAEA,YAAkB,IAAY,KAC9B,mCACA,aACA,SACA,CACA,QACA,EA0DA,WAEA,YACA,YACA,OA5DA,EA4DA,EA5DA,EA4DA,EA3DA,IA2DA,OA3DA,UA2DA,KA3DA,IA6DA,aACA,aACA,aACA,OA7DA,EA6DA,EA7DA,EA6DA,EA5DA,EAk4BA,YAEA,QADA,KACA,IAAkB,WAAgB,IAElC,4BAEA,QACA,EA70BA,QA5DA,IA8DA,cAEA,OA7DA,EA6DA,EA7DA,EA6DA,EA5DA,IA4DA,QA5DA,IA8DA,YACA,YACA,cACA,eACA,OA/DA,EA+DA,EA/DA,EA+DA,EA9DA,WAm4BA,KAGA,QAFA,IACA,KACA,IAAkB,aAClB,WADkC,IAIlC,GADA,oBACA,EAEA,OADA,OAEA,UAGA,QACA,EAn1BA,OA9DA,UA8DA,KA9DA,IAgEA,SACA,6CACA,uBACA,IACA,CAEA,EAEA,8BACA,OACA,cACA,kDACA,CACA,EAwJA,gCACA,kBACA,MACA,mBAEA,IACA,OACA,SACI,KACJ,MAGA,IACA,OACA,SACI,KACJ,MAGA,WAEA,yBAIA,OAFA,qCAEA,CACA,EAUA,uBACA,uCACA,OACA,OACA,sBAKA,IAHA,cACA,IACA,IACA,iBACA,eAGA,QACA,EAEA,uBACA,uCACA,OACA,OACA,GACA,mBAKA,IAFA,kBACA,IACA,eACA,iBAGA,QACA,EAEA,sBACA,oCAGA,OAFA,OACA,sBACA,OACA,EAEA,yBACA,uCAGA,OAFA,OACA,sBACA,oBACA,EAEA,yBACA,uCAGA,OAFA,OACA,sBACA,sBAGA,yBACA,uCAIA,OAHA,OACA,sBAEA,SACA,aACA,eACA,qBAGA,yBACA,uCAIA,OAHA,OACA,sBAEA,kBACA,eACA,aACA,UACA,EAEA,sCACA,OACA,OACA,sBAKA,IAHA,cACA,IACA,IACA,iBACA,eAMA,OAFA,GAFA,UAEA,qBAEA,CACA,EAEA,sCACA,OACA,OACA,sBAKA,IAHA,QACA,IACA,cACA,eACA,iBAMA,OAFA,GAFA,UAEA,qBAEA,CACA,EAEA,yCAGA,CAFA,OACA,sBACA,aACA,qBADA,SAIA,sCACA,OACA,sBACA,2BACA,6BACA,EAEA,sCACA,OACA,sBACA,2BACA,6BACA,EAEA,sCAIA,OAHA,OACA,sBAEA,QACA,aACA,cACA,aACA,EAEA,sCAIA,OAHA,OACA,sBAEA,YACA,cACA,aACA,WAGA,sCAGA,OAFA,OACA,sBACA,sBACA,EAEA,sCAGA,OAFA,OACA,sBACA,sBACA,EAEA,uCAGA,OAFA,OACA,sBACA,sBACA,EAEA,uCAGA,OAFA,OACA,sBACA,sBACA,EAQA,wBACA,0CAIA,GAHA,KACA,OACA,OACA,IACA,wBACA,iBACA,CAEA,QACA,IAEA,IADA,cACA,iBACA,kBAGA,UACA,EAEA,wBACA,0CAIA,GAHA,KACA,OACA,OACA,IACA,wBACA,iBACA,CAEA,UACA,IAEA,IADA,gBACA,kBACA,kBAGA,UACA,EAEA,uBACA,uCAKA,OAJA,KACA,OACA,uBACA,cACA,GACA,EAEA,0BACA,0CAMA,OALA,KACA,OACA,yBACA,cACA,gBACA,GACA,EAEA,0BACA,0CAMA,OALA,KACA,OACA,yBACA,cACA,gBACA,GACA,EAEA,0BACA,0CAQA,OAPA,KACA,OACA,8BACA,iBACA,iBACA,gBACA,cACA,GACA,EAEA,0BACA,0CAQA,OAPA,KACA,OACA,8BACA,eACA,iBACA,gBACA,gBACA,GACA,EAEA,yCAGA,GAFA,KACA,OACA,IACA,wBAEA,oBACA,CAEA,QACA,IACA,IAEA,IADA,cACA,iBACA,6BACA,MAEA,yBAGA,UACA,EAEA,yCAGA,GAFA,KACA,OACA,IACA,wBAEA,oBACA,CAEA,UACA,IACA,IAEA,IADA,gBACA,kBACA,6BACA,MAEA,yBAGA,UACA,EAEA,sCAMA,OALA,KACA,OACA,0BACA,iBACA,cACA,GACA,EAEA,yCAMA,OALA,KACA,OACA,8BACA,cACA,gBACA,GACA,EAEA,yCAMA,OALA,KACA,OACA,8BACA,cACA,gBACA,GACA,EAEA,yCAQA,OAPA,KACA,OACA,wCACA,cACA,gBACA,iBACA,iBACA,GACA,EAEA,yCASA,OARA,KACA,OACA,wCACA,wBACA,eACA,iBACA,gBACA,gBACA,GACA,EAiBA,yCACA,uBACA,EAEA,yCACA,uBACA,EAYA,0CACA,uBACA,EAEA,0CACA,uBACA,EAGA,mCACA,iEAQA,GAPA,SACA,0BACA,0BACA,SACA,gBAGA,OACA,8BADA,SAIA,OACA,8CAEA,8DACA,mDAGA,+BACA,gBACA,iBAGA,UAaA,OAXA,6DAEA,uBAEA,8BACA,EACA,mBACA,GAIA,CACA,EAMA,mCAEA,uBASA,GARA,oBACA,IACA,IACA,eACM,qBACN,IACA,eAEA,+BACA,6CAEA,wCACA,wCAEA,iBACA,IA2BA,EA3BA,kBACA,oBACA,eAEA,KAEA,CACA,EAAI,sBACJ,OACI,qBACJ,cAIA,qCACA,uCAGA,QACA,YASA,GANA,OACA,+BAEA,SAGA,mBACA,QAAoB,IAAS,IAC7B,cAEI,CACJ,oBACA,EACA,YACA,WACA,SACA,gCACA,qCAEA,QAAgB,MAAiB,IACjC,gBAEA,CAEA,aAMA,0BAgBA,gBACA,SAMA,QALA,EACA,WACA,OACA,KAEA,IAAkB,IAAY,KAI9B,IAHA,mBAGA,gBAEA,OAEA,YAIU,QAJV,CAEA,+BACA,QACA,CAOA,CAPU,CAOV,EAEA,QACA,CAGA,YACA,+BACA,IACA,QACA,CAGA,6BACA,EAAM,OAEN,+BAMA,GAHA,OAGA,OACA,kBACA,SACA,EAAM,eACN,kBACA,OACA,SACA,SAEA,EAAM,gBACN,kBACA,OACA,UACA,YACA,SAEA,EAAM,kBACN,kBACA,OACA,UACA,aACA,YACA,SAEA,EAAM,IACN,iCAEA,CAEA,QACA,CA2BA,cACA,qBAxHA,YAMA,IAFA,EAFA,oBAEA,sBAEA,kBAEA,oBACA,OAEA,QACA,EA4GA,GACA,CAEA,oBACA,YAAkB,MAClB,gCAD8B,IAE9B,YAEA,QACA,CAKA,gBACA,uBACA,wDACA,4BASA,iBAGA,QAFA,qBACA,aACA,IAAkB,KAAQ,IAE1B,QADA,OACA,IAAoB,KAAQ,IAC5B,iBAGA,QACA,CAAC,+BC1wDD,GAAa,CAiCb,cACA,sBACA,iDAQA,QALA,KAEA,YAA0B,GAC1B,EAFA,QAEA,UAEA,IAAkB,WAAkB,KACpC,WACA,iBAGA,WAIA,8BAGA,iBACA,sCAGA,aACA,kBAGA,KAsHA,cACA,IACA,WACA,CAAI,SACJ,QACA,CACA,EA5HA,IACA,EACA,CAEA,QACA,EAnEA,GAAiB,CAqFjB,gBACA,YACA,cAEA,wBACA,4CAGA,cACA,4CAGA,WAEA,iBACA,2CAGA,cAEA,mBACA,iBAEA,0BACA,4CAGA,MAAc,uBACd,CAEA,aACA,qBACA,4CAGA,MAAc,kBAGd,WACA,mBACA,0CAGA,MAAc,cAGd,cACA,4CACA,6CAGA,MAAc,iCACd,CAUA,GARA,YACA,OAAc,WAGd,UACA,OAAc,SAGd,WAIA,OAHA,4BACA,qCAGA,OAMA,aALA,MAAkB,iBAClB,KACA,WACA,MAAkB,cAClB,KAIA,YACA,MAAkB,eAClB,KACA,SACA,6CACA,CAGA,QACA,EAnKA,yBACA,qBAUA,+DCjCA,yCACA,aACA,aACA,cACA,iCAGA,OADA,cACA,KACA,CAAC,GAGD,aAEA,OACA,iCA8gBC,EA7gBD,oBA6gBC,GA7gBD,oBACA,KACA,eA2gBC,GA1gBD,SA0gBC,GAzgBD,WACA,IAEA,OADA,SACA,EACA,CAAU,SACV,QACA,CACA,CAAO,GACP,sBAigBC,EAhgBD,4BAggBC,CA/fD,EAMA,iBACA,OACA,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,wBACA,CAEA,EACA,oBACA,YACA,yDACA,EAGA,cAIA,GAHA,oBACA,cAEA,oCACA,0DAEA,sBACA,CAEA,cAIA,MAHA,oBACA,cAEA,CACA,CAGA,cACA,OACA,gBACA,gBACA,OAAgB,wBAChB,CACA,EAQA,OANA,YACA,+BACA,QACA,GAGA,CACA,CAEA,cACA,YAEA,eACA,wBACA,gBACA,CAAO,OACD,iBACN,sBACA,sBACA,CAAO,OACD,GACN,kDACA,mBACA,CAAO,MAEP,CA8DA,cACA,cACA,gDAEA,cACA,CAEA,cACA,iCACA,oBACA,WACA,EACA,qBACA,UACA,CACA,CAAK,CACL,CAEA,cACA,qBACA,OAEA,OADA,uBACA,CACA,CAmBA,cACA,WAC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AuC,KAAQ,IAC/C,4BAIA,aAoBA,kCACA,mBACA,EAEA,qCACA,mBACA,EAEA,oCACA,mCACA,mBAEA,WAEA,EAEA,4BAiBA,kCACA,6CACA,aCxaA,2FCCA,MAAc,EAAQ,KAAU,EAMhC,GACA,OAPqB,WAOrB,GACA,eACA,gBACA,gBACA,eACA,mBACA,4BACA,4BACA,UACA,aACA,OACA,EACA,GACA,QACA,UACA,aACA,UACA,UACA,aACA,QACA,EAQA,GACA,YACA,WACA,gBACA,eACA,aACA,OACA,EACA,KAIA,qBAEA,YACA,EAIA,gBACA,CAXA,gBAhBA,CACA,YACA,UACA,gBACA,eACA,YACA,EAWA,YAYA,4BACA,6BACA,+BACA,kCACA,wBACA,mBAsCA,UArCA,kBACA,uBAEA,MACA,WAEA,UACA,QAEA,CAEA,WAEA,GACA,mBAMA,QAHA,OACA,OAEA,IAAoB,WAAiB,KACrC,WAEA,8CACA,aAEA,IAEA,QACA,CAAU,UACV,CACA,CACA,CAEA,QACA,iBCnGA,MAAY,qBAEZ,IADA,IACA,UACA,WACA,OACA,KACA,UACA,SACA,SAOA,IALA,KAEA,cACA,OACA,KACS,IAAW,0BAKpB,IAHA,cACA,OACA,KACS,IAAW,0BAEpB,SACA,WACI,SACJ,0BAEA,iBACA,KAEA,gCACA,EAEA,OAAa,uBAEb,IADA,MACA,UACA,WACA,OACA,gCACA,UACA,SACA,wBAmCA,IA/BA,MAFA,gBAEA,SACA,eACA,MAEA,mCACA,yBACA,IACA,MAEA,OACA,OAEA,qBAEA,SACA,IACA,MAGA,QACA,IACA,KACM,QACN,wBACA,OAEA,kCACA,MAIS,KAAW,+BAIpB,IAFA,SACA,KACS,IAAU,+BAEnB,eACA,gCCnFA,MAA2B,EAAQ,KAAsB,EAEzD,UAEA,gBACA,qBACA,iBACA,aACA,MACA,KACA,iBACA,KACA,KACA,SACA,6BAAqC,EAAU,mDAAmD,SAAa,GAC/G,CAGA,oBACA,uBACA,cACA,QAGA,8BAAoC,EAAU,oDAAoD,SAAc,gBAChH,CAEA,QACA,CAAE,CACF,CAEA,gBAMA,uBALA,GACA,iB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AE7K,CAAG,EACH,CACA,EAmJA,KACA,iCACA,CACA,eACA,CAAI,EACJ,qBACA,+EACA,+BACA,KACA,6CACM,CACN,4CACA,EAEA,qCACA,eACA,mBACA,aACA,YACA,CACA,EACA,GACA,KACA,QACA,KACA,KACA,eACA,IACA,EACA,aACA,GACA,2BACA,UACA,yDAA6G,EAA7G,aAA2G,EAAE,MAAsC,EAAtC,aAAmC,GAAG,MAInJ,MAAsB,mBAAa,CAHnC,WACA,MAAe,mBAAa,CAAC,UAAQ,QACrC,EACmC,CACnC,CAAK,EAEL,eA1LA,aACA,mBACA,uCACA,6BAA6F,EAAK,sBAClG,wBACA,UACA,cACA,KACA,YACA,qBACA,aAA0D,oBAAuC,oBAAc,wBAC/G,CAAK,CACL,EACA,GACA,MAAc,EAAI,YAAa,EAAa,OAC5C,GACA,CAFkB,EAElB,EACA,MAEA,kBACA,WACA,oBACA,yBA/EA,+BA+EA,IA9EA,WAAiC,oBAAc,MA8E/C,oDACA,CACA,sBACA,SACA,aACA,OAAe,kBAAY,IAC3B,KACA,CAAO,eAEP,UAAkB,UAAQ,aAC1B,OACA,UACA,EAEA,OADA,2BACe,mBAAa,SAC5B,KACA,MACA,UACS,UACT,CAAO,EAEP,CACA,kBACA,WAEA,SADA,GACA,iBACA,gIACA,mBACA,6BACA,kCACA,UACA,+CAxGA,KACA,OACA,IACA,EAEA,OADA,uCACA,CACA,EAkGA,CACA,cACS,MACT,EAA0B,oBAAc,IACxC,6BACA,qCACA,qEACA,uBACA,0DACA,SACA,EAAU,gBACV,eACA,UACA,EAAU,SAEV,IADA,kBACA,UACU,qCACV,MACA,eACA,wBACA,EAAY,2DACZ,iBACA,OAAuB,mBAAa,SACpC,OAAwB,OAAU,GAAG,EAAE,EACxB,OACD,CACd,wBACA,OAAuB,mBAAa,SACpC,OAAwB,OAAU,GAAG,EAAE,EACxB,IACf,OACY,iBACZ,WAAyB,QAAW,SACxB,CACZ,wBACA,WAAyB,OAAU,GAAG,EAAM,IAAI,OAAU,GAC1D,OACU,yBAIV,yCAJU,CACV,2BACA,YACA,CAGA,CAHU,CAGF,wBA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AAsD,OAAe,WAAe,mIAAmJ,gEAAqE,EAAK,SAG5a,8BACO,cAEP,0CACA,2DAMA,IARA,MAQA,SACA,EAAyB,EAAwB,KACjD,EAAoB,EAAa,KAEjC,MAFiC,EADgB,EAGjD,EAAiF,CADrD,EAAyB,EAAa,IACe,OADf,EAElE,OAFoD,MAEpD,CACA,QACA,oBACA,eACA,6BACA,+BACA,mBACA,CAAG,EAMH,gBACA,SAEA,4BACA,8BACA,4BACA,MAAqB,EAAc,IACnC,QADmC,MACnC,MAGA,sEACA,kEACA,eAA8E,EAC9E,eAA8E,CAC9E,6DACA,8EAEA,oBACA,oBACA,MACA,oBACA,IAEA,EADoB,EADpB,YACkC,GAClC,IAEA,OADA,SACA,CACA,EACA,sBACA,2CACA,sBACA,CAAO,YACP,YACO,OACD,oBACN,2CACA,sBACA,CAAO,YACP,SACA,CAAO,OACD,GAAgB,WAAP,OAAO,IACtB,iEACA,MAAoB,EAAc,KAClC,OADkC,EAElC,KAEA,OADA,qBDjEA,ECiEmC,IDjEnC,ECiEyC,EDjEzC,SCiEyC,yBZrFzC,YACA,MIG0B,GJH1B,cYoFqF,IZpFtD,EAAgB,EAC/C,EYmFqF,IXtFrF,ODE+C,ECF/C,GACA,IGIgD,YHJhD,mFACA,EWoFqF,IRjF9B,EQiF8B,ITtFrF,WACA,OCIyG,GAAxB,MDJjF,uIACA,OSoFqF,EACrF,CACA,CAAO,SACD,wBACN,4FAEA,CA0JA,MAzJA,iEACA,wBACA,EAAG,IA0HH,mBACA,WACA,yDACA,iDACA,EACQ,sBACR,YACA,sBACA,gBACA,CAAW,CACX,uBACA,gBACA,CACA,IAGA,4CACA,WAOA,sBACA,MACA,YAA0D,aAE1D,CAAG,EACH,CACA,ECvPA,OACA,cACA,OACA,oBACA,CAAG,CACH,QACA,qBACA,CAAG,CACH,SACA,sBACA,CAAG,CACH,YACA,gDACA,CACA,CACA,SACA,eACA,gEACA,cACA,CACA,QACA,+DACA,kCACA,iBACA,eACA,mBAEA,MACA,0CAAwE,IAAa,IACrF,kBAEA,kCACA,CACA,OACA,0CAA2E,IAAe,IAC1F,kBAEA,mCACA,CACA,QACA,0CAA2E,IAAe,IAC1F,kBAEA,iCACA,CACA,YACA,0CAA2E,IAAe,IAC1F,kBAEA,uDACA,CACA,wBACA,qBACA,gCAAkD,EAAO,EAAE,aAAa,EAAE,KAAQ,GAClF,kBACA,CACA,UACA,0BAEA,UAAmB,YAAY,GAAG,EAAW,GAE7C,gBACK,CACL,CACA,SAGA,MAFA,oBACA,6BACA,oBACA,CACA,CACA,WAEA,UACA,cACA,iBACA,CACA,QAMA,OALA,yBACA,+CACA,kCACA,4BACA,CAAK,EACL,KAEA,SACA,sBACA,OACA,yBACA,MACA,CACA,4BACA,CACA,QACA,kDAA2F,IAAa,IACxG,oBAEA,mBACA,wCACA,YACA,WACA,YAAwB,IAAmB,IAC3C,OAEA,CAAO,EAEP,qBACA,0CACA,YACA,WACA,YAAwB,IAAmB,IAC3C,mBAEA,CAAO,CAEP,CACA,CAEA,kBACA,EACA,EACA,0BACA,IACA,GACA,CAAG,EAGH,OAFA,YACA,WACA,CACA,CACA,sBACA,WACA,IACA,CAMA,cACA,mBACA,cACA,iDACA,CACA,aACA,4BACA,CACA,wCACA,IACA,oBACA,gBACA,aACA,wBAEA,EADA,0CACA,KAEA,GAEA,GACA,QACA,OACA,CACA,MACA,SACA,CACA,CACA,mBACA,IACA,MACA,IACA,CAAI,eACJ,6BACA,OACA,MACA,CACA,oBACA,wBACA,iBACA,+BACA,KAAW,cAAgB,GAAG,EAAE,EAEhC,QADA,wBACA,UACA,YAA2D,IAA3D,SAA+C,IAAO,GAAG,EAAE,IAC3D,cAGA,UAAc,IAAO,GAAG,EAAE,IAC1B,CAUA,iBACA,IACA,MACA,IACA,CAAI,QACJ,KACA,WACA,CAwBA,eACA,6BAAiC,EAAE,+BACnC,CACA,QACA,UAAa,EACb,SAAY,EACZ,SAAY,EACZ,WAAc,EACd,UAAa,EACb,WAAc,CACd,EACA,SAAS,GAAM,SACf,EADe,QACf,SACA,iCAEA,CACA,CACA,SACA,eACA,gBACA,uBACA,oBAEA,aACA,4BACA,cACA,SAEA,oBAMA,OALA,yCACA,gDAEA,wBACA,yBACA,CACA,CACA,CACA,0BAAqC,GACrC,cAgBA,iBACA,iEACA,aACA,oBACA,iBACA,IACA,YAAkB,WAAkB,MAIpC,EAHA,0BACA,OAGA,SACA,YAAoB,WAAmB,IAMvC,GALA,OACA,OAEA,QAEA,SADA,SACA,CACA,oEACA,SAEA,SACA,KACA,CAEA,GACA,CACA,QACA,CACA,sBACA,uCACA,CACA,CAEA,oBACA,eACA,8DACA,mBACA,uBACA,EACA,QACA,gBACA,eACA,oCACA,gCAEA,2CACA,qCAEA,CACA,iBACA,8BACA,uBAEA,CACA,oBACA,iCACA,MACA,2BAEA,CACA,mBACA,IAGA,EAHA,4DACA,mEACA,wFAEA,kBACA,gBAEA,QACA,IACA,iBACA,aACU,sBACV,sBAEA,YAIA,4BAMA,CALA,gCACA,OACA,OACA,wBAEA,6BACA,gDACA,CACA,qBACA,8DACA,SACA,EACA,mEACA,QACA,gCACA,oBACA,eACA,IACA,QAEA,sBACA,kBACA,oCACA,CACA,oBACA,8DACA,SACA,EACA,eACA,gHACA,SACA,CAAO,CAEP,mCACA,CACA,6BACA,8DACA,UACA,WACA,EACA,QACA,oBACA,eACA,IACA,IACA,QAEA,sBACA,yBACA,+CACA,EACA,SA3MA,SACA,eACA,qCACA,OACA,2FACA,eAEA,eAGA,WAIA,QACA,EA4LA,OAEA,GACA,KACA,MAGA,kBACA,kCACA,CACA,0BACA,6BACA,uBAEA,yBACA,wBACA,CACA,uBACA,qCACA,CACA,6BAEA,CADA,8BACA,uCAEA,wBACA,EACA,qBACA,CACA,qBACA,oBAEA,+BACA,gCAEA,SADA,uBACA,yCACA,CACA,SACA,iBAEA,CAEA,QACA,aAAgB,CAChB,oBACA,yBACA,CAAG,CACH,kBAIA,OAHA,cACA,2DACA,CAAK,EACL,CACA,CACA,EAEA,SACA,qBACA,eACA,gEACA,QAnVA,gBACA,cACA,iBACA,CAAG,CACH,EAgVA,kHACA,eACA,oCACA,gCAEA,kCACA,CACA,kBACA,oBACA,CACA,UACA,8DACA,gBACA,EACA,WACA,SAEA,wBACA,yBAEA,oBACA,yEACA,eACA,uEACA,mCACA,qBACA,iHAzOA,gBACA,QACA,QACA,mDACA,yBACA,uBAAyD,oCAAwD,IACjH,aACA,OACA,mBACA,gCACA,MAEA,CACA,QACA,EA2NA,OACA,UACA,+CACA,iBACA,OACA,MACA,YACA,EAEA,iBACA,gEACA,WACA,CAEA,MADA,4BACA,CACA,MACA,YACA,CACA,CACA,iBAQA,GAPA,mEACA,6DAEA,wBACA,KACA,EACA,UACA,iBACA,kCACA,0EACA,mEACA,CACA,MACA,aACA,CAAM,qCACN,gBACA,uBACA,kEACA,kCACA,MACA,qDACA,EACA,CACA,OAAoB,EAAU,EAAE,EAAY,EAAE,EAAI,EAClD,UACA,eACA,UACA,SACA,uCACA,EAEA,GAAkB,EAAU,EAAE,EAAY,EAAE,EAAI,SAEhD,EACA,CACA,MACA,UACA,eACA,UACA,SACA,uCACA,EAEA,CACA,CACA,wBACA,WACA,kBACA,uBACA,qCAEA,6DACA,mDACA,8DACA,eAJA,yDAIA,yDACA,kDACA,oCACA,oFAEA,iFACA,KACA,IACA,CAAS,UAAY,GAAK,GAAG,cAAc,iDAC3C,GACA,QACA,0CACA,GAEA,CACA,CACA,MACA,2BACA,UACA,QACA,eACA,8CACA,SAA+B,EAAY,EAAE,EAAa,EAAE,EAAE,EAC9D,uBACA,KAEA,cACA,IAEA,CAAa,EACb,qBACA,CAEA,GACA,CACA,EAAM,mDACN,eACA,wCACM,CACN,SACA,KACA,6CACA,wBACA,kDACA,wDACA,UACA,CAAO,KACP,qEACA,sBAA2E,6BAA6B,yBAAiC,EAAmB,qBAA6B,EAAkC,oBAC3N,2BACA,KACA,KAEA,wBACA,KACA,KAGA,OADA,gFACA,WACA,uCACA,YAEA,GADA,wDACA,GACA,sBACA,KACA,eACA,CAAW,EACX,6MACA,CACA,SACA,qFACA,oDACA,YAA0B,WAAyB,IACnD,iBAEU,mCACV,8DAEA,6BAEA,gBACA,kBACA,gCACA,4CACY,0DACZ,+CAEA,+BACA,CACA,4BACA,mCACA,cACA,2CACA,oBAAkE,6BAA6B,QAA2D,EAA3D,aAA8B,6BAA6B,QAC1J,UAAiC,6BAA6B,OAE9D,cACA,2BAAsE,EAAO,MAC7E,CAAe,CACf,CAAa,EAEb,SAGA,CACA,oCACA,0DAAuF,EAAU,GAAG,GAAI,EACxG,8CAEA,EADA,qCACA,gFAAkG,EAAU,GAAG,EAAI,gBAEnH,uCAGA,QACA,GACA,QACA,0CACA,GAEA,CACA,CACA,6BACA,WACA,0CACA,2BACA,+CACA,KACO,qDACP,UACA,CAAO,OACD,6BAWN,CAVA,0CACA,KAEA,eACA,8BACA,mBAGA,CAAO,EACP,oKAEA,MACA,+CACA,cAEA,wDAMA,GALA,iDACA,+CACA,KACA,EACA,4DACA,GACA,+CAEA,EADA,eACA,WACA,CACA,0EACA,oDACA,0CAA4E,IAAa,IACzF,yBAEA,4BACA,2DAAyE,MAAS,UAAU,KAAO,GACnG,MAEA,mBACA,CAAO,KACP,0CACA,CACA,8CACA,2BAUA,aATA,2CACA,uEACA,cACA,KACA,uCACA,CAAS,CACT,IACA,EAAQ,SAER,CACA,CACA,WACA,IACA,EACA,EACA,EACA,EACA,EALA,4DAqEA,MA/DA,4BACA,cACA,gCACA,+BACA,QACA,IACA,mBACA,+DACA,iDACA,qEACA,+FACA,0FACA,cACA,wBACA,IACA,OAAiC,KAAS,GAAG,EAAG,mFAChD,MAA8B,KAAS,GAAG,EAAG,MAC7C,yBAAmC,EAAQ,mBAAmB,aAAiB,qCAAqC,EAAO,mPAE3H,kBAkCA,EAjCA,gCACA,IACA,UACA,kDACA,6CACY,KACZ,EACA,kDACA,SAAkC,6BAA6B,MAC/D,KAAqC,6BAA6B,SAAS,6BAA6B,EAUxG,GATA,IACA,YACA,6BACA,oDAEA,GACA,aAGA,GACA,SAAoC,EAAI,EAAE,8BAA8B,EAAE,UAAgB,EAC1F,UACA,IACA,YACA,6BACA,oDAEA,GACA,YAGA,CACA,CAEA,gBACA,wBACA,IACA,4BAGA,CAAS,EACT,CAAO,CACP,CAAK,EACL,CACA,MACA,UACA,eACA,UACA,QACA,CACA,CACA,iBACA,oGACA,CACA,mBACA,uEACA,kFACA,uCACA,CACA,uBACA,gEAEA,wCACA,gBAUA,GATA,qBACA,kBAEA,6CACA,IACA,+CACA,KACA,EAEA,GAIA,aAHA,GACA,MAdA,wLAiBA,YAGA,QACA,CACA,0BACA,qBACA,eACA,yFACA,SAGA,QACA,CACA,CAEA,eACA,2CACA,CACA,SACA,eACA,eACA,kDACA,qCACA,CACA,yBAEA,IADA,WACA,6BACA,0BACA,mBACA,QACA,wCACA,oCACA,CACA,2BAEA,IADA,WACA,0BACA,mBACA,oCACA,CACA,sBACA,0CACA,yDACA,eAcA,OAbA,0BACA,4BACQ,cACR,wBACA,wBACA,iEACQ,eACR,wBACA,2CACA,yDACA,gEACA,iEAEA,WACA,CACA,0EACA,CACA,mBAIA,MAHA,6EACA,oCAEA,iFACA,CACA,6BAEA,SADA,GAEA,cACA,YACA,iCACA,6DACA,CAAK,EACL,gCACA,cACA,YACA,sCACA,sCACA,sCACA,WACA,sCACA,iBAFA,QAGA,CAAS,CACT,CAAO,EAEP,0DACA,GApBA,IAqBA,CACA,sBACA,eAGA,GAFA,+BACA,4BACA,+DACA,2BACA,WAKA,OAJA,wCACA,qCACA,0CACA,iBACA,MAEA,wBACA,+DACA,KACA,MACA,IACA,wBACA,UAEA,wEAAgF,EAAE,GAElF,EAWA,MAVA,4DACA,kEACA,wGACA,uEACM,oBACN,8BAEA,cACA,6CACA,CAAK,EACL,CACA,CACA,CAEA,SACA,mHACA,SACA,IACA,CAAC,EACD,gVACA,SACA,IACA,CAAC,EACD,wHACA,OACA,IACA,CAAC,EACD,gDACA,WACA,IACA,CAAC,EACD,YACA,oBACA,IACA,CAAC,EACD,iBACA,WACA,IACA,CAAC,EACD,kBACA,WACA,IACA,CAAC,EACD,YACA,aACA,IACA,CAAC,EACD,YACA,SACA,IACA,CAAC,EACD,YACA,gBACA,KACA,CAAC,EACD,YACA,cACA,KACA,CAAC,EACD,YACA,SACA,KACA,CAAC,EACD,YACA,SACA,KACA,CAAC,EACD,YACA,aACA,KACA,CAAC,EACD,YACA,YACA,KACA,CAAC,EACD,YACA,WACA,KACA,CAAC,EACD,YACA,SACA,KACA,CAAC,EACD,aACA,WACA,KACA,CAAC,EACD,YACA,eACA,KACA,CAAC,EACD,YACA,SACA,IACA,CAAC,EACD,YACA,YACA,KACA,CAAC,EACD,YACA,aACA,KACA,CAAC,EACD,iBACA,eACA,KACA,CAAC,EACD,IACA,cACA,kBACA,CAAG,CACH,cACA,mBACA,CAAG,CACH,cACA,QACA,CAAG,CACH,cACA,+EACA,CAAG,CACH,cACA,uEACA,CAAG,CACH,cACA,oCACA,CAAG,CACH,cACA,iEACA,CAAG,CACH,cACA,4CACA,CAAG,CACH,cACA,mBACA,CAAG,CACH,eACA,2CACA,CAAG,CACH,eACA,wDACA,CAAG,CACH,eACA,iCACA,CAAG,CACH,eACA,oBACA,CAAG,CACH,eACA,qCACA,CAAG,CACH,eACA,sEACA,CAAG,CACH,eACA,6CACA,CAAG,CACH,eACA,2CACA,CAAG,CACH,eACA,8BACA,CAAG,CACH,eACA,sEACA,CAAG,CACH,eACA,iDACA,CAAG,CACH,eACA,2DACA,CAAG,CACH,eACA,qDACA,CACA,EACA,oBACA,UACA,IACA,OACA,MACA,MACA,MACA,OACA,OACA,CAaA,UACA,eACA,+DACA,sBACA,eACA,uCACA,gIACA,oCACA,yKAEA,WAtBA,WACA,SASA,OARA,eACA,mBACA,MACA,aACA,gBACA,CACA,CAAK,CACL,CAAG,EACH,CACA,GAYA,CACA,aACA,eACA,CACA,WACA,gEACA,2BACA,IACA,kDACA,mCACA,CAAS,CACT,CAAQ,SACR,MACA,CAEA,gFAEA,eACA,gEACA,2BACA,wBACA,iDAEA,qBACA,CACA,yBACA,gEACA,uCAA4D,EAAI,EAAE,EAAO,EACzE,CACA,eACA,gEACA,2BACA,EAGA,wBACA,wEAA0L,qBAAqB,EAAE,oBAA4B,qBAAqB,KAAO,EAAE,EAAe,GAE1R,wCALA,EAMA,CACA,eACA,gEACA,2BACA,EACA,wBACA,GAAkB,qBAAqB,EAAE,oBAA4B,qBAAqB,KAAO,EAAE,YAAmB,EAEtH,oCAEA,8CAAkD,EAAK,GACvD,GACA,CACA,8BACA,kDACA,eACA,4EACA,MACA,WACQ,OACR,QAGA,kGACA,sCACA,SACA,8BAAwD,aAAkB,EAC1E,IACM,uCAEA,0EADN,IAIA,iFACA,CACA,mBACA,kDACA,CACA,CAEA,mBACA,iEACA,6DACA,EAtiCA,gBACA,qBACA,WACA,EAEA,OACA,EAgiCA,OAKA,MAJA,2BAEA,SADA,eACA,cAEA,CACA,CACA,SACA,cACA,+DACA,sCACA,eACA,4DACA,YACA,CACA,OACA,+DACA,oCACA,cACA,GACA,sBACA,uCAA8D,GAC9D,WADoE,KACpE,uCACA,+EACA,sDAAuF,EACvF,sDAAuF,EACvF,gFACA,8DACA,gEACA,yFACA,uFACA,gHACA,iDACA,0DACA,kBACA,CACA,QACA,qCACA,CACA,cACA,aACA,iBACA,cACA,GAEA,aAEA,8BAAmD,YAAY,OAAO,YAAY,GAClF,6CAAmE,YAAY,EAAE,oBAAoB,OAAO,oBAAoB,EAAE,YAAY,GAC9I,2CAAiE,mBAAmB,OAAO,mBAAmB,EAC9G,CACA,yBACA,EACA,EACA,EACA,gGACA,cACA,8BACA,CACA,UACA,sCACA,2EACA,iDACA,KACA,KACA,kBACA,CAAS,GACT,CACA,oCACA,mBACA,sCACA,6FACA,KACA,KACA,kBACA,CAAO,CACP,EACA,mBACA,iFACA,0IA2CA,MA1CA,EACA,0BACA,iBACA,CAAK,EACL,kBACA,oDACA,CAAK,EACL,YAEA,IADA,IACA,oBACA,kBAEA,YADA,UAEA,yBACA,eACA,yBACA,EAAY,oDACZ,UACY,MACZ,OACA,QACA,EAAY,IACZ,+CAA2D,GAAY,oBAAoB,EAAI,GAC/F,SAEU,8CACV,UAEA,qBASA,GARA,oBACA,GACA,4BACA,gCAEA,oBAGA,sBACA,KAEA,CACA,CAAK,EACL,CACA,CACA,UACA,IACA,EACA,EACA,EAHA,4DAIA,gBACA,mCACA,2BACA,wBAAwC,EAAI,KAAK,IACjD,IAA4B,EAAE,KAAK,EACnC,OAEA,MADA,0BACA,YACA,gBACA,uCACA,wBAEA,IACA,gBACA,OACA,KACA,KACA,CACA,CAAQ,SAER,OADA,qEAA6E,EAAI,KACjF,GAAkB,EAAI,EAAE,EAAI,EAAE,EAAc,EAG5C,OADA,sBACA,CACA,CACA,oCACA,QAKA,CADA,IAHA,GACA,KACA,EACA,iDACA,sBACA,sBACA,SACA,+CAA8D,GAAG,cACjE,uDACA,gBACA,IACA,IACA,CAEA,GADA,qCACA,qCACA,+BACA,IACA,sCAA8C,MAAU,cAAc,EAAI,GAC1E,MAEA,GACA,0CACA,KACA,4BACA,CAAS,aAET,oBACA,uBACA,CACA,QACA,CACA,CA+BA,eACA,SACA,uBACA,0BACA,OAKA,OAJA,IACA,aACA,QAEA,IACA,CACA,CACA,SACA,cACA,+DACA,mCACA,eACA,cACA,kBACA,+BACA,KACS,EACT,qBACA,CAAO,EACP,oBACA,+BACA,KACA,gBACA,CAAS,EACT,qBACA,CAAO,EACP,oBACA,iCACA,IACA,CAAS,EACT,qBACA,CAAO,EACP,wBACA,qCACA,KACS,EACT,oCACA,CAAO,EACP,gBACA,6BACA,KACS,EACT,qBACA,CAAO,CACP,EACA,YACA,CACA,QACA,8DACA,gBACA,EACA,kBACA,+EACA,CACA,SACA,sCACA,CACA,eACA,0CACA,CACA,cACA,gEA0BA,OAzBA,8BACA,eACA,IACA,aACA,gBACA,CAAQ,SArGR,GACA,6BACA,KACA,sBACA,mBACA,4BACA,qCACA,kCACA,kCACM,qCACN,4BAEA,UAAkC,GAClC,YACA,aACA,yBACA,2CACA,8BACA,8BACA,6BACA,sCACA,CAAO,CAEP,CACA,OACA,aACA,eACA,CACA,EAyEQ,GACR,oBACA,QACA,IACA,gEACA,sCACA,uBACA,KACA,KACA,KACW,CACX,CAAU,SACV,mBACA,CACA,QACA,EAAQ,MACR,qDAA6D,EAAW,GAExE,CACA,CAAK,GAEL,CACA,CAQA,oBACA,mBACA,gEACA,QACA,eACA,aACA,gBACA,mCACA,eACA,yCACA,qBACA,6CACA,oBACA,+CACA,uDACA,cACA,cACA,iCACA,gCAEA,CACA,mBACA,SACA,KACA,KACA,KA4BA,OA3BA,cACA,SACA,cACA,SAAwB,EAAI,GAAG,EAAG,GAClC,4CACA,gBACU,kBAAiC,kBAC3C,0BAEA,gBACA,KACA,yBACA,yBACA,0BAEA,CAAO,EACP,YACA,CAAK,EACL,gDACA,iBACA,UACA,mCACA,SAAkB,CAClB,UACA,UACA,CAAO,EAEP,CACA,sBACA,uBACA,+BACA,+BACA,CACA,CACA,cACA,mBACA,OACA,OACA,oCACA,GACA,kDACA,WACA,CAAO,EAEP,qBACA,SACA,uBACA,CAh8CA,kBACA,IACA,MACA,IACA,CAAI,cACJ,eAEA,YACA,GAw7CA,gBA9EA,mBA+EA,EA/EA,GACA,OA8EA,EA9EA,QA8EA,EA9EA,CACA,kBA8EA,oBACA,6BACA,kCACA,gBACA,kBACA,UACA,cACA,8BACA,CAAa,CAEb,CAAS,EACT,UACA,gBACA,qBAEA,aAGA,CAAK,EACL,sBACA,wCACA,CACA,YACA,+DACA,2EACA,yCACA,6BAA6C,EAC7C,6CACA,wBACA,MACA,KACA,SACA,QACA,OACA,UACA,CAAO,EACP,MACA,CACA,oBACA,cAEA,GADA,oBACA,4BACA,gCACA,wDACA,CACA,4BACA,gBACA,oCACA,CAAS,IACT,MACA,CACA,MACA,EACA,qCACA,iBACA,IACA,YACA,8BACA,8BAEA,SAEA,CAAQ,SACR,IACA,CACA,MACA,CACA,eACA,CACA,oBACA,gEACA,yCACA,iBAEA,OADA,mFACA,MAEA,kEACA,4BACA,8BACA,oBAEA,OADA,sBACA,KAEA,qBACA,eACA,CAAK,CACL,CACA,YACA,0BAAiD,GACjD,CACA,cACA,yBACA,SACA,CAAK,GACL,CACA,WACA,gEACA,eACA,OACA,OACA,2CACA,uBAAmC,EAAO,oBAAoB,GAAI,eAAe,GAAK,WACtF,0BAA2C,EAAO,mBAAmB,GAAI,eAAe,EAAI,KAC5F,kBACA,CAAK,CACL,CACA,uBACA,gEACA,gEACA,4GACA,sCAA4C,EAAI,sBAAsB,EAAU,kPAChF,MACA,CACA,oBACA,sCACA,OACA,KACA,UACA,EACA,yCACA,cACA,IACA,KAMA,EAJA,EADA,aACA,aAEA,aAEA,0BACA,8BAEA,SAEA,CAAU,SACV,IACA,MAEA,cAEA,CACA,SACA,mCACA,CACA,CAEA,cACA,OACA,SACA,iBACA,mBACA,0BACA,oBACA,cACA,iBACA,4BACA,WACA,WACA,wBACA,iBACA,gBACA,oBACA,qBACA,2BACA,eACA,iBACA,yBACA,sBACA,qBACA,+BACA,eACA,2BACA,cACA,qBACA,iBACA,cACA,yBACA,0BACA,+BACA,2BACA,6CACA,SAIA,GAHA,gCACA,6CACA,6CACA,8CACA,iBACA,2BACA,UACS,CACT,CACA,QACA,CAAK,CACL,eACA,eACA,YACA,UAAiB,EACjB,UAAiB,EACjB,oBACA,mBACA,oBACA,kBACA,4BACA,gBACA,kBACA,CACA,CACA,CACA,eAOA,MANA,qCACA,gEACA,6DACA,sDACA,qDAEA,CACA,CAEA,eASA,oBACA,cACA,gEACA,yCASA,GARA,QACA,mBACA,iBACA,cACA,cACA,WACA,GAlBA,YACA,qDACA,YACA,yBACA,mBAEA,CAAG,CACH,EAYA,MACA,oCACA,+BAEA,OADA,eACA,KAEA,gBACA,cACA,CAAO,GACP,CACA,CACA,OACA,WACA,gEACA,wCACA,wBACA,IACA,MAEA,uCACA,sBACA,iBACQ,+BACR,uBAGA,WAkBA,qBACA,EACA,2BACA,EAFA,IAGA,CACA,GAtBA,cACA,KACA,gBACA,UAEA,sCACA,6BACA,mBACA,8BACA,EAEA,yBACA,sDAEA,wBACA,oDAOA,2BAMA,CALA,qBACA,4CAEA,0BAGA,uBACA,yBACQ,0BACR,OAEA,0BACA,wDACA,oBACA,WACA,2BACA,kBACA,2BACA,qCACA,iDACA,uDACO,EACP,sGACA,iBACA,iCACA,wEAEA,oCACA,SACA,qDACA,EACA,kFACA,sCACA,kDAA+F,IAAa,IAC5G,oBAEA,cACA,CAAO,EACP,gCACA,oDACA,yFAEA,0BACA,wCACA,4CAEA,mDACA,mCACA,kDAAmG,IAAe,IAClH,oBAEA,cACA,CAAO,EACP,kCACA,oBACA,CAAO,CACP,CAGA,GAFA,8CACA,UACA,8EACA,4EACA,kDACA,CACA,kDACA,4EAEA,4EACA,YACA,mBACA,+BACA,CACA,CAAK,EAEL,CADA,yEACA,YACA,mBAEA,OADA,yBACA,CACA,CACA,CAAK,EACL,WACA,OACA,cACA,0IACA,sBACA,kEACA,sCACA,aACA,MACA,EACA,8GACA,uCACA,EAMA,OALA,oDACA,IAEA,gBAEA,CACA,CACA,iBACA,gEACA,IACA,qCAEA,GADA,4BACA,+DACA,sGACA,SACA,MACA,GACA,cACA,kDACA,YACA,cACA,yBACA,CAAS,CACT,EACA,EAIA,KAHA,uEACA,iBAIA,sBACA,sCAEA,0DACA,kFACA,IACA,CAAO,CACP,EAAM,IACN,OAEA,CACA,uBACA,WAQA,OAPA,sBACA,uBACA,UACA,8CACA,YACA,IACA,CAAK,EACL,CACA,CACA,OACA,mHACA,mHAsBA,MArBA,oBACA,yBAEA,6CACA,wBAEA,6BACA,kCAEA,uBACA,4BAEA,0BACA,uBAEA,sBACA,2BAEA,qBACA,8BAEA,KAEA,uBACA,uBACA,iCACA,YAAqB,wBAA4B,KACjD,wBACA,sCACA,2CACA,wBACA,KACA,CACA,CACA,CACA,oBACA,WACA,4BACA,WACA,gCACA,UACA,gBACA,iEACA,6BACA,2BACA,EACA,UACA,GACA,KACA,kCACA,iCACA,+BACA,sCAEA,iCAEA,qBACA,wBACA,CAAO,EACP,kBACA,wBACA,CAAO,CACP,EACA,MACA,8CACA,gFACA,IACA,eACA,KAEA,4DACA,uIAEA,yBACA,MACA,CAAO,CACP,EAYA,OAXA,yEAEM,yEACN,iDACA,gDAEA,yCAGA,KARA,2CAUA,CACA,CACA,iBACA,WACA,wBACA,EAgBA,EAfA,uBACA,kDAAmG,IAAe,IAClH,oBAEA,6DACA,EAAQ,IACR,GACA,KAGA,oBACA,sBACA,gBACA,wCACA,kCAOA,OAJA,EADA,8BACA,YAAoC,YAAkB,EAAE,EAAa,EAAE,EAAE,GAEzE,eAA2C,YAAkB,EAAE,EAAa,EAAE,EAAI,IAElF,QACA,EAQA,MAPA,mBACA,QAEA,SAEA,OACA,cACA,CACA,CACA,IACA,+DACA,CACA,SACA,4DACA,CACA,uBACA,wBACA,CACA,sBACA,gEACA,uBAEA,OADA,mFACA,GAEA,2CAEA,OADA,8FACA,GAEA,sDACA,2CACA,0CACA,uCACA,cACA,8CAAgE,EAAE,GAAG,EAAE,GACvE,oBACA,EACA,eACA,yBACA,sBACA,UACA,6BACA,wGACA,qBAEA,CACA,oBACA,kBACA,iBAIA,4BACA,cACA,qDACA,CAAK,EACL,uBACA,YACA,OACA,CAAK,EACL,IAXA,OACA,kBAWA,CACA,mBACA,UACA,6BACA,+BACA,qCACA,UAIA,iCACA,uBACA,YACA,OACA,CAAK,EACL,IARA,OACA,kBAQA,CACA,aAEA,CADA,wGACA,GAGA,CAFA,2WAEA,QADA,2DACA,+EAHA,KAIA,CACA,wBACA,gEACA,yCACA,kBACA,CACA,gBACA,gEACA,4DACA,sBACA,8BACA,OACA,gBACA,KAEA,UAEA,EACA,kBACA,uCACA,6BAEA,gCACA,YACA,aACK,EACL,YACA,kBAEA,kBACA,+CACA,EACA,IACA,kCACA,kCAEA,kCACA,gCACA,kDAAiG,IAAe,IAChH,oBAEA,cACA,CAAK,EACL,YACA,uBACA,8CACA,+CACA,EACA,CACA,CACA,SACA,OACA,qBACA,iBACA,uBACA,yBACA,uCAEA,CACA,CACA,IAAM,GAAQ,oBACd,GAAQ,iCAEe,GAAQ,eACnB,GAAQ,IACP,GAAQ,KACC,CAFF,EAEU,KADT,QACS,CACN,GAAQ,gBACpB,GAAQ,IACG,GAAQ,MADX,OACW,EACb,GAAQ,UAChB,GAAQ,EACH,GAAQ,OACK,CAFV,EAEkB,GADb,UACa,OACT,GAAQ,mBACZ,GAAQ,eACT,GAAQ,cCj0E9B,OAAgB,YAChB,yBACA,IACA,EAEA,EAHA,EAAiB,iBAAmB,IAcpC,OAZA,gBAUA,kBAAkC,IAAM,GARxC,6DACA,eACA,CA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,CAA+C,QACrE,UAA+B,OAApBA,EACFA,EAELA,aAAiBuO,MACZvO,CADmB,CACbuM,OAAO,CAEflF,KAAKC,SAAS,CAACtH,EACxB,gCGtIO,SAASqJ,EACdxB,CAAc,CACd2G,CAEC,EAED,GAAIA,GAAcA,EAAWC,gBAAgB,CAAE,CAC7C,IAAM1L,EAAkC,CAAC,EACzC8E,EAAK9E,OAAO,CAACyB,OAAO,CAAC,SAACkK,CAAAA,CAAa3E,CAAAA,EACjChH,CAAO,CAACgH,EAAI,CAAG2E,CACjB,GACAF,EAAWC,gBAAgB,CAAC1L,EAC9B,CACF,uMCTA,gBAA+B,GAAY,CAC3C,gBAAyB,EACzB,QACA,cACA,eACA,CACA,GACA,aACA,iBACA,eAA2C,QAAqB,MAChE,cAYA,OAXA,IACA,MAAkB,GAAK,EACvB,WACA,WACA,YACA,iCACA,QACA,oCACA,CAAO,EACP,aAEA,CACA,CACA,OACA,2BACA,2BACA,aACA,aACA,OACA,CAAO,EAEP,CACA,UACA,+BACA,IACA,YACA,OACA,4BAEA,aAAoB,uBAAwB,EAE5C,CACA,QACI,GAAa,YACjB,0BACA,cACA,CAAO,CACP,CAAK,CACL,CACA,OACA,qBACA,CACA,SACA,4BAEA,QACA,OAA+B,eAC/B,0BACA,GAAiB,QAAU,MAE3B,CACA,YAAsB,EACtB,oBACA,2CAAuE,QAAU,QACjF,CACA,UACI,GAAa,YACjB,2BACA,IACA,CAAO,CACP,CAAK,CACL,CACA,UACI,GAAa,YACjB,0BACA,WACA,CAAO,CACP,CAAK,CACL,CACA,WACI,GAAa,YACjB,0BACA,YACA,CAAO,CACP,CAAK,CACL,CACA,aCvFA,gBAAkC,GAAY,CAC9C,gBAAyB,EACzB,QACA,cACA,gBACA,kBACA,CACA,IACA,EACA,aACA,UAAyB,GAAQ,EACjC,mBACA,qBACA,oCACA,OACA,CAAK,EAEL,OADA,YACA,CACA,CACA,OACA,WACA,qBACA,UACA,iBACA,aAAkB,wBAAyB,CAC3C,CACA,UACA,WACA,mBACA,uCACA,IACA,aACA,kBAEA,iBAGA,CACA,aAAkB,0BAA2B,CAC7C,CACA,UACA,6DACA,eACA,CACA,WACA,0DACA,uCACA,CACA,QACI,GAAa,YACjB,0BACA,cACA,CAAO,CACP,CAAK,CACL,CACA,SACA,kCACA,CACA,QACA,OAA+B,eAC/B,0BACA,GAAoB,QAAa,MAEjC,CACA,YAAsB,EACtB,+BAA8C,QAAa,MAC3D,CACA,UACI,GAAa,YACjB,2BACA,IACA,CAAO,CACP,CAAK,CACL,CACA,wBACA,gDACA,OAAW,GAAa,OACxB,gBACA,4BAAoE,IAAI,IAGxE,CACA,EACA,cACA,gDACA,2BCxFA,cACA,OACA,gBACA,gBACA,6CACA,0BACA,+BACA,GAAqB,wBACrB,IACA,YACA,SACA,MACA,kCACA,cACA,SACA,iBACA,KAEA,uCACA,IACA,CAAiB,EAEjB,SAEA,CAAW,CACX,EACA,EAAwB,QAAa,2BACrC,iBACA,KACA,wBAEA,2BACA,0BAEA,OACA,oBACA,YACA,iCACA,qBAEA,KACA,cACA,GAEA,UAAkB,GAAW,UAC7B,IAAmC,IAAU,CAAG,IAAQ,CACxD,OACA,qBACA,8BACA,CACA,EACA,gBACA,qBAEA,GACA,QACA,YACA,EACA,GALA,EA+CA,kBAAyC,eAAmB,EAC5D,gEACA,EAjDA,GAKA,KACA,gBACA,EAAU,IACV,kBACA,GACA,4CACA,gBACA,MAEA,eACA,GACA,EAAY,UAEZ,QACA,CACA,qBACA,cACA,sBACA,EACA,CACA,oBACA,oBACA,gBACa,CACb,GAIA,WAEA,CACA,CACA,CACA,oBAAqC,eAAmB,EACxD,iBACA,qCACA,KACA,EACA,KACA,GACA,MACA,CCrFA,YACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,CACA,iBAAyB,EACzB,0BAAgD,EAChD,QAD0D,EAC1D,mBAAsD,EACtD,WADmE,aACnE,KACA,gBACA,gBACA,SACA,CACA,QACA,UACA,cAEA,QAA6B,GAAY,qBACzC,IACA,mCACA,kBAEA,CAAK,EACL,QAA8B,GAAa,qBAC3C,IACA,mCACA,mBAEA,CAAK,EACL,CACA,UACA,UACA,cAEA,YACA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,mBAEvC,QACA,EACA,gCACA,KACA,qBACA,sBAEA,mBAA2C,sBAAyB,UACpE,0BACA,iBAA8B,GAAgB,SAE9C,kBAA2B,yBAA4C,CACvE,EACA,iCACA,cAA0D,KAAc,0CAAmD,CAC3H,kBAAkC,eAClC,uBACA,0BACA,iBAA8B,GAAgB,UAE9C,kBAA2B,8BAAgD,CAC3E,EACA,0CACA,4BACA,EACA,6CACA,sCACA,MACA,gCAEA,EACA,CACA,CAAC,cEzED,WACA,QACA,QACA,MACA,OACA,SACA,MACA,OACA,SACA,QACA,QACA,SACA,UACA,SACA,MACA,mBCpBA,MASA,GARA,CAQI,KAA8B,MARlC,eACA,KAAmB,IAAN,GAAM,EAAoB,GAAM,OAC7C,EAAe,GAAM,OACjB,0CACJ,kBAIkC,sDAClC,SAAsB,EAAQ,KAAa,CAC3C,WAD6B,CAC7B,cACE,SAAe,GACjB,mFGZA,kBDEA,MCDA,ODCA,EDFA,WCEqB,CDFrB,EACA,aAAkB,OAAO,iBACzB,4BACA,eACA,6BACA,aAAoB,OAAO,YAC3B,gEACA,CACA,qCACA,EER2B,EDCN,UCDrB,GDEA,ECFc,QDEO,OAAO,UCFD,kCAC3B,QACA,cACA,gBACA,WACA,CAAG,UACH,+BCRA,aACA,wDACA,YAAoB,mBAAsB,KAC1C,mBACA,mBAA0B,sCAC1B,CACA,QACA,EAAG,sBACH,gDCRA,gBACA,oBACA,SACA,sBAAyB,2BACzB,yBACA,WAEA,QACA,gDCRA,cAGA,iFACA,eACA,EAAI,YACJ,mGACA,EAAG,GACH,2FCsDA,MA3DA,cAAiC,GAAY,CAC7C,IACA,GACA,CACA,eACA,QACA,YACA,IAAW,IAAQ,2BACnB,cAEA,OADA,iDACA,KACA,gDACA,CACA,CAEA,CACA,CACA,cACA,SACA,8BAEA,CACA,gBACA,sBACA,YACA,eAEA,CACA,oBACA,UACA,YACA,cACA,oBACA,mBAEA,cAEA,CAAK,CACL,CACA,cACA,cAEA,UACA,eAEA,CACA,UACA,uBACA,2BACA,IACA,CAAK,CACL,CACA,kBACA,0BACA,QAEA,+CACA,CACA,8FCzDA,gBAA6B,GAAS,CACtC,IACA,CACA,gBACA,GACA,QACA,6BACA,wBACA,WACA,wBACA,2BACA,iBACA,CACA,cACA,eACA,sCACA,CACA,WACA,yBAEA,eACA,sBACA,gBACA,sBACA,gBACA,qBACA,cACA,UACA,CAAO,EAEP,CACA,kBACA,iCACA,kBACA,gBACA,uBACA,cACA,UACA,CAAK,CACL,CACA,iBACA,iBACA,8BACA,kBAEA,qBAGA,CACA,WACA,4BACA,kCACA,CACA,iBACA,QAAoB,QAAa,EACjC,OACA,wBAGA,2BAFA,6CAIA,eACA,SAAyB,qCAAqC,CAC9D,CAAO,CACP,aACA,SAAyB,aAAe,CACxC,CAAO,CACP,gBACA,SAAyB,gBAAkB,CAC3C,CAAO,CACP,4BACA,mCACA,qCACA,+BACA,CAAK,EACL,oCACA,sBACA,IACA,OACA,SAAyB,sCAAsC,EAC/D,gCACA,EACA,MAEA,uCACA,wBACA,SACA,eACA,UACA,YACA,UACA,CAAW,CAEX,CACA,4BAiBA,OAhBA,iCACA,EACA,EACA,mBACA,MAEA,uDACA,iCACA,EACA,KACA,qBACA,mBACA,MAEA,4DACA,SAAuB,sBAAuB,EAC9C,CACA,CAAM,SACN,IAyBA,MAxBA,+BACA,EACA,EACA,mBACA,MAEA,6BACA,EACA,EACA,oBAEA,iCACA,OACA,EACA,qBACA,mBACA,MAEA,+BACA,OACA,EACA,EACA,oBAEA,CACA,EAAQ,OACR,SAAyB,qBAAsB,CAC/C,CACA,EAAM,OACN,qBACA,CACA,CACA,MAsDA,WArDA,KACA,eACA,aACA,OACA,KACA,4BACA,sBAEA,aACA,OACA,KACA,WACA,CACA,gBACA,OACA,KACA,WACA,CACA,eACA,OACA,KACA,kBACA,YACA,eACA,mBACA,WACA,oBACA,iBACA,sBACA,sBACA,CACA,eACA,OACA,KACA,YACA,eACA,mBACA,WACA,iBACA,WACA,CACA,aACA,OACA,KACA,YACA,cACA,8BACA,sBACA,YACA,cACA,CACA,CACA,GACA,YACI,GAAa,YACjB,oBACA,qBACA,CAAO,EACP,gBACA,cACA,eACA,QACA,CAAO,CACP,CAAK,CACL,CACA,EACA,aACA,OACA,eACA,YACA,WACA,eACA,mBACA,YACA,cACA,iBACA,aACA,CACA,iDCxJA,MA5EA,WACA,SACA,IACA,MACA,GACA,EACA,MACA,GACA,EACA,qBACA,MACA,EACA,UAEA,OACA,IACA,CAAO,CAEP,EACA,OACA,QACA,KACA,UACA,OACA,OACA,cACA,IACA,CAAW,CACX,CAAS,CACT,CAAO,CAEP,EACA,OACA,UACA,KACA,KACA,IACA,KACA,EAAQ,SAER,GACA,GAEA,CACA,QACA,CAAK,CAIL,cACA,SACA,OACA,OACA,CAAS,CACT,EAEA,WAKA,sBACA,GACA,CAAK,CAKL,2BACA,GACA,CAAK,CACL,iBACA,GACA,CACA,CACA,6ECxBA,MAjDA,cAAkC,GAAY,CAC9C,OACA,GACA,eACA,CACA,QACA,YACA,IAAW,IAAQ,2BACnB,gBACA,YAGA,OAFA,uCACA,wCACA,KACA,uCACA,uCACA,CACA,CAEA,CACA,CACA,cACA,SACA,8BAEA,CACA,gBACA,sBACA,YACA,eAEA,CACA,oBACA,UACA,YACA,oCACA,CACA,aACA,cAEA,UACA,2BACA,IACA,CAAO,EAEP,CACA,WACA,eAEA,yGCxCA,gBAA0B,GAAS,CACnC,EACA,KACA,GACA,GACA,GACA,cACA,GACA,QACA,WACA,yBACA,2BACA,kBACA,gBACA,yBACA,2BACA,iBA8UA,GACA,qEACA,aACA,gGACA,OACA,OACA,kBACA,gCACA,WACA,mBACA,iBACA,oBACA,wBACA,eACA,iBACA,6BACA,kBACA,CACA,EAhWA,cACA,4BACA,iBACA,CACA,WACA,yBAEA,cACA,uBACA,CACA,cACA,cAAqB,iBACrB,sCACA,CACA,iBACA,wDACA,oBAEA,CACA,aACA,MAAiB,QAAW,iCAO5B,OANA,SACA,OACA,eACA,2BACA,gBACA,CAAK,EACL,CACA,CACA,cACA,SAAqB,0CAA0C,CAC/D,CACA,UACA,uBAEA,OADA,mBACA,SAAkC,IAAI,QAAQ,IAAI,mBAClD,CACA,UACA,gBACA,aAAkB,UAAc,CAChC,CACA,QACA,eACA,sBACA,CACA,WACA,2BACA,GAAkC,KAAd,QAAc,yBAElC,CACA,aACA,mDACA,CACA,gBACA,6BAGA,2BACA,oBACA,iCAGA,yBACA,CACA,mBACA,4DAAsE,QAAc,4BACpF,CACA,UACA,2DACA,YAAwB,iBAAsB,EAC9C,mBACA,CACA,WACA,yDACA,YAAwB,iBAAsB,EAC9C,mBACA,CACA,eACA,6BACA,uBACA,sBACA,gBAA2B,2CAA8C,EAEzE,CACA,kBACA,6BACA,+CACA,wBACA,UACA,QACA,gBAAmC,UAAc,EAEjD,uBAGA,mBAEA,gBAA2B,6CAAgD,EAE3E,CACA,oBACA,6BAEA,aACA,0BACA,SAAuB,kBAAoB,CAE3C,CACA,WACA,oCACA,8CACA,aAAsB,UAAc,OAC5B,WAER,OADA,wBACA,gBAMA,GAHA,GACA,mBAEA,uBACA,gDACA,GACA,0BAEA,CAQA,0BACA,MACA,kCACA,cACA,SACA,WACA,SAEA,CAAO,CACP,EAkBA,GACA,eACA,qBACA,uBACA,iBACA,QAtBA,KACA,MAAsB,QAAa,iBACnC,GACA,uBACA,sBAIA,CAFA,KACA,WACA,wBACA,uBACA,EACA,EACA,MAGA,IACA,CAOA,EACA,KACA,+BACA,EACA,MAEA,mBACA,gFACA,SAAuB,uCAAiD,EAExE,UACY,QAAgB,eAC5B,SACA,aACA,OACA,CAAS,EAEE,QAAgB,MAC3B,yBACA,EACA,MAEA,2BACA,gBACA,EACA,OAGA,2BACA,kBAEA,4BACA,EA+CA,OA9CA,QAAoB,QAAa,EACjC,iCACA,aACA,sBACA,cACA,eAMA,WAA+B,gBAAgB,qBAC/C,MACA,CACA,IACA,eACA,CAAU,SACV,KACA,MACA,CACA,mCACA,2BACA,EACA,iBACA,MAEA,2BACA,kBAEA,4BACA,CAAO,CACP,UACA,eACA,SAAyB,qCAAqC,CAC9D,CAAO,CACP,aACA,SAAyB,aAAe,CACxC,CAAO,CACP,gBACA,SAAyB,gBAAkB,CAC3C,CAAO,CACP,sBACA,gCACA,kCACA,aACA,CAAK,EACL,eACA,CACA,MAmEA,YAlEA,IACA,eACA,aACA,OACA,KACA,iCACA,2BAEA,aACA,OACA,KACA,oBACA,CACA,gBACA,OACA,KACA,sBACA,CACA,aACA,OACA,KACA,0BACA,sBACA,CACA,eACA,OACA,KACA,YACA,oCACA,0CACA,WACA,iBACA,iBACA,eACA,mBACA,oBACA,uBACA,EAEA,aACA,cACA,GAAc,QAAgB,uBAC9B,OAAqB,+BAErB,OACA,KACA,QACA,sCACA,0BACA,wCACA,qBACA,mBACA,cACA,CACA,kBACA,OACA,KACA,gBACA,CACA,gBACA,OACA,KACA,WAEA,CACA,GACA,YACI,GAAa,YACjB,2BACA,iBACA,CAAO,EACP,gBAA2B,mCAAsC,CACjE,CAAK,CACL,CACA,EACA,gBACA,OACA,oBACA,wBACA,YAAiB,QAAQ,oCACzB,gBACA,WACA,gBACA,EAEA,gECtWA,QACA,EACA,WACA,qBACA,CACA,aACA,sBACQ,QAAc,eACtB,yBACA,qBACA,CAAO,cAEP,CACA,gBACA,qBACA,eACA,IAAoB,IAAQ,UAE5B,CACA,iBACA,UACA,sBACA,eAEA,CACA,yGCvBA,cACA,6BACA,CACA,cACA,gCAAkD,GAAa,WAC/D,CACA,0BACA,eACA,wBACA,sBACA,qBACA,CACA,EACA,cACA,qBACA,CACA,cACA,IAGA,EACA,EACA,EALA,KACA,IACA,KAIA,sBACA,IACA,GACA,CAAG,EAaH,MAA4B,GAAY,yCAAoD,GAAa,yBACzG,mCACA,MACA,IACA,KACA,iBACA,MACA,KAEA,EACA,MACA,IACA,KACA,eACA,MACA,KAEA,EACA,MACA,gBACA,MACA,UACA,IAEA,EACA,aACA,CAAK,YACL,SACA,GACA,gBAEA,CAAK,EAEL,WAIA,EAHA,KACA,OAGA,oCACA,IACA,WACA,CAAM,SACN,mBACA,CACA,qCACA,KACA,OAEA,eAAqC,KAAQ,MAC7C,kBACA,gCACA,gEACA,UACA,KACA,MACA,CACA,IACA,gBACM,QAAK,aACX,gBACO,UACP,EACA,KAEA,GAEA,CAAO,CACP,CAAK,CACL,EACA,OACA,UACA,OAnFA,IACA,IACA,YACA,YAEA,EA+EA,cACA,MACA,GAEA,YAlFA,KACA,IACA,EAiFA,cAhFA,KACA,IACA,EA+EA,WACA,WACA,IACA,IAEA,YAEA,EAEA,CACA,iDClIA,YACA,cACA,uBACA,wCACA,CACA,aAGA,OAFA,sBACA,mBACA,KACA,yBACA,oBACA,CACA,CACA,eACA,4BACA,CACA,cACA,CACA,gBACA,CACA,6NCpBA,sDACA,aAEA,CACA,gBACA,iCACA,CACA,cACA,uCACA,CACA,gBACA,sCACA,CACA,gBACA,iCACA,CACA,gBACA,iCACA,CACA,gBACA,IACA,aACA,QACA,cACA,YACA,WACA,QACA,CAAI,EACJ,MACA,KACA,iCACA,QACA,MACM,oBACN,SAGA,cACA,mBACA,qBAGA,kBAFA,QAKA,OACA,wCAGA,+BAGA,YAIA,CACA,gBACA,IAAU,4CAAwC,EAClD,MACA,0BACA,SAEA,KACA,oCACA,QACA,MACM,+BACN,QAEA,OACA,0BAGA,YAIA,CACA,gBAEA,MADA,uBACA,EACA,CACA,cACA,sBACA,EACA,iDACA,UACA,GACK,EAAI,IAET,CACA,uBACA,OAGA,oBAGA,kDACA,sCAGA,CA6BA,gBACA,qDACA,SAEA,eACA,eACA,SAGA,QACA,CACA,cACA,0DAEA,cACA,SACA,SAEA,oBACA,cACA,SAEA,2BACA,MAGA,oCAGA,4CAKA,cACA,2DACA,CACA,cACA,uBACA,eACA,CAAG,CACH,CACA,wBACA,uCACA,yBACI,yBAUJ,SAnFA,OACA,SACA,SAEA,iBACA,kBACA,yBACA,WACA,qBACA,WACA,UACA,IACA,YAAoB,IAAW,KAC/B,eACA,sDACA,YACA,MAEA,kBACA,4BACA,IAGA,CACA,uBACA,CACA,QACA,EAwDA,KAEA,CACA,CACA,cACA,QACA,CACA,oBACA,eACA,iCACA,CACA,oBACA,eACA,oCACA,CACA,eACA,sBAQA,8BACA,qBAEA,yBAGA,UAFA,8CAA+D,YAAkB,IAGjF,iDCtNA,MAAgE,WAChE,SAD0B,EAE1B,EAAE,CAF8D,CAE5D,CAA2B,gFCF/B,EAAyB,eAAmB,CAC5C,QAEA,MACA,MAAiB,YAAgB,IACjC,KACA,SAEA,MACA,sEAEA,QACA,EACA,IACA,SACA,WACC,IACC,WAAe,MACjB,UACA,KACA,WACA,GACG,KACsB,SAAG,aAAgC,mBAAyB,gvBCzB9E,gBAKA,GACP,OANO,UAOP,OAPO,UAQP,wBACA,wBACA,uBACA,uBACA,qBACA,qBACA,wBACA,6BACA,0BACA,uBACA,qBACA,UACA,QApBO,UAoBP,MACA,EAKO,GACP,SACA,SACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBACA,qBACA,aACA,eACA,aACA,8BACA,gBACA,EAKO,GACP,SACA,SACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,aACA,kBACA,kBACA,qBACA,EAsBO,kBAGP,MADA,SACA,kCACA,aACA,OAGA,kDACA,yEACA,QACA,eAGA,OAAgB,gBAKhB,MAJA,qBACA,cACA,mBACA,aACA,CACA,CAoBO,kBAGP,MADA,SACA,kCACA,IASA,EATA,SAGA,sCACA,6CACA,iEAKA,OAJA,QAIA,GACA,4BAAsD,KACtD,kCAAgE,KAChE,+BAA0D,KAC1D,kCAAgE,KAChE,uCAA0E,KAC1E,oCAAoE,KACpE,qCACA,CAEA,OADA,cACA,CACA,CAiBO,kBACP,6CACA,iEACA,yEACA,sEAEA,UACA,aACA,aACA,CAAK,KACL,CAqBO,kBACP,6CACA,iEAEA,2BACA,aACA,CAAK,IACL,CAiBO,kBACP,6CAEA,YAAoB,WAAwB,KAC5C,WACA,cACA,2EAEA,YAAwB,uBAAkC,KAE1D,0FACA,8BACA,0DAEA,CACA,CAEA,UACA,eACA,aACA,CAAK,KACL,CAoBO,kBACP,6CACA,iEAEA,2BACA,aACA,CAAK,IACL,CAmBO,kBACP,6CACA,mFAEA,4EAEA,UACA,kBACA,aACA,CAAK,KACL,CAoBO,kBACP,6CACA,iEAEA,2BACA,aACA,CAAK,IACL,CAwBO,gBAGP,MADA,SACA,kCACA,aACA,OAGA,wCACA,8DACA,QACA,QAGA,OAAc,0BAId,OAHA,YACA,cACA,aACA,CACA,CAmBO,kBACP,6CAEA,UACA,uBACA,aACA,CAAK,KACL,CAmBO,kBACP,6CAEA,UACA,kBACA,aACA,CAAK,KACL,CAoBO,kBACP,6CAEA,UACA,oBACA,aACA,CAAK,KACL,CA0BO,kBACP,4CACA,gEAEA,UACA,0BACA,YACA,CAAK,KACL,CAeO,gBACP,oDACA,iEACA,wBACA,wBACA,CAWO,gBACP,8CAEA,+DACA,yBACA,yCACA,UACA,CAWO,gBACP,+CAEA,+DACA,yBACA,yCACA,UACA,CAWO,gBACP,gBACA,CAUO,cACP,8CAEA,YAEA,OADA,cACA,CACA,CASO,cACP,8CAGA,OADA,cACA,WACA,CASO,cACP,8CAGA,OADA,MACA,WACA,CAWO,kBACP,6CACA,2DAEA,gCACA,CAUO,kBACP,2CACA,yDAEA,qBACA,4CAEA,yBACA,yCAEA,YACA,CAaO,cACP,4CACA,CAaO,cACP,iCACA,CAuBO,cACP,sCACA,0DACA,qFACA,sBACA,sDACA,CAAK,CACL,CAuBO,cACP,oCACA,4FACA,CAGO,aACP,4DACA,CAEO,aACP,4DACA,CAEO,aACP,2DACA,CAEO,aACP,2DACA,CAEO,aACP,2DACA,CAEO,aACP,4DACA,CAEO,aACP,yDACA,0EC/sBO,SAAS7G,EAAQ8F,CAAI,CAAE2W,CAAM,CAAExnB,CAAO,EAC3C,IAAMiX,EAAQ5E,CAAAA,EAAAA,EAAAA,CAAAA,CAAMA,CAACxB,EAAM7Q,QAAAA,KAAAA,EAAAA,EAAS4nB,EAAE,CAAX5nB,EAAS4nB,MACpC,MAAUJ,GAAgBK,CAAAA,EAAAA,EAAAA,CAAP,CAAoBA,CAAC7nB,OAAAA,EAAAA,KAAAA,EAAAA,EAAS4nB,EAAE,GAAFA,EAAYhW,EAArB5R,IAGnCwnB,GAELvQ,EAAMgQ,GAFO,IAEA,CAAChQ,EAAMwP,OAAO,GAAKe,GAFZvQ,EAItB,sFCsCO,IAAM6Q,EAAqB,OAOrBC,EAAoB,CAPW,KAc/BC,EAAuB,CAPM,GAc7BC,EAP6B,KA6H7BC,EAAsBC,CAtHO,KAsHAC,CAAAA,GAAG,CAAC,qBAAqB,yEClL5D,SAASP,EAAchX,CAAI,CAAE3Y,CAAK,QACvC,YAAI,OAAO2Y,EAA4BA,EAAK3Y,GAExC2Y,GAAQ,CAAOA,KAAAA,IAAAA,EAAAA,YAAP,QAAOA,EAAAA,CAAG,GAAM,UAAYqX,EAAAA,EAAmBA,IAAIrX,EACtDA,CAAI,CAACqX,EAAZ,EAA+BA,CAAC,CAAChwB,GAE/B2Y,aAAgBrX,KAAa,CAAP,GAAWqX,EAAKzE,WAAW,CAAClU,GAE/C,IAAIsB,KAAKtB,EAClB,+DClBO,SAASmwB,EAAWxX,CAAI,CAAE7Q,CAAO,EACtC,IAAMiX,EAAQ5E,CAAAA,EAAAA,EAAAA,CAAAA,CAAMA,CAACxB,QAAM7Q,EAAAA,KAAAA,EAAAA,EAAS4nB,EAAE,EAEtC,CAFoCA,IAAT5nB,EAC3BiX,EAAMiP,QAAQ,CAAC,EAAG,EAAG,EAAG,GACjBjP,CACT,gECNO,SAASjM,EAAahL,CAAO,EAClC,MAAOqoB,CAAAA,EAAAA,EAAAA,CAAAA,CAAUA,CAAC7uB,KAAKC,GAAG,GAAIuG,EAChC,+DCYO,SAASqS,EAAOoV,CAAQ,CAAEnvB,CAAO,EAEtC,MAAOuvB,CAAAA,EAAAA,EAAAA,CAAAA,CAAaA,CAACvvB,GAAWmvB,EAAUA,EAC5C","sources":["webpack://_N_E/../../node_modules/.pnpm/@dx-shared+rule-engine@0.0.9/node_modules/@dx-shared/rule-engine/dist/ConfigRuleEngine.js","webpack://_N_E/../../node_modules/.pnpm/@dx-shared+rule-engine@0.0.9/node_modules/@dx-shared/rule-engine/dist/RuleEngine.js","webpack://_N_E/../../node_modules/.pnpm/@dx-shared+rule-engine@0.0.9/node_modules/@dx-shared/rule-engine/dist/index.js","webpack://_N_E/../../node_modules/.pnpm/@dx-shared+rule-engine@0.0.9/node_modules/@dx-shared/rule-engine/dist/types.js","webpack://_N_E/../../node_modules/.pnpm/@turf+boolean-point-in-polygon@6.0.1/node_modules/@turf/boolean-point-in-polygon/index.js","webpack://_N_E/../../node_modules/.pnpm/@turf+distance@6.0.1/node_modules/@turf/distance/index.js","webpack://_N_E/../../node_modules/.pnpm/@turf+helpers@6.5.0/node_modules/@turf/helpers/dist/js/index.js","webpack://_N_E/../../node_modules/.pnpm/@turf+invariant@6.5.0/node_modules/@turf/invariant/dist/js/index.js","webpack://_N_E/../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","webpack://_N_E/../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js","webpack://_N_E/../../node_modules/.pnpm/cookie@0.4.2/node_modules/cookie/index.js","webpack://_N_E/../../node_modules/.pnpm/cross-fetch@3.1.4/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://_N_E/../../node_modules/.pnpm/date-fns-tz@1.0.10_date-fns@2.14.0/node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns-tz@1.0.10_date-fns@2.14.0/node_modules/date-fns-tz/esm/_lib/tzParseTimezone/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns-tz@1.0.10_date-fns@2.14.0/node_modules/date-fns-tz/esm/toDate/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns-tz@1.0.10_date-fns@2.14.0/node_modules/date-fns-tz/esm/utcToZonedTime/index.js","webpack://_N_E/../../node_modules/.pnpm/escape-string-regexp@4.0.0/node_modules/escape-string-regexp/index.js","webpack://_N_E/../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","webpack://_N_E/../../node_modules/.pnpm/form-data@4.0.1/node_modules/form-data/lib/browser.js","webpack://_N_E/../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://_N_E/../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","webpack://_N_E/../../node_modules/.pnpm/matcher@4.0.0/node_modules/matcher/index.js","webpack://_N_E/../../node_modules/.pnpm/html-parse-stringify@3.0.1/node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/utils.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/unescape.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/defaults.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/i18nInstance.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/TransWithoutContext.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/initReactI18next.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/context.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/Trans.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/useTranslation.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/withTranslation.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/Translation.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/useSSR.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/withSSR.js","webpack://_N_E/../../node_modules/.pnpm/react-i18next@14.0.5_i18next@23.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-i18next/dist/es/index.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/config/defaultConfig.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/utils.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/config/createConfig.js","webpack://_N_E/../../node_modules/.pnpm/i18next@23.9.0/node_modules/i18next/dist/esm/i18next.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/createClient/browser.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/appWithTranslation.js","webpack://_N_E/../../node_modules/.pnpm/next-i18next@15.2.0_i18next@23.9.0_next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3_3dac069b78b76cc9ab3038e4a5e4956f/node_modules/next-i18next/dist/esm/index.js","webpack://_N_E/","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/../../libs/framework/react-query-env-vars/src/lib/react-query-env-vars.ts","webpack://_N_E/../../libs/framework/react-query-env-vars/src/index.ts","webpack://_N_E/./utils/env-vars.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/auth-context.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/auth-provider.tsx","webpack://_N_E/../../libs/framework/auth-provider/src/lib/cookie-utils.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/gql/queries.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/auth-client.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/make-auth-client.ts","webpack://_N_E/../../libs/framework/auth-provider/src/lib/index.ts","webpack://_N_E/../../libs/framework/auth-provider/src/index.ts","webpack://_N_E/../../libs/framework/env/src/lib/helpers.ts","webpack://_N_E/../../libs/framework/env/src/lib/index.ts","webpack://_N_E/../../libs/framework/env/src/index.ts","webpack://_N_E/../../node_modules/.pnpm/i18next-http-backend@1.2.4/node_modules/i18next-http-backend/esm/utils.js","webpack://_N_E/../../node_modules/.pnpm/i18next-http-backend@1.2.4/node_modules/i18next-http-backend/esm/request.js","webpack://_N_E/../../node_modules/.pnpm/i18next-http-backend@1.2.4/node_modules/i18next-http-backend/esm/index.js","webpack://_N_E/../../libs/framework/i18n/src/lib/app-with-translation.tsx","webpack://_N_E/../../libs/framework/i18n/src/lib/locale-utils.ts","webpack://_N_E/../../libs/framework/i18n/src/generated/queries.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/translated-url.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/util.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/index.ts","webpack://_N_E/../../libs/framework/i18n/src/index.ts","webpack://_N_E/../../libs/framework/incomplete-event/src/lib/incomplete-event.ts","webpack://_N_E/../../libs/framework/logger/src/lib/logger.ts","webpack://_N_E/../../libs/framework/logger/src/lib/helpers.ts","webpack://_N_E/../../libs/framework/logger/src/lib/index.ts","webpack://_N_E/../../libs/framework/logger/src/index.ts","webpack://_N_E/../../libs/framework/merge-cache-control/src/lib/framework-merge-cache-control.ts","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/queryCache.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/mutationCache.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/queryClient.js","webpack://_N_E/../../libs/utilities/cookies/src/lib/index.ts","webpack://_N_E/../../libs/types/graphql/src/lib/graphql.ts","webpack://_N_E/../../libs/types/graphql/src/lib/index.ts","webpack://_N_E/../../libs/types/graphql/src/index.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/default-fetch-fn-utils.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/extract-files/isExtractableFile.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/extract-files/extractFiles.ts","webpack://_N_E/../../libs/utilities/generate-error/src/lib/generate-error.ts","webpack://_N_E/../../libs/utilities/generate-error/src/lib/index.ts","webpack://_N_E/../../libs/utilities/generate-error/src/index.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/default-fetch-fn.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/make-query-client.ts","webpack://_N_E/../../libs/framework/react-query/src/lib/use-clients.tsx","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/hydration.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/HydrationBoundary.js","webpack://_N_E/../../libs/framework/react-query/src/lib/use-query-incomplete.tsx","webpack://_N_E/../../libs/framework/react-query/src/lib/query-provider.tsx","webpack://_N_E/../../libs/framework/react-query/src/lib/index.ts","webpack://_N_E/../../libs/framework/react-query/src/index.ts","webpack://_N_E/../../libs/utilities/is-browser/src/lib/is-browser.ts","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/compareAsc/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/isDate/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/isValid/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/locale/en-US/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/assign/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/parse/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/setMonth/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/set/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/addMilliseconds/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/subMilliseconds/index.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@2.14.0/node_modules/date-fns/esm/toDate/index.js","webpack://_N_E/./styles/global.css","webpack://_N_E/../../node_modules/.pnpm/next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1_sass@1.84.0/node_modules/next/router.js","webpack://_N_E/../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","webpack://_N_E/../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","webpack://_N_E/../../node_modules/.pnpm/universal-cookie@4.0.4/node_modules/universal-cookie/es6/utils.js","webpack://_N_E/../../node_modules/.pnpm/universal-cookie@4.0.4/node_modules/universal-cookie/es6/Cookies.js","webpack://_N_E/../../node_modules/.pnpm/universal-cookie@4.0.4/node_modules/universal-cookie/es6/index.js","webpack://_N_E/../../node_modules/.pnpm/void-elements@3.1.0/node_modules/void-elements/index.js","webpack://_N_E/../../node_modules/.pnpm/i18next-http-backend@1.2.4/node_modules/i18next-http-backend/esm/getFetch.cjs","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/focusManager.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/mutation.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/notifyManager.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/onlineManager.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/query.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/removable.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/retryer.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/subscribable.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/utils.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query-devtools@5.58.0_@tanstack+react-query@5.56.2_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-query-devtools/build/modern/index.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","webpack://_N_E/../../node_modules/.pnpm/@turf+helpers@6.0.1/node_modules/@turf/helpers/index.mjs","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addDays.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfToday.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigRuleEngine = void 0;\nconst RuleEngine_1 = require(\"./RuleEngine\");\nclass ConfigRuleEngine {\n    constructor(rules) {\n        this.rules = [];\n        this.rules.push(...(Array.isArray(rules) ? rules : [rules]));\n        return this;\n    }\n    run(facts) {\n        return this.rules.reduce((acc, rule) => {\n            const { name, conditions, config: defaultConfig, tag: defaultTag } = rule;\n            let ruleConfig = {};\n            const ruleTags = new Set([defaultTag]);\n            const addConditionsRuleTag = (ruleTag) => {\n                let cRuleTag = ruleTag;\n                if (defaultTag) {\n                    ruleTags.delete(defaultTag);\n                    if (ruleTag) {\n                        cRuleTag = ruleTag.startsWith(`${defaultTag}-`) ? ruleTag : `${defaultTag}-${ruleTag}`;\n                    }\n                }\n                ruleTags.add(cRuleTag);\n            };\n            if (conditions && conditions.single) {\n                const validCondition = conditions.single.find((c) => new RuleEngine_1.RuleEngine({ name, conditions: c }).run(facts));\n                if (validCondition) {\n                    ruleConfig = validCondition.config;\n                    addConditionsRuleTag(validCondition.tag);\n                }\n            }\n            else if (conditions && conditions.multi) {\n                conditions.multi\n                    .filter((c) => new RuleEngine_1.RuleEngine({ name, conditions: c }).run(facts))\n                    .forEach((c) => {\n                    ruleConfig = { ...ruleConfig, ...c.config };\n                    addConditionsRuleTag(c.tag);\n                });\n            }\n            else if (conditions) {\n                if (new RuleEngine_1.RuleEngine({ name, conditions: conditions }).run(facts)) {\n                    const c = conditions;\n                    ruleConfig = c.config;\n                    addConditionsRuleTag(c.tag);\n                }\n            }\n            acc.config = { ...acc.config, ...defaultConfig, ...ruleConfig };\n            acc.tags = [...acc.tags, ...Array.from(ruleTags)].filter(Boolean).sort();\n            return acc;\n        }, { config: {}, tags: [] });\n    }\n}\nexports.ConfigRuleEngine = ConfigRuleEngine;\n//# sourceMappingURL=ConfigRuleEngine.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RuleEngine = void 0;\nconst distance_1 = __importDefault(require(\"@turf/distance\"));\nconst helpers_1 = require(\"@turf/helpers\");\nconst boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nconst compareAsc_1 = __importDefault(require(\"date-fns/compareAsc\"));\nconst isDate_1 = __importDefault(require(\"date-fns/isDate\"));\nconst isValid_1 = __importDefault(require(\"date-fns/isValid\"));\nconst parse_1 = __importDefault(require(\"date-fns/parse\"));\nconst set_1 = __importDefault(require(\"date-fns/set\"));\nconst utcToZonedTime_1 = __importDefault(require(\"date-fns-tz/utcToZonedTime\"));\nconst matcher_1 = __importDefault(require(\"matcher\"));\nconst types_1 = require(\"./types\");\nconst DATE_PATTERN_CONFIGS = Object.freeze([\n    { pattern: 'MM-dd', default: { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 } },\n    { pattern: 'yyyy-MM', default: { date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 } },\n    { pattern: 'yyyy-MM-dd', default: { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 } },\n    { pattern: 'yyyy-MM-dd HH:mm', default: { seconds: 0, milliseconds: 0 } },\n]);\nconst TIMEZONE_UTC = 'UTC';\nconst DISTANCE_FROM_REGEX = new RegExp('^([\\\\d\\\\.]+)[ ]*(kilometers|km|miles|mi)[ ]+from[ ]+([-\\\\d\\\\.]+)[ ]*,[ ]*([-\\\\d\\\\.]+)$');\nconst COORDINATE_POINT_REGEX = new RegExp('^([-\\\\d\\\\.]+)[ ]*,[ ]*([-\\\\d\\\\.]+)$');\nconst DISTANCE_UNIT_MAPPING = Object.freeze({\n    km: 'kilometers',\n    mi: 'miles',\n});\nfunction isNil(val) {\n    return val === undefined || val === null;\n}\nfunction compare(factValue, operatorValue) {\n    if (!isNil(factValue) && !isNil(operatorValue)) {\n        if (isDate_1.default(factValue) && typeof operatorValue === 'string') {\n            return compareDate(factValue, operatorValue);\n        }\n        if (factValue < operatorValue) {\n            return -1;\n        }\n        if (factValue > operatorValue) {\n            return 1;\n        }\n    }\n    if (factValue === operatorValue) {\n        return 0;\n    }\n    return undefined;\n}\nfunction compareDate(factDate, operatorDateStr) {\n    if (isValid_1.default(factDate)) {\n        let trunFactDate;\n        let utcOperatorDate;\n        for (let index = 0; index < DATE_PATTERN_CONFIGS.length; index += 1) {\n            const datePatternConfig = DATE_PATTERN_CONFIGS[index];\n            const parsedDate = parse_1.default(operatorDateStr, datePatternConfig.pattern, new Date());\n            if (isValid_1.default(parsedDate)) {\n                trunFactDate = set_1.default(factDate, datePatternConfig.default);\n                utcOperatorDate = set_1.default(utcToZonedTime_1.default(parsedDate, TIMEZONE_UTC), datePatternConfig.default);\n                break;\n            }\n        }\n        if (trunFactDate && utcOperatorDate) {\n            return compareAsc_1.default(trunFactDate, utcOperatorDate);\n        }\n    }\n    return undefined;\n}\nfunction evalBounds(factValue, operatorValue) {\n    const coordinatePointExec = COORDINATE_POINT_REGEX.exec(factValue);\n    if (coordinatePointExec && (operatorValue === null || operatorValue === void 0 ? void 0 : operatorValue.length)) {\n        const point = helpers_1.point([parseFloat(coordinatePointExec[2]), parseFloat(coordinatePointExec[1])]);\n        const polygonCoordinates = operatorValue.reduce((acc, polygonCoordinate) => {\n            const polygonCoordinateExec = COORDINATE_POINT_REGEX.exec(polygonCoordinate);\n            if (polygonCoordinateExec) {\n                acc.push([parseFloat(polygonCoordinateExec[2]), parseFloat(polygonCoordinateExec[1])]);\n            }\n            return acc;\n        }, []);\n        const polygon = helpers_1.polygon([polygonCoordinates]);\n        return boolean_point_in_polygon_1.default(point, polygon);\n    }\n    return false;\n}\nfunction evalDistance(factValue, operatorValue) {\n    const distanceFromExec = DISTANCE_FROM_REGEX.exec(operatorValue);\n    const coordinatePointExec = COORDINATE_POINT_REGEX.exec(factValue);\n    if (coordinatePointExec && distanceFromExec) {\n        const point = helpers_1.point([parseFloat(coordinatePointExec[2]), parseFloat(coordinatePointExec[1])]);\n        const fromPoint = helpers_1.point([parseFloat(distanceFromExec[4]), parseFloat(distanceFromExec[3])]);\n        const units = distanceFromExec[2];\n        const options = { units: DISTANCE_UNIT_MAPPING[units] || units };\n        const distance = distance_1.default(fromPoint, point, options);\n        return distance <= parseFloat(distanceFromExec[1]);\n    }\n    return false;\n}\nfunction evalContains(values, value) {\n    if (Array.isArray(values) && (values === null || values === void 0 ? void 0 : values.length) && !isNil(value) && !Array.isArray(value)) {\n        if (typeof value === 'string') {\n            return values.some((pattern) => matcher_1.default.isMatch(value, String(pattern)));\n        }\n        return values.includes(value);\n    }\n    return false;\n}\nfunction evalOperation(operator, factValue, operatorValue) {\n    switch (operator) {\n        case types_1.Operator.bounds:\n            return Array.isArray(operatorValue) && evalBounds(String(factValue), operatorValue);\n        case types_1.Operator.contains:\n            return evalContains(factValue, operatorValue);\n        case types_1.Operator.distance:\n            return evalDistance(String(factValue), String(operatorValue));\n        case types_1.Operator.equal:\n            return compare(factValue, operatorValue) === 0;\n        case types_1.Operator.greaterThan:\n            return compare(factValue, operatorValue) === 1;\n        case types_1.Operator.greaterThanInclusive:\n            return compare(factValue, operatorValue) >= 0;\n        case types_1.Operator.in:\n            return evalContains(operatorValue, factValue);\n        case types_1.Operator.lessThan:\n            return compare(factValue, operatorValue) === -1;\n        case types_1.Operator.lessThanInclusive:\n            return compare(factValue, operatorValue) <= 0;\n        case types_1.Operator.nil:\n            return isNil(factValue);\n        case types_1.Operator.percentage:\n            return !!(operatorValue && operatorValue <= Math.round(Math.random() * (100 - 1) + 1));\n        case types_1.Operator.regex:\n            return new RegExp(String(operatorValue)).test(String(factValue));\n        case types_1.Operator.truthy:\n            return !!factValue;\n        case types_1.Operator.wildcard:\n            return matcher_1.default.isMatch(String(factValue), String(operatorValue));\n        default:\n            return false;\n    }\n}\nfunction evalConditions(condition, facts) {\n    var _a;\n    if (condition.not) {\n        return !evalConditions(condition.not, facts);\n    }\n    if (condition.all) {\n        return condition.all.every((c) => evalConditions(c, facts));\n    }\n    if (condition.any) {\n        return condition.any.some((c) => evalConditions(c, facts));\n    }\n    const { fact, operator, value } = condition;\n    const factValue = facts[fact];\n    const operatorValue = ((_a = value) === null || _a === void 0 ? void 0 : _a.fact) ? facts[value.fact]\n        : value;\n    return evalOperation(operator, factValue, operatorValue);\n}\nclass RuleEngine {\n    constructor(rule) {\n        this.rule = rule;\n        return this;\n    }\n    run(facts) {\n        return evalConditions(this.rule.conditions, facts);\n    }\n}\nexports.RuleEngine = RuleEngine;\n//# sourceMappingURL=RuleEngine.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ConfigRuleEngine\"), exports);\n__exportStar(require(\"./RuleEngine\"), exports);\n__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Operator = void 0;\nvar Operator;\n(function (Operator) {\n    Operator[\"bounds\"] = \"bounds\";\n    Operator[\"contains\"] = \"contains\";\n    Operator[\"distance\"] = \"distance\";\n    Operator[\"equal\"] = \"equal\";\n    Operator[\"greaterThan\"] = \"greaterThan\";\n    Operator[\"greaterThanInclusive\"] = \"greaterThanInclusive\";\n    Operator[\"in\"] = \"in\";\n    Operator[\"lessThan\"] = \"lessThan\";\n    Operator[\"lessThanInclusive\"] = \"lessThanInclusive\";\n    Operator[\"nil\"] = \"nil\";\n    Operator[\"percentage\"] = \"percentage\";\n    Operator[\"regex\"] = \"regex\";\n    Operator[\"truthy\"] = \"truthy\";\n    Operator[\"wildcard\"] = \"wildcard\";\n})(Operator = exports.Operator || (exports.Operator = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n *   [-81, 41],\n *   [-81, 47],\n *   [-72, 47],\n *   [-72, 41],\n *   [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction booleanPointInPolygon(point, polygon, options) {\n    if (options === void 0) { options = {}; }\n    // validation\n    if (!point) {\n        throw new Error(\"point is required\");\n    }\n    if (!polygon) {\n        throw new Error(\"polygon is required\");\n    }\n    var pt = invariant_1.getCoord(point);\n    var geom = invariant_1.getGeom(polygon);\n    var type = geom.type;\n    var bbox = polygon.bbox;\n    var polys = geom.coordinates;\n    // Quick elimination if point is not inside bbox\n    if (bbox && inBBox(pt, bbox) === false) {\n        return false;\n    }\n    // normalize to multipolygon\n    if (type === \"Polygon\") {\n        polys = [polys];\n    }\n    var insidePoly = false;\n    for (var i = 0; i < polys.length && !insidePoly; i++) {\n        // check if it is in the outer ring first\n        if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n            var inHole = false;\n            var k = 1;\n            // check for the point in any of the holes\n            while (k < polys[i].length && !inHole) {\n                if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n                    inHole = true;\n                }\n                k++;\n            }\n            if (!inHole) {\n                insidePoly = true;\n            }\n        }\n    }\n    return insidePoly;\n}\nexports.default = booleanPointInPolygon;\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n    var isInside = false;\n    if (ring[0][0] === ring[ring.length - 1][0] && ring[0][1] === ring[ring.length - 1][1]) {\n        ring = ring.slice(0, ring.length - 1);\n    }\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n        var xi = ring[i][0];\n        var yi = ring[i][1];\n        var xj = ring[j][0];\n        var yj = ring[j][1];\n        var onBoundary = (pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0) &&\n            ((xi - pt[0]) * (xj - pt[0]) <= 0) && ((yi - pt[1]) * (yj - pt[1]) <= 0);\n        if (onBoundary) {\n            return !ignoreBoundary;\n        }\n        var intersect = ((yi > pt[1]) !== (yj > pt[1])) &&\n            (pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi);\n        if (intersect) {\n            isInside = !isInside;\n        }\n    }\n    return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n    return bbox[0] <= pt[0] &&\n        bbox[1] <= pt[1] &&\n        bbox[2] >= pt[0] &&\n        bbox[3] >= pt[1];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var coordinates1 = invariant_1.getCoord(from);\n    var coordinates2 = invariant_1.getCoord(to);\n    var dLat = helpers_1.degreesToRadians((coordinates2[1] - coordinates1[1]));\n    var dLon = helpers_1.degreesToRadians((coordinates2[0] - coordinates1[0]));\n    var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n    var a = Math.pow(Math.sin(dLat / 2), 2) +\n        Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n    return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexports.default = distance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    var proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {}\n  var opt = options || {};\n  var pairs = str.split(';')\n  var dec = opt.decode || decode;\n\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i];\n    var index = pair.indexOf('=')\n\n    // skip things that don't look like key=value\n    if (index < 0) {\n      continue;\n    }\n\n    var key = pair.substring(0, index).trim()\n\n    // only assign once\n    if (undefined == obj[key]) {\n      var val = pair.substring(index + 1, pair.length).trim()\n\n      // quoted values\n      if (val[0] === '\"') {\n        val = val.slice(1, -1)\n      }\n\n      obj[key] = tryDecode(val, dec);\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n  var opt = options || {};\n  var enc = opt.encode || encode;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n\n  if (null != opt.maxAge) {\n    var maxAge = opt.maxAge - 0;\n\n    if (isNaN(maxAge) || !isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + Math.floor(maxAge);\n  }\n\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + opt.expires.toUTCString();\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':');\n      var key = parts.shift().trim();\n      if (key) {\n        var value = parts.join(':').trim();\n        headers.append(key, value);\n      }\n    });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = 'statusText' in options ? options.statusText : 'OK';\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        resolve(new Response(body, options));\n      };\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'));\n      };\n\n      xhr.onabort = function() {\n        reject(new exports.DOMException('Aborted', 'AbortError'));\n      };\n\n      xhr.open(request.method, request.url, true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob';\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value);\n      });\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!self.fetch) {\n    self.fetch = fetch;\n    self.Headers = Headers;\n    self.Request = Request;\n    self.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n}({}));\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport default function tzTokenizeDate(date, timeZone) {\n  var dtf = getDateTimeFormat(timeZone)\n  return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\n}\n\nvar typeToPos = {\n  year: 0,\n  month: 1,\n  day: 2,\n  hour: 3,\n  minute: 4,\n  second: 5\n}\n\nfunction partsOffset(dtf, date) {\n  var formatted = dtf.formatToParts(date)\n  var filled = []\n  for (var i = 0; i < formatted.length; i++) {\n    var pos = typeToPos[formatted[i].type]\n\n    if (pos >= 0) {\n      filled[pos] = parseInt(formatted[i].value, 10)\n    }\n  }\n  return filled\n}\n\nfunction hackyOffset(dtf, date) {\n  var formatted = dtf.format(date).replace(/\\u200E/g, '')\n  var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\n  // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n  // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n  return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\n}\n\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nvar dtfCache = {}\nfunction getDateTimeFormat(timeZone) {\n  if (!dtfCache[timeZone]) {\n    // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\n    var testDateFormatted = new Intl.DateTimeFormat('en-US', {\n      hour12: false,\n      timeZone: 'America/New_York',\n      year: 'numeric',\n      month: '2-digit',\n      day: '2-digit',\n      hour: '2-digit',\n      minute: '2-digit',\n      second: '2-digit'\n    }).format(new Date('2014-06-25T04:00:00.123Z'))\n    var hourCycleSupported =\n      testDateFormatted === '06/25/2014, 00:00:00' ||\n      testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\n\n    dtfCache[timeZone] = hourCycleSupported\n      ? new Intl.DateTimeFormat('en-US', {\n          hour12: false,\n          timeZone: timeZone,\n          year: 'numeric',\n          month: '2-digit',\n          day: '2-digit',\n          hour: '2-digit',\n          minute: '2-digit',\n          second: '2-digit'\n        })\n      : new Intl.DateTimeFormat('en-US', {\n          hourCycle: 'h23',\n          timeZone: timeZone,\n          year: 'numeric',\n          month: '2-digit',\n          day: '2-digit',\n          hour: '2-digit',\n          minute: '2-digit',\n          second: '2-digit'\n        })\n  }\n  return dtfCache[timeZone]\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\n\nvar patterns = {\n  timezone: /([Z+-].*)$/,\n  timezoneZ: /^(Z)$/,\n  timezoneHH: /^([+-])(\\d{2})$/,\n  timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\n  timezoneIANA: /(UTC|(?:[a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?))$/\n}\n\n// Parse various time zone offset formats to an offset in milliseconds\nexport default function tzParseTimezone(timezoneString, date) {\n  var token\n  var absoluteOffset\n\n  // Z\n  token = patterns.timezoneZ.exec(timezoneString)\n  if (token) {\n    return 0\n  }\n\n  var hours\n\n  // ±hh\n  token = patterns.timezoneHH.exec(timezoneString)\n  if (token) {\n    hours = parseInt(token[2], 10)\n\n    if (!validateTimezone(hours)) {\n      return NaN\n    }\n\n    absoluteOffset = hours * MILLISECONDS_IN_HOUR\n    return token[1] === '+' ? -absoluteOffset : absoluteOffset\n  }\n\n  // ±hh:mm or ±hhmm\n  token = patterns.timezoneHHMM.exec(timezoneString)\n  if (token) {\n    hours = parseInt(token[2], 10)\n    var minutes = parseInt(token[3], 10)\n\n    if (!validateTimezone(hours, minutes)) {\n      return NaN\n    }\n\n    absoluteOffset =\n      hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n    return token[1] === '+' ? -absoluteOffset : absoluteOffset\n  }\n\n  // IANA time zone\n  token = patterns.timezoneIANA.exec(timezoneString)\n  if (token) {\n    // var [fYear, fMonth, fDay, fHour, fMinute, fSecond] = tzTokenizeDate(date, timezoneString)\n    var tokens = tzTokenizeDate(date, timezoneString)\n    var asUTC = Date.UTC(\n      tokens[0],\n      tokens[1] - 1,\n      tokens[2],\n      tokens[3],\n      tokens[4],\n      tokens[5]\n    )\n    var timestampWithMsZeroed = date.getTime() - (date.getTime() % 1000)\n    return -(asUTC - timestampWithMsZeroed)\n  }\n\n  return 0\n}\n\nfunction validateTimezone(hours, minutes) {\n  if (minutes != null && (minutes < 0 || minutes > 59)) {\n    return false\n  }\n\n  return true\n}\n","import toInteger from 'date-fns/esm/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n  dateTimeDelimeter: /[T ]/,\n  plainTime: /:/,\n  timeZoneDelimeter: /[Z ]/i,\n\n  // year tokens\n  YY: /^(\\d{2})$/,\n  YYY: [\n    /^([+-]\\d{2})$/, // 0 additional digits\n    /^([+-]\\d{3})$/, // 1 additional digit\n    /^([+-]\\d{4})$/ // 2 additional digits\n  ],\n  YYYY: /^(\\d{4})/,\n  YYYYY: [\n    /^([+-]\\d{4})/, // 0 additional digits\n    /^([+-]\\d{5})/, // 1 additional digit\n    /^([+-]\\d{6})/ // 2 additional digits\n  ],\n\n  // date tokens\n  MM: /^-(\\d{2})$/,\n  DDD: /^-?(\\d{3})$/,\n  MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n  Www: /^-?W(\\d{2})$/,\n  WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n  HH: /^(\\d{2}([.,]\\d*)?)$/,\n  HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n  HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n  // timezone tokens (to identify the presence of a tz)\n  timezone: /([Z+-].*| UTC|(?:[a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?))$/\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n  if (arguments.length < 1) {\n    throw new TypeError(\n      '1 argument required, but only ' + arguments.length + ' present'\n    )\n  }\n\n  if (argument === null) {\n    return new Date(NaN)\n  }\n\n  var options = dirtyOptions || {}\n\n  var additionalDigits =\n    options.additionalDigits == null\n      ? DEFAULT_ADDITIONAL_DIGITS\n      : toInteger(options.additionalDigits)\n  if (\n    additionalDigits !== 2 &&\n    additionalDigits !== 1 &&\n    additionalDigits !== 0\n  ) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2')\n  }\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === 'object' &&\n      Object.prototype.toString.call(argument) === '[object Date]')\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime())\n  } else if (\n    typeof argument === 'number' ||\n    Object.prototype.toString.call(argument) === '[object Number]'\n  ) {\n    return new Date(argument)\n  } else if (\n    !(\n      typeof argument === 'string' ||\n      Object.prototype.toString.call(argument) === '[object String]'\n    )\n  ) {\n    return new Date(NaN)\n  }\n\n  var dateStrings = splitDateString(argument)\n\n  var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n  var year = parseYearResult.year\n  var restDateString = parseYearResult.restDateString\n\n  var date = parseDate(restDateString, year)\n\n  if (isNaN(date)) {\n    return new Date(NaN)\n  }\n\n  if (date) {\n    var timestamp = date.getTime()\n    var time = 0\n    var offset\n\n    if (dateStrings.time) {\n      time = parseTime(dateStrings.time)\n\n      if (isNaN(time)) {\n        return new Date(NaN)\n      }\n    }\n\n    if (dateStrings.timezone || options.timeZone) {\n      offset = tzParseTimezone(\n        dateStrings.timezone || options.timeZone,\n        new Date(timestamp + time)\n      )\n      if (isNaN(offset)) {\n        return new Date(NaN)\n      }\n    } else {\n      // get offset accurate to hour in timezones that change offset\n      offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n      offset = getTimezoneOffsetInMilliseconds(\n        new Date(timestamp + time + offset)\n      )\n    }\n\n    return new Date(timestamp + time + offset)\n  } else {\n    return new Date(NaN)\n  }\n}\n\nfunction splitDateString(dateString) {\n  var dateStrings = {}\n  var array = dateString.split(patterns.dateTimeDelimeter)\n  var timeString\n\n  if (patterns.plainTime.test(array[0])) {\n    dateStrings.date = null\n    timeString = array[0]\n  } else {\n    dateStrings.date = array[0]\n    timeString = array[1]\n    dateStrings.timezone = array[2]\n    if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0]\n      timeString = dateString.substr(dateStrings.date.length, dateString.length)\n    }\n  }\n\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString)\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '')\n      dateStrings.timezone = token[1]\n    } else {\n      dateStrings.time = timeString\n    }\n  }\n\n  return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  var patternYYY = patterns.YYY[additionalDigits]\n  var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n  var token\n\n  // YYYY or ±YYYYY\n  token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n  if (token) {\n    var yearString = token[1]\n    return {\n      year: parseInt(yearString, 10),\n      restDateString: dateString.slice(yearString.length)\n    }\n  }\n\n  // YY or ±YYY\n  token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n  if (token) {\n    var centuryString = token[1]\n    return {\n      year: parseInt(centuryString, 10) * 100,\n      restDateString: dateString.slice(centuryString.length)\n    }\n  }\n\n  // Invalid ISO-formatted year\n  return {\n    year: null\n  }\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) {\n    return null\n  }\n\n  var token\n  var date\n  var month\n  var week\n\n  // YYYY\n  if (dateString.length === 0) {\n    date = new Date(0)\n    date.setUTCFullYear(year)\n    return date\n  }\n\n  // YYYY-MM\n  token = patterns.MM.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n\n    if (!validateDate(year, month)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month)\n    return date\n  }\n\n  // YYYY-DDD or YYYYDDD\n  token = patterns.DDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    var dayOfYear = parseInt(token[1], 10)\n\n    if (!validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, 0, dayOfYear)\n    return date\n  }\n\n  // yyyy-MM-dd or YYYYMMDD\n  token = patterns.MMDD.exec(dateString)\n  if (token) {\n    date = new Date(0)\n    month = parseInt(token[1], 10) - 1\n    var day = parseInt(token[2], 10)\n\n    if (!validateDate(year, month, day)) {\n      return new Date(NaN)\n    }\n\n    date.setUTCFullYear(year, month, day)\n    return date\n  }\n\n  // YYYY-Www or YYYYWww\n  token = patterns.Www.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n\n    if (!validateWeekDate(year, week)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week)\n  }\n\n  // YYYY-Www-D or YYYYWwwD\n  token = patterns.WwwD.exec(dateString)\n  if (token) {\n    week = parseInt(token[1], 10) - 1\n    var dayOfWeek = parseInt(token[2], 10) - 1\n\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN)\n    }\n\n    return dayOfISOWeekYear(year, week, dayOfWeek)\n  }\n\n  // Invalid ISO-formatted date\n  return null\n}\n\nfunction parseTime(timeString) {\n  var token\n  var hours\n  var minutes\n\n  // hh\n  token = patterns.HH.exec(timeString)\n  if (token) {\n    hours = parseFloat(token[1].replace(',', '.'))\n\n    if (!validateTime(hours)) {\n      return NaN\n    }\n\n    return (hours % 24) * MILLISECONDS_IN_HOUR\n  }\n\n  // hh:mm or hhmm\n  token = patterns.HHMM.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseFloat(token[2].replace(',', '.'))\n\n    if (!validateTime(hours, minutes)) {\n      return NaN\n    }\n\n    return (\n      (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n    )\n  }\n\n  // hh:mm:ss or hhmmss\n  token = patterns.HHMMSS.exec(timeString)\n  if (token) {\n    hours = parseInt(token[1], 10)\n    minutes = parseInt(token[2], 10)\n    var seconds = parseFloat(token[3].replace(',', '.'))\n\n    if (!validateTime(hours, minutes, seconds)) {\n      return NaN\n    }\n\n    return (\n      (hours % 24) * MILLISECONDS_IN_HOUR +\n      minutes * MILLISECONDS_IN_MINUTE +\n      seconds * 1000\n    )\n  }\n\n  // Invalid ISO-formatted time\n  return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  week = week || 0\n  day = day || 0\n  var date = new Date(0)\n  date.setUTCFullYear(isoWeekYear, 0, 4)\n  var fourthOfJanuaryDay = date.getUTCDay() || 7\n  var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n  date.setUTCDate(date.getUTCDate() + diff)\n  return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n  if (month < 0 || month > 11) {\n    return false\n  }\n\n  if (date != null) {\n    if (date < 1) {\n      return false\n    }\n\n    var isLeapYear = isLeapYearIndex(year)\n    if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n      return false\n    }\n    if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  if (dayOfYear < 1) {\n    return false\n  }\n\n  var isLeapYear = isLeapYearIndex(year)\n  if (isLeapYear && dayOfYear > 366) {\n    return false\n  }\n  if (!isLeapYear && dayOfYear > 365) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateWeekDate(year, week, day) {\n  if (week < 0 || week > 52) {\n    return false\n  }\n\n  if (day != null && (day < 0 || day > 6)) {\n    return false\n  }\n\n  return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours != null && (hours < 0 || hours >= 25)) {\n    return false\n  }\n\n  if (minutes != null && (minutes < 0 || minutes >= 60)) {\n    return false\n  }\n\n  if (seconds != null && (seconds < 0 || seconds >= 60)) {\n    return false\n  }\n\n  return true\n}\n","import tzParseTimezone from '../_lib/tzParseTimezone'\nimport subMilliseconds from 'date-fns/esm/subMilliseconds'\nimport toDate from '../toDate'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n  var date = toDate(dirtyDate, options)\n\n  // This date has the UTC time values of the input date at the system time zone\n  var utcDate = new Date(\n    date.getUTCFullYear(),\n    date.getUTCMonth(),\n    date.getUTCDate(),\n    date.getUTCHours(),\n    date.getUTCMinutes(),\n    date.getUTCSeconds(),\n    date.getUTCMilliseconds()\n  )\n  // We just need to apply the offset indicated by the time zone to this localized date\n  var offsetMilliseconds = tzParseTimezone(timeZone, date)\n\n  return offsetMilliseconds\n    ? subMilliseconds(utcDate, offsetMilliseconds)\n    : utcDate\n}\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\n\nconst regexpCache = new Map();\n\nfunction sanitizeArray(input, inputName) {\n\tif (!Array.isArray(input)) {\n\t\tswitch (typeof input) {\n\t\t\tcase 'string':\n\t\t\t\tinput = [input];\n\t\t\t\tbreak;\n\t\t\tcase 'undefined':\n\t\t\t\tinput = [];\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new TypeError(`Expected '${inputName}' to be a string or an array, but got a type of '${typeof input}'`);\n\t\t}\n\t}\n\n\treturn input.filter(string => {\n\t\tif (typeof string !== 'string') {\n\t\t\tif (typeof string === 'undefined') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthrow new TypeError(`Expected '${inputName}' to be an array of strings, but found a type of '${typeof string}' in the array`);\n\t\t}\n\n\t\treturn true;\n\t});\n}\n\nfunction makeRegexp(pattern, options) {\n\toptions = {\n\t\tcaseSensitive: false,\n\t\t...options\n\t};\n\n\tconst cacheKey = pattern + JSON.stringify(options);\n\n\tif (regexpCache.has(cacheKey)) {\n\t\treturn regexpCache.get(cacheKey);\n\t}\n\n\tconst negated = pattern[0] === '!';\n\n\tif (negated) {\n\t\tpattern = pattern.slice(1);\n\t}\n\n\tpattern = escapeStringRegexp(pattern).replace(/\\\\\\*/g, '[\\\\s\\\\S]*');\n\n\tconst regexp = new RegExp(`^${pattern}$`, options.caseSensitive ? '' : 'i');\n\tregexp.negated = negated;\n\tregexpCache.set(cacheKey, regexp);\n\n\treturn regexp;\n}\n\nmodule.exports = (inputs, patterns, options) => {\n\tinputs = sanitizeArray(inputs, 'inputs');\n\tpatterns = sanitizeArray(patterns, 'patterns');\n\n\tif (patterns.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst isFirstPatternNegated = patterns[0][0] === '!';\n\n\tpatterns = patterns.map(pattern => makeRegexp(pattern, options));\n\n\tconst result = [];\n\n\tfor (const input of inputs) {\n\t\t// If first pattern is negated we include everything to match user expectation.\n\t\tlet matches = isFirstPatternNegated;\n\n\t\tfor (const pattern of patterns) {\n\t\t\tif (pattern.test(input)) {\n\t\t\t\tmatches = !pattern.negated;\n\t\t\t}\n\t\t}\n\n\t\tif (matches) {\n\t\t\tresult.push(input);\n\t\t}\n\t}\n\n\treturn result;\n};\n\nmodule.exports.isMatch = (inputs, patterns, options) => {\n\tinputs = sanitizeArray(inputs, 'inputs');\n\tpatterns = sanitizeArray(patterns, 'patterns');\n\n\tif (patterns.length === 0) {\n\t\treturn false;\n\t}\n\n\treturn inputs.some(input => {\n\t\treturn patterns.every(pattern => {\n\t\t\tconst regexp = makeRegexp(pattern, options);\n\t\t\tconst matches = regexp.test(input);\n\t\t\treturn regexp.negated ? !matches : matches;\n\t\t});\n\t});\n};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"</\"+t.name+\">\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"</\"+a.name+\">\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n  if (console && console.warn) {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n    console.warn(...args);\n  }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n  if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n  warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n  if (i18n.isInitialized) {\n    cb();\n  } else {\n    const initialized = () => {\n      setTimeout(() => {\n        i18n.off('initialized', initialized);\n      }, 0);\n      cb();\n    };\n    i18n.on('initialized', initialized);\n  }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n  i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n  if (typeof ns === 'string') ns = [ns];\n  ns.forEach(n => {\n    if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n  });\n  i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const lng = i18n.languages[0];\n  const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n  const lastLng = i18n.languages[i18n.languages.length - 1];\n  if (lng.toLowerCase() === 'cimode') return true;\n  const loadNotPending = (l, n) => {\n    const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n    return loadState === -1 || loadState === 2;\n  };\n  if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n  if (i18n.hasResourceBundle(lng, ns)) return true;\n  if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n  if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n  return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n  const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n  if (!isNewerI18next) {\n    return oldI18nextHasLoadedNamespace(ns, i18n, options);\n  }\n  return i18n.hasLoadedNamespace(ns, {\n    lng: options.lng,\n    precheck: (i18nInstance, loadNotPending) => {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n}\nexport function getDisplayName(Component) {\n  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n  '&amp;': '&',\n  '&#38;': '&',\n  '&lt;': '<',\n  '&#60;': '<',\n  '&gt;': '>',\n  '&#62;': '>',\n  '&apos;': \"'\",\n  '&#39;': \"'\",\n  '&quot;': '\"',\n  '&#34;': '\"',\n  '&nbsp;': ' ',\n  '&#160;': ' ',\n  '&copy;': '©',\n  '&#169;': '©',\n  '&reg;': '®',\n  '&#174;': '®',\n  '&hellip;': '…',\n  '&#8230;': '…',\n  '&#x2F;': '/',\n  '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true,\n  unescape\n};\nexport function setDefaults() {\n  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  defaultOptions = {\n    ...defaultOptions,\n    ...options\n  };\n}\nexport function getDefaults() {\n  return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n  i18nInstance = instance;\n}\nexport function getI18n() {\n  return i18nInstance;\n}","import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nfunction hasChildren(node, checkLength) {\n  if (!node) return false;\n  const base = node.props ? node.props.children : node.children;\n  if (checkLength) return base.length > 0;\n  return !!base;\n}\nfunction getChildren(node) {\n  if (!node) return [];\n  const children = node.props ? node.props.children : node.children;\n  return node.props && node.props.i18nIsDynamicList ? getAsArray(children) : children;\n}\nfunction hasValidReactChildren(children) {\n  if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n  return children.every(child => isValidElement(child));\n}\nfunction getAsArray(data) {\n  return Array.isArray(data) ? data : [data];\n}\nfunction mergeProps(source, target) {\n  const newTarget = {\n    ...target\n  };\n  newTarget.props = Object.assign(source.props, target.props);\n  return newTarget;\n}\nexport function nodesToString(children, i18nOptions) {\n  if (!children) return '';\n  let stringNode = '';\n  const childrenArray = getAsArray(children);\n  const keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n  childrenArray.forEach((child, childIndex) => {\n    if (typeof child === 'string') {\n      stringNode += `${child}`;\n    } else if (isValidElement(child)) {\n      const childPropsCount = Object.keys(child.props).length;\n      const shouldKeepChild = keepArray.indexOf(child.type) > -1;\n      const childChildren = child.props.children;\n      if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n        stringNode += `<${child.type}/>`;\n      } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n        stringNode += `<${childIndex}></${childIndex}>`;\n      } else if (child.props.i18nIsDynamicList) {\n        stringNode += `<${childIndex}></${childIndex}>`;\n      } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n        stringNode += `<${child.type}>${childChildren}</${child.type}>`;\n      } else {\n        const content = nodesToString(childChildren, i18nOptions);\n        stringNode += `<${childIndex}>${content}</${childIndex}>`;\n      }\n    } else if (child === null) {\n      warn(`Trans: the passed in value is invalid - seems you passed in a null child.`);\n    } else if (typeof child === 'object') {\n      const {\n        format,\n        ...clone\n      } = child;\n      const keys = Object.keys(clone);\n      if (keys.length === 1) {\n        const value = format ? `${keys[0]}, ${format}` : keys[0];\n        stringNode += `{{${value}}}`;\n      } else {\n        warn(`react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.`, child);\n      }\n    } else {\n      warn(`Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.`, child);\n    }\n  });\n  return stringNode;\n}\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n  if (targetString === '') return [];\n  const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n  const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n  if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n  const data = {};\n  function getData(childs) {\n    const childrenArray = getAsArray(childs);\n    childrenArray.forEach(child => {\n      if (typeof child === 'string') return;\n      if (hasChildren(child)) getData(getChildren(child));else if (typeof child === 'object' && !isValidElement(child)) Object.assign(data, child);\n    });\n  }\n  getData(children);\n  const ast = HTML.parse(`<0>${targetString}</0>`);\n  const opts = {\n    ...data,\n    ...combinedTOpts\n  };\n  function renderInner(child, node, rootReactNode) {\n    const childs = getChildren(child);\n    const mappedChildren = mapAST(childs, node.children, rootReactNode);\n    return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props && child.props.i18nIsDynamicList ? childs : mappedChildren;\n  }\n  function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n    if (child.dummy) {\n      child.children = inner;\n      mem.push(cloneElement(child, {\n        key: i\n      }, isVoid ? undefined : inner));\n    } else {\n      mem.push(...Children.map([child], c => {\n        const props = {\n          ...c.props\n        };\n        delete props.i18nIsDynamicList;\n        return createElement(c.type, {\n          ...props,\n          key: i,\n          ref: c.ref\n        }, isVoid ? null : inner);\n      }));\n    }\n  }\n  function mapAST(reactNode, astNode, rootReactNode) {\n    const reactNodes = getAsArray(reactNode);\n    const astNodes = getAsArray(astNode);\n    return astNodes.reduce((mem, node, i) => {\n      const translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n      if (node.type === 'tag') {\n        let tmp = reactNodes[parseInt(node.name, 10)];\n        if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n        if (!tmp) tmp = {};\n        const child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n          props: node.attrs\n        }, tmp) : tmp;\n        const isElement = isValidElement(child);\n        const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n        const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && typeof child === 'object' && child.dummy && !isElement;\n        const isKnownComponent = typeof children === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n        if (typeof child === 'string') {\n          const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n          mem.push(value);\n        } else if (hasChildren(child) || isValidTranslationWithChildren) {\n          const inner = renderInner(child, node, rootReactNode);\n          pushTranslatedJSX(child, inner, mem, i);\n        } else if (isEmptyTransWithHTML) {\n          const inner = mapAST(reactNodes, node.children, rootReactNode);\n          pushTranslatedJSX(child, inner, mem, i);\n        } else if (Number.isNaN(parseFloat(node.name))) {\n          if (isKnownComponent) {\n            const inner = renderInner(child, node, rootReactNode);\n            pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n          } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n            if (node.voidElement) {\n              mem.push(createElement(node.name, {\n                key: `${node.name}-${i}`\n              }));\n            } else {\n              const inner = mapAST(reactNodes, node.children, rootReactNode);\n              mem.push(createElement(node.name, {\n                key: `${node.name}-${i}`\n              }, inner));\n            }\n          } else if (node.voidElement) {\n            mem.push(`<${node.name} />`);\n          } else {\n            const inner = mapAST(reactNodes, node.children, rootReactNode);\n            mem.push(`<${node.name}>${inner}</${node.name}>`);\n          }\n        } else if (typeof child === 'object' && !isElement) {\n          const content = node.children[0] ? translationContent : null;\n          if (content) mem.push(content);\n        } else {\n          pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n        }\n      } else if (node.type === 'text') {\n        const wrapTextNodes = i18nOptions.transWrapTextNodes;\n        const content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n        if (wrapTextNodes) {\n          mem.push(createElement(wrapTextNodes, {\n            key: `${node.name}-${i}`\n          }, content));\n        } else {\n          mem.push(content);\n        }\n      }\n      return mem;\n    }, []);\n  }\n  const result = mapAST([{\n    dummy: true,\n    children: children || []\n  }], ast, getAsArray(children || []));\n  return getChildren(result[0]);\n}\nexport function Trans(_ref) {\n  let {\n    children,\n    count,\n    parent,\n    i18nKey,\n    context,\n    tOptions = {},\n    values,\n    defaults,\n    components,\n    ns,\n    i18n: i18nFromProps,\n    t: tFromProps,\n    shouldUnescape,\n    ...additionalProps\n  } = _ref;\n  const i18n = i18nFromProps || getI18n();\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n    return children;\n  }\n  const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n  if (context) tOptions.context = context;\n  const reactI18nextOptions = {\n    ...getDefaults(),\n    ...(i18n.options && i18n.options.react)\n  };\n  let namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  const nodeAsString = nodesToString(children, reactI18nextOptions);\n  const defaultValue = defaults || nodeAsString || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n  const {\n    hashTransKey\n  } = reactI18nextOptions;\n  const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n  if (i18n.options && i18n.options.interpolation && i18n.options.interpolation.defaultVariables) {\n    values = values && Object.keys(values).length > 0 ? {\n      ...values,\n      ...i18n.options.interpolation.defaultVariables\n    } : {\n      ...i18n.options.interpolation.defaultVariables\n    };\n  }\n  const interpolationOverride = values || count !== undefined ? tOptions.interpolation : {\n    interpolation: {\n      ...tOptions.interpolation,\n      prefix: '#$?',\n      suffix: '?$#'\n    }\n  };\n  const combinedTOpts = {\n    ...tOptions,\n    count,\n    ...values,\n    ...interpolationOverride,\n    defaultValue,\n    ns: namespaces\n  };\n  const translation = key ? t(key, combinedTOpts) : defaultValue;\n  if (components) {\n    Object.keys(components).forEach(c => {\n      const comp = components[c];\n      if (typeof comp.type === 'function' || !comp.props || !comp.props.children || translation.indexOf(`${c}/>`) < 0 && translation.indexOf(`${c} />`) < 0) return;\n      function Componentized() {\n        return createElement(Fragment, null, comp);\n      }\n      components[c] = createElement(Componentized);\n    });\n  }\n  const content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n  const useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n  return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n  type: '3rdParty',\n  init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n  constructor() {\n    this.usedNamespaces = {};\n  }\n  addUsedNamespaces(namespaces) {\n    namespaces.forEach(ns => {\n      if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n    });\n  }\n  getUsedNamespaces() {\n    return Object.keys(this.usedNamespaces);\n  }\n}\nexport function composeInitialProps(ForComponent) {\n  return ctx => new Promise(resolve => {\n    const i18nInitialProps = getInitialProps();\n    if (ForComponent.getInitialProps) {\n      ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n        resolve({\n          ...componentsInitialProps,\n          ...i18nInitialProps\n        });\n      });\n    } else {\n      resolve(i18nInitialProps);\n    }\n  });\n}\nexport function getInitialProps() {\n  const i18n = getI18n();\n  const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n  const ret = {};\n  const initialI18nStore = {};\n  i18n.languages.forEach(l => {\n    initialI18nStore[l] = {};\n    namespaces.forEach(ns => {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n}","import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans(_ref) {\n  let {\n    children,\n    count,\n    parent,\n    i18nKey,\n    context,\n    tOptions = {},\n    values,\n    defaults,\n    components,\n    ns,\n    i18n: i18nFromProps,\n    t: tFromProps,\n    shouldUnescape,\n    ...additionalProps\n  } = _ref;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  const t = tFromProps || i18n && i18n.t.bind(i18n);\n  return TransWithoutContext({\n    children,\n    count,\n    parent,\n    i18nKey,\n    context,\n    tOptions,\n    values,\n    defaults,\n    components,\n    ns: ns || t && t.ns || defaultNSFromContext || i18n && i18n.options && i18n.options.defaultNS,\n    i18n,\n    t: tFromProps,\n    shouldUnescape,\n    ...additionalProps\n  });\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n  return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n  return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n  let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n    const notReadyT = (k, optsOrDefaultValue) => {\n      if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n      if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n    const retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n  const i18nOptions = {\n    ...getDefaults(),\n    ...i18n.options.react,\n    ...props\n  };\n  const {\n    useSuspense,\n    keyPrefix\n  } = i18nOptions;\n  let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n  const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const getT = () => memoGetT;\n  const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const [t, setT] = useState(getT);\n  let joinedNS = namespaces.join();\n  if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n  const previousJoinedNS = usePrevious(joinedNS);\n  const isMounted = useRef(true);\n  useEffect(() => {\n    const {\n      bindI18n,\n      bindI18nStore\n    } = i18nOptions;\n    isMounted.current = true;\n    if (!ready && !useSuspense) {\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      } else {\n        loadNamespaces(i18n, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      }\n    }\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getNewT);\n    }\n    function boundReset() {\n      if (isMounted.current) setT(getNewT);\n    }\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return () => {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n    };\n  }, [i18n, joinedNS]);\n  const isInitial = useRef(true);\n  useEffect(() => {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n    isInitial.current = false;\n  }, [i18n, keyPrefix]);\n  const ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(resolve => {\n    if (props.lng) {\n      loadLanguages(i18n, props.lng, namespaces, () => resolve());\n    } else {\n      loadNamespaces(i18n, namespaces, () => resolve());\n    }\n  });\n}","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport function withTranslation(ns) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function Extend(WrappedComponent) {\n    function I18nextWithTranslation(_ref) {\n      let {\n        forwardedRef,\n        ...rest\n      } = _ref;\n      const [t, i18n, ready] = useTranslation(ns, {\n        ...rest,\n        keyPrefix: options.keyPrefix\n      });\n      const passDownProps = {\n        ...rest,\n        t,\n        i18n,\n        tReady: ready\n      };\n      if (options.withRef && forwardedRef) {\n        passDownProps.ref = forwardedRef;\n      } else if (!options.withRef && forwardedRef) {\n        passDownProps.forwardedRef = forwardedRef;\n      }\n      return createElement(WrappedComponent, passDownProps);\n    }\n    I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n    I18nextWithTranslation.WrappedComponent = WrappedComponent;\n    const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n      forwardedRef: ref\n    }));\n    return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n  };\n}","import { useTranslation } from './useTranslation.js';\nexport function Translation(props) {\n  const {\n    ns,\n    children,\n    ...options\n  } = props;\n  const [t, i18n, ready] = useTranslation(ns, options);\n  return children(t, {\n    i18n,\n    lng: i18n.language\n  }, ready);\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n  let {\n    i18n,\n    defaultNS,\n    children\n  } = _ref;\n  const value = useMemo(() => ({\n    i18n,\n    defaultNS\n  }), [i18n, defaultNS]);\n  return createElement(I18nContext.Provider, {\n    value\n  }, children);\n}","import { useContext } from 'react';\nimport { getI18n, I18nContext } from './context.js';\nexport function useSSR(initialI18nStore, initialLanguage) {\n  let props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n.options && i18n.options.isClone) return;\n  if (initialI18nStore && !i18n.initializedStoreOnce) {\n    i18n.services.resourceStore.data = initialI18nStore;\n    i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources) => {\n      Object.keys(lngResources).forEach(ns => {\n        if (mem.indexOf(ns) < 0) mem.push(ns);\n      });\n      return mem;\n    }, i18n.options.ns);\n    i18n.initializedStoreOnce = true;\n    i18n.isInitialized = true;\n  }\n  if (initialLanguage && !i18n.initializedLanguageOnce) {\n    i18n.changeLanguage(initialLanguage);\n    i18n.initializedLanguageOnce = true;\n  }\n}","import { createElement } from 'react';\nimport { useSSR } from './useSSR.js';\nimport { composeInitialProps } from './context.js';\nimport { getDisplayName } from './utils.js';\nexport function withSSR() {\n  return function Extend(WrappedComponent) {\n    function I18nextWithSSR(_ref) {\n      let {\n        initialI18nStore,\n        initialLanguage,\n        ...rest\n      } = _ref;\n      useSSR(initialI18nStore, initialLanguage);\n      return createElement(WrappedComponent, {\n        ...rest\n      });\n    }\n    I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);\n    I18nextWithSSR.displayName = `withI18nextSSR(${getDisplayName(WrappedComponent)})`;\n    I18nextWithSSR.WrappedComponent = WrappedComponent;\n    return I18nextWithSSR;\n  };\n}","export { Trans } from './Trans.js';\nexport { Trans as TransWithoutContext } from './TransWithoutContext.js';\nexport { useTranslation } from './useTranslation.js';\nexport { withTranslation } from './withTranslation.js';\nexport { Translation } from './Translation.js';\nexport { I18nextProvider } from './I18nextProvider.js';\nexport { withSSR } from './withSSR.js';\nexport { useSSR } from './useSSR.js';\nexport { initReactI18next } from './initReactI18next.js';\nexport { setDefaults, getDefaults } from './defaults.js';\nexport { setI18n, getI18n } from './i18nInstance.js';\nexport { I18nContext, composeInitialProps, getInitialProps } from './context.js';\nexport const date = () => '';\nexport const time = () => '';\nexport const number = () => '';\nexport const select = () => '';\nexport const plural = () => '';\nexport const selectOrdinal = () => '';","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var s = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","var DEFAULT_LOCALE = 'en';\nvar LOCALES = ['en'];\nvar DEFAULT_NAMESPACE = 'common';\nvar LOCALE_PATH = './public/locales';\nvar LOCALE_STRUCTURE = '{{lng}}/{{ns}}';\nvar LOCALE_EXTENSION = 'json';\nexport var defaultConfig = {\n  defaultNS: DEFAULT_NAMESPACE,\n  errorStackTraceLimit: 0,\n  i18n: {\n    defaultLocale: DEFAULT_LOCALE,\n    locales: LOCALES\n  },\n  get initImmediate() {\n    return process.browser && typeof window !== 'undefined';\n  },\n  interpolation: {\n    escapeValue: false\n  },\n  load: 'currentOnly',\n  localeExtension: LOCALE_EXTENSION,\n  localePath: LOCALE_PATH,\n  localeStructure: LOCALE_STRUCTURE,\n  react: {\n    useSuspense: false\n  },\n  reloadOnPrerender: false,\n  serializeConfig: true,\n  use: []\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport { useLayoutEffect, useEffect } from 'react';\nexport var getFallbackForLng = function getFallbackForLng(lng, fallbackLng) {\n  if (typeof fallbackLng === 'string') {\n    return [fallbackLng];\n  }\n  if (Array.isArray(fallbackLng)) {\n    return fallbackLng;\n  }\n  if (_typeof(fallbackLng) === 'object') {\n    var fallbackList = fallbackLng[lng];\n    var fallbackDefault = fallbackLng[\"default\"];\n    return [].concat(_toConsumableArray(fallbackList !== null && fallbackList !== void 0 ? fallbackList : []), _toConsumableArray(fallbackDefault !== null && fallbackDefault !== void 0 ? fallbackDefault : []));\n  }\n  if (typeof fallbackLng === 'function') {\n    return getFallbackForLng(lng, fallbackLng(lng));\n  }\n  return [];\n};\nexport var unique = function unique(list) {\n  return Array.from(new Set(list));\n};\n\n/**\n * This hook behaves like `useLayoutEffect` on the client,\n * and `useEffect` on the server(no effect).\n *\n * Since using `useLayoutEffect` on the server cause warning messages in nextjs,\n * this hook is workaround for that.\n */\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"i18n\"],\n  _excluded2 = [\"i18n\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { defaultConfig } from './defaultConfig';\nimport { getFallbackForLng, unique } from '../utils';\nvar deepMergeObjects = ['backend', 'detection'];\nexport var createConfig = function createConfig(userConfig) {\n  var _userConfig$interpola, _userConfig$interpola2, _userConfig$use;\n  if (typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.lng) !== 'string') {\n    throw new Error('config.lng was not passed into createConfig');\n  }\n\n  //\n  // Initial merge of default and user-provided config\n  //\n  var userI18n = userConfig.i18n,\n    userConfigStripped = _objectWithoutProperties(userConfig, _excluded);\n  var defaultI18n = defaultConfig.i18n,\n    defaultConfigStripped = _objectWithoutProperties(defaultConfig, _excluded2);\n  var combinedConfig = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultConfigStripped), userConfigStripped), defaultI18n), userI18n);\n  var defaultNS = combinedConfig.defaultNS,\n    lng = combinedConfig.lng,\n    localeExtension = combinedConfig.localeExtension,\n    localePath = combinedConfig.localePath,\n    nonExplicitSupportedLngs = combinedConfig.nonExplicitSupportedLngs;\n  var locales = combinedConfig.locales.filter(function (l) {\n    return l !== 'default';\n  });\n\n  /**\n   * Skips translation file resolution while in cimode\n   * https://github.com/i18next/next-i18next/pull/851#discussion_r503113620\n   */\n  if (lng === 'cimode') {\n    return combinedConfig;\n  }\n  if (typeof combinedConfig.fallbackLng === 'undefined') {\n    combinedConfig.fallbackLng = combinedConfig.defaultLocale;\n    if (combinedConfig.fallbackLng === 'default') {\n      var _locales = _slicedToArray(locales, 1);\n      combinedConfig.fallbackLng = _locales[0];\n    }\n  }\n  var userPrefix = userConfig === null || userConfig === void 0 || (_userConfig$interpola = userConfig.interpolation) === null || _userConfig$interpola === void 0 ? void 0 : _userConfig$interpola.prefix;\n  var userSuffix = userConfig === null || userConfig === void 0 || (_userConfig$interpola2 = userConfig.interpolation) === null || _userConfig$interpola2 === void 0 ? void 0 : _userConfig$interpola2.suffix;\n  var prefix = userPrefix !== null && userPrefix !== void 0 ? userPrefix : '{{';\n  var suffix = userSuffix !== null && userSuffix !== void 0 ? userSuffix : '}}';\n  if (typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.localeStructure) !== 'string' && (userPrefix || userSuffix)) {\n    combinedConfig.localeStructure = \"\".concat(prefix, \"lng\").concat(suffix, \"/\").concat(prefix, \"ns\").concat(suffix);\n  }\n  var fallbackLng = combinedConfig.fallbackLng,\n    localeStructure = combinedConfig.localeStructure;\n  if (nonExplicitSupportedLngs) {\n    var createFallbackObject = function createFallbackObject(acc, l) {\n      var _l$split = l.split('-'),\n        _l$split2 = _slicedToArray(_l$split, 1),\n        locale = _l$split2[0];\n      acc[l] = [locale];\n      return acc;\n    };\n    if (typeof fallbackLng === 'string') {\n      combinedConfig.fallbackLng = combinedConfig.locales.filter(function (l) {\n        return l.includes('-');\n      }).reduce(createFallbackObject, {\n        \"default\": [fallbackLng]\n      });\n    } else if (Array.isArray(fallbackLng)) {\n      combinedConfig.fallbackLng = combinedConfig.locales.filter(function (l) {\n        return l.includes('-');\n      }).reduce(createFallbackObject, {\n        \"default\": fallbackLng\n      });\n    } else if (_typeof(fallbackLng) === 'object') {\n      combinedConfig.fallbackLng = Object.entries(combinedConfig.fallbackLng).reduce(function (acc, _ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          l = _ref2[0],\n          f = _ref2[1];\n        acc[l] = l.includes('-') ? unique([l.split('-')[0]].concat(_toConsumableArray(f))) : f;\n        return acc;\n      }, fallbackLng);\n    } else if (typeof fallbackLng === 'function') {\n      throw new Error('If nonExplicitSupportedLngs is true, no functions are allowed for fallbackLng');\n    }\n  }\n  var hasCustomBackend = userConfig === null || userConfig === void 0 || (_userConfig$use = userConfig.use) === null || _userConfig$use === void 0 ? void 0 : _userConfig$use.some(function (b) {\n    return b.type === 'backend';\n  });\n  if (!process.browser && typeof window === 'undefined') {\n    combinedConfig.preload = locales;\n    if (!hasCustomBackend) {\n      var fs = require('fs');\n      var path = require('path');\n\n      //\n      // Validate defaultNS\n      // https://github.com/i18next/next-i18next/issues/358\n      //\n      if (typeof defaultNS === 'string' && typeof lng !== 'undefined') {\n        if (typeof localePath === 'string') {\n          var defaultLocaleStructure = localeStructure.replace(\"\".concat(prefix, \"lng\").concat(suffix), lng).replace(\"\".concat(prefix, \"ns\").concat(suffix), defaultNS);\n          var defaultFile = \"/\".concat(defaultLocaleStructure, \".\").concat(localeExtension);\n          var defaultNSPath = path.join(localePath, defaultFile);\n          var defaultNSExists = fs.existsSync(defaultNSPath);\n          var fallback = getFallbackForLng(lng, combinedConfig.fallbackLng);\n          var defaultFallbackNSExists = fallback.some(function (f) {\n            var fallbackFile = defaultFile.replace(lng, f);\n            var defaultNSPath = path.join(localePath, fallbackFile);\n            return fs.existsSync(defaultNSPath);\n          });\n          if (!defaultNSExists && !defaultFallbackNSExists && process.env.NODE_ENV !== 'production') {\n            throw new Error(\"Default namespace not found at \".concat(defaultNSPath));\n          }\n        } else if (typeof localePath === 'function') {\n          var _defaultNSPath = localePath(lng, defaultNS, false);\n          var _defaultNSExists = fs.existsSync(_defaultNSPath);\n          var _fallback = getFallbackForLng(lng, combinedConfig.fallbackLng);\n          var _defaultFallbackNSExists = _fallback.some(function (f) {\n            var defaultNSPath = localePath(f, defaultNS, false);\n            return fs.existsSync(defaultNSPath);\n          });\n          if (!_defaultNSExists && !_defaultFallbackNSExists && process.env.NODE_ENV !== 'production') {\n            throw new Error(\"Default namespace not found at \".concat(_defaultNSPath));\n          }\n        }\n      }\n\n      //\n      // Set server side backend\n      //\n      if (typeof localePath === 'string') {\n        combinedConfig.backend = {\n          addPath: path.resolve(process.cwd(), \"\".concat(localePath, \"/\").concat(localeStructure, \".missing.\").concat(localeExtension)),\n          loadPath: path.resolve(process.cwd(), \"\".concat(localePath, \"/\").concat(localeStructure, \".\").concat(localeExtension))\n        };\n      } else if (typeof localePath === 'function') {\n        combinedConfig.backend = {\n          addPath: function addPath(locale, namespace) {\n            return localePath(locale, namespace, true);\n          },\n          loadPath: function loadPath(locale, namespace) {\n            return localePath(locale, namespace, false);\n          }\n        };\n      } else if (localePath) {\n        throw new Error(\"Unsupported localePath type: \".concat(_typeof(localePath)));\n      }\n\n      //\n      // Set server side preload (namespaces)\n      //\n      if (!combinedConfig.ns && typeof lng !== 'undefined') {\n        if (typeof localePath === 'function') {\n          throw new Error('Must provide all namespaces in ns option if using a function as localePath');\n        }\n        var getNamespaces = function getNamespaces(locales) {\n          var getLocaleNamespaces = function getLocaleNamespaces(p) {\n            var ret = [];\n            if (!fs.existsSync(p)) return ret;\n            fs.readdirSync(p).map(function (file) {\n              var joinedP = path.join(p, file);\n              if (fs.statSync(joinedP).isDirectory()) {\n                var subRet = getLocaleNamespaces(joinedP).map(function (n) {\n                  return \"\".concat(file, \"/\").concat(n);\n                });\n                ret = ret.concat(subRet);\n                return;\n              }\n              ret.push(file.replace(\".\".concat(localeExtension), ''));\n            });\n            return ret;\n          };\n          var namespacesByLocale;\n          var r = combinedConfig.resources;\n          if (!localePath && r) {\n            namespacesByLocale = locales.map(function (locale) {\n              return Object.keys(r[locale]);\n            });\n          } else {\n            namespacesByLocale = locales.map(function (locale) {\n              return getLocaleNamespaces(path.resolve(process.cwd(), \"\".concat(localePath, \"/\").concat(locale)));\n            });\n          }\n          var allNamespaces = [];\n          var _iterator = _createForOfIteratorHelper(namespacesByLocale),\n            _step;\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var localNamespaces = _step.value;\n              allNamespaces.push.apply(allNamespaces, _toConsumableArray(localNamespaces));\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          return unique(allNamespaces);\n        };\n        if (localeStructure.indexOf(\"\".concat(prefix, \"lng\").concat(suffix)) > localeStructure.indexOf(\"\".concat(prefix, \"ns\").concat(suffix))) {\n          throw new Error('Must provide all namespaces in ns option if using a localeStructure that is not namespace-listable like lng/ns');\n        }\n        combinedConfig.ns = getNamespaces(unique([lng].concat(_toConsumableArray(getFallbackForLng(lng, combinedConfig.fallbackLng)))));\n      }\n    }\n  } else {\n    //\n    // Set client side backend, if there is no custom backend\n    //\n    if (!hasCustomBackend) {\n      if (typeof localePath === 'string') {\n        combinedConfig.backend = {\n          addPath: \"\".concat(localePath, \"/\").concat(localeStructure, \".missing.\").concat(localeExtension),\n          loadPath: \"\".concat(localePath, \"/\").concat(localeStructure, \".\").concat(localeExtension)\n        };\n      } else if (typeof localePath === 'function') {\n        combinedConfig.backend = {\n          addPath: function addPath(locale, namespace) {\n            return localePath(locale, namespace, true);\n          },\n          loadPath: function loadPath(locale, namespace) {\n            return localePath(locale, namespace, false);\n          }\n        };\n      }\n    }\n    if (typeof combinedConfig.ns !== 'string' && !Array.isArray(combinedConfig.ns)) {\n      combinedConfig.ns = [defaultNS];\n    }\n  }\n\n  //\n  // Deep merge with overwrite - goes last\n  //\n  deepMergeObjects.forEach(function (obj) {\n    if (userConfig[obj]) {\n      combinedConfig[obj] = _objectSpread(_objectSpread({}, combinedConfig[obj]), userConfig[obj]);\n    }\n  });\n  return combinedConfig;\n};","const consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return this.forward(args, 'log', '', true);\n  }\n  warn() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return this.forward(args, 'warn', '', true);\n  }\n  error() {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return this.forward(args, 'error', '');\n  }\n  deprecate() {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(_ref => {\n        let [observer, numTimesAdded] = _ref;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(_ref2 => {\n        let [observer, numTimesAdded] = _ref2;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nfunction defer() {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n  }\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n  const stack = typeof path !== 'string' ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper()) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n}\nfunction setPath(object, path, newValue) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n}\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n}\nfunction deepFind(obj, path) {\n  let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n}\nfunction getCleanedCode(code) {\n  if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n  return code;\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (typeof key === 'string' && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n    return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value) {\n    let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      silent: false\n    };\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n      silent: false\n    };\n    for (const m in resources) {\n      if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n      silent: false,\n      skipCopy: false\n    };\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    if (this.options.compatibilityAPI === 'v1') return {\n      ...{},\n      ...this.getResource(lng, ns)\n    };\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    if (key === undefined || key === null) {\n      return false;\n    }\n    const resolved = this.resolve(key, options);\n    return resolved && resolved.res !== undefined;\n  }\n  extractFromKey(key, options) {\n    let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let namespaces = options.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n    return {\n      key,\n      namespaces\n    };\n  }\n  translate(keys, options, lastKey) {\n    if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n      options = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof options === 'object') options = {\n      ...options\n    };\n    if (!options) options = {};\n    if (keys === undefined || keys === null) return '';\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], options);\n    const namespace = namespaces[namespaces.length - 1];\n    const lng = options.lng || this.language;\n    const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng && lng.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(options)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(options)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, options);\n    let res = resolved && resolved.res;\n    const resUsedKey = resolved && resolved.usedKey || key;\n    const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n    const resType = Object.prototype.toString.apply(res);\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n    if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n      if (!options.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n          ...options,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(options);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = resType === '[object Array]';\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in res) {\n          if (Object.prototype.hasOwnProperty.call(res, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            copy[m] = this.translate(deepKey, {\n              ...options,\n              ...{\n                joinArrays: false,\n                ns: namespaces\n              }\n            });\n            if (copy[m] === deepKey) copy[m] = res[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, options, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n      const hasDefaultValue = Translator.hasDefaultValue(options);\n      const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n      const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n        ordinal: false\n      }) : '';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...options,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n        } else {\n          lngs.push(options.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n          } else if (this.backendConnector && this.backendConnector.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, options);\n              if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, options, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        if (this.options.compatibilityAPI !== 'v1') {\n          res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n        } else {\n          res = this.options.parseMissingKeyHandler(res);\n        }\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(options);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, options, resolved, lastKey) {\n    var _this = this;\n    if (this.i18nFormat && this.i18nFormat.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...options\n      }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!options.skipInterpolation) {\n      if (options.interpolation) this.interpolator.init({\n        ...options,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...options.interpolation\n          }\n        }\n      });\n      const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) options.nest = false;\n      }\n      if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n      if (options.nest !== false) res = this.interpolator.nest(res, function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (lastKey && lastKey[0] === args[0] && !options.context) {\n          _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return _this.translate(...args, key);\n      }, options);\n      if (options.interpolation) this.interpolator.reset();\n    }\n    const postProcess = options.postProcess || this.options.postProcess;\n    const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n    if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(options)\n        },\n        ...options\n      } : options, this);\n    }\n    return res;\n  }\n  resolve(keys) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (typeof keys === 'string') keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, options);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n      const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              finalKeys.push(key + pluralSuffix);\n              if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                finalKeys.push(contextKey + pluralSuffix);\n                if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, options);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (typeof code === 'string' && code.indexOf('-') > -1) {\n      const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n      let p = code.split('-');\n      if (this.options.lowerCaseLng) {\n        p = p.map(part => part.toLowerCase());\n      } else if (p.length === 2) {\n        p[0] = p[0].toLowerCase();\n        p[1] = p[1].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n      } else if (p.length === 3) {\n        p[0] = p[0].toLowerCase();\n        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n        if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n      }\n      return p.join('-');\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n    if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (typeof code === 'string') {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nlet sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nlet _rulesPluralsTypes = {\n  1: function (n) {\n    return Number(n > 1);\n  },\n  2: function (n) {\n    return Number(n != 1);\n  },\n  3: function (n) {\n    return 0;\n  },\n  4: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function (n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function (n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function (n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function (n) {\n    return Number(n >= 2);\n  },\n  10: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function (n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function (n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function (n) {\n    return Number(n !== 0);\n  },\n  14: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function (n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function (n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function (n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function (n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function (n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nfunction createRules() {\n  const rules = {};\n  sets.forEach(set => {\n    set.lngs.forEach(l => {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\nclass PluralResolver {\n  constructor(languageUtils) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n    this.rules = createRules();\n  }\n  addRule(lng, obj) {\n    this.rules[lng] = obj;\n  }\n  getRule(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (this.shouldUseIntlApi()) {\n      try {\n        return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n          type: options.ordinal ? 'ordinal' : 'cardinal'\n        });\n      } catch (err) {\n        return;\n      }\n    }\n    return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n  }\n  needsPlural(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (this.shouldUseIntlApi()) {\n      return rule && rule.resolvedOptions().pluralCategories.length > 1;\n    }\n    return rule && rule.numbers.length > 1;\n  }\n  getPluralFormsOfKey(code, key) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (!rule) {\n      return [];\n    }\n    if (this.shouldUseIntlApi()) {\n      return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n    }\n    return rule.numbers.map(number => this.getSuffix(code, number, options));\n  }\n  getSuffix(code, count) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    const rule = this.getRule(code, options);\n    if (rule) {\n      if (this.shouldUseIntlApi()) {\n        return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n      }\n      return this.getSuffixRetroCompatible(rule, count);\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return '';\n  }\n  getSuffixRetroCompatible(rule, count) {\n    const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n    let suffix = rule.numbers[idx];\n    if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      if (suffix === 2) {\n        suffix = 'plural';\n      } else if (suffix === 1) {\n        suffix = '';\n      }\n    }\n    const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n    if (this.options.compatibilityJSON === 'v1') {\n      if (suffix === 1) return '';\n      if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n      return returnSuffix();\n    } else if (this.options.compatibilityJSON === 'v2') {\n      return returnSuffix();\n    } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      return returnSuffix();\n    }\n    return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n  }\n  shouldUseIntlApi() {\n    return !nonIntlVersions.includes(this.options.compatibilityJSON);\n  }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n  let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n  let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && typeof key === 'string') {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n}\nclass Interpolator {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options.interpolation && options.interpolation.format || (value => value);\n    this.init(options);\n  }\n  init() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const iOpts = options.interpolation;\n    this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n    this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n    this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n    this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n    this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n    this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n    this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n    this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n    this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n    this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp && existingRegExp.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    function regexSafe(val) {\n      return val.replace(/\\$/g, '$$$$');\n    }\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = typeof temp === 'string' ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let match;\n    let value;\n    let clonedOptions;\n    function handleHasOptions(key, inheritedOptions) {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${sep}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      delete clonedOptions.defaultValue;\n      return key;\n    }\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      let doReduce = false;\n      if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n        const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n        match[1] = r.shift();\n        formatters = r;\n        doReduce = true;\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && typeof value !== 'string') return value;\n      if (typeof value !== 'string') value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (doReduce) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nfunction parseFormatStr(formatStr) {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (!opt) return;\n        const [key, ...rest] = opt.split(':');\n        const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n        if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n        if (val === 'false') formatOptions[key.trim()] = false;\n        if (val === 'true') formatOptions[key.trim()] = true;\n        if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n}\nfunction createCachedFormatter(fn) {\n  const cache = {};\n  return function invokeFormatter(val, lng, options) {\n    const key = lng + JSON.stringify(options);\n    let formatter = cache[key];\n    if (!formatter) {\n      formatter = fn(getCleanedCode(lng), options);\n      cache[key] = formatter;\n    }\n    return formatter(val);\n  };\n}\nclass Formatter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n    this.init(options);\n  }\n  init(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    const iOpts = options.interpolation;\n    this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const formats = format.split(this.formatSeparator);\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nfunction removePending(q, name) {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n}\nclass Connector extends EventEmitter {\n  constructor(backend, store, services) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    if (this.backend && this.backend.init) {\n      this.backend.init(services, options.backend, options);\n    }\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName) {\n    let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n    let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n    let callback = arguments.length > 5 ? arguments[5] : undefined;\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let callback = arguments.length > 3 ? arguments[3] : undefined;\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name) {\n    let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n    let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n    if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend && this.backend.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: false,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      let ret = {};\n      if (typeof args[1] === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n      if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n        const options = args[3] || args[2];\n        Object.keys(options).forEach(key => {\n          ret[key] = options[key];\n        });\n      }\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: value => value,\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: true\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n}\nclass I18n extends EventEmitter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initImmediate) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init() {\n    var _this = this;\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n      if (typeof options.ns === 'string') {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    if (this.options.compatibilityAPI !== 'v1') {\n      this.options.interpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation\n      };\n    }\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    function createClassOnDemand(ClassOrObject) {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    }\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else if (typeof Intl !== 'undefined') {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        compatibilityJSON: this.options.compatibilityJSON,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', function (event) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        _this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', function (event) {\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        _this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = function () {\n        return _this.store[fcName](...arguments);\n      };\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = function () {\n        _this.store[fcName](...arguments);\n        return _this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initImmediate) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language) {\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    let usedCallback = callback;\n    const usedLng = typeof language === 'string' ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      if (this.options.preload) {\n        this.options.preload.forEach(l => append(l));\n      }\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n  }\n  changeLanguage(lng, callback) {\n    var _this2 = this;\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        setLngProps(l);\n        this.translator.changeLanguage(l);\n        this.isLanguageChangingTo = undefined;\n        this.emit('languageChanged', l);\n        this.logger.log('languageChanged', l);\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve(function () {\n        return _this2.t(...arguments);\n      });\n      if (callback) callback(err, function () {\n        return _this2.t(...arguments);\n      });\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    var _this3 = this;\n    const fixedT = function (key, opts) {\n      let options;\n      if (typeof opts !== 'object') {\n        for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n          rest[_key3 - 2] = arguments[_key3];\n        }\n        options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        options = {\n          ...opts\n        };\n      }\n      options.lng = options.lng || fixedT.lng;\n      options.lngs = options.lngs || fixedT.lngs;\n      options.ns = options.ns || fixedT.ns;\n      options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = _this3.options.keySeparator || '.';\n      let resultKey;\n      if (options.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n      } else {\n        resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return _this3.t(resultKey, options);\n    };\n    if (typeof lng === 'string') {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t() {\n    return this.translator && this.translator.translate(...arguments);\n  }\n  exists() {\n    return this.translator && this.translator.exists(...arguments);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (typeof ns === 'string') ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'string') lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    return new I18n(options, callback);\n  }\n  cloneInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      clone.store = new ResourceStore(this.store.data, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', function (event) {\n      for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import i18n from 'i18next';\nexport default (function (config) {\n  if (config.ns === undefined) config.ns = [];\n  var instance = i18n.createInstance(config);\n  var initPromise;\n  if (!instance.isInitialized) {\n    var _config$use;\n    config === null || config === void 0 || (_config$use = config.use) === null || _config$use === void 0 || _config$use.forEach(function (x) {\n      return instance.use(x);\n    });\n    if (typeof config.onPreInitI18next === 'function') {\n      config.onPreInitI18next(instance);\n    }\n    initPromise = instance.init(config);\n  } else {\n    initPromise = Promise.resolve(i18n.t);\n  }\n  return {\n    i18n: instance,\n    initPromise: initPromise\n  };\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar __jsx = React.createElement;\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useMemo, useRef } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { I18nextProvider } from 'react-i18next';\nimport { createConfig } from './config/createConfig';\nimport createClient from './createClient';\nimport { useIsomorphicLayoutEffect } from './utils';\nexport { Trans, useTranslation, withTranslation } from 'react-i18next';\nexport var globalI18n = null;\nvar addResourcesToI18next = function addResourcesToI18next(instance, resources) {\n  if (resources && instance.isInitialized) {\n    for (var _i = 0, _Object$keys = Object.keys(resources); _i < _Object$keys.length; _i++) {\n      var locale = _Object$keys[_i];\n      for (var _i2 = 0, _Object$keys2 = Object.keys(resources[locale]); _i2 < _Object$keys2.length; _i2++) {\n        var _instance$store;\n        var ns = _Object$keys2[_i2];\n        if (!(instance !== null && instance !== void 0 && (_instance$store = instance.store) !== null && _instance$store !== void 0 && _instance$store.data) || !instance.store.data[locale] || !instance.store.data[locale][ns]) {\n          instance.addResourceBundle(locale, ns, resources[locale][ns], true, true);\n        }\n      }\n    }\n  }\n};\nexport var appWithTranslation = function appWithTranslation(WrappedComponent) {\n  var configOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  var AppWithTranslation = function AppWithTranslation(props) {\n    var _nextI18Next$initialL, _props$router;\n    var _ref = props.pageProps || {},\n      _nextI18Next = _ref._nextI18Next; // pageProps may be undefined on strange setups, i.e. https://github.com/i18next/next-i18next/issues/2109\n    var locale = (_nextI18Next$initialL = _nextI18Next === null || _nextI18Next === void 0 ? void 0 : _nextI18Next.initialLocale) !== null && _nextI18Next$initialL !== void 0 ? _nextI18Next$initialL : props === null || props === void 0 || (_props$router = props.router) === null || _props$router === void 0 ? void 0 : _props$router.locale;\n    var ns = _nextI18Next === null || _nextI18Next === void 0 ? void 0 : _nextI18Next.ns;\n    var instanceRef = useRef(null);\n\n    /**\n     * Memoize i18n instance and reuse it rather than creating new instance.\n     * When the locale or resources are changed after instance was created,\n     * we will update the instance by calling addResourceBundle method on it.\n     */\n    var i18n = useMemo(function () {\n      var _userConfig$i18n;\n      if (!_nextI18Next && !configOverride) return null;\n      var userConfig = configOverride !== null && configOverride !== void 0 ? configOverride : _nextI18Next === null || _nextI18Next === void 0 ? void 0 : _nextI18Next.userConfig;\n      if (!userConfig) {\n        throw new Error('appWithTranslation was called without a next-i18next config');\n      }\n      if (!(userConfig !== null && userConfig !== void 0 && userConfig.i18n)) {\n        throw new Error('appWithTranslation was called without config.i18n');\n      }\n      if (!(userConfig !== null && userConfig !== void 0 && (_userConfig$i18n = userConfig.i18n) !== null && _userConfig$i18n !== void 0 && _userConfig$i18n.defaultLocale)) {\n        throw new Error('config.i18n does not include a defaultLocale property');\n      }\n      var _ref2 = _nextI18Next || {},\n        initialI18nStore = _ref2.initialI18nStore;\n      var resources = configOverride !== null && configOverride !== void 0 && configOverride.resources ? configOverride.resources : initialI18nStore;\n      if (!locale) locale = userConfig.i18n.defaultLocale;\n      var instance = instanceRef.current;\n      if (instance) {\n        addResourcesToI18next(instance, resources);\n      } else {\n        instance = createClient(_objectSpread(_objectSpread({}, createConfig(_objectSpread(_objectSpread({}, userConfig), {}, {\n          lng: locale\n        }))), {}, {\n          lng: locale,\n          ns: ns,\n          resources: resources\n        })).i18n;\n        addResourcesToI18next(instance, resources);\n        globalI18n = instance;\n        instanceRef.current = instance;\n      }\n      return instance;\n    }, [_nextI18Next, locale, ns]);\n\n    /**\n     * Since calling changeLanguage method on existing i18n instance cause state update in react,\n     * we need to call the method in `useLayoutEffect` to prevent state update in render phase.\n     */\n    useIsomorphicLayoutEffect(function () {\n      if (!i18n || !locale) return;\n      i18n.changeLanguage(locale);\n    }, [i18n, locale]);\n    return i18n !== null ? __jsx(I18nextProvider, {\n      i18n: i18n\n    }, __jsx(WrappedComponent, props)) : __jsx(WrappedComponent, _extends({\n      key: locale\n    }, props));\n  };\n  return hoistNonReactStatics(AppWithTranslation, WrappedComponent);\n};","export { I18nContext, Trans, Translation, useTranslation, withTranslation } from 'react-i18next';\nexport { appWithTranslation, globalI18n as i18n } from './appWithTranslation';","\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/_app\",\n      function () {\n        return require(\"private-next-pages/_app.tsx\");\n      }\n    ]);\n    if(module.hot) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/_app\"])\n      });\n    }\n  ","import '../styles/global.css';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport { appWithTranslation } from '@dx-ui/framework-i18n';\nimport { QueryProvider } from '@dx-ui/framework-react-query';\nimport { APP_NAME, queryClientProps } from '../utils/env-vars';\nimport type { AppProps as NextAppProps } from 'next/app';\nimport { useManualPageLogger } from '@dx-ui/framework-logger';\nimport { useRouter } from 'next/router';\nimport type { CommonProps } from '../utils/serverSideProps';\n\ntype AppProps = NextAppProps<CommonProps>;\n\nfunction App({ Component, pageProps, router }: AppProps) {\n  useManualPageLogger(router.pathname, APP_NAME);\n  const routerLocale = useRouter().locale || router.locale || 'en';\n\n  return (\n    <QueryProvider\n      {...queryClientProps}\n      appName={APP_NAME}\n      dehydratedQueryState={pageProps.dehydratedQueryState}\n      oneLinkConfig={pageProps.oneLinkConfig}\n      routerLocale={routerLocale}\n    >\n      <Component {...pageProps} />\n      <ReactQueryDevtools initialIsOpen={false} />\n    </QueryProvider>\n  );\n}\n\nexport default appWithTranslation<AppProps>(App);\n","import { allEnv } from '@dx-ui/framework-env';\n\nexport function getQueryProviderProps() {\n  const env = allEnv();\n  return {\n    appId: env.DX_AUTH_API_CUSTOMER_APP_ID,\n    incompleteLoggingEnabled: env.RUMCS_CAPTURE_CUSTOM_ERRORS === 'enabled',\n    gqlEndpoints: {\n      browser: env.DX_GRAPHQL_CLIENT_URI,\n      server: process.env.DX_GRAPHQL_SERVER_URI as string,\n    },\n    authEndpoints: {\n      browser: env.DX_AUTH_API_CLIENT_URI,\n      server: process.env.DX_AUTH_API_SERVER_URI as string,\n    },\n  };\n}\n","export * from './lib/react-query-env-vars';\n","import { env } from '@dx-ui/framework-env';\nimport { getQueryProviderProps } from '@dx-ui/framework-react-query-env-vars';\nimport type { FlatNamespace } from 'i18next';\n\nexport const queryClientProps = getQueryProviderProps();\nexport const ASSETS_URI = env('ASSETS_URI');\nexport const AUTOCOMPLETE_URL = env('AUTOCOMPLETE_URL');\nexport const CONDUCTRICS_URI = env('CONDUCTRICS_URI');\nexport const OHW_BASE_URL_TRIMMED = env('OHW_BASE_URL').replace(/\\/$/, '') || '';\nexport const DX_AUTH_UI = env('DX_AUTH_UI');\nexport const APP_NAME = env('APP_NAME', 'dx-offers-ui');\n\nexport const GLOBAL_RESOURCE_BUNDLES = [\n  'common',\n  'offers',\n  'osc-breadcrumbs',\n  'osc-footer',\n  'osc-header',\n  'osc-link',\n  'osc-login',\n  'osc-speedbump',\n] as const satisfies FlatNamespace[];\n","import { createContext } from 'react';\nimport type { AuthClient } from './auth-client';\nimport type { GuestQuery } from './gql/types';\nimport type { LoginResponse } from './types';\n\nexport type AuthInfo = Record<string, unknown>;\n\nexport type AuthState = {\n  authClient: AuthClient | null;\n  /** whether or not the current session is authenticated */\n  isAuthenticated: boolean;\n  authInfo?: AuthInfo;\n  login: (response: LoginResponse) => Promise<void>;\n  logout: () => Promise<void>;\n  refreshGuestInfo: () => Promise<void>;\n  guestInfo: GuestQuery['guest'] | null;\n  guestId: number | null;\n  isLoading: boolean;\n  isCorpUser: boolean;\n};\n\nexport const initialContext: AuthState = {\n  authClient: null,\n  isAuthenticated: false,\n  logout: () => Promise.resolve(),\n  login: () => Promise.resolve(),\n  refreshGuestInfo: () => Promise.resolve(),\n  guestInfo: null,\n  guestId: null,\n  isLoading: false,\n  isCorpUser: false,\n};\n\nconst AuthContext = createContext<AuthState>(initialContext);\nAuthContext.displayName = 'AuthContext';\n\nexport { AuthContext };\n","/* eslint-disable no-console */\nimport { useCallback, useEffect, useReducer, useRef } from 'react';\n\nimport * as React from 'react';\nimport type { AuthClient } from './auth-client';\nimport type { AuthInfo } from './auth-context';\nimport { AuthContext } from './auth-context';\nimport type { GuestQuery } from './gql/types';\nimport type { LoginResponse } from './types';\nimport { flushSync } from 'react-dom';\nimport { logWarning } from '@dx-ui/framework-logger';\n\ntype State = {\n  loggedIn: boolean;\n  guestInfo: GuestQuery['guest'] | null;\n  isLoading: boolean;\n  authInfo: AuthInfo | undefined;\n  authClient: AuthClient;\n};\n\ntype LogoutAction = {\n  type: 'logout';\n};\n\ntype GetGuestInfoAction = {\n  type: 'GuestInfo';\n  data: GuestQuery['guest'];\n};\n\ntype StartFetchingGuestInfo = {\n  type: 'StartFetchingGuestInfo';\n};\n\ntype SetAuthInfo = {\n  type: 'SetAuthInfo';\n  data: AuthInfo;\n};\n\nfunction reducer(\n  state: State,\n  action: LogoutAction | GetGuestInfoAction | StartFetchingGuestInfo | SetAuthInfo\n) {\n  if (action.type === 'logout') {\n    return {\n      ...state,\n      loggedIn: false,\n      isLoading: false,\n      guestInfo: null,\n    };\n  }\n  if (action.type === 'StartFetchingGuestInfo') {\n    return {\n      ...state,\n      loggedIn: true,\n      isLoading: true,\n      guestInfo: null,\n    };\n  }\n  if (action.type === 'GuestInfo') {\n    return {\n      ...state,\n      loggedIn: true,\n      isLoading: false,\n      guestInfo: action.data,\n    };\n  }\n  if (action.type === 'SetAuthInfo') {\n    return {\n      ...state,\n      authInfo: action.data,\n    };\n  }\n  return state;\n}\n\nexport function AuthProvider({\n  authClient,\n  children,\n  onLoginAttempt,\n  onLogout,\n  initialState,\n}: {\n  authClient: AuthClient;\n  children: React.ReactNode;\n  onLoginAttempt?: (response: LoginResponse) => Promise<AuthInfo>;\n  onLogout?: () => Promise<AuthInfo>;\n  initialState?: AuthInfo;\n}) {\n  const [state, dispatch] = useReducer<typeof reducer>(reducer, {\n    authClient,\n    loggedIn: !!authClient.getIsLoggedIn(),\n    isLoading: authClient.getIsLoggedIn(),\n    guestInfo: null,\n    authInfo: initialState,\n  });\n\n  const mounted = useRef<boolean>(false);\n  const safeDispatch = useCallback(function (v: Parameters<typeof dispatch>[0]) {\n    if (mounted.current) {\n      dispatch(v);\n    }\n  }, []);\n  useEffect(() => {\n    mounted.current = true;\n    return () => {\n      mounted.current = false;\n    };\n  }, []);\n\n  useEffect(() => {\n    function logoutCb() {\n      safeDispatch({\n        type: 'logout',\n      });\n      onLogout?.()\n        .then((info) => safeDispatch({ type: 'SetAuthInfo', data: info }))\n        .catch((error: Error) => logWarning('AUTH_ON_LOGOUT', error));\n    }\n    function loginFaliureCb() {\n      safeDispatch({\n        type: 'logout',\n      });\n    }\n    function loginSuccessCb(response: LoginResponse) {\n      flushSync(() =>\n        safeDispatch({\n          type: 'StartFetchingGuestInfo',\n        })\n      );\n\n      onLoginAttempt?.(response)\n        .then((info) => safeDispatch({ type: 'SetAuthInfo', data: info }))\n        .catch((error: Error) => logWarning('AUTH_ON_LOGIN_ATTEMPT', error));\n      authClient\n        .getGuestInfo()\n        ?.then((info) => {\n          if (info) {\n            safeDispatch({\n              type: 'GuestInfo',\n              data: info?.guest,\n            });\n          } else {\n            safeDispatch({\n              type: 'logout',\n            });\n          }\n        })\n        .catch((error: Error) => logWarning('AUTH_GET_GUEST_INFO', error));\n    }\n    authClient.on('logout', logoutCb);\n    authClient.on('loginSuccess', loginSuccessCb);\n    authClient.on('loginFailure', loginFaliureCb);\n\n    authClient\n      .getGuestInfo()\n      ?.then((info) => {\n        if (info?.guest) {\n          safeDispatch({\n            type: 'GuestInfo',\n            data: info?.guest,\n          });\n        } else {\n          safeDispatch({\n            type: 'logout',\n          });\n        }\n      })\n      .catch((error: Error) => logWarning('AUTH_GET_GUEST_INFO', error));\n\n    return () => {\n      authClient.off('logout', logoutCb);\n      authClient.off('loginSuccess', loginSuccessCb);\n      authClient.off('loginFailure', loginFaliureCb);\n    };\n  }, [authClient, onLoginAttempt, onLogout, safeDispatch]);\n\n  const value = {\n    authClient,\n    isAuthenticated: state.loggedIn,\n    logout: () => authClient.logout(),\n    login: (response: LoginResponse) => authClient.login(response),\n    refreshGuestInfo: () => authClient.refreshGuestInfo(),\n    guestInfo: state.guestInfo,\n    authInfo: state.authInfo,\n    guestId: authClient.getGuestId() || null,\n    isLoading: state.isLoading,\n    isCorpUser: authClient.isCorpUser(),\n  };\n\n  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n\nexport function useAuth() {\n  const context = React.useContext(AuthContext);\n  if (context === undefined) {\n    throw new Error(`useAuth must be used within a AuthProvider`);\n  }\n  return context;\n}\n","const VALID_SAME_SITES = ['none', 'lax', 'strict'];\n\nfunction getDefaultDomain() {\n  // eslint-disable-next-line no-restricted-globals\n  return location.hostname === 'localhost' ? 'localhost' : '.hilton.com';\n}\n\nexport const setCookie = (\n  name: string,\n  value: string,\n  expires: number | null,\n  path = '',\n  domain = 'hilton.com',\n  secure = true,\n  escape = true,\n  sameSite = 'lax'\n) => {\n  if (undefined === domain) {\n    domain = getDefaultDomain();\n  }\n\n  if (sameSite !== 'lax' && sameSite !== null) {\n    sameSite = sameSite.toLowerCase();\n\n    if (!VALID_SAME_SITES.includes(sameSite)) {\n      throw new TypeError(`sameSite must be one of the following: ${VALID_SAME_SITES}`);\n    }\n  }\n\n  // set time, it's in milliseconds\n  const today = new Date(Date.now());\n\n  /*\n  if the expires variable is set, make the correct\n  expires time, the current script below will set\n  it for x number of days, to make it for hours,\n  delete * 24, for minutes, delete * 60 * 24\n  */\n  if (expires) {\n    expires = expires * 1000 * 60 * 60 * 24;\n  }\n  const expires_date = new Date(today.getTime() + (expires ?? 0));\n\n  const cookieValue = escape ? encodeURIComponent(value) : value;\n\n  document.cookie =\n    name +\n    '=' +\n    cookieValue +\n    (expires ? ';expires=' + expires_date.toUTCString() : '') +\n    (path ? ';path=' + path : '') +\n    (domain ? ';domain=' + domain : '') +\n    (secure ? ';secure' : '') +\n    (sameSite ? ';sameSite=' + sameSite : '');\n};\n\nexport const getCookie = (cname: string) => {\n  const name = cname + '=';\n  const ca = document.cookie.split(';');\n  for (let i = 0; i < ca.length; i++) {\n    let c = ca[i];\n    while (c?.charAt(0) === ' ') {\n      c = c?.substring(1);\n    }\n    if (c?.indexOf(name) === 0) {\n      return decodeURIComponent(c.substring(name.length, c.length));\n    }\n  }\n  return '';\n};\n\nexport const deleteCookie = (name: string, path: string, domain?: string) => {\n  if (undefined === domain) {\n    domain = getDefaultDomain();\n  }\n  if (getCookie(name))\n    document.cookie =\n      name +\n      '=' +\n      (path ? ';path=' + path : '') +\n      (domain ? ';domain=' + domain : '') +\n      ';expires=Thu, 01-Jan-1970 00:00:01 GMT';\n};\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const GuestDocument = {\n  operationName: 'guest',\n  operationString: `query guest($guestId: BigInt!, $language: String!) {\n  guest(guestId: $guestId, language: $language) {\n    guestId\n    userName\n    hhonors {\n      hhonorsNumber\n      isFamilyAndFriends\n      isLongTenure10\n      isSMBMember\n      isTeamMember\n      isTeamMemberSpouse\n      isOwner\n      isLongTenure20\n      isOwnerHGV\n      isOwnerHGVNew\n      programAccountSummary(filter: {accountStatus: \"active\"}) {\n        accountId\n        accountName\n      }\n      summary {\n        points: totalPointsFmt\n        tier\n        tierName\n        totalPoints\n        totalPointsFmt\n      }\n      packages {\n        packageName\n      }\n    }\n    personalinfo {\n      name {\n        firstName @toTitleCase\n        lastName @toTitleCase\n        nameFmt @toTitleCase\n        nameLocalizations {\n          firstName\n          lastName\n          nameFmt\n        }\n      }\n      emails(filter: {preferred: true}) {\n        emailAddressHashed\n      }\n    }\n  }\n}`,\n  originalOpName: 'guest',\n};\nexport function useGuestQuery<TData = Types.GuestQuery, TError = DXError>(\n  variables: Types.GuestQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GuestQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GuestQuery, TError, TData>({\n    queryKey: [GuestDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGuestQuery(\n  queryClient: QueryClient,\n  variables: Types.GuestQueryVariables,\n  options?: FetchQueryOptions<Types.GuestQuery>\n) {\n  return queryClient.fetchQuery<Types.GuestQuery>({\n    queryKey: [GuestDocument, variables],\n    ...options,\n  });\n}\n","import { EventEmitter } from 'events';\nimport type { CookieSetOptions } from 'universal-cookie';\nimport Cookies from 'universal-cookie';\nimport { setCookie } from './cookie-utils';\nimport type { GuestQuery, GuestQueryVariables } from './gql/types';\nimport { GuestDocument } from './gql/queries';\nimport type { AuthResponse, LoginResponse, WSO2TokenCookie, WebGuestMetadataCookie } from './types';\nimport type { IncomingMessage, OutgoingMessage } from 'http';\nimport { mergeCacheControl } from '@dx-ui/framework-merge-cache-control';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { logError, logInfo } from '@dx-ui/framework-logger';\nimport { triggerInCompleteEvent, isQueryIncomplete } from '@dx-ui/framework-incomplete-event';\n\ntype AuthArgs = {\n  authEndpoint: string;\n  gqlEndpoint: string;\n  request?: IncomingMessage;\n  response?: OutgoingMessage | null;\n  minExpiresTTL?: number;\n  appId: string;\n  restore?: Extract;\n  ssr?: boolean;\n  appName: string;\n  language?: string;\n};\n\nexport type Extract = {\n  guestInfo?: GuestQuery | null;\n  authenticationCookie: WSO2TokenCookie | null;\n};\n\ntype SessionHeaders = 'hltClientMessageId' | 'referer' | 'dx-platform' | 'hltClientSessionId';\n\nexport class AuthClient extends EventEmitter {\n  private cookies: Cookies;\n\n  public authEndpoint = '';\n\n  public gqlEndpoint = '';\n\n  public webGuestMetadataCookie: WebGuestMetadataCookie | null = null;\n\n  private authenticationCookie: WSO2TokenCookie | null = null;\n\n  private userRefreshTokenPromise: null | Promise<WSO2TokenCookie | null> = null;\n\n  private minExpiresTTL: number;\n\n  private requestTimeoutMs = 30000;\n\n  private appTokenPromise: null | Promise<WSO2TokenCookie | null> = null;\n\n  private appId = '';\n\n  private guestInfoPromise: Promise<null | GuestQuery> | null = null;\n\n  private serverResponse: null | OutgoingMessage | undefined;\n\n  private ssrMode = false;\n\n  private headers: Partial<Record<SessionHeaders, string>> | null = null;\n\n  private appName: string | null;\n\n  private language = 'en';\n\n  private attemptsToGetGuestInfo = 0;\n\n  public constructor({\n    authEndpoint,\n    gqlEndpoint,\n    minExpiresTTL,\n    appId,\n    request,\n    response,\n    restore,\n    ssr,\n    appName,\n    language,\n  }: AuthArgs) {\n    super();\n\n    this.cookies = new Cookies(request?.headers?.cookie);\n    // Force refresh Cookies.cookies private property\n    this.cookies.getAll();\n    this.authEndpoint = authEndpoint;\n    this.gqlEndpoint = gqlEndpoint;\n    this.minExpiresTTL = minExpiresTTL || 5 * 60;\n    this.appId = appId;\n    this.ssrMode = ssr ?? false;\n    this.serverResponse = response;\n    this.appName = appName || null;\n    this.language = language || 'en';\n    // check for refresh and do it if necessary\n    this.authenticationCookie = restore?.authenticationCookie ?? this.getTokensFromCookie();\n    this.webGuestMetadataCookie = this.cookies.get('webGuestMetadata');\n    this.headers = this.getRequestHeaders(request);\n\n    if (!this.webGuestMetadataCookie && this.authenticationCookie?.guestId) {\n      try {\n        if (this.shouldRefreshToken()) {\n          this.guestInfoPromise = this.refreshLoggedInUserToken().then(() => this.fetchGuestInfo());\n        } else {\n          this.guestInfoPromise = restore?.guestInfo\n            ? Promise.resolve(restore?.guestInfo)\n            : this.fetchGuestInfo();\n        }\n      } catch {\n        this.fetchAppToken().catch((error: Error) =>\n          logError(\n            'FRAMEWORK_AUTH_PROVIDER',\n            error,\n            'Calling fetchAppToken() when guestId exists on authenticationCookie.'\n          )\n        );\n      }\n    } else if (!this.webGuestMetadataCookie && this.isCorpUser()) {\n      // this is a corp user\n      if (this.shouldRefreshToken()) {\n        this.refreshLoggedInUserToken().catch((error: Error) =>\n          logError(\n            'FRAMEWORK_AUTH_PROVIDER',\n            error,\n            'Calling refreshLoggedInUserToken() when shouldRefreshToken returns true and isCorpUser() is true.'\n          )\n        );\n      }\n    } else {\n      this.fetchAppToken().catch((error: Error) =>\n        logError(\n          'FRAMEWORK_AUTH_PROVIDER',\n          error,\n          'Calling fetchAppToken() when guestId does not exist on authenticationCookie.'\n        )\n      );\n    }\n  }\n\n  /**\n   * @description is the user logged in (not anon user)\n   */\n  public getIsLoggedIn() {\n    if (this.webGuestMetadataCookie) {\n      return this.isCorpUser() || !!this.webGuestMetadataCookie.guestId;\n    }\n    return this.isCorpUser() || !!this.authenticationCookie?.guestId;\n  }\n\n  /**\n   * @description returns the guest endpoint\n   */\n  public getGqlEndpoint() {\n    return this.gqlEndpoint;\n  }\n\n  /**\n   * @description returns the auth endpoint\n   */\n  public getAuthEndpoint() {\n    return this.authEndpoint;\n  }\n\n  /**\n   * @description take all server side info, convert to json for later restore\n   */\n  public async extract(): Promise<Extract> {\n    if (this.getIsLoggedIn()) {\n      const guestInfo = await this.getGuestInfo();\n      return {\n        guestInfo,\n        authenticationCookie: this.authenticationCookie,\n      };\n    }\n\n    return {\n      authenticationCookie:\n        this.authenticationCookie?.tokenType === 'Bearer' ? this.authenticationCookie : null,\n    };\n  }\n\n  /**\n   * @description refresh the user (or app token), makes API calls to dx-auth-ui and stores a new token\n   */\n  public refreshToken(): Promise<null> {\n    if (this.webGuestMetadataCookie) {\n      return Promise.resolve(null);\n    }\n    // if logged in refresh the user token,\n    if (this.getAuthenticationCookie()?.guestId || this.isCorpUser()) {\n      return this.refreshLoggedInUserToken().then(() => null);\n    }\n    // otherwise fetch app token\n    return this.fetchAppToken().then(() => null);\n  }\n\n  /**\n   * @description get authorization header that should be sent along with all graphql requests. If logged in guest it will use guest's token, otherwise will use anon app token\n   */\n  public async getAuthorizationHeader() {\n    if (this.webGuestMetadataCookie) {\n      return Promise.resolve('');\n    }\n    // if refreshes are in flight wait\n    if (this.userRefreshTokenPromise) {\n      await this.userRefreshTokenPromise;\n    }\n    if (this.appTokenPromise) {\n      await this.appTokenPromise;\n    }\n    const token = this.getAuthenticationCookie();\n    if (token?.tokenType && token?.accessToken) {\n      return `${token?.tokenType} ${token?.accessToken}`;\n    }\n    // there is no token set, fallback to auth token\n    const apptoken = await this.fetchAppToken();\n    if (apptoken) {\n      return `${apptoken?.tokenType} ${apptoken?.accessToken}`;\n    }\n    // todo: figure out what to return if we can't get user token or auth token\n    return '';\n  }\n\n  /**\n   * @description get hltClientMessageId, referer, dx-platform, and hltClientSessionId headers\n   */\n  public getRequestHeaders(request?: IncomingMessage) {\n    const headers = {} as Partial<Record<SessionHeaders, string>>;\n    request?.rawHeaders?.forEach((value, index, array) => {\n      if (/^(hltClientMessageId|referer|dx-platform|hltClientSessionId)$/i.test(value)) {\n        headers[value as SessionHeaders] = array[index + 1];\n      }\n    });\n    return headers;\n  }\n\n  /**\n   * @description resulting promise for guest information\n   */\n  public getGuestInfo() {\n    return this.guestInfoPromise;\n  }\n\n  /**\n   * @description get guestId\n   */\n  public getGuestId() {\n    if (this.webGuestMetadataCookie) {\n      return this.webGuestMetadataCookie.guestId;\n    }\n    return this.authenticationCookie?.guestId;\n  }\n\n  private getAuthenticationCookie() {\n    return this.authenticationCookie;\n  }\n\n  public isCorpUser() {\n    if (this.webGuestMetadataCookie) {\n      return this.webGuestMetadataCookie.userRealm === 'corp';\n    }\n    return this.authenticationCookie?.userRealm === 'corp';\n  }\n\n  private getAppNameParam() {\n    return this.appId ? `?appName=${this.appName}` : '';\n  }\n\n  private refreshLoggedInUserToken() {\n    const guestId = this.getAuthenticationCookie()?.guestId;\n    // no guestId, nothing to refresh\n    if (!guestId && !this.isCorpUser()) {\n      return Promise.resolve(null);\n    }\n    if (this.userRefreshTokenPromise) {\n      return this.userRefreshTokenPromise;\n    }\n    const currentToken = this.getAuthenticationCookie();\n    this.userRefreshTokenPromise = fetch(\n      `${this.authEndpoint}/dx-customer/auth/${\n        this.isCorpUser() ? 'corp' : 'guests'\n      }/refresh${this.getAppNameParam()}`,\n      {\n        method: 'POST',\n        cache: 'no-cache',\n        headers: {\n          ...this.headers,\n          'Content-type': 'application/json; charset=utf-8',\n          Accept: 'application/json; charset=utf-8',\n          Authorization: `${currentToken?.tokenType} ${currentToken?.accessToken}`,\n        },\n      }\n    ).then(async (res) => {\n      if (!res.ok) {\n        // logout\n        this.invalidateSession();\n\n        return this.getAuthenticationCookie();\n      }\n\n      const json = await res.json();\n\n      if (json.error) {\n        this.invalidateSession();\n        return this.getAuthenticationCookie();\n      }\n      const { UserClaims, ...rest } = json;\n\n      // save to cookies\n      this.setUserSessionData({\n        userInfo: UserClaims,\n        tokenInfo: { ...rest },\n      });\n      // save to this instance\n      this.authenticationCookie = {\n        guestId: this.authenticationCookie?.guestId || null,\n        accessToken: rest.access_token,\n        expiresIn: rest.expires_in,\n        tokenType: rest.token_type,\n        timestamp: Date.now(),\n        userRealm: UserClaims?.userRealm,\n      };\n      this.userRefreshTokenPromise = null;\n      return this.getAuthenticationCookie();\n    });\n    return this.userRefreshTokenPromise;\n  }\n\n  public updateAccessToken(accessToken: string) {\n    if (this.webGuestMetadataCookie) {\n      return;\n    }\n    const currentAuthenticationCookie = this.getAuthenticationCookie();\n    if (currentAuthenticationCookie) {\n      const updatedWso2AuthTokenCookie = { ...currentAuthenticationCookie, accessToken };\n      if (isBrowser) this.setwso2AuthTokenCookie(updatedWso2AuthTokenCookie);\n      this.authenticationCookie = updatedWso2AuthTokenCookie;\n    }\n  }\n\n  public async login({ data, error }: LoginResponse) {\n    // let the appToken finish processing, if necessary, so that appTokenPromise, doesn't resolve and overwrite the authentication token\n    if (this.appTokenPromise) {\n      await this.appTokenPromise;\n    }\n    if (data) {\n      this.setUserSessionData(data);\n\n      if (!this.webGuestMetadataCookie) {\n        this.authenticationCookie = this.authResponseToAuthCookie(data);\n      }\n\n      this.guestInfoPromise = this.fetchGuestInfo();\n      await this.guestInfoPromise;\n\n      this.emit('loginSuccess', data);\n    }\n    if (error) {\n      this.emit('loginFailure', error);\n    }\n  }\n\n  public async logout({ redirectToLoginPage }: { redirectToLoginPage?: boolean } = {}) {\n    const logoutUrl = `${this.authEndpoint}/dx-customer/auth/${\n      this.isCorpUser() ? 'corp' : 'guests'\n    }/logout${this.getAppNameParam()}`;\n    const authorization = await this.getAuthorizationHeader();\n\n    await fetch(logoutUrl, {\n      method: 'POST',\n      cache: 'no-cache',\n      headers: {\n        ...this.headers,\n        'Content-type': 'application/json; charset=utf-8',\n        Accept: 'application/json; charset=utf-8',\n        ...(!this.webGuestMetadataCookie && { Authorization: authorization }),\n        credentials: 'include',\n      },\n    });\n\n    // In anonymous session user cannot be part of SMB program. Clear out value from localStorage if it exists\n    if (isBrowser) {\n      window.localStorage.removeItem('smbContext');\n      window.localStorage.removeItem('smbProgramId');\n    }\n\n    this.invalidateSession();\n    if (redirectToLoginPage) {\n      this.redirectToLoginPage();\n    }\n  }\n\n  private redirectToLoginPage() {\n    if (typeof window !== 'undefined') {\n      const url = `/${this.language}/${\n        this.isCorpUser() ? `auth2/api/saml/logout/${this.appName}/` : 'hilton-honors/login/'\n      }`;\n      window.location.assign(url);\n    }\n  }\n\n  private invalidateSession() {\n    this.guestInfoPromise = null;\n    this.cookies.remove('wso2AuthToken', {\n      path: '/',\n      domain: '.hilton.com',\n      secure: false,\n      sameSite: 'lax',\n    });\n    this.cookies.remove('authentication', {\n      path: '/',\n      domain: '.hilton.com',\n      secure: true,\n    });\n    this.cookies.remove('loggedIn', {\n      path: '/',\n      domain: '.hilton.com',\n      secure: true,\n    });\n    this.cookies.remove('fname', {\n      path: '/',\n      domain: '.hilton.com',\n      secure: true,\n    });\n\n    this.webGuestMetadataCookie = null;\n    this.authenticationCookie = null;\n    this.emit('logout');\n  }\n\n  private authResponseToAuthCookie(data: AuthResponse) {\n    const authenticationCookie: WSO2TokenCookie = {\n      accessToken: data?.tokenInfo?.access_token,\n      expiresIn: data?.tokenInfo?.expires_in,\n      tokenType: data?.tokenInfo?.token_type,\n      timestamp: Date.now(),\n      guestId: data?.userInfo?.guestId || null,\n    };\n\n    return authenticationCookie;\n  }\n\n  /**\n   * For backwards compatability and to keep our header size small we're using wso2Cookie,\n   * even though it actually contains a dx-auth-api token\n   * @param data\n   */\n  private setWso2Cookie(data: AuthResponse) {\n    if (typeof window !== 'undefined') {\n      const wso2Cookie: WSO2TokenCookie = {\n        accessToken: data.tokenInfo.access_token,\n        expiresIn: data.tokenInfo.expires_in,\n        tokenType: data.tokenInfo.token_type,\n        timestamp: Date.now(),\n        guestId: data.userInfo?.guestId || null,\n      };\n      this.setwso2AuthTokenCookie(wso2Cookie);\n      // - end of the madness\n    }\n  }\n\n  private setwso2AuthTokenCookie(wso2Cookie: WSO2TokenCookie) {\n    // using this cookie package because we do NOT want to use encodeURIComponent when setting\n    setCookie(\n      'wso2AuthToken',\n      JSON.stringify(wso2Cookie),\n      null,\n      '/',\n      '.hilton.com',\n      true,\n      false,\n      'lax'\n    );\n  }\n\n  private setUserSessionData(data: AuthResponse) {\n    this.webGuestMetadataCookie = this.cookies.get('webGuestMetadata');\n\n    if (!this.webGuestMetadataCookie) {\n      this.setWso2Cookie(data);\n    }\n\n    this.setCookie('loggedIn', true, {\n      path: '/',\n      domain: '.hilton.com',\n      secure: true,\n    });\n  }\n\n  private shouldRefreshToken() {\n    const token = this.getAuthenticationCookie();\n    if (!token) {\n      return true;\n    }\n    const timeout = token?.expiresIn + token?.timestamp;\n    return timeout ? timeout - Date.now() / 1000 <= this.minExpiresTTL : true;\n  }\n\n  private getTokensFromCookie() {\n    // first read from authentication if it exists and use that\n    const authenticationCookie: AuthResponse = this.cookies.get('authentication');\n    if (authenticationCookie && authenticationCookie?.userInfo?.guestId) {\n      const wso2AuthShape: WSO2TokenCookie = {\n        accessToken: authenticationCookie.tokenInfo?.access_token,\n        expiresIn: authenticationCookie?.tokenInfo?.expires_in,\n        timestamp: Date.now(),\n        tokenType: authenticationCookie?.tokenInfo?.token_type,\n        guestId: authenticationCookie?.userInfo?.guestId,\n      };\n      return wso2AuthShape;\n    }\n\n    // otherwise fallback to reading wso2AuthToken\n    const wso2AuthToken: WSO2TokenCookie = this.cookies.get('wso2AuthToken');\n    if (wso2AuthToken) {\n      return wso2AuthToken;\n    }\n    return null;\n  }\n\n  private fetchAppToken() {\n    if (this.ssrMode) {\n      // resolve basic auth\n      this.appTokenPromise = Promise.resolve({\n        accessToken: Buffer.from(`${this.appId}:${this.appId}`).toString('base64'),\n        expiresIn: Date.now() / 1000 + 3600,\n        tokenType: 'Basic',\n        timestamp: Date.now(),\n        guestId: null,\n      });\n    }\n    if (this.appTokenPromise) {\n      return this.appTokenPromise;\n    }\n\n    this.appTokenPromise = fetch(\n      `${this.authEndpoint}/dx-customer/auth/applications/token${this.getAppNameParam()}`,\n      {\n        method: 'POST',\n        cache: 'no-cache',\n        headers: {\n          ...this.headers,\n          'Content-type': 'application/json; charset=utf-8',\n          Accept: 'application/json; charset=utf-8',\n          credentials: 'include',\n        },\n        body: JSON.stringify({\n          app_id: this.appId,\n        }),\n      }\n    ).then(async (resp) => {\n      if (resp.ok) {\n        if (this.cookies.get('webGuestMetadata')) {\n          this.webGuestMetadataCookie = this.cookies.get('webGuestMetadata');\n          return null;\n        }\n        const json = await resp.json();\n        this.authenticationCookie = {\n          accessToken: json.access_token,\n          expiresIn: json.expires_in,\n          tokenType: json.token_type,\n          timestamp: Date.now(),\n          guestId: null,\n        };\n\n        this.appTokenPromise = null;\n        return this.authenticationCookie;\n      }\n      this.appTokenPromise = null;\n      return null;\n    });\n    return this.appTokenPromise;\n  }\n\n  private setCookie(\n    name: string,\n    value: unknown,\n    options: CookieSetOptions = {\n      path: '/',\n      domain: '.hilton.com',\n      secure: true,\n    }\n  ) {\n    try {\n      this.cookies.set(name, value, options);\n      // eslint-disable-next-line no-empty\n    } catch {}\n  }\n\n  public async refreshGuestInfo(): Promise<void> {\n    if (this.webGuestMetadataCookie) {\n      return;\n    }\n    this.guestInfoPromise = this.fetchGuestInfo();\n    await this.guestInfoPromise;\n  }\n\n  private async fetchGuestInfo(): Promise<GuestQuery | null> {\n    if (this.attemptsToGetGuestInfo > 2) {\n      if (this.webGuestMetadataCookie) {\n        await this.logout();\n        return null;\n      }\n      this.invalidateSession();\n      return null;\n    }\n    const userAuth = this.getAuthenticationCookie();\n    const guestId = userAuth?.guestId || this.webGuestMetadataCookie?.guestId;\n    const authHeader = await this.getAuthorizationHeader();\n    if (!this.getIsLoggedIn() || !guestId) {\n      return null;\n    }\n    const variables: GuestQueryVariables = {\n      guestId,\n      language: this.language,\n    };\n    const requestInit = {\n      headers: {\n        ...this.headers,\n        'Content-type': 'application/json; charset=utf-8',\n        Accept: 'application/json; charset=utf-8',\n        ...(!this.webGuestMetadataCookie && { Authorization: authHeader }),\n        credentials: 'include',\n      },\n    };\n    this.attemptsToGetGuestInfo++;\n\n    const controller = new AbortController();\n    const abortTimeout = setTimeout(() => controller.abort(), this.requestTimeoutMs);\n    const requestUrl = `${this.gqlEndpoint}${this.getAppNameParam()}&operationName=guest`;\n    const res = await fetch(requestUrl, {\n      method: 'POST',\n      ...requestInit,\n      body: JSON.stringify({\n        query: GuestDocument.operationString,\n        variables,\n        operationName: 'guest',\n      }),\n      signal: controller.signal,\n    }).catch((error: Error) => {\n      logInfo('AUTH_CLIENT_FETCH_GUEST_INFO', error, `fetchGuestInfo() requestUrl: ${requestUrl}`);\n      return null;\n    });\n    clearTimeout(abortTimeout);\n\n    if (!res) {\n      return null;\n    }\n\n    if (isQueryIncomplete(res)) {\n      triggerInCompleteEvent({\n        requestBody: {\n          operationName: 'guest-authClient',\n          originalOpName: 'guest',\n        },\n      });\n    }\n\n    if (!res.ok) {\n      if (!this.webGuestMetadataCookie && res.status === 401) {\n        if (this.attemptsToGetGuestInfo <= 1) {\n          await this.refreshToken().catch((error: Error) => {\n            logInfo('AUTH_CLIENT_FETCH_GUEST_INFO', error, 'fetchGuestInfo()');\n            return null;\n          });\n        } else {\n          return null;\n        }\n      }\n      if (this.webGuestMetadataCookie) {\n        await this.logout();\n        return null;\n      }\n      return this.fetchGuestInfo();\n    }\n    mergeCacheControl(res, this.serverResponse || undefined);\n\n    const json = await res.json();\n    if (json.errors) {\n      await this.refreshToken();\n    }\n    this.attemptsToGetGuestInfo = 0;\n\n    return json.data;\n  }\n}\n","import type { IncomingMessage, OutgoingMessage } from 'http';\nimport type { Extract } from './auth-client';\nimport { AuthClient } from './auth-client';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport interface GqlEndpoints {\n  browser: string;\n  server: string;\n}\n\nexport interface AuthEndpoints {\n  browser: string;\n  server: string;\n}\n\nexport type MakeAuthClientArgs = {\n  appId: string;\n  appName: string;\n  authEndpoints: AuthEndpoints;\n  gqlEndpoints: GqlEndpoints;\n  request?: IncomingMessage;\n  response?: OutgoingMessage;\n  restore?: Extract;\n  ssrMode?: boolean;\n};\n\nexport function makeAuthClient({\n  appName,\n  request,\n  restore,\n  ssrMode,\n  response,\n  authEndpoints,\n  gqlEndpoints,\n  appId,\n}: MakeAuthClientArgs) {\n  return new AuthClient({\n    appName,\n    request,\n    restore,\n    authEndpoint: isBrowser ? authEndpoints?.browser : authEndpoints?.server,\n    appId,\n    gqlEndpoint: isBrowser ? gqlEndpoints?.browser : gqlEndpoints?.server,\n    ssr: ssrMode,\n    response,\n  });\n}\n","/* istanbul ignore file */\nexport * from './auth-provider';\nexport * from './auth-context';\nexport * from './auth-client';\nexport * from './cookie-utils';\nexport * from './types';\nexport * from './gql/types';\nexport * from './gql/queries';\nexport * from './make-auth-client';\nexport * from './guest-utils';\n","/* istanbul ignore file */\nexport * from './lib';\n","import { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { EnvKeys, PublicEnv } from './types';\n\n/**\n * Isomorphic function that returns all environment variables.\n * @note This is only available on the client when the `EnvScript` component is used.\n */\nexport function allEnv() {\n  return isBrowser ? getClientEnv() : getServerEnv();\n}\n\n/**\n * Isomorphic getter that returns a specific environment variable.\n * @note This is only available on the client when the `EnvScript` component is used.\n * @param key\n */\nexport function env(key: EnvKeys, defaultValue?: string) {\n  return allEnv()[key] || defaultValue || '';\n}\n\nfunction getClientEnv() {\n  if (!window.__ENV && window.__NEXT_DATA__?.buildId === 'development') {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Environment variables are not available.  Did you forget to include the `EnvScript` component?'\n    );\n  }\n  return window.__ENV || {};\n}\n\nfunction getServerEnv() {\n  return process.env as unknown as PublicEnv;\n}\n","export * from './default-public-vars';\nexport * from './helpers';\nexport * from './types';\n","export * from './lib';\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n  each.call(slice.call(arguments, 1), function (source) {\n    if (source) {\n      for (var prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nexport function hasXMLHttpRequest() {\n  return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\n\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch;\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch;\n  }\n}\n\nvar XmlHttpRequestApi;\n\nif (hasXMLHttpRequest) {\n  if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n    XmlHttpRequestApi = global.XMLHttpRequest;\n  } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n    XmlHttpRequestApi = window.XMLHttpRequest;\n  }\n}\n\nvar ActiveXObjectApi;\n\nif (typeof ActiveXObject === 'function') {\n  if (typeof global !== 'undefined' && global.ActiveXObject) {\n    ActiveXObjectApi = global.ActiveXObject;\n  } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n    ActiveXObjectApi = window.ActiveXObject;\n  }\n}\n\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\n\nvar addQueryString = function addQueryString(url, params) {\n  if (params && _typeof(params) === 'object') {\n    var queryString = '';\n\n    for (var paramName in params) {\n      queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n    }\n\n    if (!queryString) return url;\n    url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n  }\n\n  return url;\n};\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n  if (payload) headers['Content-Type'] = 'application/json';\n  fetchApi(url, defaults({\n    method: payload ? 'POST' : 'GET',\n    body: payload ? options.stringify(payload) : undefined,\n    headers: headers\n  }, typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions)).then(function (response) {\n    if (!response.ok) return callback(response.statusText || 'Error', {\n      status: response.status\n    });\n    response.text().then(function (data) {\n      callback(null, {\n        status: response.status,\n        data: data\n      });\n    }).catch(callback);\n  }).catch(callback);\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n  if (payload && _typeof(payload) === 'object') {\n    payload = addQueryString('', payload).slice(1);\n  }\n\n  if (options.queryStringParams) {\n    url = addQueryString(url, options.queryStringParams);\n  }\n\n  try {\n    var x;\n\n    if (XmlHttpRequestApi) {\n      x = new XmlHttpRequestApi();\n    } else {\n      x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n    }\n\n    x.open(payload ? 'POST' : 'GET', url, 1);\n\n    if (!options.crossDomain) {\n      x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n    }\n\n    x.withCredentials = !!options.withCredentials;\n\n    if (payload) {\n      x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    if (x.overrideMimeType) {\n      x.overrideMimeType('application/json');\n    }\n\n    var h = options.customHeaders;\n    h = typeof h === 'function' ? h() : h;\n\n    if (h) {\n      for (var i in h) {\n        x.setRequestHeader(i, h[i]);\n      }\n    }\n\n    x.onreadystatechange = function () {\n      x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n        status: x.status,\n        data: x.responseText\n      });\n    };\n\n    x.send(payload);\n  } catch (e) {\n    console && console.log(e);\n  }\n};\n\nvar request = function request(options, url, payload, callback) {\n  if (typeof payload === 'function') {\n    callback = payload;\n    payload = undefined;\n  }\n\n  callback = callback || function () {};\n\n  if (fetchApi) {\n    return requestWithFetch(options, url, payload, callback);\n  }\n\n  if (hasXMLHttpRequest || typeof ActiveXObject === 'function') {\n    return requestWithXmlHttpRequest(options, url, payload, callback);\n  }\n};\n\nexport default request;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { defaults } from './utils.js';\nimport request from './request.js';\n\nvar getDefaults = function getDefaults() {\n  return {\n    loadPath: '/locales/{{lng}}/{{ns}}.json',\n    addPath: '/locales/add/{{lng}}/{{ns}}',\n    allowMultiLoading: false,\n    parse: function parse(data) {\n      return JSON.parse(data);\n    },\n    stringify: JSON.stringify,\n    parsePayload: function parsePayload(namespace, key, fallbackValue) {\n      return _defineProperty({}, key, fallbackValue || '');\n    },\n    request: request,\n    reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n    customHeaders: {},\n    queryStringParams: {},\n    crossDomain: false,\n    withCredentials: false,\n    overrideMimeType: false,\n    requestOptions: {\n      mode: 'cors',\n      credentials: 'same-origin',\n      cache: 'default'\n    }\n  };\n};\n\nvar Backend = function () {\n  function Backend(services) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    _classCallCheck(this, Backend);\n\n    this.services = services;\n    this.options = options;\n    this.allOptions = allOptions;\n    this.type = 'backend';\n    this.init(services, options, allOptions);\n  }\n\n  _createClass(Backend, [{\n    key: \"init\",\n    value: function init(services) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.services = services;\n      this.options = defaults(options, this.options || {}, getDefaults());\n      this.allOptions = allOptions;\n\n      if (this.services && this.options.reloadInterval) {\n        setInterval(function () {\n          return _this.reload();\n        }, this.options.reloadInterval);\n      }\n    }\n  }, {\n    key: \"readMulti\",\n    value: function readMulti(languages, namespaces, callback) {\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath(languages, namespaces);\n      }\n\n      var url = this.services.interpolator.interpolate(loadPath, {\n        lng: languages.join('+'),\n        ns: namespaces.join('+')\n      });\n      this.loadUrl(url, callback, languages, namespaces);\n    }\n  }, {\n    key: \"read\",\n    value: function read(language, namespace, callback) {\n      var loadPath = this.options.loadPath;\n\n      if (typeof this.options.loadPath === 'function') {\n        loadPath = this.options.loadPath([language], [namespace]);\n      }\n\n      var url = this.services.interpolator.interpolate(loadPath, {\n        lng: language,\n        ns: namespace\n      });\n      this.loadUrl(url, callback, language, namespace);\n    }\n  }, {\n    key: \"loadUrl\",\n    value: function loadUrl(url, callback, languages, namespaces) {\n      var _this2 = this;\n\n      this.options.request(this.options, url, undefined, function (err, res) {\n        if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n        if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n        if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n        if (err) return callback(err, false);\n        var ret, parseErr;\n\n        try {\n          if (typeof res.data === 'string') {\n            ret = _this2.options.parse(res.data, languages, namespaces);\n          } else {\n            ret = res.data;\n          }\n        } catch (e) {\n          parseErr = 'failed parsing ' + url + ' to json';\n        }\n\n        if (parseErr) return callback(parseErr, false);\n        callback(null, ret);\n      });\n    }\n  }, {\n    key: \"create\",\n    value: function create(languages, namespace, key, fallbackValue, callback) {\n      var _this3 = this;\n\n      if (!this.options.addPath) return;\n      if (typeof languages === 'string') languages = [languages];\n      var payload = this.options.parsePayload(namespace, key, fallbackValue);\n      var finished = 0;\n      var dataArray = [];\n      var resArray = [];\n      languages.forEach(function (lng) {\n        var addPath = _this3.options.addPath;\n\n        if (typeof _this3.options.addPath === 'function') {\n          addPath = _this3.options.addPath(lng, namespace);\n        }\n\n        var url = _this3.services.interpolator.interpolate(addPath, {\n          lng: lng,\n          ns: namespace\n        });\n\n        _this3.options.request(_this3.options, url, payload, function (data, res) {\n          finished += 1;\n          dataArray.push(data);\n          resArray.push(res);\n\n          if (finished === languages.length) {\n            if (callback) callback(dataArray, resArray);\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      var _this4 = this;\n\n      var _this$services = this.services,\n          backendConnector = _this$services.backendConnector,\n          languageUtils = _this$services.languageUtils,\n          logger = _this$services.logger;\n      var currentLanguage = backendConnector.language;\n      if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n      var toLoad = [];\n\n      var append = function append(lng) {\n        var lngs = languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(function (l) {\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n\n      append(currentLanguage);\n      if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n        return append(l);\n      });\n      toLoad.forEach(function (lng) {\n        _this4.allOptions.ns.forEach(function (ns) {\n          backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n            if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n            if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n            backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n          });\n        });\n      });\n    }\n  }]);\n\n  return Backend;\n}();\n\nBackend.type = 'backend';\nexport default Backend;","import type { SSRConfig, UserConfig } from 'next-i18next';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { appWithTranslation as nextI18NextAppWithTranslation } from 'next-i18next';\nimport type { AppProps } from 'next/app';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport i18nextHttpBackend from 'i18next-http-backend';\nimport type { OneLinkPageProps } from './util';\n\nexport function appWithTranslation<Props extends AppProps<SSRConfig & OneLinkPageProps>>(\n  ...[WrappedComponent, rest]: Parameters<typeof nextI18NextAppWithTranslation<Props>>\n) {\n  const I18nFrameworkAppWithTranslation = (props: Props) => {\n    const language = props.router.locale || 'en';\n    const { _nextI18Next, appName, isOneLink, oneLinkConfig } = props.pageProps || {};\n\n    if (isBrowser && appName && _nextI18Next?.userConfig && oneLinkConfig) {\n      const appPath = oneLinkConfig?.appPaths?.[appName];\n      if (appPath) {\n        if (isOneLink) {\n          const browserLocalePrefix = !!language && language !== 'en' ? `/${language}` : '';\n          const browserLocalePath = `${browserLocalePrefix}/${appPath}/locales`;\n          _nextI18Next.userConfig = {\n            ..._nextI18Next.userConfig,\n            use: [i18nextHttpBackend],\n            backend: {\n              loadPath: `${browserLocalePath}/en/{{ns}}.json`,\n              addPath: `${browserLocalePath}/en/{{ns}}.missing.json`,\n            },\n          };\n        } else {\n          _nextI18Next.userConfig = {\n            ..._nextI18Next.userConfig,\n            use: [i18nextHttpBackend],\n            backend: {\n              loadPath: `/${appPath}/locales/{{lng}}/{{ns}}.json`,\n              addPath: `/${appPath}/locales/{{lng}}/{{ns}}.missing.json`,\n            },\n          };\n        }\n      }\n    }\n\n    const userConfig =\n      rest || _nextI18Next?.userConfig?.i18n\n        ? { ...rest, ...(_nextI18Next?.userConfig as UserConfig) }\n        : undefined;\n\n    return nextI18NextAppWithTranslation(WrappedComponent, userConfig)(props);\n  };\n\n  return hoistNonReactStatics(I18nFrameworkAppWithTranslation, WrappedComponent);\n}\n","const commaOverrides = {\n  ar: '،',\n  ja: '、',\n  'zh-hans': '、',\n  'zh-hant': '、',\n};\n\nexport function getLocaleComma({ locale }: { locale: string }) {\n  return commaOverrides[locale as keyof typeof commaOverrides] || ',';\n}\n\nexport const getIntlNumberLocale = (locale: string) => {\n  if (locale === 'ar') {\n    return 'ar-ae';\n  }\n  return locale;\n};\n\nexport function getLocaleFormattedNumber(\n  value: number | null | undefined,\n  { locale, options }: { locale: string; options?: Intl.NumberFormatOptions }\n) {\n  return typeof value === 'number'\n    ? Intl.NumberFormat(getIntlNumberLocale(locale), options).format(value)\n    : '';\n}\n","import type * as Types from './types';\n\nimport {\n  useQuery,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const FeatureConfigsDocument = {\n  operationName: 'featureConfigs',\n  operationString: `query featureConfigs($names: [String!]) {\n  featureConfigs(names: $names) {\n    name\n    conditions\n    config\n  }\n}`,\n  originalOpName: 'featureConfigs',\n};\nexport function useFeatureConfigsQuery<TData = Types.FeatureConfigsQuery, TError = DXError>(\n  variables?: Types.FeatureConfigsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.FeatureConfigsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.FeatureConfigsQuery, TError, TData>({\n    queryKey: [FeatureConfigsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideFeatureConfigsQuery(\n  queryClient: QueryClient,\n  variables?: Types.FeatureConfigsQueryVariables,\n  options?: FetchQueryOptions<Types.FeatureConfigsQuery>\n) {\n  return queryClient.fetchQuery<Types.FeatureConfigsQuery>({\n    queryKey: [FeatureConfigsDocument, variables],\n    ...options,\n  });\n}\n","import type { Rule } from '@dx-shared/rule-engine';\nimport { RuleEngine } from '@dx-shared/rule-engine';\nimport type { QueryClient } from '@tanstack/react-query';\nimport { serverSideFeatureConfigsQuery } from '../generated/queries';\nimport type { SupportedLanguage } from './types';\n\nexport type TranslatedUrlProps = {\n  /** path of the url to evaluate in the RuleEngine. */\n  path: string;\n  /** Langauge to be used for evaluating whether the `path` is translated or not. */\n  locale: SupportedLanguage;\n  /** name of the feature config rule used to obtain the rule conditions. */\n  rule: string;\n  /** The default language. if the `locale` and the `defaultLocale` are the same returns true. */\n  defaultLocale?: SupportedLanguage;\n  /** react-query client used to perform the query to get the conditions */\n  queryClient: QueryClient;\n};\n\nexport type LegacyTranslatedUrlProps = Omit<TranslatedUrlProps, 'queryClient'> & {\n  endpoint: string;\n  appName: string;\n};\n\n/**\n * Determines if a url has been translated. This determination is performed by the [RuleEngine](https://gitlab.svc-m.hhc.hilton.com/pac/hiw/dx-shared/-/tree/develop/packages/rule-engine) and is run with two facts:\n * - url - @see path\n * - language - @see locale\n *\n * @returns boolean - whether the `path` has been translated for `locale`\n */\nexport async function isTranslatedUrl({\n  path,\n  locale,\n  rule,\n  queryClient,\n  defaultLocale = 'en',\n}: TranslatedUrlProps) {\n  if (locale === defaultLocale) {\n    return true;\n  }\n  // Prevent errant 404s on client-side transitions. See https://jira.hilton.com/confluence/x/CYiECg for details\n  if (/^\\/_next\\/data\\//.test(path)) {\n    return true;\n  }\n\n  const { featureConfigs } = await serverSideFeatureConfigsQuery(queryClient, { names: [rule] });\n  const engine = new RuleEngine(featureConfigs[0] as Rule);\n  const facts = {\n    url: path,\n    language: locale,\n  };\n  const isTranslated = engine.run(facts);\n  return isTranslated;\n}\n\n/**\n * @deprecated - Performs same function as `isTranslatedUrl` but with a straight `fetch` and not `react-query`\n * @returns boolean - whether the `path` has been translated for `locale`\n */\nexport async function isLegacyTranslatedUrl({\n  path,\n  locale,\n  rule,\n  endpoint,\n  appName,\n  defaultLocale = 'en',\n}: LegacyTranslatedUrlProps) {\n  if (locale === defaultLocale) {\n    return true;\n  }\n  // Prevent errant 404s on client-side transitions. See https://jira.hilton.com/confluence/x/CYiECg for details\n  if (/^\\/_next\\/data\\//.test(path)) {\n    return true;\n  }\n\n  const modifiedEndpoint = `${endpoint}?appName=${appName}&operationName=featureConfigs`;\n  const query = `query featureConfigs { \n    featureConfigs(names: ${JSON.stringify([rule])}) {\n      name\n      conditions\n      config\n    } \n  }`;\n  const options: RequestInit = {\n    method: 'post',\n    credentials: 'same-origin',\n    headers: {\n      'content-type': 'application/json',\n    },\n    body: JSON.stringify({\n      operationName: 'featureConfigs',\n      query,\n    }),\n  };\n  const response = await fetch(modifiedEndpoint, options);\n\n  const { data } = await response.json();\n  const engine = new RuleEngine(data?.featureConfigs[0] as Rule);\n  const facts = {\n    url: path,\n    language: locale,\n  };\n  const isTranslated = engine.run(facts);\n  return isTranslated;\n}\n\nexport default isTranslatedUrl;\n","import type { QueryClient } from '@tanstack/react-query';\nimport { serverSideFeatureConfigsQuery } from '../generated/queries';\nimport type { Conditions } from '@dx-shared/rule-engine';\nimport { RuleEngine } from '@dx-shared/rule-engine';\nimport type { SupportedLanguage } from './types';\n\ntype AppName = string;\ntype AkamaiName = string;\ntype Ctyhocn = string;\n\nexport type OneLinkConfig =\n  | {\n      appPaths: Record<AppName, AkamaiName>;\n      languages?: Partial<Record<SupportedLanguage, AppName[]>>;\n      whitelist?: Record<AppName, Record<SupportedLanguage, Ctyhocn>>;\n      conditions: Conditions;\n      supportedLanguages: SupportedLanguage[];\n    }\n  | undefined;\nexport type OneLinkPageProps = Partial<\n  Pick<ReturnType<typeof getOneLinkProps>, 'appName' | 'oneLinkConfig' | 'isOneLink'>\n>;\n\nexport function shouldIncludeLanguageParam(\n  locale: string,\n  appName: string,\n  url: string,\n  oneLinkConfig?: OneLinkConfig | null\n) {\n  try {\n    if (oneLinkConfig && locale) {\n      const configLocale = locale.match(/^(zh-hans|zh-hant|[a-z]+)/)?.[0] || 'en';\n      const conditions = oneLinkConfig.conditions;\n      const urlObj = /^https?/.test(url) ? new URL(url) : new URL(url, 'https://www.hilton.com');\n      const pathName = urlObj.pathname;\n      const ruleEngineResult = conditions\n        ? new RuleEngine({\n            name: 'onelink-conditions',\n            conditions,\n          }).run({ language: configLocale, url: pathName, appName })\n        : false;\n      return ruleEngineResult;\n    }\n    return false;\n  } catch {\n    return false;\n  }\n}\n\nexport function getOneLinkProps(\n  ...[locale, appName, url, oneLinkConfig]: Parameters<typeof shouldIncludeLanguageParam>\n) {\n  const isOneLink = shouldIncludeLanguageParam(locale, appName, url, oneLinkConfig);\n  const sstLocale = isOneLink ? 'en' : locale;\n  return {\n    appName,\n    oneLinkConfig,\n    sstLocale,\n    isOneLink,\n  };\n}\n\nconst CONFIG_NAME = 'config-ui-translate-onelink';\n\nexport async function serverSideOneLinkConfig(queryClient: QueryClient) {\n  return serverSideFeatureConfigsQuery(queryClient, {\n    names: [CONFIG_NAME],\n  })?.then((data) => {\n    return (\n      (data.featureConfigs.find((config) => config.name === CONFIG_NAME)\n        ?.config as OneLinkConfig) || null\n    );\n  });\n}\n\nexport const replaceLang = (stringValue: string, lang: string) =>\n  stringValue.replace('__LANG__', lang);\n","/* istanbul ignore file */\nexport * from './app-with-translation';\nexport * from './locale-utils';\nexport * from './translated-url';\nexport * from './types';\nexport * from './util';\n","export * from './lib';\nexport * from './generated/queries';\n","import type { DXExecutionResult, QueryDebugInfo } from '@dx-ui/types-graphql';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport type IncompleteQueryEvent = QueryDebugInfo & {\n  message: string;\n};\n\nexport function triggerInCompleteEvent({\n  requestBody,\n}: {\n  requestBody: Partial<DXExecutionResult['__info__']>;\n}) {\n  if (isBrowser) {\n    const event = new CustomEvent<IncompleteQueryEvent>('dx-incomplete', {\n      detail: {\n        message: 'Incomplete data received from server',\n        operationName: requestBody?.operationName || '',\n        originalOpName: requestBody?.originalOpName || '',\n        dxCompleteness: '0',\n        isSSR: false,\n      },\n    });\n    window.dispatchEvent(event);\n  }\n}\n\nexport function isQueryIncomplete(response: Response) {\n  return response.headers.get('dx-completeness') === '0';\n}\n","import { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { DtrumApi } from '@dynatrace/dtrum-api-types';\n\ndeclare global {\n  interface Window {\n    dtrum?: DtrumApi;\n  }\n}\n\n/**\n * Simple wrapper around the Dynatrace RUM API.\n * {@link https://www.dynatrace.com/support/doc/javascriptapi/interfaces/dtrum_types.DtrumApi.html}\n */\nexport const dynatrace = isBrowser ? window.dtrum : undefined;\n","/* eslint-disable no-console */\nimport { env } from '@dx-ui/framework-env';\nimport { dynatrace } from './logger';\nimport * as React from 'react';\n\nconst ERROR_PAGE = 418;\n\nexport const LOG_LEVELS = {\n  ERROR: 'ERROR',\n  INFO: 'INFO',\n  WARN: 'WARN',\n} as const;\n\ntype LOG_KEYS = StringWithAutocompleteOptions<\n  | 'APPLICATION_ERROR'\n  | 'AUTHENTICATION_ERROR'\n  | 'BOOKING_ERROR'\n  | 'BOOKING_INFO'\n  | 'EVENT_INFO'\n  | 'EXTERNAL_ERROR'\n  | 'FATAL_ERROR'\n  | 'FETCH_ERROR'\n  | 'ROUTING_ERROR'\n  | 'VALIDATION_ERROR'\n>;\n\n/**\n * Wrapper for {@link https://www.dynatrace.com/support/doc/javascriptapi/interfaces/dtrum_types.DtrumApi.html#reportCustomError | reportCustomError}.\n *\n * Specifies client-side `LOG_LEVEL` of `ERROR` which extends 'WARN' and also enables alerting in Dynatrace if the error rate is high. @see {@link https://docs.dynatrace.com/docs/platform/davis-ai/basics/terminology#alert | Davis AI Basics - Alerting}\n * For server-side, it will leverage `console.error`.\n *\n * @param key           The key of the error. For example: 'Booking Error'\n * @param value         The error value. For example: 'Payment failed to process.'\n * @param hint          A hint to pinpoint the problem.\n *                        - By default this includes the app version.\n *                        - Anything over 100 characters will be truncated.\n *                        - The hint will appear as pipe delimited.  For example: `dx-res-ui:234327|hint`\n */\nexport function logError(key: LogArgs[0], value: LogArgs[1], hint = '') {\n  log(key, value, LOG_LEVELS.ERROR, hint);\n}\n\n/**\n * Wrapper for {@link https://www.dynatrace.com/support/doc/javascriptapi/interfaces/dtrum_types.DtrumApi.html#reportCustomError | reportCustomError}.\n *\n * Specifies client-side `LOG_LEVEL` of `WARN` which extends 'INFO' and also measures \"Apdex\" performance in Dynatrace.  @see {@link https://docs.dynatrace.com/docs/shortlink/apdex | Apdex Ratings}\n * For server-side, it will leverage `console.warn`.\n *\n * @param key           The key of the error. For example: 'Hotel Not Found'\n * @param value         The error value. For example: 'ctyhocn or propCode not found.'\n * @param hint          A hint to pinpoint the problem.\n *                        - By default this includes the app version.\n *                        - Anything over 100 characters will be truncated.\n *                        - The hint will appear as pipe delimited.  For example: `dx-res-ui:234327|hint`\n */\nexport function logWarning(key: LogArgs[0], value: LogArgs[1], hint = '') {\n  log(key, value, LOG_LEVELS.WARN, hint);\n}\n\n/**\n * Wrapper for {@link https://www.dynatrace.com/support/doc/javascriptapi/interfaces/dtrum_types.DtrumApi.html#reportCustomError | reportCustomError}.\n *\n * Specifies client-side `LOG_LEVEL` of `INFO` which captures the error in Dynatrace.  @see {@link https://docs.dynatrace.com/docs/shortlink/application-performance#top-errors | Top Errors} and {@link https://docs.dynatrace.com/docs/shortlink/configure-application-errors | Configure Application Errors}\n * For server-side, it will leverage `console.info`.\n *\n * @param key           The key of the error. For example: 'Validation Error'\n * @param value         The error value. For example: 'First name does not match the regular expression.'\n * @param hint          A hint to pinpoint the problem.\n *                        - By default this includes the app version.\n *                        - Anything over 100 characters will be truncated.\n *                        - The hint will appear as pipe delimited.  For example: `dx-res-ui:234327|hint`\n */\nexport function logInfo(key: LogArgs[0], value: LogArgs[1], hint = '') {\n  log(key, value, LOG_LEVELS.INFO, hint);\n}\n\n/**\n * Custom hook to enable manual page detection.\n *\n * @param {string} name - New view name. Usually it matches the location.pathname.\n * @param {string} group - The group associated with the page. The app name.\n */\nexport const useManualPageLogger = (name: string, group: string): void => {\n  React.useEffect(() => {\n    if (!dynatrace) {\n      return console.warn('Dynatrace is not available.');\n    }\n    dynatrace.enableManualPageDetection();\n    const modifiedGroup = window.location.pathname.startsWith('/en/') ? group : `${group}-NonEN`;\n    const pageResult = dynatrace.setPage({ name, group: modifiedGroup });\n    if (pageResult < 0) {\n      console.warn('Error setting page group in Dynatrace');\n    }\n  });\n};\n\ntype LogArgs = Parameters<typeof log>;\n\nfunction log(\n  key: LOG_KEYS,\n  value: Parameters<typeof stringifyValue>[0],\n  level: keyof typeof LOG_LEVELS,\n  hint: string\n) {\n  if (dynatrace) {\n    const errorKey = `${level}:${key}` as const;\n    dynatrace.markAsErrorPage(ERROR_PAGE, `DX-UI Logger ${level}`);\n    dynatrace.reportCustomError(errorKey, stringifyValue(value), buildHint(hint), true);\n    dynatrace.sendBeacon(true, true, true);\n\n    if (!env('DISABLE_LOGGER_CONSOLE_ERROR') || env('DISABLE_LOGGER_CONSOLE_ERROR') === 'false') {\n      const customError = new Error(stringifyValue(value), { cause: hint });\n      customError.name = errorKey;\n      console.error(customError);\n      return;\n    }\n  }\n  const fn = level.toLowerCase() as Lowercase<typeof level>;\n  console[fn](key, value, hint);\n}\n\nfunction buildHint(hint: string) {\n  const version = env('APP_VER');\n  return [version, hint].filter(Boolean).join('|');\n}\n\nfunction stringifyValue(value: string | Error | Record<string, unknown>) {\n  if (typeof value === 'string') {\n    return value;\n  }\n  if (value instanceof Error) {\n    return value.message;\n  }\n  return JSON.stringify(value);\n}\n","export * from './logger';\nexport * from './helpers';\n","export * from './lib';\n","import type { OutgoingMessage } from 'http';\nexport function mergeCacheControl(\n  resp: Response,\n  serverResp?: OutgoingMessage & {\n    mergeHttpHeaders?: (headers: Record<string, string>) => void;\n  }\n) {\n  if (serverResp && serverResp.mergeHttpHeaders) {\n    const headers: Record<string, string> = {};\n    resp.headers.forEach((val: string, key: string) => {\n      headers[key] = val;\n    });\n    serverResp.mergeHttpHeaders(headers);\n  }\n}\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#queries = /* @__PURE__ */ new Map();\n  }\n  #queries;\n  build(client, options, state) {\n    const queryKey = options.queryKey;\n    const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n    let query = this.get(queryHash);\n    if (!query) {\n      query = new Query({\n        cache: this,\n        queryKey,\n        queryHash,\n        options: client.defaultQueryOptions(options),\n        state,\n        defaultOptions: client.getQueryDefaults(queryKey)\n      });\n      this.add(query);\n    }\n    return query;\n  }\n  add(query) {\n    if (!this.#queries.has(query.queryHash)) {\n      this.#queries.set(query.queryHash, query);\n      this.notify({\n        type: \"added\",\n        query\n      });\n    }\n  }\n  remove(query) {\n    const queryInMap = this.#queries.get(query.queryHash);\n    if (queryInMap) {\n      query.destroy();\n      if (queryInMap === query) {\n        this.#queries.delete(query.queryHash);\n      }\n      this.notify({ type: \"removed\", query });\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        this.remove(query);\n      });\n    });\n  }\n  get(queryHash) {\n    return this.#queries.get(queryHash);\n  }\n  getAll() {\n    return [...this.#queries.values()];\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (query) => matchQuery(defaultedFilters, query)\n    );\n  }\n  findAll(filters = {}) {\n    const queries = this.getAll();\n    return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  onFocus() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onOnline();\n      });\n    });\n  }\n};\nexport {\n  QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#mutations = /* @__PURE__ */ new Map();\n    this.#mutationId = Date.now();\n  }\n  #mutations;\n  #mutationId;\n  build(client, options, state) {\n    const mutation = new Mutation({\n      mutationCache: this,\n      mutationId: ++this.#mutationId,\n      options: client.defaultMutationOptions(options),\n      state\n    });\n    this.add(mutation);\n    return mutation;\n  }\n  add(mutation) {\n    const scope = scopeFor(mutation);\n    const mutations = this.#mutations.get(scope) ?? [];\n    mutations.push(mutation);\n    this.#mutations.set(scope, mutations);\n    this.notify({ type: \"added\", mutation });\n  }\n  remove(mutation) {\n    const scope = scopeFor(mutation);\n    if (this.#mutations.has(scope)) {\n      const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n      if (mutations) {\n        if (mutations.length === 0) {\n          this.#mutations.delete(scope);\n        } else {\n          this.#mutations.set(scope, mutations);\n        }\n      }\n    }\n    this.notify({ type: \"removed\", mutation });\n  }\n  canRun(mutation) {\n    const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n    return !firstPendingMutation || firstPendingMutation === mutation;\n  }\n  runNext(mutation) {\n    const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n    return foundMutation?.continue() ?? Promise.resolve();\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((mutation) => {\n        this.remove(mutation);\n      });\n    });\n  }\n  getAll() {\n    return [...this.#mutations.values()].flat();\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (mutation) => matchMutation(defaultedFilters, mutation)\n    );\n  }\n  findAll(filters = {}) {\n    return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n    return notifyManager.batch(\n      () => Promise.all(\n        pausedMutations.map((mutation) => mutation.continue().catch(noop))\n      )\n    );\n  }\n};\nfunction scopeFor(mutation) {\n  return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n  MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n  return {\n    onFetch: (context, query) => {\n      const options = context.options;\n      const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n      const oldPages = context.state.data?.pages || [];\n      const oldPageParams = context.state.data?.pageParams || [];\n      let result = { pages: [], pageParams: [] };\n      let currentPage = 0;\n      const fetchFn = async () => {\n        let cancelled = false;\n        const addSignalProperty = (object) => {\n          Object.defineProperty(object, \"signal\", {\n            enumerable: true,\n            get: () => {\n              if (context.signal.aborted) {\n                cancelled = true;\n              } else {\n                context.signal.addEventListener(\"abort\", () => {\n                  cancelled = true;\n                });\n              }\n              return context.signal;\n            }\n          });\n        };\n        const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n        const fetchPage = async (data, param, previous) => {\n          if (cancelled) {\n            return Promise.reject();\n          }\n          if (param == null && data.pages.length) {\n            return Promise.resolve(data);\n          }\n          const queryFnContext = {\n            queryKey: context.queryKey,\n            pageParam: param,\n            direction: previous ? \"backward\" : \"forward\",\n            meta: context.options.meta\n          };\n          addSignalProperty(queryFnContext);\n          const page = await queryFn(\n            queryFnContext\n          );\n          const { maxPages } = context.options;\n          const addTo = previous ? addToStart : addToEnd;\n          return {\n            pages: addTo(data.pages, page, maxPages),\n            pageParams: addTo(data.pageParams, param, maxPages)\n          };\n        };\n        if (direction && oldPages.length) {\n          const previous = direction === \"backward\";\n          const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n          const oldData = {\n            pages: oldPages,\n            pageParams: oldPageParams\n          };\n          const param = pageParamFn(options, oldData);\n          result = await fetchPage(oldData, param, previous);\n        } else {\n          const remainingPages = pages ?? oldPages.length;\n          do {\n            const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n            if (currentPage > 0 && param == null) {\n              break;\n            }\n            result = await fetchPage(result, param);\n            currentPage++;\n          } while (currentPage < remainingPages);\n        }\n        return result;\n      };\n      if (context.options.persister) {\n        context.fetchFn = () => {\n          return context.options.persister?.(\n            fetchFn,\n            {\n              queryKey: context.queryKey,\n              meta: context.options.meta,\n              signal: context.signal\n            },\n            query\n          );\n        };\n      } else {\n        context.fetchFn = fetchFn;\n      }\n    }\n  };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n  const lastIndex = pages.length - 1;\n  return pages.length > 0 ? options.getNextPageParam(\n    pages[lastIndex],\n    pages,\n    pageParams[lastIndex],\n    pageParams\n  ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n  return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n  if (!data)\n    return false;\n  return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n  if (!data || !options.getPreviousPageParam)\n    return false;\n  return getPreviousPageParam(options, data) != null;\n}\nexport {\n  hasNextPage,\n  hasPreviousPage,\n  infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  noop,\n  partialMatchKey,\n  resolveStaleTime,\n  skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n  #queryCache;\n  #mutationCache;\n  #defaultOptions;\n  #queryDefaults;\n  #mutationDefaults;\n  #mountCount;\n  #unsubscribeFocus;\n  #unsubscribeOnline;\n  constructor(config = {}) {\n    this.#queryCache = config.queryCache || new QueryCache();\n    this.#mutationCache = config.mutationCache || new MutationCache();\n    this.#defaultOptions = config.defaultOptions || {};\n    this.#queryDefaults = /* @__PURE__ */ new Map();\n    this.#mutationDefaults = /* @__PURE__ */ new Map();\n    this.#mountCount = 0;\n  }\n  mount() {\n    this.#mountCount++;\n    if (this.#mountCount !== 1)\n      return;\n    this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations();\n        this.#queryCache.onFocus();\n      }\n    });\n    this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations();\n        this.#queryCache.onOnline();\n      }\n    });\n  }\n  unmount() {\n    this.#mountCount--;\n    if (this.#mountCount !== 0)\n      return;\n    this.#unsubscribeFocus?.();\n    this.#unsubscribeFocus = void 0;\n    this.#unsubscribeOnline?.();\n    this.#unsubscribeOnline = void 0;\n  }\n  isFetching(filters) {\n    return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(filters) {\n    return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n  }\n  getQueryData(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(options.queryHash)?.state.data;\n  }\n  ensureQueryData(options) {\n    const cachedData = this.getQueryData(options.queryKey);\n    if (cachedData === void 0)\n      return this.fetchQuery(options);\n    else {\n      const defaultedOptions = this.defaultQueryOptions(options);\n      const query = this.#queryCache.build(this, defaultedOptions);\n      if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n        void this.prefetchQuery(defaultedOptions);\n      }\n      return Promise.resolve(cachedData);\n    }\n  }\n  getQueriesData(filters) {\n    return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data;\n      return [queryKey, data];\n    });\n  }\n  setQueryData(queryKey, updater, options) {\n    const defaultedOptions = this.defaultQueryOptions({ queryKey });\n    const query = this.#queryCache.get(\n      defaultedOptions.queryHash\n    );\n    const prevData = query?.state.data;\n    const data = functionalUpdate(updater, prevData);\n    if (data === void 0) {\n      return void 0;\n    }\n    return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n  }\n  setQueriesData(filters, updater, options) {\n    return notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n        queryKey,\n        this.setQueryData(queryKey, updater, options)\n      ])\n    );\n  }\n  getQueryState(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(options.queryHash)?.state;\n  }\n  removeQueries(filters) {\n    const queryCache = this.#queryCache;\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query);\n      });\n    });\n  }\n  resetQueries(filters, options) {\n    const queryCache = this.#queryCache;\n    const refetchFilters = {\n      type: \"active\",\n      ...filters\n    };\n    return notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        query.reset();\n      });\n      return this.refetchQueries(refetchFilters, options);\n    });\n  }\n  cancelQueries(filters = {}, cancelOptions = {}) {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n    );\n    return Promise.all(promises).then(noop).catch(noop);\n  }\n  invalidateQueries(filters = {}, options = {}) {\n    return notifyManager.batch(() => {\n      this.#queryCache.findAll(filters).forEach((query) => {\n        query.invalidate();\n      });\n      if (filters.refetchType === \"none\") {\n        return Promise.resolve();\n      }\n      const refetchFilters = {\n        ...filters,\n        type: filters.refetchType ?? filters.type ?? \"active\"\n      };\n      return this.refetchQueries(refetchFilters, options);\n    });\n  }\n  refetchQueries(filters = {}, options) {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options?.cancelRefetch ?? true\n    };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n        let promise = query.fetch(void 0, fetchOptions);\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop);\n        }\n        return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n      })\n    );\n    return Promise.all(promises).then(noop);\n  }\n  fetchQuery(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    if (defaultedOptions.retry === void 0) {\n      defaultedOptions.retry = false;\n    }\n    const query = this.#queryCache.build(this, defaultedOptions);\n    return query.isStaleByTime(\n      resolveStaleTime(defaultedOptions.staleTime, query)\n    ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  }\n  prefetchQuery(options) {\n    return this.fetchQuery(options).then(noop).catch(noop);\n  }\n  fetchInfiniteQuery(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.fetchQuery(options);\n  }\n  prefetchInfiniteQuery(options) {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n  }\n  ensureInfiniteQueryData(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.ensureQueryData(options);\n  }\n  resumePausedMutations() {\n    if (onlineManager.isOnline()) {\n      return this.#mutationCache.resumePausedMutations();\n    }\n    return Promise.resolve();\n  }\n  getQueryCache() {\n    return this.#queryCache;\n  }\n  getMutationCache() {\n    return this.#mutationCache;\n  }\n  getDefaultOptions() {\n    return this.#defaultOptions;\n  }\n  setDefaultOptions(options) {\n    this.#defaultOptions = options;\n  }\n  setQueryDefaults(queryKey, options) {\n    this.#queryDefaults.set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options\n    });\n  }\n  getQueryDefaults(queryKey) {\n    const defaults = [...this.#queryDefaults.values()];\n    let result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        result = { ...result, ...queryDefault.defaultOptions };\n      }\n    });\n    return result;\n  }\n  setMutationDefaults(mutationKey, options) {\n    this.#mutationDefaults.set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options\n    });\n  }\n  getMutationDefaults(mutationKey) {\n    const defaults = [...this.#mutationDefaults.values()];\n    let result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        result = { ...result, ...queryDefault.defaultOptions };\n      }\n    });\n    return result;\n  }\n  defaultQueryOptions(options) {\n    if (options._defaulted) {\n      return options;\n    }\n    const defaultedOptions = {\n      ...this.#defaultOptions.queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true\n    };\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions\n      );\n    }\n    if (defaultedOptions.refetchOnReconnect === void 0) {\n      defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n    }\n    if (defaultedOptions.throwOnError === void 0) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n    }\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = \"offlineFirst\";\n    }\n    if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false;\n    }\n    return defaultedOptions;\n  }\n  defaultMutationOptions(options) {\n    if (options?._defaulted) {\n      return options;\n    }\n    return {\n      ...this.#defaultOptions.mutations,\n      ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n      ...options,\n      _defaulted: true\n    };\n  }\n  clear() {\n    this.#queryCache.clear();\n    this.#mutationCache.clear();\n  }\n};\nexport {\n  QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","import type { Cookie, CookieSetOptions } from 'universal-cookie';\nimport Cookies from 'universal-cookie';\n\n/**\n * Returns a cookie for a given name. Takes an optional server cookie param if it's from server side.\n * @param name - name of cookie being looked up\n * @param serverCookies - cookie (typically from req.headers)\n */\nexport function getCookie(name: string, serverCookies?: string) {\n  const cookie = new Cookies(serverCookies);\n  return cookie.get(name);\n}\n\n/**\n * Sets a cookie for a given name/value. Takes an optional cookie options.\n * @param name - name of cookie being set\n * @param value - Cookie\n * @param options - CookieSetOptions\n */\nexport function setCookie(name: string, value: Cookie, options?: CookieSetOptions) {\n  const cookie = new Cookies();\n  cookie.set(name, value, {\n    domain: '.hilton.com',\n    sameSite: 'lax',\n    path: '/',\n    ...options,\n  });\n}\n\n/**\n * Deletes a cookie with a given name. Takes an optional cookie options.\n * @param name - name of cookie being deleted\n * @param options - CookieSetOptions\n */\nexport function deleteCookie(name: string, options?: CookieSetOptions) {\n  const cookie = new Cookies();\n  cookie.remove(name, {\n    domain: '.hilton.com',\n    path: '/',\n    ...options,\n  });\n}\n","import type { ExecutionResult, GraphQLError, NamedTypeNode } from 'graphql';\n\nexport type DXErrorNotification = {\n  code: number;\n  fields: string[];\n  message: string;\n};\n\nexport type DXExtension = {\n  logSearch: string;\n  operationName: string;\n  code?: string;\n  notifications?: DXErrorNotification[];\n};\n\nexport type DXGraphQLError = Omit<GraphQLError, 'extensions'> & {\n  code: number;\n  context: string;\n  notifications: DXErrorNotification[];\n  extensions: DXExtension;\n  'reference-error'?: string;\n};\n\nexport type DXError = GraphError | ServerAuthError;\n\nexport type DXExecutionResult = Omit<ExecutionResult, 'errors'> & {\n  extensions?: DXExtension;\n  errors?: ReadonlyArray<DXGraphQLError>;\n  __info__?: QueryDebugInfo;\n};\nexport type DXNamedNode = NamedTypeNode & { value: string };\n\nexport type OperationErrors = 'Unauthorized' | 'Forbidden' | 'Not Found';\n\nexport class GraphError extends Error {\n  data: DXExecutionResult['data'];\n  graphQLErrors: DXGraphQLError[];\n\n  public constructor(result: DXExecutionResult) {\n    const graphQLErrors = result.errors as DXGraphQLError[];\n    super(graphQLErrors?.[0]?.message || 'Unknown Error');\n    this.data = result.data;\n    this.graphQLErrors = graphQLErrors;\n  }\n}\n\nexport class ServerAuthError extends Error {\n  statusCode: number;\n\n  public constructor(statusCode: number, message?: string) {\n    super(message || 'Authorization Error');\n    this.statusCode = statusCode;\n  }\n}\n\nexport interface QueryDebugInfo {\n  dxCompleteness: '0' | '1';\n  isSSR: boolean;\n  operationName: QueryDocument['operationName'];\n  originalOpName: QueryDocument['originalOpName'];\n}\n\nexport type QueryDocument = {\n  operationString: string;\n  operationName: string;\n  originalOpName: string;\n};\n\nexport type QueryVariables = Record<string, unknown> | undefined;\nexport type QueryKeyArgs = [QueryDocument, QueryVariables];\n\nexport type QueryRequestArgs = {\n  document: QueryDocument;\n  variables?: QueryVariables;\n};\n","export * from './graphql';\n","export * from './lib';\n","import { getCookie, setCookie } from '@dx-ui/utilities-cookies';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { addDays, startOfToday } from 'date-fns';\nimport type { IncomingMessage } from 'http';\nimport { isServer } from '@tanstack/react-query';\nimport type { GetServerSidePropsContext } from 'next';\nimport type { DXError } from '@dx-ui/types-graphql';\nimport { ServerAuthError, GraphError } from '@dx-ui/types-graphql';\n\nexport function causedByUnauthorized(error?: DXError) {\n  if (error) {\n    if (error instanceof ServerAuthError) {\n      return error.statusCode === 401;\n    }\n    if (error instanceof GraphError) {\n      return (\n        error.graphQLErrors?.some(\n          (error) => error?.message === 'Unauthorized' || error?.code === 401\n        ) || false\n      );\n    }\n  }\n  return false;\n}\n\nexport function causedByForbidden(error?: DXError) {\n  if (error) {\n    if (error instanceof ServerAuthError) {\n      return error.statusCode === 403;\n    }\n    if (error instanceof GraphError) {\n      return (\n        error.graphQLErrors?.some(\n          (error) => error?.message === 'Forbidden' || error?.code === 403\n        ) || false\n      );\n    }\n  }\n  return false;\n}\n\nexport function causedByNotFound(error?: DXError) {\n  if (error) {\n    if (error instanceof ServerAuthError) {\n      return error.statusCode === 404;\n    }\n    if (error instanceof GraphError) {\n      return (\n        error.graphQLErrors?.some(\n          (error) => error?.message === 'Not Found' || error?.code === 404\n        ) || false\n      );\n    }\n  }\n  return false;\n}\n\nexport function getVisitorId() {\n  if (!isBrowser) {\n    return null;\n  }\n  const visitorId: string = getCookie('visitorId');\n  return visitorId || setVisitorId();\n}\n\nexport function setVisitorId() {\n  if (isBrowser) {\n    const uuid = crypto.randomUUID();\n    setCookie('visitorId', uuid, {\n      expires: addDays(startOfToday(), 90),\n      domain: window.location.hostname,\n    });\n    return uuid;\n  }\n  return null;\n}\n\nexport function generateReferrer(origin: string, language: string, request?: IncomingMessage) {\n  try {\n    const pathname = isServer ? `/${language}${request?.url}` : window.location.pathname;\n    const url = new URL(pathname, origin);\n    return `${url.origin}${url.pathname}`;\n  } catch {\n    return undefined;\n  }\n}\n\nexport function getSafeLanguage(language: string) {\n  const zhMapping: { [key: string]: string } = {\n    'zh-cn': 'zh-hans',\n    'zh-hk': 'zh-hant',\n  };\n  const mappedLang = zhMapping[language] || language;\n  const splitLanguage = mappedLang.split('-') as [string, string | undefined];\n  return language.includes('zh-') ? splitLanguage.slice(0, 2).join('-') : splitLanguage[0];\n}\n\nexport function getServerSideSafeLanguage(context: GetServerSidePropsContext) {\n  const queryContentLocale = Array.isArray(context.query.content)\n    ? context.query.content[0]\n    : context.query.content;\n  const headerOriginalLocale =\n    (context?.req.headers?.['x-originallocale'] as string)?.toLowerCase() || undefined;\n  const language = queryContentLocale || headerOriginalLocale || context.locale || 'en';\n  return getSafeLanguage(language);\n}\n","export function isExtractableFile(value: File | Blob | undefined) {\n  return (\n    (typeof File !== 'undefined' && value instanceof File) ||\n    (typeof Blob !== 'undefined' && value instanceof Blob)\n  );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isExtractableFile as defaultIsExtractableFile } from './isExtractableFile';\n\nexport function extractFiles(value: any, path = '', isExtractableFile = defaultIsExtractableFile) {\n  // Map of extracted files and their object paths within the input value.\n  const files = new Map();\n\n  // Map of arrays and objects recursed within the input value and their clones,\n  // for reusing clones of values that are referenced multiple times within the\n  // input value.\n  const clones = new Map();\n\n  /**\n   * Recursively clones the value, extracting files.\n   * @kind function\n   * @name extractFiles~recurse\n   * @param {*} value Value to extract files from.\n   * @param {ObjectPath} path Prefix for object paths for extracted files.\n   * @param {Set} recursed Recursed arrays and objects for avoiding infinite recursion of circular references within the input value.\n   * @returns {*} Clone of the value with files replaced with `null`.\n   * @ignore\n   */\n  function recurse(value: any, path = '', recursed: Set<unknown>) {\n    let clone = value;\n\n    if (isExtractableFile(value)) {\n      clone = null;\n\n      const filePaths = files.get(value);\n\n      filePaths ? filePaths.push(path) : files.set(value, [path]);\n    } else {\n      const isList =\n        Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n      const isObject = value && value.constructor === Object;\n\n      if (isList || isObject) {\n        const hasClone = clones.has(value);\n\n        if (hasClone) clone = clones.get(value);\n        else {\n          clone = isList ? [] : {};\n\n          clones.set(value, clone);\n        }\n\n        if (!recursed.has(value)) {\n          const pathPrefix = path ? `${path}.` : '';\n          const recursedDeeper = new Set(recursed).add(value);\n\n          if (isList) {\n            let index = 0;\n\n            for (const item of value as any) {\n              const itemClone = recurse(item, pathPrefix + index++, recursedDeeper);\n\n              if (!hasClone) clone.push(itemClone);\n            }\n          } else\n            for (const key of Object.keys(value)) {\n              const propertyClone = recurse(value[key], pathPrefix + key, recursedDeeper);\n\n              if (!hasClone) clone[key] = propertyClone;\n            }\n        }\n      }\n    }\n\n    return clone;\n  }\n\n  return {\n    clone: recurse(value, path, new Set()),\n    files,\n  };\n}\n","import { GraphError, ServerAuthError } from '@dx-ui/types-graphql';\n\n/**\n *\n * @returns a new Error object based on the input argument\n */\nexport function generateError(arg: unknown) {\n  const UNKNOWN_ERROR_MSG = 'An unknown error occurred.';\n  if (arg instanceof ServerAuthError || arg instanceof Error || arg instanceof GraphError) {\n    return arg;\n  }\n  if (typeof arg === 'string') {\n    return new Error(arg);\n  }\n  return new Error(UNKNOWN_ERROR_MSG);\n}\n","export * from './generate-error';\n","export * from './lib';\n","import type { IncomingMessage, OutgoingMessage } from 'http';\nimport type { AuthClient } from '@dx-ui/framework-auth-provider';\nimport { mergeCacheControl } from '@dx-ui/framework-merge-cache-control';\nimport type {\n  MutationFunction,\n  QueryFunction,\n  QueryFunctionContext,\n  QueryKey,\n} from '@tanstack/react-query';\nimport type { OneLinkConfig } from '@dx-ui/framework-i18n';\nimport { shouldIncludeLanguageParam } from '@dx-ui/framework-i18n';\nimport {\n  causedByForbidden,\n  causedByUnauthorized,\n  generateReferrer,\n  getSafeLanguage,\n  getVisitorId,\n} from './default-fetch-fn-utils';\nimport { extractFiles, isExtractableFile } from './extract-files';\nimport FormData from 'form-data';\nimport { logWarning } from '@dx-ui/framework-logger';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type {\n  QueryRequestArgs,\n  DXExecutionResult,\n  QueryDebugInfo,\n  QueryKeyArgs,\n} from '@dx-ui/types-graphql';\nimport { ServerAuthError, GraphError } from '@dx-ui/types-graphql';\nimport { generateError } from '@dx-ui/utilities-generate-error';\nimport type { errors } from 'undici';\nimport { isQueryIncomplete, triggerInCompleteEvent } from '@dx-ui/framework-incomplete-event';\n\ntype QueryRequest = QueryRequestArgs & MakeDefaultFnArgs;\n\ntype QueryResult = DXExecutionResult['data'];\n\nconst forwardHeaders = ['dx-preview', 'dx-toggles'];\n\nexport async function makeRequest(\n  queryRequest: QueryRequest,\n  signal?: AbortSignal,\n  retries = 0,\n  undiciErrorSocketRetries = 0\n): Promise<QueryResult> {\n  const {\n    appName,\n    authClient,\n    authenticatedOperationNames,\n    handleAuthenticatedOperationError,\n    handleRequestEndpoint,\n    handleRequestHeaders,\n    customHeaders,\n    document,\n    oneLinkConfig,\n    referrer: referrerArg,\n    referrerPolicy,\n    routerLocale = '',\n    serverRequest: serverRequestArg,\n    serverResponse,\n    ssrMode = false,\n    variables,\n    variablesToIncludeInParams,\n  } = queryRequest;\n\n  if (!authClient) {\n    throw new Error('auth client not provided');\n  }\n  const serverRequest = serverRequestArg || serverResponse?.req;\n  const { operationString: query, operationName, originalOpName } = document;\n  const requestBody = { query, operationName, variables };\n  const authenticatedOperation = authenticatedOperationNames?.includes(operationName);\n  const endpoint = handleRequestEndpoint?.(serverRequest) || authClient.getGqlEndpoint();\n  let authHeader: string | null = null;\n\n  if (authenticatedOperation && !authClient.getIsLoggedIn()) {\n    const accessToken = await handleAuthenticatedOperationError?.().catch(() => null);\n    authHeader = accessToken ? `Bearer ${accessToken}` : await authClient.getAuthorizationHeader();\n  } else {\n    authHeader = await authClient.getAuthorizationHeader();\n  }\n\n  const visitoridHeader = serverResponse?.req?.headers['visitorid'] as string | undefined;\n  const hltClientMessageIdHeader = serverResponse?.req?.headers['hltclientmessageid'] as\n    | string\n    | undefined;\n\n  const headers: HeadersInit = {\n    'Content-Type': 'application/json',\n    ...(!authClient.webGuestMetadataCookie && { Authorization: authHeader }),\n    'dx-platform': (serverResponse?.req?.headers['dx-platform'] as string) ?? 'web',\n    ...(visitoridHeader && { visitorid: visitoridHeader }),\n    ...(hltClientMessageIdHeader && { hltclientmessageid: hltClientMessageIdHeader }),\n    ...customHeaders,\n    ...handleRequestHeaders?.(serverRequest),\n  };\n\n  const bodyLanguage =\n    (variables?.language as string | undefined) || (variables?.lang as string | undefined) || 'en';\n  const browserUrl = isBrowser ? window.location.href : '';\n  const includeLanguageParam = shouldIncludeLanguageParam(\n    routerLocale,\n    appName || '',\n    browserUrl,\n    oneLinkConfig\n  );\n\n  if (ssrMode) {\n    headers['dx-trusted-app'] = 'true';\n  }\n\n  // Always forward these headers from the incoming request\n  forwardHeaders.forEach((header) => {\n    if (serverResponse?.req?.headers[header]) {\n      headers[header] = serverResponse.req.headers[header] as string;\n    }\n  });\n\n  // Add generated visitorId & messsageId\n  const visitorId = getVisitorId();\n  if (visitorId || visitoridHeader) {\n    const requestId = crypto.randomUUID().replace(/-/g, '');\n    const hltClientMessageId = `${visitorId}-${requestId}`;\n    //If custom header for visitorid or hltClientMessageid are set, use that instead of the generated one\n    headers['visitorid'] = visitoridHeader || visitorId || '';\n    headers['hltclientmessageid'] = hltClientMessageIdHeader || hltClientMessageId || '';\n  }\n\n  // Add referrer\n  const referrer = referrerArg || generateReferrer(endpoint, routerLocale, serverRequest);\n\n  // Create params from variables\n  const paramsFromVariables: Record<string, unknown> = {};\n  if (variablesToIncludeInParams?.length) {\n    variablesToIncludeInParams.forEach((variable) => {\n      const value = variables?.[variable];\n      if (value) {\n        paramsFromVariables[variable] = value;\n      }\n    });\n  }\n\n  // Add params\n  const params = new URLSearchParams({\n    appName,\n    operationName,\n    originalOpName,\n    bl: bodyLanguage,\n    ...paramsFromVariables,\n    ...(includeLanguageParam && { language: getSafeLanguage(routerLocale) }),\n  }).toString();\n\n  // Append files\n  // https://github.com/jaydenseric/apollo-upload-client/blob/master/public/createUploadLink.js\n  const { clone, files } = extractFiles(requestBody, '', isExtractableFile);\n  const form = new FormData();\n  if (files.size) {\n    // Automatically set by `fetch` when the `body` is a `FormData` instance.\n    delete headers['Content-Type'];\n\n    // GraphQL multipart request spec:\n    // https://github.com/jaydenseric/graphql-multipart-request-spec\n    form.append('operations', JSON.stringify(clone));\n\n    const map: Record<number, string[]> = {};\n    let i = 0;\n    files.forEach((paths) => {\n      map[++i] = paths;\n    });\n    form.append('map', JSON.stringify(map));\n\n    i = 0;\n    files.forEach((_, file: File) => {\n      formDataAppendFile(form, ++i, file);\n    });\n  }\n\n  const finalUrl = `${endpoint}?${params}`;\n\n  const response = await fetch(finalUrl, {\n    method: 'POST',\n    headers,\n    referrer,\n    referrerPolicy,\n    body: files.size ? (form as unknown as BodyInit) : JSON.stringify(requestBody),\n    signal,\n  }).catch((error) => {\n    const safeError = generateError(error);\n    if (\n      (safeError as errors.SocketError).code === 'UND_ERR_SOCKET' &&\n      undiciErrorSocketRetries < 1\n    ) {\n      return makeRequest(queryRequest, signal, retries, undiciErrorSocketRetries + 1);\n    }\n    throw error;\n  });\n\n  const refreshAndRetry = async () => {\n    await authClient.refreshToken();\n    return makeRequest(queryRequest, signal, retries + 1, undiciErrorSocketRetries);\n  };\n  if (!response?.ok) {\n    const responseText = await response?.text();\n    let jsonResult: DXExecutionResult | undefined;\n    try {\n      jsonResult = JSON.parse(responseText);\n    } catch {\n      // ignore failed to parse json\n    }\n\n    const isForbidden = response?.status === 403;\n\n    const referenceError = jsonResult?.errors?.map((er) => er['reference-error']);\n    referenceError?.forEach((ref) => {\n      if (ref) {\n        logWarning('403', '403 reference', ref);\n      }\n    });\n\n    if (authenticatedOperation) {\n      if (!isForbidden && authClient.getIsLoggedIn() && retries < 1) {\n        return refreshAndRetry();\n      }\n      const errorMessage = jsonResult?.errors?.[0]?.message || '';\n      throw new ServerAuthError(response?.status, errorMessage);\n    }\n\n    const isUnauthorized = response?.status === 401;\n    if (isUnauthorized && retries < 1) {\n      return refreshAndRetry();\n    }\n    // handle errors if response is not ok\n    const shouldRetry =\n      jsonResult && handleResultErrors(jsonResult, authClient, authenticatedOperation, retries);\n    if (shouldRetry) return refreshAndRetry();\n\n    // request failed for unknown reason\n    throw new Error(`request failed ${response?.status} ${responseText}`);\n  }\n\n  // merge cache headers if server\n  if (response instanceof Response) {\n    mergeCacheControl(response, serverResponse);\n  }\n\n  const result: DXExecutionResult = await response.json();\n\n  // handle errors if response is ok\n  const shouldRetry = handleResultErrors(result, authClient, authenticatedOperation, retries);\n  if (shouldRetry) return refreshAndRetry();\n\n  if (isQueryIncomplete(response as Response)) {\n    triggerInCompleteEvent({\n      requestBody: {\n        operationName,\n        originalOpName,\n      },\n    });\n  }\n\n  return {\n    ...result.data,\n    __info__: {\n      dxCompleteness: response.headers.get('dx-completeness'),\n      isSSR: typeof window === 'undefined',\n      operationName,\n      originalOpName,\n    },\n  };\n}\n\nexport type IncompleteQueryEvent = QueryDebugInfo & {\n  message: string;\n};\n\nexport type MakeDefaultFnOneLinkArgs =\n  | {\n      oneLinkConfig?: never;\n      routerLocale?: never;\n    }\n  | {\n      oneLinkConfig: OneLinkConfig | null;\n      routerLocale: string;\n    };\n\nexport type MakeDefaultFnAuthenticatedOperationErrorArgs =\n  | {\n      handleAuthenticatedOperationError: () => Promise<string | null>;\n      authenticatedOperationNames: string[];\n    }\n  | {\n      handleAuthenticatedOperationError?: never;\n      authenticatedOperationNames?: never;\n    };\n\nexport type MakeDefaultFnOptionalArgs = MakeDefaultFnOneLinkArgs &\n  MakeDefaultFnAuthenticatedOperationErrorArgs;\n\nexport type MakeDefaultFnArgs = {\n  appName: string;\n  authClient: AuthClient;\n  customHeaders?: Record<string, string>;\n  customParams?: Record<string, string>;\n  handleRequestEndpoint?: (req?: IncomingMessage) => string;\n  handleRequestHeaders?: (req?: IncomingMessage) => Record<string, string> | undefined;\n  referrer?: string;\n  referrerPolicy?: ReferrerPolicy;\n  serverRequest?: IncomingMessage;\n  serverResponse?: OutgoingMessage;\n  ssrMode?: boolean;\n  variablesToIncludeInParams?: string[];\n} & MakeDefaultFnOptionalArgs;\n\nexport function makeDefaultQueryFn(args: MakeDefaultFnArgs): QueryFunction<QueryResult, QueryKey> {\n  return ({ queryKey, signal }: QueryFunctionContext<QueryKey>): Promise<QueryResult> => {\n    const [query, variables] = queryKey as QueryKeyArgs;\n    return makeRequest(\n      {\n        ...args,\n        document: query,\n        variables,\n      },\n      signal\n    );\n  };\n}\n\nexport function makeDefaultMutationFn(args: MakeDefaultFnArgs): MutationFunction {\n  return (params): Promise<unknown> => {\n    const [mutation, variables] = params as QueryKeyArgs;\n    return makeRequest({\n      ...args,\n      document: mutation,\n      variables,\n    });\n  };\n}\n\nfunction formDataAppendFile(formData: FormData, fieldName: number, file: File) {\n  formData.append(fieldName.toString(), file, file.name);\n}\n\nfunction handleResultErrors(\n  result: DXExecutionResult,\n  authClient: AuthClient,\n  authenticatedOperation = false,\n  retries: number\n) {\n  if (result.errors) {\n    const error = new GraphError(result);\n\n    if (authenticatedOperation) {\n      if (\n        (causedByUnauthorized(error) || causedByForbidden(error)) &&\n        authClient.getIsLoggedIn() &&\n        retries < 1\n      ) {\n        // return true to retry\n        return true;\n      }\n    }\n    throw error;\n  }\n  return false;\n}\n","import type { AuthClient } from '@dx-ui/framework-auth-provider';\nimport { makeAuthClient } from '@dx-ui/framework-auth-provider';\nimport type { IncomingMessage, OutgoingMessage } from 'http';\nimport type { DefaultOptions } from '@tanstack/react-query';\nimport { dehydrate, QueryClient } from '@tanstack/react-query';\nimport type { MakeDefaultFnArgs } from './default-fetch-fn';\nimport { makeDefaultMutationFn, makeDefaultQueryFn } from './default-fetch-fn';\nimport type { QueryDocument, QueryVariables } from '@dx-ui/types-graphql';\nimport { GraphError, ServerAuthError } from '@dx-ui/types-graphql';\n\nexport type MakeQueryClientArgs = MakeDefaultFnArgs & {\n  reactQueryClientOverrideOptions?: DefaultOptions['queries'];\n};\n\nexport const CDN_STALE_TIME = 1000 * 60 * 60 * 6; // 6 hours\n\nfunction retry(failureCount: number, error: unknown) {\n  // If there error was a GraphError or ServerAuthError (401/403), then do not retry, we manually retry or handle in the UI\n  if (error instanceof ServerAuthError || error instanceof GraphError) {\n    return false;\n  }\n  return failureCount < 2;\n}\n\nexport function makeQueryClient({\n  reactQueryClientOverrideOptions = {},\n  ssrMode = false,\n  ...makeDefaultFnArgs\n}: MakeQueryClientArgs) {\n  return new QueryClient({\n    defaultOptions: {\n      queries: {\n        queryFn: makeDefaultQueryFn({\n          ...makeDefaultFnArgs,\n          ssrMode,\n        }),\n        ...(!ssrMode\n          ? {\n              refetchOnWindowFocus: false,\n              cacheTime: Infinity,\n              retry,\n              staleTime: 60 * 60 * 1000, // 1 hour\n              ...reactQueryClientOverrideOptions,\n            }\n          : { ...reactQueryClientOverrideOptions }),\n      },\n      mutations: {\n        mutationFn: makeDefaultMutationFn({\n          ...makeDefaultFnArgs,\n          ssrMode,\n        }),\n        retry,\n      },\n    },\n  });\n}\n\nexport function makeServerQueryClient({\n  appName,\n  authClient,\n  customHeaders,\n  referrer,\n  serverResponse,\n}: {\n  appName: string;\n  authClient: AuthClient;\n  customHeaders?: Record<string, string>;\n  referrer?: string;\n  serverResponse: OutgoingMessage;\n}) {\n  return makeQueryClient({\n    appName,\n    authClient,\n    customHeaders,\n    referrer,\n    serverResponse,\n    ssrMode: true,\n  });\n}\n\nexport function getServerSideClients({\n  appName,\n  customHeaders,\n  request,\n  response,\n  appId,\n  authEndpoints,\n  gqlEndpoints,\n  referrer,\n}: {\n  appName: string;\n  request?: IncomingMessage;\n  response: OutgoingMessage;\n  appId: string;\n  authEndpoints: {\n    browser: string;\n    server: string;\n  };\n  customHeaders?: Record<string, string>;\n  referrer?: string;\n  gqlEndpoints: {\n    browser: string;\n    server: string;\n  };\n}) {\n  const authClient = makeAuthClient({\n    appName,\n    request,\n    ssrMode: true,\n    response,\n    appId,\n    authEndpoints,\n    gqlEndpoints,\n  });\n  const queryClient = makeServerQueryClient({\n    appName,\n    authClient,\n    customHeaders,\n    referrer,\n    serverResponse: response,\n  });\n  return { queryClient, authClient };\n}\n\nexport async function makeServerSideGql({\n  appName,\n  queries,\n  request,\n  response,\n  appId,\n  authEndpoints,\n  customHeaders,\n  gqlEndpoints,\n  referrer,\n}: {\n  appName: string;\n  queries: [QueryDocument, QueryVariables][];\n  request?: IncomingMessage;\n  response: OutgoingMessage;\n  appId: string;\n  authEndpoints: {\n    browser: string;\n    server: string;\n  };\n  customHeaders?: Record<string, string>;\n  gqlEndpoints: {\n    browser: string;\n    server: string;\n  };\n  referrer?: string;\n}) {\n  const authClient = makeAuthClient({\n    appName,\n    request,\n    ssrMode: true,\n    response,\n    appId,\n    authEndpoints,\n    gqlEndpoints,\n  });\n  const queryClient = makeServerQueryClient({\n    appName,\n    authClient,\n    customHeaders,\n    referrer,\n    serverResponse: response,\n  });\n\n  const promises = queries.map((queryKey) => {\n    return queryClient.prefetchQuery({ queryKey });\n  });\n\n  await Promise.all(promises);\n  return {\n    queryClient,\n    authClient,\n    dehydratedState: dehydrate(queryClient),\n  };\n}\n","import { useRef } from 'react';\nimport type { QueryClient } from '@tanstack/react-query';\nimport { isServer } from '@tanstack/react-query';\nimport type { AuthClient, MakeAuthClientArgs } from '@dx-ui/framework-auth-provider';\nimport { makeAuthClient } from '@dx-ui/framework-auth-provider';\nimport type { MakeQueryClientArgs } from './make-query-client';\nimport { makeQueryClient } from './make-query-client';\nimport type { MakeDefaultFnOptionalArgs } from './default-fetch-fn';\n\nexport type PagePropsUseClients = Pick<\n  MakeAuthClientArgs,\n  'appId' | 'appName' | 'authEndpoints' | 'gqlEndpoints'\n> & {\n  authClientState?: MakeAuthClientArgs['restore'];\n} & Omit<MakeQueryClientArgs, 'authClient'> &\n  MakeDefaultFnOptionalArgs;\n\nexport function useClients(pageProps: PagePropsUseClients) {\n  const { appId, appName, authEndpoints, gqlEndpoints, authClientState, ...queryClientProps } =\n    pageProps;\n  const queryClientRef = useRef<QueryClient | null>(null);\n  const authClientRef = useRef<AuthClient | null>(null);\n  if (!authClientRef.current) {\n    authClientRef.current = makeAuthClient({\n      appId,\n      appName,\n      authEndpoints,\n      gqlEndpoints,\n      restore: authClientState,\n      ssrMode: isServer,\n    });\n  }\n  if (!queryClientRef.current) {\n    queryClientRef.current = makeQueryClient({\n      ...queryClientProps,\n      appName,\n      authClient: authClientRef.current,\n      ssrMode: isServer,\n    });\n  }\n  return {\n    queryClient: queryClientRef.current,\n    authClient: authClientRef.current,\n  };\n}\n","// src/hydration.ts\nfunction defaultTransformerFn(data) {\n  return data;\n}\nfunction dehydrateMutation(mutation) {\n  return {\n    mutationKey: mutation.options.mutationKey,\n    state: mutation.state,\n    ...mutation.options.scope && { scope: mutation.options.scope },\n    ...mutation.meta && { meta: mutation.meta }\n  };\n}\nfunction dehydrateQuery(query, serializeData) {\n  return {\n    state: {\n      ...query.state,\n      ...query.state.data !== void 0 && {\n        data: serializeData(query.state.data)\n      }\n    },\n    queryKey: query.queryKey,\n    queryHash: query.queryHash,\n    ...query.state.status === \"pending\" && {\n      promise: query.promise?.then(serializeData).catch((error) => {\n        if (process.env.NODE_ENV !== \"production\") {\n          console.error(\n            `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`\n          );\n        }\n        return Promise.reject(new Error(\"redacted\"));\n      })\n    },\n    ...query.meta && { meta: query.meta }\n  };\n}\nfunction defaultShouldDehydrateMutation(mutation) {\n  return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n  return query.state.status === \"success\";\n}\nfunction dehydrate(client, options = {}) {\n  const filterMutation = options.shouldDehydrateMutation ?? client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? defaultShouldDehydrateMutation;\n  const mutations = client.getMutationCache().getAll().flatMap(\n    (mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : []\n  );\n  const filterQuery = options.shouldDehydrateQuery ?? client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? defaultShouldDehydrateQuery;\n  const serializeData = options.serializeData ?? client.getDefaultOptions().dehydrate?.serializeData ?? defaultTransformerFn;\n  const queries = client.getQueryCache().getAll().flatMap(\n    (query) => filterQuery(query) ? [dehydrateQuery(query, serializeData)] : []\n  );\n  return { mutations, queries };\n}\nfunction hydrate(client, dehydratedState, options) {\n  if (typeof dehydratedState !== \"object\" || dehydratedState === null) {\n    return;\n  }\n  const mutationCache = client.getMutationCache();\n  const queryCache = client.getQueryCache();\n  const deserializeData = options?.defaultOptions?.deserializeData ?? client.getDefaultOptions().hydrate?.deserializeData ?? defaultTransformerFn;\n  const mutations = dehydratedState.mutations || [];\n  const queries = dehydratedState.queries || [];\n  mutations.forEach(({ state, ...mutationOptions }) => {\n    mutationCache.build(\n      client,\n      {\n        ...client.getDefaultOptions().hydrate?.mutations,\n        ...options?.defaultOptions?.mutations,\n        ...mutationOptions\n      },\n      state\n    );\n  });\n  queries.forEach(({ queryKey, state, queryHash, meta, promise }) => {\n    let query = queryCache.get(queryHash);\n    const data = state.data === void 0 ? state.data : deserializeData(state.data);\n    if (query) {\n      if (query.state.dataUpdatedAt < state.dataUpdatedAt) {\n        const { fetchStatus: _ignored, ...serializedState } = state;\n        query.setState({\n          ...serializedState,\n          data\n        });\n      }\n    } else {\n      query = queryCache.build(\n        client,\n        {\n          ...client.getDefaultOptions().hydrate?.queries,\n          ...options?.defaultOptions?.queries,\n          queryKey,\n          queryHash,\n          meta\n        },\n        // Reset fetch status to idle to avoid\n        // query being stuck in fetching state upon hydration\n        {\n          ...state,\n          data,\n          fetchStatus: \"idle\"\n        }\n      );\n    }\n    if (promise) {\n      const initialPromise = Promise.resolve(promise).then(deserializeData);\n      void query.fetch(void 0, { initialPromise });\n    }\n  });\n}\nexport {\n  defaultShouldDehydrateMutation,\n  defaultShouldDehydrateQuery,\n  dehydrate,\n  hydrate\n};\n//# sourceMappingURL=hydration.js.map","\"use client\";\n\n// src/HydrationBoundary.tsx\nimport * as React from \"react\";\nimport { hydrate } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nvar HydrationBoundary = ({\n  children,\n  options = {},\n  state,\n  queryClient\n}) => {\n  const client = useQueryClient(queryClient);\n  const [hydrationQueue, setHydrationQueue] = React.useState();\n  const optionsRef = React.useRef(options);\n  optionsRef.current = options;\n  React.useMemo(() => {\n    if (state) {\n      if (typeof state !== \"object\") {\n        return;\n      }\n      const queryCache = client.getQueryCache();\n      const queries = state.queries || [];\n      const newQueries = [];\n      const existingQueries = [];\n      for (const dehydratedQuery of queries) {\n        const existingQuery = queryCache.get(dehydratedQuery.queryHash);\n        if (!existingQuery) {\n          newQueries.push(dehydratedQuery);\n        } else {\n          const hydrationIsNewer = dehydratedQuery.state.dataUpdatedAt > existingQuery.state.dataUpdatedAt;\n          const queryAlreadyQueued = hydrationQueue?.find(\n            (query) => query.queryHash === dehydratedQuery.queryHash\n          );\n          if (hydrationIsNewer && (!queryAlreadyQueued || dehydratedQuery.state.dataUpdatedAt > queryAlreadyQueued.state.dataUpdatedAt)) {\n            existingQueries.push(dehydratedQuery);\n          }\n        }\n      }\n      if (newQueries.length > 0) {\n        hydrate(client, { queries: newQueries }, optionsRef.current);\n      }\n      if (existingQueries.length > 0) {\n        setHydrationQueue(\n          (prev) => prev ? [...prev, ...existingQueries] : existingQueries\n        );\n      }\n    }\n  }, [client, hydrationQueue, state]);\n  React.useEffect(() => {\n    if (hydrationQueue) {\n      hydrate(client, { queries: hydrationQueue }, optionsRef.current);\n      setHydrationQueue(void 0);\n    }\n  }, [client, hydrationQueue]);\n  return children;\n};\nexport {\n  HydrationBoundary\n};\n//# sourceMappingURL=HydrationBoundary.js.map","import type { QueryClient } from '@tanstack/react-query';\nimport { useEffect } from 'react';\nimport type { IncompleteQueryEvent } from './default-fetch-fn';\nimport { logError } from '@dx-ui/framework-logger';\nimport type { DXExecutionResult, QueryDebugInfo } from '@dx-ui/types-graphql';\n\nexport function useQueryIncomplete({\n  queryClient,\n  onIncompleteQuery,\n  incompleteLoggingEnabled,\n}: {\n  queryClient: QueryClient;\n  onIncompleteQuery:\n    | ((query: QueryDebugInfo) => {\n        reportIncomplete: boolean;\n      })\n    | undefined;\n  incompleteLoggingEnabled: boolean | undefined;\n}) {\n  useEffect(() => {\n    const ssrResults = queryClient.getQueriesData<DXExecutionResult>({\n      predicate: (query) => (query.state.data as DXExecutionResult)?.__info__?.isSSR === true,\n    });\n    const incompleteSSRQueries = ssrResults.filter(([, data]) => {\n      return data && data.__info__?.dxCompleteness !== '1';\n    });\n\n    if (incompleteSSRQueries.length > 0) {\n      incompleteSSRQueries.forEach(([, data]) => {\n        if (data && data.__info__) {\n          const { reportIncomplete } = onIncompleteQuery?.(data.__info__) || {\n            reportIncomplete: true,\n          };\n          if (reportIncomplete && incompleteLoggingEnabled) {\n            logError(\n              'SSR_INCOMPLETE',\n              `${data?.__info__.operationName} / ${data.__info__?.originalOpName}`\n            );\n          }\n        }\n      });\n    }\n\n    if (typeof window !== 'undefined') {\n      const listener = (event: CustomEvent<IncompleteQueryEvent>) => {\n        // at this point we have a client side query that had a header dx-completeness: 0\n        // log that to logger, after letting callers determine if they should report (report by default)\n        const { reportIncomplete } = onIncompleteQuery?.(event.detail) || {\n          reportIncomplete: true,\n        };\n        if (reportIncomplete && incompleteLoggingEnabled) {\n          // report to logger if the value is on\n          logError(\n            'CLIENT_INCOMPLETE',\n            `${event.detail.operationName} / ${event.detail.originalOpName}`\n          );\n        }\n      };\n      window.addEventListener('dx-incomplete', listener as EventListener);\n      return () => {\n        window.removeEventListener('dx-incomplete', listener as EventListener);\n      };\n    }\n    return () => undefined;\n  }, [queryClient, onIncompleteQuery, incompleteLoggingEnabled]);\n}\n","import type { PagePropsUseClients } from './use-clients';\nimport { useClients } from './use-clients';\nimport { AuthProvider } from '@dx-ui/framework-auth-provider';\nimport type { DehydratedState } from '@tanstack/react-query';\nimport { HydrationBoundary, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport { useQueryIncomplete } from './use-query-incomplete';\nimport type { QueryDebugInfo } from '@dx-ui/types-graphql';\n\nexport type QueryProviderProps = {\n  devtoolsOptions?: React.ComponentProps<typeof ReactQueryDevtools>;\n  dehydratedQueryState?: DehydratedState;\n  onIncompleteQuery?: (query: QueryDebugInfo) => {\n    reportIncomplete: boolean;\n  };\n  incompleteLoggingEnabled?: boolean;\n} & PagePropsUseClients;\n\nexport function QueryProvider({\n  children,\n  dehydratedQueryState,\n  devtoolsOptions,\n  onIncompleteQuery,\n  incompleteLoggingEnabled,\n  ...useClientProps\n}: React.PropsWithChildren<QueryProviderProps>) {\n  const { queryClient, authClient } = useClients(useClientProps);\n\n  useQueryIncomplete({ queryClient, onIncompleteQuery, incompleteLoggingEnabled });\n\n  return (\n    <AuthProvider authClient={authClient}>\n      <QueryClientProvider client={queryClient}>\n        <HydrationBoundary state={dehydratedQueryState}>{children}</HydrationBoundary>\n        <ReactQueryDevtools initialIsOpen={false} {...devtoolsOptions} />\n      </QueryClientProvider>\n    </AuthProvider>\n  );\n}\n","export * from './query-provider';\nexport * from './make-query-client';\nexport * from './default-fetch-fn';\nexport * from './default-fetch-fn-utils';\n","export * from './lib';\n","/**\n * Checks window object to determine whether app is running on client or not.\n */\nexport const isBrowser = typeof window !== 'undefined';\n","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n  return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n  var date = new Date(dirtyDate.getTime());\n  var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n  date.setSeconds(0, 0);\n  var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n  var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n  return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  return !isNaN(date);\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nexport default function formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n}","export default function buildFormatLongFn(args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index];\n  };\n}","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n  // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n  // Generally, formatted dates should look like they are in the middle of a sentence,\n  // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`:\n  //\n  //   var options = dirtyOptions || {}\n  //   var unit = String(options.unit)\n  //\n  // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function buildMatchPatternFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var matchResult = string.match(args.matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n\n    if (!parseResult) {\n      return null;\n    }\n\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}","export default function buildMatchFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var value;\n\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = findIndex(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","export default function assign(target, dirtyObject) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n\n  dirtyObject = dirtyObject || {};\n\n  for (var property in dirtyObject) {\n    if (dirtyObject.hasOwnProperty(property)) {\n      target[property] = dirtyObject[property];\n    }\n  }\n\n  return target;\n}","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token) {\n  if (token === 'YYYY') {\n    throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n  } else if (token === 'YY') {\n    throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n  } else if (token === 'D') {\n    throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n  } else if (token === 'DD') {\n    throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n  }\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n  requiredArgs(2, arguments);\n  var day = toInteger(dirtyDay);\n\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCISOWeek from '../getUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCWeek from '../getUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  var value = parseInt(matchResult[0], 10);\n  return {\n    value: valueCallback ? valueCallback(value) : value,\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n  var matchResult = string.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  } // Input is 'Z'\n\n\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: string.slice(1)\n    };\n  }\n\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n    rest: string.slice(matchResult[0].length)\n  };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n  }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n  switch (enumValue) {\n    case 'morning':\n      return 4;\n\n    case 'evening':\n      return 17;\n\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0; // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n  // Era\n  G: {\n    priority: 140,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n        // A, B\n\n        case 'GGGGG':\n          return match.era(string, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n\n        case 'GGGG':\n        default:\n          return match.era(string, {\n            width: 'wide'\n          }) || match.era(string, {\n            width: 'abbreviated'\n          }) || match.era(string, {\n            width: 'narrow'\n          });\n      }\n    },\n    set: function (date, flags, value, _options) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['R', 'u', 't', 'T']\n  },\n  // Year\n  y: {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n\n      switch (token) {\n        case 'y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, _options) {\n      var currentYear = date.getUTCFullYear();\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week-numbering year\n  Y: {\n    priority: 130,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n\n      switch (token) {\n        case 'Y':\n          return parseNDigits(4, string, valueCallback);\n\n        case 'Yo':\n          return match.ordinalNumber(string, {\n            unit: 'year',\n            valueCallback: valueCallback\n          });\n\n        default:\n          return parseNDigits(token.length, string, valueCallback);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value.isTwoDigitYear || value.year > 0;\n    },\n    set: function (date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week-numbering year\n  R: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (_date, _flags, value, _options) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Extended year\n  u: {\n    priority: 130,\n    parse: function (string, token, _match, _options) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, string);\n      }\n\n      return parseNDigitsSigned(token.length, string);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n  },\n  // Quarter\n  Q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'Qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'QQQ':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'QQQQQ':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'QQQQ':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone quarter\n  q: {\n    priority: 120,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, string);\n        // 1st, 2nd, 3rd, 4th\n\n        case 'qo':\n          return match.ordinalNumber(string, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n\n        case 'qqq':\n          return match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n        case 'qqqqq':\n          return match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n\n        case 'qqqq':\n        default:\n          return match.quarter(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 4;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Month\n  M: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'MM':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Mo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'MMM':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n\n        case 'MMMMM':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n\n        case 'MMMM':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Stand-alone month\n  L: {\n    priority: 110,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        return value - 1;\n      };\n\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return parseNumericPattern(numericPatterns.month, string, valueCallback);\n        // 01, 02, ..., 12\n\n        case 'LL':\n          return parseNDigits(2, string, valueCallback);\n        // 1st, 2nd, ..., 12th\n\n        case 'Lo':\n          return match.ordinalNumber(string, {\n            unit: 'month',\n            valueCallback: valueCallback\n          });\n        // Jan, Feb, ..., Dec\n\n        case 'LLL':\n          return match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n\n        case 'LLLLL':\n          return match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n\n        case 'LLLL':\n        default:\n          return match.month(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local week of year\n  w: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'wo':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n  },\n  // ISO week of year\n  I: {\n    priority: 100,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, string);\n\n        case 'Io':\n          return match.ordinalNumber(string, {\n            unit: 'week'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 53;\n    },\n    set: function (date, _flags, value, options) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n  },\n  // Day of the month\n  d: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, string);\n\n        case 'do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\n\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of year\n  D: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n        case 'Do':\n          return match.ordinalNumber(string, {\n            unit: 'date'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (date, value, _options) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n  },\n  // Day of week\n  E: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'EEEEE':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'EEEEEE':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'EEEE':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n  },\n  // Local day of week\n  e: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'eo':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'eee':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n\n        case 'eeeee':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n\n        case 'eeeeee':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n\n        case 'eeee':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n  },\n  // Stand-alone local day of week\n  c: {\n    priority: 90,\n    parse: function (string, token, match, options) {\n      var valueCallback = function (value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return parseNDigits(token.length, string, valueCallback);\n        // 3rd\n\n        case 'co':\n          return match.ordinalNumber(string, {\n            unit: 'day',\n            valueCallback: valueCallback\n          });\n        // Tue\n\n        case 'ccc':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n\n        case 'ccccc':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n\n        case 'cccccc':\n          return match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n\n        case 'cccc':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 6;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n  },\n  // ISO day of week\n  i: {\n    priority: 90,\n    parse: function (string, token, match, _options) {\n      var valueCallback = function (value) {\n        if (value === 0) {\n          return 7;\n        }\n\n        return value;\n      };\n\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, string);\n        // 2nd\n\n        case 'io':\n          return match.ordinalNumber(string, {\n            unit: 'day'\n          });\n        // Tue\n\n        case 'iii':\n          return match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // T\n\n        case 'iiiii':\n          return match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tu\n\n        case 'iiiiii':\n          return match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n        // Tuesday\n\n        case 'iiii':\n        default:\n          return match.day(string, {\n            width: 'wide',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'abbreviated',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'short',\n            context: 'formatting',\n            valueCallback: valueCallback\n          }) || match.day(string, {\n            width: 'narrow',\n            context: 'formatting',\n            valueCallback: valueCallback\n          });\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 7;\n    },\n    set: function (date, _flags, value, options) {\n      date = setUTCISODay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n  },\n  // AM or PM\n  a: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaaa':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'aaaa':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // AM, PM, midnight\n  b: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbbb':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'bbbb':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: {\n    priority: 80,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBBB':\n          return match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n\n        case 'BBBB':\n        default:\n          return match.dayPeriod(string, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(string, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 't', 'T']\n  },\n  // Hour [1-12]\n  h: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, string);\n\n        case 'ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 12;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-23]\n  H: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, string);\n\n        case 'Ho':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 23;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n  },\n  // Hour [0-11]\n  K: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, string);\n\n        case 'Ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 11;\n    },\n    set: function (date, _flags, value, _options) {\n      var isPM = date.getUTCHours() >= 12;\n\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n  },\n  // Hour [1-24]\n  k: {\n    priority: 70,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, string);\n\n        case 'ko':\n          return match.ordinalNumber(string, {\n            unit: 'hour'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 1 && value <= 24;\n    },\n    set: function (date, _flags, value, _options) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n  },\n  // Minute\n  m: {\n    priority: 60,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, string);\n\n        case 'mo':\n          return match.ordinalNumber(string, {\n            unit: 'minute'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Second\n  s: {\n    priority: 50,\n    parse: function (string, token, match, _options) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, string);\n\n        case 'so':\n          return match.ordinalNumber(string, {\n            unit: 'second'\n          });\n\n        default:\n          return parseNDigits(token.length, string);\n      }\n    },\n    validate: function (_date, value, _options) {\n      return value >= 0 && value <= 59;\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Fraction of second\n  S: {\n    priority: 30,\n    parse: function (string, token, _match, _options) {\n      var valueCallback = function (value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n\n      return parseNDigits(token.length, string, valueCallback);\n    },\n    set: function (date, _flags, value, _options) {\n      date.setUTCMilliseconds(value);\n      return date;\n    },\n    incompatibleTokens: ['t', 'T']\n  },\n  // Timezone (ISO-8601. +00:00 is `'Z'`)\n  X: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'x']\n  },\n  // Timezone (ISO-8601)\n  x: {\n    priority: 10,\n    parse: function (string, token, _match, _options) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, string);\n\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, string);\n      }\n    },\n    set: function (date, flags, value, _options) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n\n      return new Date(date.getTime() - value);\n    },\n    incompatibleTokens: ['t', 'T', 'X']\n  },\n  // Seconds timestamp\n  t: {\n    priority: 40,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  },\n  // Milliseconds timestamp\n  T: {\n    priority: 20,\n    parse: function (string, _token, _match, _options) {\n      return parseAnyDigitsSigned(string);\n    },\n    set: function (_date, _flags, value, _options) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    },\n    incompatibleTokens: '*'\n  }\n};\nexport default parsers;","import defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport assign from '../_lib/assign/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport parsers from './_lib/parsers/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Su            | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Su, Sa        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Su            |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Su, Sa        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 0001, ..., 999               |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n *   Now `parse` is a new function which parses a string using a provided format.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   parse('2016-01-01')\n *\n *   // v2.0.0 onward\n *   toDate('2016-01-01')\n *   parse('2016-01-01', 'yyyy-MM-dd', new Date())\n *   ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n  requiredArgs(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n  };\n  var setters = [{\n    priority: TIMEZONE_UNIT_PRIORITY,\n    set: dateToSystemTimezone,\n    index: 0\n  }];\n  var i;\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, subFnOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n\n  for (i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n      throwProtectedError(token);\n    }\n\n    if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n      throwProtectedError(token);\n    }\n\n    var firstCharacter = token[0];\n    var parser = parsers[firstCharacter];\n\n    if (parser) {\n      var incompatibleTokens = parser.incompatibleTokens;\n\n      if (Array.isArray(incompatibleTokens)) {\n        var incompatibleToken = void 0;\n\n        for (var _i = 0; _i < usedTokens.length; _i++) {\n          var usedToken = usedTokens[_i].token;\n\n          if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n            incompatibleToken = usedTokens[_i];\n            break;\n          }\n        }\n\n        if (incompatibleToken) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n        }\n      } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n        throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n      }\n\n      usedTokens.push({\n        token: firstCharacter,\n        fullToken: token\n      });\n      var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n      if (!parseResult) {\n        return new Date(NaN);\n      }\n\n      setters.push({\n        priority: parser.priority,\n        set: parser.set,\n        validate: parser.validate,\n        value: parseResult.value,\n        index: setters.length\n      });\n      dateString = parseResult.rest;\n    } else {\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n      } // Replace two single quote characters with one single quote character\n\n\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString(token);\n      } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n      if (dateString.indexOf(token) === 0) {\n        dateString = dateString.slice(token.length);\n      } else {\n        return new Date(NaN);\n      }\n    }\n  } // Check if the remaining input contains something other than whitespace\n\n\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).reverse();\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyReferenceDate);\n\n  if (isNaN(date)) {\n    return new Date(NaN);\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n\n  for (i = 0; i < uniquePrioritySetters.length; i++) {\n    var setter = uniquePrioritySetters[i];\n\n    if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n      return new Date(NaN);\n    }\n\n    var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n    if (result[0]) {\n      utcDate = result[0];\n      assign(flags, result[1]); // Result is date\n    } else {\n      utcDate = result;\n    }\n  }\n\n  return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n  if (flags.timestampIsSet) {\n    return date;\n  }\n\n  var convertedDate = new Date(0);\n  convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n  convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n  return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  var monthIndex = date.getMonth();\n  var lastDayOfMonth = new Date(0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport getDaysInMonth from '../getDaysInMonth/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var month = toInteger(dirtyMonth);\n  var year = date.getFullYear();\n  var day = date.getDate();\n  var dateWithDesiredMonth = new Date(0);\n  dateWithDesiredMonth.setFullYear(year, month, 15);\n  dateWithDesiredMonth.setHours(0, 0, 0, 0);\n  var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n  // if the original date was the last day of the longer month\n\n  date.setMonth(month, Math.min(day, daysInMonth));\n  return date;\n}","import toDate from '../toDate/index.js';\nimport setMonth from '../setMonth/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport default function set(dirtyDate, values) {\n  requiredArgs(2, arguments);\n\n  if (typeof values !== 'object' || values === null) {\n    throw new RangeError('values parameter must be an object');\n  }\n\n  var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n  if (isNaN(date)) {\n    return new Date(NaN);\n  }\n\n  if (values.year != null) {\n    date.setFullYear(values.year);\n  }\n\n  if (values.month != null) {\n    date = setMonth(date, values.month);\n  }\n\n  if (values.date != null) {\n    date.setDate(toInteger(values.date));\n  }\n\n  if (values.hours != null) {\n    date.setHours(toInteger(values.hours));\n  }\n\n  if (values.minutes != null) {\n    date.setMinutes(toInteger(values.minutes));\n  }\n\n  if (values.seconds != null) {\n    date.setSeconds(toInteger(values.seconds));\n  }\n\n  if (values.milliseconds != null) {\n    date.setMilliseconds(toInteger(values.milliseconds));\n  }\n\n  return date;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","// extracted by mini-css-extract-plugin","module.exports = require('./dist/client/router')\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n    // Can we get/set cookies on document.cookie?\r\n    return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n    document.cookie.split(';').forEach(function (c) {\r\n        document.cookie = c\r\n            .replace(/^ +/, '')\r\n            .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n    });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n    if (typeof cookies === 'string') {\r\n        return cookie.parse(cookies, options);\r\n    }\r\n    else if (typeof cookies === 'object' && cookies !== null) {\r\n        return cookies;\r\n    }\r\n    else {\r\n        return {};\r\n    }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n    if (typeof doNotParse === 'undefined') {\r\n        // We guess if the cookie start with { or [, it has been serialized\r\n        doNotParse =\r\n            !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n    }\r\n    return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n    if (options === void 0) { options = {}; }\r\n    var cleanValue = cleanupCookieValue(value);\r\n    if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n        try {\r\n            return JSON.parse(cleanValue);\r\n        }\r\n        catch (e) {\r\n            // At least we tried\r\n        }\r\n    }\r\n    // Ignore clean value if we failed the deserialization\r\n    // It is not relevant anymore to trim those values\r\n    return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n    // express prepend j: before serializing a cookie\r\n    if (value && value[0] === 'j' && value[1] === ':') {\r\n        return value.substr(2);\r\n    }\r\n    return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n    __assign = Object.assign || function(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n                t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n    function Cookies(cookies, options) {\r\n        var _this = this;\r\n        this.changeListeners = [];\r\n        this.HAS_DOCUMENT_COOKIE = false;\r\n        this.cookies = parseCookies(cookies, options);\r\n        new Promise(function () {\r\n            _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n        }).catch(function () { });\r\n    }\r\n    Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n        if (!this.HAS_DOCUMENT_COOKIE) {\r\n            return;\r\n        }\r\n        this.cookies = cookie.parse(document.cookie, parseOptions);\r\n    };\r\n    Cookies.prototype._emitChange = function (params) {\r\n        for (var i = 0; i < this.changeListeners.length; ++i) {\r\n            this.changeListeners[i](params);\r\n        }\r\n    };\r\n    Cookies.prototype.get = function (name, options, parseOptions) {\r\n        if (options === void 0) { options = {}; }\r\n        this._updateBrowserValues(parseOptions);\r\n        return readCookie(this.cookies[name], options);\r\n    };\r\n    Cookies.prototype.getAll = function (options, parseOptions) {\r\n        if (options === void 0) { options = {}; }\r\n        this._updateBrowserValues(parseOptions);\r\n        var result = {};\r\n        for (var name_1 in this.cookies) {\r\n            result[name_1] = readCookie(this.cookies[name_1], options);\r\n        }\r\n        return result;\r\n    };\r\n    Cookies.prototype.set = function (name, value, options) {\r\n        var _a;\r\n        if (typeof value === 'object') {\r\n            value = JSON.stringify(value);\r\n        }\r\n        this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n        if (this.HAS_DOCUMENT_COOKIE) {\r\n            document.cookie = cookie.serialize(name, value, options);\r\n        }\r\n        this._emitChange({ name: name, value: value, options: options });\r\n    };\r\n    Cookies.prototype.remove = function (name, options) {\r\n        var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n        this.cookies = __assign({}, this.cookies);\r\n        delete this.cookies[name];\r\n        if (this.HAS_DOCUMENT_COOKIE) {\r\n            document.cookie = cookie.serialize(name, '', finalOptions);\r\n        }\r\n        this._emitChange({ name: name, value: undefined, options: options });\r\n    };\r\n    Cookies.prototype.addChangeListener = function (callback) {\r\n        this.changeListeners.push(callback);\r\n    };\r\n    Cookies.prototype.removeChangeListener = function (callback) {\r\n        var idx = this.changeListeners.indexOf(callback);\r\n        if (idx >= 0) {\r\n            this.changeListeners.splice(idx, 1);\r\n        }\r\n    };\r\n    return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import Cookies from './Cookies';\r\nexport default Cookies;\r\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n  \"area\": true,\n  \"base\": true,\n  \"br\": true,\n  \"col\": true,\n  \"embed\": true,\n  \"hr\": true,\n  \"img\": true,\n  \"input\": true,\n  \"link\": true,\n  \"meta\": true,\n  \"param\": true,\n  \"source\": true,\n  \"track\": true,\n  \"wbr\": true\n};\n","var fetchApi\nif (typeof fetch === 'function') {\n  if (typeof global !== 'undefined' && global.fetch) {\n    fetchApi = global.fetch\n  } else if (typeof window !== 'undefined' && window.fetch) {\n    fetchApi = window.fetch\n  }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n  var f = fetchApi || require('cross-fetch')\n  if (f.default) f = f.default\n  exports.default = f\n  module.exports = exports.default\n}\n","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n  #focused;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onFocus) => {\n      if (!isServer && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    });\n  }\n  setFocused(focused) {\n    const changed = this.#focused !== focused;\n    if (changed) {\n      this.#focused = focused;\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    if (typeof this.#focused === \"boolean\") {\n      return this.#focused;\n    }\n    return globalThis.document?.visibilityState !== \"hidden\";\n  }\n};\nvar focusManager = new FocusManager();\nexport {\n  FocusManager,\n  focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n  #observers;\n  #mutationCache;\n  #retryer;\n  constructor(config) {\n    super();\n    this.mutationId = config.mutationId;\n    this.#mutationCache = config.mutationCache;\n    this.#observers = [];\n    this.state = config.state || getDefaultState();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!this.#observers.includes(observer)) {\n      this.#observers.push(observer);\n      this.clearGcTimeout();\n      this.#mutationCache.notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    this.#observers = this.#observers.filter((x) => x !== observer);\n    this.scheduleGc();\n    this.#mutationCache.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!this.#observers.length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        this.#mutationCache.remove(this);\n      }\n    }\n  }\n  continue() {\n    return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    this.#retryer = createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables);\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#mutationCache.canRun(this)\n    });\n    const restored = this.state.status === \"pending\";\n    const isPaused = !this.#retryer.canStart();\n    try {\n      if (!restored) {\n        this.#dispatch({ type: \"pending\", variables, isPaused });\n        await this.#mutationCache.config.onMutate?.(\n          variables,\n          this\n        );\n        const context = await this.options.onMutate?.(variables);\n        if (context !== this.state.context) {\n          this.#dispatch({\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await this.#retryer.start();\n      await this.#mutationCache.config.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        this\n      );\n      await this.options.onSuccess?.(data, variables, this.state.context);\n      await this.#mutationCache.config.onSettled?.(\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this\n      );\n      await this.options.onSettled?.(data, null, variables, this.state.context);\n      this.#dispatch({ type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await this.#mutationCache.config.onError?.(\n          error,\n          variables,\n          this.state.context,\n          this\n        );\n        await this.options.onError?.(\n          error,\n          variables,\n          this.state.context\n        );\n        await this.#mutationCache.config.onSettled?.(\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this\n        );\n        await this.options.onSettled?.(\n          void 0,\n          error,\n          variables,\n          this.state.context\n        );\n        throw error;\n      } finally {\n        this.#dispatch({ type: \"error\", error });\n      }\n    } finally {\n      this.#mutationCache.runNext(this);\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            failureCount: action.failureCount,\n            failureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            isPaused: true\n          };\n        case \"continue\":\n          return {\n            ...state,\n            isPaused: false\n          };\n        case \"pending\":\n          return {\n            ...state,\n            context: action.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: action.isPaused,\n            status: \"pending\",\n            variables: action.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: false\n          };\n        case \"error\":\n          return {\n            ...state,\n            data: void 0,\n            error: action.error,\n            failureCount: state.failureCount + 1,\n            failureReason: action.error,\n            isPaused: false,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.#observers.forEach((observer) => {\n        observer.onMutationUpdate(action);\n      });\n      this.#mutationCache.notify({\n        mutation: this,\n        type: \"updated\",\n        action\n      });\n    });\n  }\n};\nfunction getDefaultState() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nexport {\n  Mutation,\n  getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/notifyManager.ts\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = (cb) => setTimeout(cb, 0);\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\nexport {\n  createNotifyManager,\n  notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n  #online = true;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onOnline) => {\n      if (!isServer && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup(this.setOnline.bind(this));\n  }\n  setOnline(online) {\n    const changed = this.#online !== online;\n    if (changed) {\n      this.#online = online;\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return this.#online;\n  }\n};\nvar onlineManager = new OnlineManager();\nexport {\n  OnlineManager,\n  onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/query.ts\nimport {\n  ensureQueryFn,\n  noop,\n  replaceData,\n  resolveEnabled,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n  #initialState;\n  #revertState;\n  #cache;\n  #retryer;\n  #defaultOptions;\n  #abortSignalConsumed;\n  constructor(config) {\n    super();\n    this.#abortSignalConsumed = false;\n    this.#defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.#cache = config.cache;\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.#initialState = getDefaultState(this.options);\n    this.state = config.state ?? this.#initialState;\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get promise() {\n    return this.#retryer?.promise;\n  }\n  setOptions(options) {\n    this.options = { ...this.#defaultOptions, ...options };\n    this.updateGcTime(this.options.gcTime);\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      this.#cache.remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    this.#dispatch({\n      data,\n      type: \"success\",\n      dataUpdatedAt: options?.updatedAt,\n      manual: options?.manual\n    });\n    return data;\n  }\n  setState(state, setStateOptions) {\n    this.#dispatch({ type: \"setState\", state, setStateOptions });\n  }\n  cancel(options) {\n    const promise = this.#retryer?.promise;\n    this.#retryer?.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  reset() {\n    this.destroy();\n    this.setState(this.#initialState);\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveEnabled(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    return this.getObserversCount() > 0 && !this.isActive();\n  }\n  isStale() {\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0;\n  }\n  isStaleByTime(staleTime = 0) {\n    return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  onOnline() {\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (this.#retryer) {\n          if (this.#abortSignalConsumed) {\n            this.#retryer.cancel({ revert: true });\n          } else {\n            this.#retryer.cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      this.#dispatch({ type: \"invalidate\" });\n    }\n  }\n  fetch(options, fetchOptions) {\n    if (this.state.fetchStatus !== \"idle\") {\n      if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n        this.cancel({ silent: true });\n      } else if (this.#retryer) {\n        this.#retryer.continueRetry();\n        return this.#retryer.promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          this.#abortSignalConsumed = true;\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const queryFnContext = {\n        queryKey: this.queryKey,\n        meta: this.meta\n      };\n      addSignalProperty(queryFnContext);\n      this.#abortSignalConsumed = false;\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const context = {\n      fetchOptions,\n      options: this.options,\n      queryKey: this.queryKey,\n      state: this.state,\n      fetchFn\n    };\n    addSignalProperty(context);\n    this.options.behavior?.onFetch(\n      context,\n      this\n    );\n    this.#revertState = this.state;\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n      this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n    }\n    const onError = (error) => {\n      if (!(isCancelledError(error) && error.silent)) {\n        this.#dispatch({\n          type: \"error\",\n          error\n        });\n      }\n      if (!isCancelledError(error)) {\n        this.#cache.config.onError?.(\n          error,\n          this\n        );\n        this.#cache.config.onSettled?.(\n          this.state.data,\n          error,\n          this\n        );\n      }\n      if (!this.isFetchingOptimistic) {\n        this.scheduleGc();\n      }\n      this.isFetchingOptimistic = false;\n    };\n    this.#retryer = createRetryer({\n      initialPromise: fetchOptions?.initialPromise,\n      fn: context.fetchFn,\n      abort: abortController.abort.bind(abortController),\n      onSuccess: (data) => {\n        if (data === void 0) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(\n              `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n            );\n          }\n          onError(new Error(`${this.queryHash} data is undefined`));\n          return;\n        }\n        try {\n          this.setData(data);\n        } catch (error) {\n          onError(error);\n          return;\n        }\n        this.#cache.config.onSuccess?.(data, this);\n        this.#cache.config.onSettled?.(\n          data,\n          this.state.error,\n          this\n        );\n        if (!this.isFetchingOptimistic) {\n          this.scheduleGc();\n        }\n        this.isFetchingOptimistic = false;\n      },\n      onError,\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    });\n    return this.#retryer.start();\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            fetchFailureCount: action.failureCount,\n            fetchFailureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...state,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...state,\n            ...fetchState(state.data, this.options),\n            fetchMeta: action.meta ?? null\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            dataUpdateCount: state.dataUpdateCount + 1,\n            dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n            error: null,\n            isInvalidated: false,\n            status: \"success\",\n            ...!action.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n        case \"error\":\n          const error = action.error;\n          if (isCancelledError(error) && error.revert && this.#revertState) {\n            return { ...this.#revertState, fetchStatus: \"idle\" };\n          }\n          return {\n            ...state,\n            error,\n            errorUpdateCount: state.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: state.fetchFailureCount + 1,\n            fetchFailureReason: error,\n            fetchStatus: \"idle\",\n            status: \"error\"\n          };\n        case \"invalidate\":\n          return {\n            ...state,\n            isInvalidated: true\n          };\n        case \"setState\":\n          return {\n            ...state,\n            ...action.state\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.observers.forEach((observer) => {\n        observer.onQueryUpdate();\n      });\n      this.#cache.notify({ query: this, type: \"updated\", action });\n    });\n  }\n};\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nexport {\n  Query,\n  fetchState\n};\n//# sourceMappingURL=query.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n  #gcTimeout;\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout();\n    if (isValidTimeout(this.gcTime)) {\n      this.#gcTimeout = setTimeout(() => {\n        this.optionalRemove();\n      }, this.gcTime);\n    }\n  }\n  updateGcTime(newGcTime) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    if (this.#gcTimeout) {\n      clearTimeout(this.#gcTimeout);\n      this.#gcTimeout = void 0;\n    }\n  }\n};\nexport {\n  Removable\n};\n//# sourceMappingURL=removable.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options?.revert;\n    this.silent = options?.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let isResolved = false;\n  let continueFn;\n  let promiseResolve;\n  let promiseReject;\n  const promise = new Promise((outerResolve, outerReject) => {\n    promiseResolve = outerResolve;\n    promiseReject = outerReject;\n  });\n  const cancel = (cancelOptions) => {\n    if (!isResolved) {\n      reject(new CancelledError(cancelOptions));\n      config.abort?.();\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve = (value) => {\n    if (!isResolved) {\n      isResolved = true;\n      config.onSuccess?.(value);\n      continueFn?.();\n      promiseResolve(value);\n    }\n  };\n  const reject = (value) => {\n    if (!isResolved) {\n      isResolved = true;\n      config.onError?.(value);\n      continueFn?.();\n      promiseReject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      continueFn = (value) => {\n        if (isResolved || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      config.onPause?.();\n    }).then(() => {\n      continueFn = void 0;\n      if (!isResolved) {\n        config.onContinue?.();\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n      if (isResolved) {\n        return;\n      }\n      const retry = config.retry ?? (isServer ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      config.onFail?.(failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise,\n    cancel,\n    continue: () => {\n      continueFn?.();\n      return promise;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return promise;\n    }\n  };\n}\nexport {\n  CancelledError,\n  canFetch,\n  createRetryer,\n  isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/subscribable.ts\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\nexport {\n  Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n  return void 0;\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n  return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = options?.queryKeyHashFn || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nfunction replaceEqualDeep(a, b) {\n  if (a === b) {\n    return a;\n  }\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (array || isPlainObject(a) && isPlainObject(b)) {\n    const aItems = array ? a : Object.keys(a);\n    const aSize = aItems.length;\n    const bItems = array ? b : Object.keys(b);\n    const bSize = bItems.length;\n    const copy = array ? [] : {};\n    let equalItems = 0;\n    for (let i = 0; i < bSize; i++) {\n      const key = array ? i : bItems[i];\n      if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n        copy[key] = void 0;\n        equalItems++;\n      } else {\n        copy[key] = replaceEqualDeep(a[key], b[key]);\n        if (copy[key] === a[key] && a[key] !== void 0) {\n          equalItems++;\n        }\n      }\n    }\n    return aSize === bSize && equalItems === aSize ? a : copy;\n  }\n  return b;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (process.env.NODE_ENV !== \"production\") {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction keepPreviousData(previousData) {\n  return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && fetchOptions?.initialPromise) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\nexport {\n  addToEnd,\n  addToStart,\n  ensureQueryFn,\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  isPlainArray,\n  isPlainObject,\n  isServer,\n  isValidTimeout,\n  keepPreviousData,\n  matchMutation,\n  matchQuery,\n  noop,\n  partialMatchKey,\n  replaceData,\n  replaceEqualDeep,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  skipToken,\n  sleep,\n  timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","\"use client\";\n\n// src/index.ts\nimport * as Devtools from \"./ReactQueryDevtools.js\";\nimport * as DevtoolsPanel from \"./ReactQueryDevtoolsPanel.js\";\nvar ReactQueryDevtools2 = process.env.NODE_ENV !== \"development\" ? function() {\n  return null;\n} : Devtools.ReactQueryDevtools;\nvar ReactQueryDevtoolsPanel2 = process.env.NODE_ENV !== \"development\" ? function() {\n  return null;\n} : DevtoolsPanel.ReactQueryDevtoolsPanel;\nexport {\n  ReactQueryDevtools2 as ReactQueryDevtools,\n  ReactQueryDevtoolsPanel2 as ReactQueryDevtoolsPanel\n};\n//# sourceMappingURL=index.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n  void 0\n);\nvar useQueryClient = (queryClient) => {\n  const client = React.useContext(QueryClientContext);\n  if (queryClient) {\n    return queryClient;\n  }\n  if (!client) {\n    throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n  }\n  return client;\n};\nvar QueryClientProvider = ({\n  client,\n  children\n}) => {\n  React.useEffect(() => {\n    client.mount();\n    return () => {\n      client.unmount();\n    };\n  }, [client]);\n  return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n  QueryClientContext,\n  QueryClientProvider,\n  useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nexport var earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nexport var factors = {\n    meters: earthRadius,\n    metres: earthRadius,\n    millimeters: earthRadius * 1000,\n    millimetres: earthRadius * 1000,\n    centimeters: earthRadius * 100,\n    centimetres: earthRadius * 100,\n    kilometers: earthRadius / 1000,\n    kilometres: earthRadius / 1000,\n    miles: earthRadius / 1609.344,\n    nauticalmiles: earthRadius / 1852,\n    inches: earthRadius * 39.370,\n    yards: earthRadius / 1.0936,\n    feet: earthRadius * 3.28084,\n    radians: 1,\n    degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nexport var unitsFactors = {\n    meters: 1,\n    metres: 1,\n    millimeters: 1000,\n    millimetres: 1000,\n    centimeters: 100,\n    centimetres: 100,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    miles: 1 / 1609.344,\n    nauticalmiles: 1 / 1852,\n    inches: 39.370,\n    yards: 1 / 1.0936,\n    feet: 3.28084,\n    radians: 1 / earthRadius,\n    degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nexport var areaFactors = {\n    meters: 1,\n    metres: 1,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    centimeters: 10000,\n    centimetres: 10000,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    acres: 0.000247105,\n    miles: 3.86e-7,\n    yards: 1.195990046,\n    feet: 10.763910417,\n    inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geometry, properties, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n    var id = options.id;\n\n    // Validation\n    if (geometry === undefined) throw new Error('geometry is required');\n    if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n    if (bbox) validateBBox(bbox);\n    if (id !== 0 && id) validateId(id);\n\n    // Main\n    var feat = {type: 'Feature'};\n    if (id === 0 || id) feat.id = id;\n    if (bbox) feat.bbox = bbox;\n    feat.properties = properties || {};\n    feat.geometry = geometry;\n    return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nexport function geometry(type, coordinates, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n\n    // Validation\n    if (!type) throw new Error('type is required');\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n    if (bbox) validateBBox(bbox);\n\n    // Main\n    var geom;\n    switch (type) {\n    case 'Point': geom = point(coordinates).geometry; break;\n    case 'LineString': geom = lineString(coordinates).geometry; break;\n    case 'Polygon': geom = polygon(coordinates).geometry; break;\n    case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n    case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n    case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n    default: throw new Error(type + ' is invalid');\n    }\n    if (bbox) geom.bbox = bbox;\n    return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n    if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n    return feature({\n        type: 'Point',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    for (var i = 0; i < coordinates.length; i++) {\n        var ring = coordinates[i];\n        if (ring.length < 4) {\n            throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error('First and last Position are not equivalent.');\n            }\n        }\n    }\n\n    return feature({\n        type: 'Polygon',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n    // Check if first point of LineString contains two numbers\n    if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n    return feature({\n        type: 'LineString',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n    if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n    // Optional Parameters\n    options = options || {};\n    if (!isObject(options)) throw new Error('options is invalid');\n    var bbox = options.bbox;\n    var id = options.id;\n\n    // Validation\n    if (!features) throw new Error('No features passed');\n    if (!Array.isArray(features)) throw new Error('features must be an Array');\n    if (bbox) validateBBox(bbox);\n    if (id) validateId(id);\n\n    // Main\n    var fc = {type: 'FeatureCollection'};\n    if (id) fc.id = id;\n    if (bbox) fc.bbox = bbox;\n    fc.features = features;\n    return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiLineString',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiPoint',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n    if (!coordinates) throw new Error('coordinates is required');\n\n    return feature({\n        type: 'MultiPolygon',\n        coordinates: coordinates\n    }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n *     \"type\": \"Point\",\n *       \"coordinates\": [100, 0]\n *     };\n * var line = {\n *     \"type\": \"LineString\",\n *     \"coordinates\": [ [101, 0], [102, 1] ]\n *   };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nexport function geometryCollection(geometries, properties, options) {\n    if (!geometries) throw new Error('geometries is required');\n    if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n    return feature({\n        type: 'GeometryCollection',\n        geometries: geometries\n    }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n    if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n    if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n    if (radians === undefined || radians === null) throw new Error('radians is required');\n\n    if (units && typeof units !== 'string') throw new Error('units must be a string');\n    var factor = factors[units || 'kilometers'];\n    if (!factor) throw new Error(units + ' units is invalid');\n    return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n    if (distance === undefined || distance === null) throw new Error('distance is required');\n\n    if (units && typeof units !== 'string') throw new Error('units must be a string');\n    var factor = factors[units || 'kilometers'];\n    if (!factor) throw new Error(units + ' units is invalid');\n    return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n    if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n    var angle = bearing % 360;\n    if (angle < 0) angle += 360;\n    return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n    if (radians === null || radians === undefined) throw new Error('radians is required');\n\n    var degrees = radians % (2 * Math.PI);\n    return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n    if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n    var radians = degrees % 360;\n    return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n    if (length === null || length === undefined) throw new Error('length is required');\n    if (!(length >= 0)) throw new Error('length must be a positive number');\n\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n    if (area === null || area === undefined) throw new Error('area is required');\n    if (!(area >= 0)) throw new Error('area must be a positive number');\n\n    var startFactor = areaFactors[originalUnit || 'meters'];\n    if (!startFactor) throw new Error('invalid original units');\n\n    var finalFactor = areaFactors[finalUnit || 'kilometers'];\n    if (!finalFactor) throw new Error('invalid final units');\n\n    return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n    return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n    if (!bbox) throw new Error('bbox is required');\n    if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n    if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n    });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n    if (!id) throw new Error('id is required');\n    if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nexport function radians2degrees() {\n    throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nexport function degrees2radians() {\n    throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nexport function distanceToDegrees() {\n    throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nexport function distanceToRadians() {\n    throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nexport function radiansToDistance() {\n    throw new Error('method has been renamed to `radiansToLength`');\n}\n\nexport function bearingToAngle() {\n    throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nexport function convertDistance() {\n    throw new Error('method has been renamed to `convertLength`');\n}\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link startOfToday} function options.\n */\n\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * @typeParam ContextDate - The `Date` type of the context function.\n *\n * @param options - An object with options\n *\n * @returns The start of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nexport function startOfToday(options) {\n  return startOfDay(Date.now(), options);\n}\n\n// Fallback for modularized imports:\nexport default startOfToday;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n"],"names":["appWithTranslation","App","Component","pageProps","router","useManualPageLogger","pathname","APP_NAME","routerLocale","useRouter","locale","QueryProvider","queryClientProps","appName","dehydratedQueryState","oneLinkConfig","ReactQueryDevtools","initialIsOpen","getQueryProviderProps","env","allEnv","appId","DX_AUTH_API_CUSTOMER_APP_ID","incompleteLoggingEnabled","RUMCS_CAPTURE_CUSTOM_ERRORS","gqlEndpoints","browser","DX_GRAPHQL_CLIENT_URI","server","process","DX_GRAPHQL_SERVER_URI","authEndpoints","DX_AUTH_API_CLIENT_URI","DX_AUTH_API_SERVER_URI","ASSETS_URI","OHW_BASE_URL_TRIMMED","replace","AuthContext","createContext","authClient","isAuthenticated","logout","Promise","resolve","login","refreshGuestInfo","guestInfo","guestId","isLoading","isCorpUser","displayName","reducer","state","action","type","loggedIn","data","authInfo","AuthProvider","children","onLoginAttempt","onLogout","initialState","useReducer","getIsLoggedIn","dispatch","mounted","useRef","safeDispatch","useCallback","v","current","useEffect","logoutCb","then","info","catch","error","logWarning","loginFaliureCb","loginSuccessCb","flushSync","response","getGuestInfo","guest","on","off","value","getGuestId","Provider","useAuth","context","React","VALID_SAME_SITES","setCookie","name","expires","path","domain","secure","escape","sameSite","undefined","getDefaultDomain","location","hostname","toLowerCase","includes","today","Date","now","expires_date","getTime","cookieValue","encodeURIComponent","document","cookie","toUTCString","operationString","AuthClient","request","restore","authEndpoint","gqlEndpoint","minExpiresTTL","ssr","language","webGuestMetadataCookie","authenticationCookie","userRefreshTokenPromise","requestTimeoutMs","appTokenPromise","guestInfoPromise","ssrMode","headers","attemptsToGetGuestInfo","cookies","Cookies","getAll","serverResponse","getTokensFromCookie","get","getRequestHeaders","shouldRefreshToken","refreshLoggedInUserToken","fetchGuestInfo","fetchAppToken","logError","getGqlEndpoint","getAuthEndpoint","extract","tokenType","refreshToken","getAuthenticationCookie","getAuthorizationHeader","token","apptoken","accessToken","rawHeaders","forEach","index","array","test","userRealm","getAppNameParam","currentToken","fetch","method","cache","Accept","Authorization","res","json","UserClaims","rest","ok","invalidateSession","setUserSessionData","userInfo","tokenInfo","access_token","expiresIn","expires_in","token_type","timestamp","updateAccessToken","currentAuthenticationCookie","updatedWso2AuthTokenCookie","isBrowser","setwso2AuthTokenCookie","authResponseToAuthCookie","emit","redirectToLoginPage","logoutUrl","authorization","credentials","window","localStorage","removeItem","url","assign","remove","setWso2Cookie","wso2Cookie","JSON","stringify","timeout","Buffer","from","toString","body","app_id","resp","options","set","userAuth","authHeader","variables","requestInit","controller","abortTimeout","requestUrl","AbortController","setTimeout","abort","query","GuestDocument","operationName","signal","logInfo","clearTimeout","isQueryIncomplete","triggerInCompleteEvent","requestBody","originalOpName","status","mergeCacheControl","errors","EventEmitter","makeAuthClient","getClientEnv","__ENV","getServerEnv","__NEXT_DATA__","buildId","warn","key","defaultValue","WrappedComponent","hoistNonReactStatics","props","I18nFrameworkAppWithTranslation","_nextI18Next","isOneLink","userConfig","appPath","appPaths","browserLocalePath","use","backend","loadPath","addPath","i18n","nextI18NextAppWithTranslation","getLocaleFormattedNumber","Intl","NumberFormat","format","shouldIncludeLanguageParam","configLocale","match","conditions","pathName","urlObj","URL","ruleEngineResult","RuleEngine","run","getOneLinkProps","sstLocale","CONFIG_NAME","stringValue","lang","event","CustomEvent","detail","message","dxCompleteness","isSSR","dispatchEvent","dynatrace","dtrum","LOG_LEVELS","ERROR","INFO","WARN","hint","log","group","enableManualPageDetection","modifiedGroup","startsWith","setPage","console","level","errorKey","markAsErrorPage","ERROR_PAGE","reportCustomError","stringifyValue","buildHint","filter","Boolean","join","sendBeacon","customError","cause","fn","Error","serverResp","mergeHttpHeaders","val","GraphError","result","graphQLErrors","ServerAuthError","statusCode","getSafeLanguage","splitLanguage","zhMapping","split","slice","isExtractableFile","File","Blob","forwardHeaders","makeRequest","queryRequest","retries","undiciErrorSocketRetries","authenticatedOperationNames","handleAuthenticatedOperationError","handleRequestEndpoint","handleRequestHeaders","customHeaders","referrerArg","referrerPolicy","serverRequestArg","variablesToIncludeInParams","serverRequest","authenticatedOperation","endpoint","visitoridHeader","hltClientMessageIdHeader","bodyLanguage","browserUrl","includeLanguageParam","visitorId","requestId","hltClientMessageId","referrer","paramsFromVariables","params","extractFiles","clone","files","form","map","i","refreshAndRetry","jsonResult","responseText","isForbidden","referenceError","errorMessage","shouldRetry","isUnauthorized","req","visitorid","hltclientmessageid","href","header","getVisitorId","serverCookies","setVisitorId","uuid","crypto","randomUUID","addDays","startOfToday","origin","generateReferrer","isServer","length","variable","URLSearchParams","bl","defaultIsExtractableFile","Map","clones","recurse","recursed","filePaths","push","isList","Array","isArray","FileList","isObject","constructor","Object","hasClone","has","pathPrefix","recursedDeeper","Set","add","item","itemClone","keys","propertyClone","FormData","size","append","paths","_","file","formDataAppendFile","fieldName","formData","arg","UNKNOWN_ERROR_MSG","code","text","parse","er","ref","handleResultErrors","Response","__info__","causedByUnauthorized","some","causedByForbidden","CDN_STALE_TIME","retry","args","makeDefaultFnArgs","queryClientRef","queryClient","onIncompleteQuery","devtoolsOptions","useClients","useClientProps","authClientState","authClientRef","reactQueryClientOverrideOptions","makeQueryClient","QueryClient","defaultOptions","queries","queryFn","makeDefaultQueryFn","queryKey","refetchOnWindowFocus","cacheTime","Infinity","staleTime","mutationFn","makeDefaultMutationFn","mutation","incompleteSSRQueries","ssrResults","getQueriesData","predicate","reportIncomplete","listener","addEventListener","removeEventListener","QueryClientProvider","client","HydrationBoundary","getDateMillisecondsPart","date","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","Math","ceil","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","requiredArgs","required","TypeError","toInteger","dirtyNumber","NaN","number","Number","floor","compareAsc","dirtyDateLeft","dirtyDateRight","arguments","dateLeft","toDate","dateRight","diff","isDate","prototype","call","isValid","isNaN","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","dirtyOptions","width","String","defaultWidth","formats","formatLong","dateFormats","long","medium","short","time","full","dateTime","dateTimeFormats","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","pattern","findKey","object","valueCallback","formatDistance","count","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","_dirtyOptions","rem100","era","eraValues","abbreviated","wide","quarter","quarterValues","month","narrow","day","dayValues","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","parseInt","matchEraPatterns","any","matchQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","weekStartsOn","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","p","P","dateTimeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCWeekYear","year","getUTCFullYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","setUTCFullYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","setUTCDay","dirtyDay","currentDay","remainder","startOfUTCISOWeek","numericPatterns","dayOfYear","week","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","sign","hours","MILLISECONDS_IN_HOUR","minutes","MILLISECONDS_IN_SECOND","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","G","priority","parsers","flags","incompatibleTokens","y","isTwoDigitYear","unit","validate","normalizedTwoDigitYear","Y","R","_match","_flags","firstWeekOfYear","u","Q","setUTCMonth","q","M","L","w","setUTCWeek","dirtyWeek","getUTCWeek","round","MILLISECONDS_IN_WEEK","startOfUTCWeekYear","firstWeek","I","setUTCISOWeek","dirtyISOWeek","isoWeek","getUTCISOWeek","startOfUTCISOWeekYear","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","fourthOfJanuary","d","isLeapYear","getUTCMonth","D","E","e","wholeWeekDays","c","setUTCISODay","dayIndex","a","b","B","h","isPM","getUTCHours","H","K","k","m","setUTCMinutes","s","setUTCSeconds","S","pow","setUTCMilliseconds","X","timestampIsSet","x","t","_token","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","formatString","defaultLocale","subFnOptions","setters","TIMEZONE_UNIT_PRIORITY","dateToSystemTimezone","tokens","substring","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","isProtectedWeekYearToken","indexOf","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","parser","incompatibleToken","_i","usedToken","concat","fullToken","cleanEscapedString","uniquePrioritySetters","setter","sort","reverse","setterArray","utcDate","subMilliseconds","dirtyObject","target","property","hasOwnProperty","convertedDate","setFullYear","setHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","setMonth","dirtyMonth","getFullYear","getDate","dateWithDesiredMonth","daysInMonth","getDaysInMonth","monthIndex","getMonth","lastDayOfMonth","min","setDate","setMinutes","seconds","milliseconds","setMilliseconds","dirtyAmount","addMilliseconds","amount","argument","argStr","stack","in","constructFrom","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","constructFromSymbol","Symbol","for","startOfDay"],"sourceRoot":"","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,72,73,74,88,89,90,91,105,106,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183]}